Guides
API ReferenceChangelog
Guides
API ReferenceChangelog
  1. Payment Methods
  • Getting Started
    • Overview
    • Test Data
    • Integrating Collect
    • Idempotent Requests
  • Payment
    • Payment Methods
    • Webhooks
    • Payment Methods
      • Direct Debit/Online Banking
      • Wallets
      • Cards
      • Crypto
  • Libraries
    • Collect.js
    • WooCommerce Plugin
  • Core Concepts
    • Collect Account Structure
    • Payment Flow
  • Terminal
    • Create Terminal Request
    • Overview
    • Get Terminal Request
    • Get Terminal Requests
    • Get Assigned Terminals
    • Get Assigned Terminal
  1. Payment Methods

Crypto

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:
EventDescription
crypto_payment.successRequired confirmations reached (e.g., 12 for Bitcoin)
crypto_payment.partialLess than expected amount received before expiry
crypto_payment.overpaidMore than expected amount received
crypto_payment.abandonedNo transfer received before expiresAt
crypto_payment.refundRefund of overpaid portion started
Webhook Payload Example
{
    "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:
reference
amount_expected (original amount)
amount_received (actual amount on‑chain)
paid_at timestamp
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:
reference
amount_expected
amount_received
paid_at timestamp
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#

StatusMeaning
pendingAwaiting on‑chain transfer
processingTransfer detected, awaiting confirmations
successSufficient confirmations received
partialUnderpayment detected
overpaidOverpayment detected
abandonedNo transfer before expiry
failedTransfer invalid (wrong address or amount)
refundedFunds returned via on‑chain refund (if supported)

Supported Stablecoins & Networks#

We support the following stablecoins and chains:
USDT, USDC
Solana (SPL)
Polygon (PoS) (ERC‑20)
Tron (TRC‑20)
Previous
Cards
Next
Collect.js
Built with