STABLECOIN_TO_STABLECOIN: the
on-chain operation Superbank performs is moving stablecoin from your
prefunded wallet to the end user’s wallet. The card payment is your upstream
business - Superbank doesn’t see the card transaction itself.
Flow of Funds
Refresher on how prefunded wallets and instant settlement work.
Pre-requisites
- A Superbank Developer account with API access.
- A configured prefunded wallet (Superbank operates this for you - talk to your Superbank contact to set the facility limit and supported rails).
- An external card processor (Stripe, Adyen, Checkout.com, etc.) handling card authorization on your side.
- Your API key.
Flow
Step 1: Card authorization (your processor)
Your end user pays with a card. Your processor authorizes the payment and returns success. Persist the authorization in your system with whatever internal id you use (we’ll call itexternal_id below - it can be your
order id, transaction id, or any other unique identifier you control).
Superbank doesn’t see this step.
Step 2: Create a Settlement Request
The moment the card is authorized, create aSTABLECOIN_TO_STABLECOIN
settlement request. Pass your internal id as external_id, and any
additional correlation you want to keep with the settlement in metadata.
Request
cURL
Response
The response includes the settlementid (Superbank’s identifier) and echoes back your external_id and metadata. Some fields (e.g. payment_reason, outbound_payment, inbound_payment, timestamps, failure fields) are omitted below for brevity — see the Settlement Request reference for the full schema.
Looking up the settlement later
You don’t need to persist anything from the create response - not Superbank’sid, and not payment_instructions. Both come back on
the lookup. The recommended pattern is to look up the settlement by
your external_id whenever the next step runs - typically in a
different process or job from the create step.
cURL
payment_instructions.prefunded_wallet_address is the address you’ll
send your reconciliation transfer to in Step 5.
It’s stable for the lifetime of the settlement, so you can look it up
the moment you’re ready to reconcile - no need to read it from the
create response. valid_until only governs the FUNDS_SENT call
(15 minutes from create); it does not apply to the T+X reconciliation
transfer, so an expired valid_until at reconciliation time is
expected and harmless.
Step 3: Notify FUNDS_SENT
Send aPUT to confirm you’ve authorized the card payment. This triggers
Superbank to move stablecoin from your prefunded wallet to the end user’s
wallet.
cURL
Step 4: Detecting completion
Same options as the standard on-ramp flow - see Detecting Completion. Webhooks recommended; poll as a fallback. The webhook payload includes yourexternal_id and metadata, so you can route the event back to the right
internal record without an extra lookup.
Step 5: Reconcile the settlement at T+X
When your card processor finalizes the settlement (typically T+2 or T+3, with weekend drift), you reconcile the drawdown from the Superbank facility in two phases:5a. Send stablecoin to the prefunded wallet
Look up the settlement by yourexternal_id (see Looking up the settlement later above) and transfer stablecoin on-chain to the address in payment_instructions.prefunded_wallet_address from that response. This on-chain transfer is the reconciliation - it’s what closes the credit cycle for this settlement.
5b. Call REQUEST_COMPLETED with the transaction hash
Once the transfer in 5a confirms on-chain, notify Superbank by sending aPUT with the transaction hash from that transfer.
cURL
Idiomatic correlation pattern
The card-payments flow makes the case forexternal_id + metadata
particularly clear:
external_id= your card processor’s charge id, your internal order id, or whatever single identifier you’d want to look the settlement up by later.metadata= anything you want to carry through to the webhook payload without an extra database lookup -user_id,restaurant_id,card_processor,card_charge_id,device_id, etc.
external_id is filterable
on the list endpoint. The recommended developer pattern is don’t persist
Superbank’s id - look up the settlement by your external_id whenever
you need it.
Next Steps
Real-Time On-Ramping
The standard on-ramping flow without the card-payment specifics.
Webhooks
Subscribe to settlement events and receive your
external_id + metadata on every delivery.