Stablecoin-Backed Cards
Bridge on-chain liquidity to the Visa and Mastercard global payment networks. Allow users to back physical and virtual cards with USDC or USDT balances on Solana, Ethereum, Base, and Polygon, converting stablecoins to fiat Just-in-Time (JIT) at the exact millisecond of authorization.
System Architecture & Flow
Cardholder attempts $45.00 purchase at merchant point of sale.
Rook requests immediate authorization approval from your wallet backend.
Your backend locks 45.00 USDC on-chain and approves webhook in < 800ms.
Rook funds fiat settlement rail, confirming transaction approval to merchant.
1Register User Wallet & Issue Stablecoin Card
Link the cardholder's non-custodial wallet address or omnibus custodial vault, specifying supported settlement tokens (USDC, USDT) and network rails (Solana, Base).
curl -X POST "https://api.sandbox.rookpayments.com/v1/cards" \
-H "Authorization: Bearer rk_test_..." \
-H "X-Program-ID: 7c9e6679-7425-40de-944b-e07fc1f90ae7" \
-H "Content-Type: application/json" \
-d '{
"account_id": "acc_crypto_vault_01",
"type": "virtual",
"cardholder_name": "Satoshi Nakamoto",
"funding_strategy": "just_in_time",
"crypto_config": {
"supported_assets": ["USDC", "USDT"],
"network": "base_mainnet",
"wallet_address": "0x71C...8976"
}
}'2Handle Just-In-Time (JIT) Authorization Webhook
Verify the cardholder has sufficient available stablecoin balance, apply a cryptographic hold on their wallet, and respond with an authorization confirmation before timeout.
// Incoming webhook from Rook
{
"event_id": "evt_jit_881920",
"type": "card.jit_authorization.request",
"data": {
"card_id": "crd_stable_9921",
"fiat_amount": 4500,
"fiat_currency": "USD",
"required_token_amount": "45000000",
"token_symbol": "USDC",
"token_decimals": 6
}
}
// Your HTTP 200 Response within 1000ms:
{
"approved": true,
"hold_id": "hold_usdc_771829"
}3Liquidate Locked Stablecoin to Fiat Settlement Pool
When the payment network clears the transaction, transfer the locked stablecoins to your program’s settlement treasury smart contract or liquidity partner.
curl -X POST "https://api.sandbox.rookpayments.com/v1/crypto/settlements" \
-H "Authorization: Bearer rk_test_..." \
-H "Content-Type: application/json" \
-d '{
"transaction_id": "txn_881920",
"tx_hash": "0x4f82a9...3b12",
"network": "base_mainnet",
"amount_burned_or_transferred": "45000000",
"status": "confirmed_on_chain"
}'