Skip to main content
Allow users to fund or cash out with their debit/credit cards, globally, in EUR, GBP, or USD.

Key concepts

  • External account lifecycle — when a card is added, its status starts as processing and transitions to ok once validated, or failed if the card is invalid or declined. If using the Payment Widget, card-linking specific errors (duplicates, country mismatch, card limits) are handled internally.
  • 3DS authorization — when the transaction response includes a confirmationUrl on the card node, 3DS needs to be fulfilled. Either handle the redirect in your app or use the Payment Widget to manage the authorization flow.
  • Card limits — users may be subject to active card limits and unique card limits. These are enforced as capability restrictions.

Testing in sandbox

Use Test cards to simulate card deposits and withdrawals in the Sandbox environment. The table lists card numbers by network, type, and country, along with reserved amounts that trigger specific error responses.

Start building

With the Payment Widget, the end-to-end guides let the widget own the amount, quote and error handling, while the select guides leave those to your app. See Flows to compare them.

Deposit via API

Set up card deposits and handle 3DS authentication programmatically.

Withdrawal via API

Create quotes and submit payouts to your users’ cards.

Deposit via Widget (End-to-end)

Recommended. Support card deposits in a single widget session — account selection through transaction confirmation status.

Withdrawal via Widget (End-to-end)

Recommended. Send card withdrawals in a single widget session — account selection through transaction confirmation status.

Deposit via Widget (Select for Deposit)

Let users add or pick a card, then build the amount and review screens, create the quote and authorize the transaction yourself.

Withdrawal via Widget (Select for Withdrawal)

Let users pick a card, then build the amount and review screens, create the quote and transaction yourself via the REST API.