Overview
Card Collection enables you to accept USD payments from customers using debit or credit cards. When a card deposit is initiated, the API returns a hosted payment link that redirects the customer to a secure card payment widget. Once the payment is completed, the funds are credited to the subaccount’sUSDCARD balance.
You can then withdraw these funds as stablecoins (USDC or USDT) to any supported blockchain network.
Flow Summary
1. Initiate Card Deposit
To collect a card payment, send aPOST request to the deposits endpoint with the USD card channel ID and the amount to collect.
API Reference
See the full endpoint documentation
Request
Response
paymentLink— Redirect your customer to this URL. It opens a hosted card payment widget where the customer enters their card details and completes the payment.id— Unique identifier for this deposit. Use it to track status via webhooks.status— Initial status isprocessingwhile awaiting card payment.
Handling the Payment Link
After receiving the response, redirect or present thepaymentLink to your customer:
- Web integration: Redirect the browser to
paymentLink, or open it in a new tab / iframe. - Mobile integration: Open
paymentLinkin an in-app browser or WebView. - Once the customer completes payment on the widget, they are redirected back and the deposit is confirmed.
2. Listen for Webhook Events
Track the status of the card deposit in real-time using webhooks:deposit.status.paid— The card payment has been successfully completed and theUSDCARDbalance has been credited.deposit.status.unpaid— The card payment failed or was declined.
3. Withdraw from Card Collection Balance
Once funds are credited to theUSDCARD balance, you can withdraw them as stablecoins (USDC or USDT) to an external wallet address. Use the balance_account field set to USDCARD to specify the source balance.
API Reference
See the full endpoint documentation
Request
amount— The amount in USD to withdraw.stablecoin— The stablecoin to receive:usdcorusdt.chain— The blockchain network:ethereum,polygon,solana,celo, ortron.balance_account— Set toUSDCARDto withdraw from the card collection balance.address— The destination wallet address on the specified chain.
Response
id— Unique withdrawal identifier.status— The withdrawal status (pending, thencompletedorfailed).destination_address— Masked version of the destination wallet address.net_amount— The amount that will be sent after fees.fee_amount/fee_currency— Transaction fees applied.
4. Track Withdrawal Status
Monitor the withdrawal via webhooks:withdrawal.status.completed— The stablecoin transfer has been confirmed on-chain.withdrawal.status.failed— The withdrawal could not be processed.
Complete Integration Example
Here is the complete card collection flow from deposit to stablecoin withdrawal:Common Mistakes
- Not redirecting to payment link: The
paymentLinkmust be presented to the customer. The deposit will not complete until the customer pays through the card widget. - Wrong balance account: When withdrawing card collection funds, you must set
balance_accounttoUSDCARD. Omitting this field will attempt to withdraw from the standard USD balance. - Insufficient USDCARD balance: Ensure the card deposit has been confirmed (via webhook) before initiating a withdrawal from the
USDCARDbalance. - Mismatched chain and address: Always verify the destination wallet address matches the specified blockchain network. Sending to the wrong network will result in permanent loss of funds.