Skip to main content

Three separate balances

Your embedded TRON wallet holds USDT and TRX on chain. Your card account holds spendable USD credit for issuing and funding cards. Each card has its own balance. Moving funds into the card account does not automatically top up a card. The wallet signs locally. Plane does not hold its private key. Keep its encrypted backup and wallet password; both are required to restore it. TRX pays activation and network fees. Sandbox wallets use Nile testnet and never share keys or funds with mainnet.

Card account fee

A 1.5% fee is deducted from the deposit. A 100 USD deposit credits 98.50 USD to the card account. The issuer accepts whole-dollar invoice requests, starting at 10 USD or its higher current minimum. The quote endpoint enforces the actual minimum. The issuer may return a unique fractional USDT amount. Send the exact payAmount shown in the invoice, without rounding. The final invoice shows that amount before you authorize the transfer. Network fees are paid separately in TRX.

Create and pay an invoice

All API keys, including sandbox keys, require approved verification. Use funding:write for quotes and creation, and balance:read for invoice status.
  1. Call POST /api/v1/card-account/quote with { "amount": "100.00" }.
  2. Review depositAmount, fee and creditAmount.
  3. Call POST /api/v1/card-account/invoices with the same amount and a persistent Idempotency-Key.
  4. Pay the exact USDT payAmount to address on TRON, before expiresAt.
  5. Poll GET /api/v1/card-account/invoices/{id} or consume funding.completed.
The payment goes from your wallet directly to the provider invoice. There is no intermediate Plane crypto wallet or exchange transfer. Only the provider’s confirmed settlement credits the card account. A transaction ID supplied by a client is never proof of payment.

Retry and expiry

One unresolved invoice is allowed per workspace and environment. Retrying the same idempotency key returns the same intent. A timeout during invoice creation moves it to manual_review; do not create another invoice or send money without a confirmed payment address. The server never repeats an ambiguous invoice creation automatically. Do not pay an expired invoice. If the payment or network result is unknown, check its existing transaction and invoice instead of sending again. Contact support for a payment that requires review.

Sandbox

Use the same invoice and quote flow with a sandbox key. POST /api/v1/sandbox/invoices/{id}/complete simulates confirmed payment and credits the invoice once. No real transfer is required. The console supports this before verification; API use still requires verification. The legacy funding/address TON endpoint is retired. Use card-account invoices for new deposits.