Deposits
This page details how a user is able to increase his UR fiat balance through deposits – via bank transfers and crypto offramp.
Fiat Deposit via Bank Transfer
This flow also applies to UR Peer Transfers - fiat transfers between 2 live UR accounts.
This flow enables a fully verified (Live) user to fund their UR account from an external, third-party bank account (e.g., their primary bank).
ℹ️ Note: Deposits can only be made from same-name bank accounts.
Prerequisite: User is Live
The user's status must be Live to access this feature. Your UI should only show the "Deposit" option to Live users.
Partner
User Clicks "Deposit"
The user selects "Deposit" and chooses "Bank Transfer" from within your app.
Partner
Partner Fetches Account Details
Your backend, which must be authorized, calls UR's API to retrieve the user's personal bank account details (IBAN, BIC, Bank Name).
Partner
Partner Displays Account Details
Your app's frontend displays the user's unique IBAN and transfer instructions (e.g., "Only send EUR or CHF to this account").
Partner
User Initiates External Transfer
The user leaves your app, logs into their external bank app (e.g., UBS, Revolut), and initiates a SEPA/SWIFT transfer to the IBAN provided.
User
UR Receives Funds & Notifies Partner
When the funds arrive (hours or days later), UR's banking core identifies the receiving IBAN, credits the user's account balance, and sends a payment.received webhook to your backend.
Alternatively, you may monitor on-chain transactions specific to said user.
UR -> Partner
Partner Updates User
Your backend receives the webhook, verifies the details, and updates the user's balance in your system.
You should send a push notification or in-app update to inform the user (e.g., "Your €100.00 deposit has arrived.").
Partner
Crypto-to-Fiat Conversion (Offramp)
1. Initiate Off-ramp
The user taps "Cash Out" for 1 ETH on your app.
Partner
2. Internal Debit
Your backend deducts 1 ETH from the user's custodial balance.
Partner
3. Request Quote
Your backend calls the liquidity provider API to request a real-time conversion quote for 1 ETH to EUR.
Partner
4. Source Liquidity
The liquidity provider API gets a live, executable price.
UR / Partner
5. Provide Quote
The liquidity provider API returns a firm, time-limited quote (e.g., "€1900.00, valid for 30s") to your backend.
UR -> Partner
6. Confirm Quote
Your frontend displays the quote, and the user taps "Confirm."
Partner
7. Execute Trade
Your backend calls the liquidity provider API with the unique quote_id to execute the trade.
Partner
8. Settle Trade
UR performs an atomic sequence:
a. Debits 1 ETH from Partner's corporate crypto account.
b. Sells 1 ETH via the liquidity provider.
c. Credits the resulting €1900.00 to the end-user's UR account.
UR
9. Notify User
UR sends a payment.received webhook. Your backend updates the user's UI and sends a push notification.
UR -> Partner -> User
Last updated