1. Issue the card
"5000" is $50.00: amount is in the card’s currency, so USD minor units. A card is always issued funded — there is no unfunded card, and debitAccountId and amount are both required.
The account you debit does not have to be USD. When it is not, Sakawave quotes the rate at issuance and debits the equivalent — an NGN account funding a 50.00 costs in naira at that moment. You do not pass a quote. POST /v1/card-fx-quotes is still there to show a customer an indicative rate beforehand, but issuance does not accept one.
The response carries both the card and the operation that is issuing it:
creating is normal. The card becomes active once the provider has issued and funded it — poll GET /v1/cards/{cardId} or wait for card.updated.
Spending controls are rejected on a
disposable card. Send them only with type: "virtual".2. Add more money later
active or frozen. The response is an operation, often pending — it settles asynchronously.
3. Read the card
GET on one card includes every operation against it, which is how you check whether that funding landed.
4. See what was spent
credit.
Four things to know before you build
- Amounts are USD minor units, everywhere.
"5000"is $50.00, even when you pay from an NGN account — the conversion is ours to make, not yours. - Freezing does not stop funding. It stops merchants. If you need the money back, withdraw it.
- A failed issuance retries under the same reference. That is the opposite of transfers — see setup and configuration.
- Termination is irreversible and sweeps the balance to an account you name.
If it failed
Next
- Card programs and PAN handling
- Use cases — controls, freezing, reconciliation