Skip to main content
Cards is available in sandbox only while we finish development. Dakota enables Cards per account. The Cards endpoints are in the API reference, marked Sandbox only. Endpoints, fields, and flows can still change before release.
Sandbox runs the real card code: authorizations are decided as in production, holds land on the wallet, and the same webhooks fire. Only the trigger is simulated. A simulation call stands in for the merchant and the card network.

1. Set up

  1. Ask Dakota to activate Cards on your sandbox account. No agreements are needed.
  2. Activate a customer. You act as the customer: open the terms link and accept it yourself.
  3. Create a cardholder, enable a wallet, and create a card. These steps are the same as in production.

2. Fund the wallet

POST /sandbox/wallets/{wallet_id}/faucet sends testnet RD to the wallet on Base Sepolia, through the normal deposit path.
It returns a simulation_id. Poll GET /sandbox/simulations/{simulation_id} until the funds land. A hold can be larger than the purchase, so fund more than you plan to spend. Two faucet calls cover a 2 USD purchase.

3. Simulate a purchase

POST /sandbox/cards/simulate/transaction:
The response names the card_transaction_id, and card_transaction.created fires.
  • type is authorization (default), financial_authorization (clears immediately), or balance_inquiry (moves no funds, takes no amount).
  • partial_approval_capable: true simulates a merchant that accepts a partial approval.
  • A decline is not an HTTP error. It creates a card transaction with status: declined and a decline_reason. To trigger one, simulate a purchase on an unfunded wallet.
  • A card that is not active cannot present a purchase: the call returns 409 card-not-active.

4. Advance the purchase

POST /sandbox/cards/simulate/transaction/{card_transaction_id}:
A return is a new transaction on the same card, and the response names it. To reverse the return, advance that new transaction.

Limits

Simulation endpoints return 403 in production.