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

circle-info

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.

Flow
Details
Responsibility of

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

  1. User Clicks "Deposit"

The user selects "Deposit" and chooses "Bank Transfer" from within your app.

Partner

  1. 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

  1. 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

  1. 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

  1. 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

  1. 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

spinner

Crypto-to-Fiat Conversion (Offramp)

Flow
Details
Responsibility of

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

spinner

Last updated