Crypto payments enable merchants to accept stablecoin transfers (USDT, USDC, DAI) directly on supported blockchains. Stablecoins are digital tokens pegged 1:1 to fiat (e.g. USD), combining the speed and security of blockchain with price stability. Funds settle within minutes and cannot be reversed, eliminating chargeback risk.
One‑Time Payments#
Set up your customers to pay with stablecoins at checkout:1.
Initiate Payment
Call the Initiate Crypto Payment endpoint with order details, stablecoin choice, and expiry time.
2.
Display Address
We return a deposit address (and QR code data); show it in your UI.
3.
Customer Pays
The customer sends the exact stablecoin amount to that address before it expires.
4.
Receipt & Confirmation
We detect on‑chain transfers and their confirmations, then POST a webhook to your webhook url
set on your dashboard.
API Reference#
Note: You already have full request/field details in the API reference section.Webhook Notifications#
We send POST
requests to your webhook url
set on your dashboard for these events:Event | Description |
---|
crypto_payment.success | Required confirmations reached (e.g., 12 for Bitcoin) |
crypto_payment.partial | Less than expected amount received before expiry |
crypto_payment.overpaid | More than expected amount received |
crypto_payment.abandoned | No transfer received before expiresAt |
crypto_payment.refund | Refund of overpaid portion started |
{
"event": "crypto_payment.success",
"payment: {
"reference": "order_12345",
"status": "success",
"amount_received": 100.00,
"chain": "ethereum",
"payer_address": "0xabc123...def456",
"transaction_hash": "0x789abc...123def",
"paid_at": "2025-04-22T10:30:00Z"
}
}
Always verify payload signatures via your webhook secret.
Handling Partial & Overpayments#
Real‑world payments can be under‑ or over‑funded. We handle these scenarios as follows:Partial Payments#
If the customer sends less than the requested amount before expiresAt
:1.
We emit a crypto_payment.partial
webhook, including:amount_expected
(original amount
)
amount_received
(actual amount on‑chain)
2.
The invoice remains open until expiry (up to expires_at
).
3.
You may prompt the customer to top up or call our Close Partial Payment endpoint to finalize as success or expired.
Overpayments#
If the customer sends more than the requested amount:1.
We emit a crypto_payment.overpaid
webhook with: 2.
The overpaid portion is held (minus on‑chain fees).
3.
If auto‑refund is enabled, we initiate a refund automatically and emit crypto_payment.refund
.
4.
Otherwise, you can call our Refund Overpayment endpoint to return funds manually.
Payment Statuses#
Status | Meaning |
---|
pending | Awaiting on‑chain transfer |
processing | Transfer detected, awaiting confirmations |
success | Sufficient confirmations received |
partial | Underpayment detected |
overpaid | Overpayment detected |
abandoned | No transfer before expiry |
failed | Transfer invalid (wrong address or amount) |
refunded | Funds returned via on‑chain refund (if supported) |
Supported Stablecoins & Networks#
We support the following stablecoins and chains: Modified at 2025-04-24 13:09:38