This guide walks you through the steps to support SEPA bank deposits using the REST API — from generating deposit instructions to monitoring for the incoming transfer.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 SEPA supports thedeposit feature before proceeding.
Select destination account
SEPA deposits can target any account. If the selected account is not in EUR, the deposited amount will be converted to the destination account’s currency at the time of settlement. 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.Terms and disclosures
Before generating deposit instructions, you must collect the user’s acceptance of the applicable terms of service and display the required regulatory disclaimer.Accept terms of service
The user must accept theunique-account-number-viban terms of service before SEPA deposit instructions can be generated.
Display the following copy to the user and prompt them to continue:
By selecting continue you agree to the LHV’s Principles of Processing Customer Data and the Personal Deposit Accounts Terms and Conditions.Once the user confirms, call Accept terms of service to register their acceptance.
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.
Generate deposit method
Call Set up account deposit method with the target account id and the desired network. For subsequent calls, use Get account deposit method instead.The deposit method may initially return
status: processing while the details are being prepared. Call Get account deposit method to make sure the deposit method is ready (status: ok) before displaying instructions to the user.Deposits sent without the reference are still credited, but funds will be deposited into the user’s default EUR account.
Monitor for the incoming transfer
Prefer webhooks for real-time updates, or fall back to polling if webhooks are not feasible.- Webhook events (recommended):
- core.transaction.created
status: processing→ bank transfer received, pending posting
- core.transaction.status-changed
status: completed→ funds settledstatus: failed→ irrecoverable error
- core.transaction.created
- Polling (fallback): Get transaction
Sample transaction
In a successful SEPA deposit, the origin is represented as anexternal-account node. This is because the origin bank details are automatically registered as an external account. The destination is the account selected when the deposit instructions were generated, or the user’s default EUR account if the transfer was sent without a reference, or the selected account doesn’t exist anymore.
Notify the user
Display an in-app confirmation when the transaction iscompleted, and send an email if applicable.
You now support SEPA bank transfer deposits via the REST API.