> For the complete documentation index, see [llms.txt](https://docs.ur.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ur.app/welcome/partner-integration-flow-concepts.md).

# Partner integration flow concepts

UR acts as the banking infrastructure layer for neobank partners. Partners integrate via a single REST API — UR handles KYC compliance, user account custody, and the underlying banking rails. Partners choose from a menu of modular services to build their product.

### How partners integrate with UR <a href="#bf47b023-f09f-4009-901e-ad6ba6b89123" id="bf47b023-f09f-4009-901e-ad6ba6b89123"></a>

Partners connect to UR as a Banking-as-a-Service provider. UR sits between the partner's product and the global banking rails — managing identity, user accounts, and regulated financial services behind a clean API surface.

**Modular services partners can enable:**

* Multi-currency fiat balance (EUR, USD, CHF, SGD, HKD, JPY)
* Fiat Pay-in via bank transfer
* Fiat Payout via bank transfer
* Card spending via co-branded Mastercard debit

```mermaid
flowchart TD
    User(["End User"]) -->|Uses| App

    subgraph Partner["Partner Platform"]
        App["Partner App & UX"]
        Backend["Partner Backend"]
        App --> Backend
    end

    Backend -->|REST API| UR

    subgraph UR["UR — Banking Infrastructure"]
        KYC["KYC & Compliance\nAll users verified by UR\nPartners may assist data collection"]

        subgraph Services["Modular Banking Services  (partner selects)"]
            direction LR
            Bal["Multi-Currency\nFiat Balance"]
            PayIn["Fiat Pay-in\n(Bank Transfer)"]
            PayOut["Fiat Payout\n(Bank Transfer)"]
            Cards["Card Spending\n(Co-branded Mastercard)"]
        end

        KYC -->|"User verified — Live"| Services
    end

    subgraph Rails["Banking Rails  (managed by UR)"]
        direction LR
        SEPA["SEPA · SWIFT\nGlobal Transfers"]
        MC["Mastercard Network\nGlobal Acceptance"]
    end

    PayIn <--> SEPA
    PayOut <--> SEPA
    Cards <--> MC
```

**Reference docs:**

* [Fiat Pay-in (Bank Transfer)](https://docs.ur.app/concepts/deposits)
* [Fiat Payout (Bank Transfer)](https://docs.ur.app/concepts/withdrawals)
* [Core Banking Overview](https://docs.ur.app/concepts/core-banking-overview)

### Card spending: Buffer Pool Model <a href="#id-21f9d20d-0dc9-41fb-a611-7c47f51c662c" id="id-21f9d20d-0dc9-41fb-a611-7c47f51c662c"></a>

> Suited for partners who hold significant crypto assets on behalf of their users — e.g. a crypto exchange or a neobank.

In this model, the partner pre-funds a fiat/USDC-based buffer pool held at UR. Card spending draws from this pool instantly — no per-user offramp is required at the moment of spend. The pool is replenished periodically by the partner, entirely invisible to end users.

**Phase 1: Prefund (partner-initiated)**

The partner periodically tops up their buffer pool at UR. UR maintains a minimum balance to ensure continuous card authorization capacity.

**Phase 2: Card Spend (user-initiated)**

When a user taps their card, UR routes the authorization and checks with the partner in real time. Upon approval, the spend is drawn from the buffer pool and routed through the user's linked card account.

**User experience:** Seamless; the user just taps and pays. No manual conversion step required.

```mermaid
sequenceDiagram
    participant Partner as Partner Platform
    participant UR as UR
    participant Pool as Partner Buffer Pool<br/>(held at UR)
    participant MC as Mastercard Network
    participant Merchant

    Note over Partner, Pool: Phase 1 — Prefund (automated · daily / weekly)
    Partner->>UR: Sends USDC to UR buffer pool
    UR-->>Pool: Credit fiat to Partner's buffer account (ops account)
    Note over Pool: Minimum balance maintained<br/>for card spending capacity

    Note over Partner, Merchant: Phase 2 — Card Spending (user-initiated)
    Merchant->>MC: Authorization request (user taps card)
    MC->>UR: Route: Authorize €X for this card?
    UR->>Partner: Webhook: "Approve spend for this user?"
    Partner-->>UR: Approved
    UR->>Pool: Debit from Partner's buffer pool
    Pool-->>UR: Confirmed
    UR->>UR: Fund user's linked card account
    UR-->>MC: Approved
    MC-->>Merchant: Transaction complete
```

### Card spending: Off-ramp First <a href="#id-31f192a8-f469-4487-8b36-5e6b3db6aa35" id="id-31f192a8-f469-4487-8b36-5e6b3db6aa35"></a>

> Suited for partners where users hold their own crypto in self-custody, external wallets or for users wanting to spend non-stablecoin assets.

In this model, users must first convert their crypto to fiat before spending. Once fiat lands in their UR account, the card draws from that balance. No partner-side buffer pool is required.

**Step 1: Offramp (user-initiated)**

The user converts crypto to fiat via the partner app. UR executes the conversion at a quoted rate and credits the user's UR fiat balance.

**Step 2: Card spend**

The user taps their card. UR authorizes against the available fiat balance.

**User experience:** Users need to convert before they can spend.

```mermaid
sequenceDiagram
    participant User as End User
    participant Partner as Partner Platform
    participant UR as UR
    participant MC as Mastercard Network
    participant Merchant

    Note over User, UR: Step 1 — Convert crypto to fiat (user-initiated)
    User->>Partner: Initiate cash-out (e.g. 500 USDC)
    Partner->>UR: Request conversion quote (USDC → EUR)
    UR-->>Partner: Quote returned (e.g. €431 · valid 30s)
    User->>Partner: Confirm
    Partner->>UR: Execute conversion
    UR-->>User: €431 credited to UR fiat balance

    Note over User, Merchant: Step 2 — Card spending (draws from fiat balance)
    User->>Merchant: Tap UR co-branded card
    Merchant->>MC: Authorization request
    MC->>UR: Route: Authorize €50?
    UR->>UR: Verify user fiat balance
    UR-->>MC: Approved
    MC-->>Merchant: Transaction complete
```

**Reference docs:**

* [Crypto-to-Fiat Offramp flow](https://docs.ur.app/concepts/deposits#crypto-to-fiat-conversion-offramp)
* [Card Spending flow](https://docs.ur.app/concepts/what-is-ur#the-spending-flow-from-fiat-balance-to-a-real-world-purchase)
* [External Wallet Access Mode](/integration-methods/external-wallet-access-mode.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ur.app/welcome/partner-integration-flow-concepts.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
