Before you start
1
Finish onboarding
All documentation submitted and approved. Your account must be active before you send any transaction.
2
Get your API credentials
Credentials must have the correct permissions for the endpoints you plan to use.
3
Test end to end in sandbox
Run the full flow (KYC, quotation, transaction, webhook receipt) before touching production.
4
Set up error handling
Handle API errors and webhook failures explicitly. Donโt assume success on timeout or missing response.
5
Configure webhooks and polling
Register your webhook endpoint for status updates. Set up status polling as a fallback for delayed webhook delivery.
Payin
Bank account
- Send to the bank account details returned in the quotation response, not hardcoded values
- Do not reuse bank details across separate quotations
Amount
- Send the full amount in a single transfer
- Even small differences from rounding or source-side fees will cause the transaction to fail
Payout
Quotation
- Quotation ID must be valid and unexpired before you submit the transaction
- Each quotation can only be used once
- Transaction amount must match the quotation amount exactly
Asset
- Use only the asset specified in your quotation
- Check supported stablecoins and blockchains before sending
Wallet
- Source wallet must be whitelisted during onboarding
- Send to the destination wallet address returned in the quotation response, not a saved or assumed address
- Each transaction hash must be unique. Hashes linked to other orders are rejected.
Integration testing
Before going live:- Run every integration point through sandbox, including error paths and edge cases
- Confirm your webhook handler processes retries without creating duplicate records
- Test status polling as a fallback when webhooks donโt arrive
- Verify your retry logic handles rate limiting without breaking the transaction flow

