For the complete documentation index, see llms.txt. This page is also available as Markdown.

Deposits

Fiat bank transfers and crypto-to-fiat offramp flows.

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

EUR and CHF deposits must come from a bank account in the user's own name (same-name). USD deposits may also come from a third-party account, with additional review; see USD deposits from a third-party account.

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

USD deposits from a third-party account

UR screens inbound USD by who sent it:

  • Same-name sender: the deposit comes from an account in the user's own name. UR credits it to the user's UR account with no hold.

  • Any other sender: UR holds the deposit for up to 7 days for review. On release, UR deducts a fixed USD 50 fee and credits the remainder to the user's UR account; UR does not return the funds to the sending bank. If the review does not pass, UR does not release the funds.

This review applies to USD only; EUR and CHF deposits must always come from a same-name account. Tell your users to send USD from an account in their own name to avoid the hold and the fee.

Crypto-to-fiat conversion (off-ramp)

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

Last updated