This guide walks you through supporting card deposits using the REST API.Documentation Index
Fetch the complete documentation index at: https://developer.uphold.com/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
- The user has completed onboarding and has the required capabilities enabled.
Walkthrough
Check available rails
Call List Rails to verify card deposit is available.Link or select a card account
Let the user link a new card or select an existing one.Find an existing card account
Call List external accounts to fetch the user’s saved cards.status: "ok" and in features.
Link a new card account
If the user wants to use a card not yet on file, call Create external account with the card details.status: "processing" while the card is validated.
ok and the full details are available.
Monitor the external account status via Get external account or the
external-account.status-changed webhook until status is ok before proceeding.EMD disclaimer
This disclaimer is required to comply with FCA regulations. Display it to users based in GB, the first time they link a credit/debit card or generate bank deposit details — it only needs to be shown once:Uphold Europe Limited is an EMD Agent of Optimus Cards UK Limited (FRN: 902034). All received funds are held in a designated safekeeping account with a regulated bank and kept separate from Uphold’s own assets. These funds are not protected by the UK Financial Services Compensation Scheme.
Select destination account
Card deposits can target any account. If the selected account is not in the card’s currency, the amount will be converted at settlement using Uphold’s prevailing rate. Make sure the destination asset has the necessary features enabled.Find an existing account
Call List accounts to retrieve the user’s accounts and let them pick the one they want to fund.Create a new account
If the user has no accounts, create one with Create account before proceeding.Create a quote
Call Create quote with the card external account as origin and the destination account.Quotes typically expire quickly. Prompt for user confirmation within the expiry window and requote if needed.
Confirm and create transaction
Once the user confirms, call Create transaction with the quote ID. Always include areturnUrl in params for card-origin transactions — whether the card requires authorization is decided per transaction by the issuer and isn’t known until the transaction response. You may include stateful data in query parameters of the returnUrl, such as the quoteId, so you can preserve context and resume the transaction flow upon return.
confirmationUrl on the origin node. Redirect the user to that URL to complete the challenge. After completion, the user will be redirected back to your returnUrl.
external-account representing the card and the destination is the user’s account.
Monitor for settlement
Card deposit transactions may remain inprocessing while the payment settles. Monitor until the transaction reaches a terminal state.
- Webhook events (recommended):
- core.transaction.created —
status: processing→ transaction created, pending settlement - core.transaction.status-changed —
status: completed→ funds settled;status: failed→ irrecoverable error
- core.transaction.created —
- Polling (fallback): Get transaction
Notify the user
Display an in-app confirmation when the transaction iscompleted, and send an email if applicable.
You now support card deposits via the REST API.