Starter
Free
100 events/month
Via EFF donation
Minimum $5
On-chain certainty / off your plate
Your wallet. Our watch.
Your
wallet.
Your
funds.
No middleman between the sender and your address.
No
custody.
No KYC.
Exact-amount crypto payment confirmation to your own cold-wallet addresses, delivered via webhooks.
Confirmations never custodies or moves funds.
01 / The process
Donate at least $5 to the EFF in BTC, ETH, or BNB for the free starter plan. Send the exact amount shown, then claim your API key after confirmation. Or subscribe directly to a paid plan.
Generate wallet addresses offline with python -m cli generate-wallet 10. Register only the public addresses with the API. Your private keys and mnemonic never leave your machine.
Create a payment with a USD amount, target chain, and callback URL. The API allocates one of your registered addresses and computes an exact native-token amount with a unique offset, distinguishing concurrent payments to the same address.
The background monitor watches the chain and POSTs your callback URL once the transfer reaches the required confirmations. Unpaid payments expire after 1 hour.
02 / Coverage
One API. Native-token payments.
03 / Plans
Free
100 events/month
Via EFF donation
Minimum $5
$49/month
10,000 events/month
For a growing payment flow.
$199/month
100,000 events/month
For higher payment volumes.
04 / Quickstart
Base URL: https://api.confirmations.info
Replace the placeholders with your own values.
01 / POST /signup
This creates a donation intent for the starter plan. Send the exact native-token amount returned to the EFF address returned by the API.
curl -X POST https://api.confirmations.info/signup \
-H "Content-Type: application/json" \
-d '{"method":"donation","chain":"ethereum","usd_amount":5}'
02 / POST /signup/{intent_id}/claim
After the donation confirms, replace INTENT_ID with the returned intent_id and claim your key. Store it securely; it cannot be recovered. Use it as YOUR_KEY below.
curl -X POST https://api.confirmations.info/signup/INTENT_ID/claim
03 / POST /addresses
Generate addresses offline first with python -m cli generate-wallet 10. Replace 0xYOUR_ADDR with your public Ethereum address.
curl -X POST https://api.confirmations.info/addresses \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_KEY" \
-d '{"chain":"ethereum","addresses":["0xYOUR_ADDR"]}'
04 / POST /payments
Set the USD amount, chain, and your webhook URL. Ask the sender to transfer exactly the returned amount_native to the returned address.
curl -X POST https://api.confirmations.info/payments \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_KEY" \
-d '{"usd_amount":"25.00","chain":"ethereum","callback_url":"https://shop.example/callback"}'
Response fields: payment_id, chain, address, amount_wei, amount_native, usd_amount, expires_at. Amounts are strings; amount_wei is the exact amount in the chain’s smallest unit.
05 / GET /payments/{payment_id}
Replace PAYMENT_ID with the returned payment_id. Status is PENDING, PAID, or EXPIRED.
curl https://api.confirmations.info/payments/PAYMENT_ID \
-H "X-API-Key: YOUR_KEY"
Response fields: payment_id, status, chain, address, amount_native, usd_amount, tx_hash, confirmations.
06 / POST to your callback URL
The webhook POST carries JSON transaction details when the payment confirms. Failed delivery is retried with exponential backoff.
Field names are camelCase. expectedAmountWei is the exact amount in the chain's smallest unit (wei or satoshis). Delivery is retried up to 6 times with exponential backoff. See /llms.txt for the full contract.
{
"paymentId": "0f2ac20d-3189-44b6-9fcf-6fb736e0aacf",
"userId": "9a7d31d2-98f8-4d2e-a4d1-4f1849320d99",
"chain": "ethereum",
"address": "0xA11CE...",
"txHash": "0x5cf4...d41",
"blockNumber": 21000042,
"confirmations": 2,
"expectedAmountWei": "10483000000000000"
}
05 / Machine-readable
The API is designed to be driven by LLM/coding agents, not just humans.
GET https://api.confirmations.info/llms.txt — concise agent-oriented guideGET https://api.confirmations.info/llms-full.txt — full endpoint referenceGET https://api.confirmations.info/openapi.jsonGET /health--json flag, e.g. python -m cli --json accountCONFIRMATIONS_API_KEY and CONFIRMATIONS_API_URLpython -m cli mcp (install with pip install "confirmations[mcp]"){"error": {"code": "...", "message": "...", "hint": "..."}}X-Request-Id header