> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rampnow.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Onramp & Offramp Intent Overview

> Create buy and sell orders from your backend and hand the user to Rampnow's hosted checkout

<Note>
  An **intent** is an order your backend creates with the amount, asset and destination already fixed. The user can't change them; they only verify and complete the order on Rampnow's hosted pages, then return to your app.

  One API covers both directions. You create an intent with `POST /ext/ramp_order/checkout`, sending the order and the user's details, and set `orderType`:

  * `"buy"` for **onramp**: the user pays fiat and receives crypto in their wallet.
  * `"sell"` for **offramp**: the user sends crypto and receives fiat in their bank account.

  Rampnow returns a checkout link for the user.
</Note>

## How it works

You own the screens before checkout: asset selection, amount, quote and user details. Rampnow runs everything after that, using trusted third-party KYC, payment and payout providers.

<Tabs>
  <Tab title="Onramp (buy)">
    Rampnow runs email/OTP, KYC, payment capture and settlement. The user pays with fiat (card, bank transfer, Apple Pay, …) and gets crypto delivered to the destination wallet.
  </Tab>

  <Tab title="Offramp (sell)">
    Rampnow runs email/OTP, KYC, deposit collection, fiat payout and settlement. The user sends crypto to the deposit address shown on the hosted page and gets fiat paid out to their bank account.
  </Tab>
</Tabs>

<div style={{display: 'grid', gridTemplateColumns: '1fr 1fr', gap: '1rem'}}>
  <Card title="Your UI, your data" icon="sliders">
    Build the pre-checkout journey yourself and pre-fill everything Rampnow needs
  </Card>

  <Card title="No user onboarding call" icon="user-check">
    User details go on the order. Rampnow creates or matches the customer automatically
  </Card>

  <Card title="Hosted checkout" icon="shield-check">
    KYC, payment, deposit and payout run on Rampnow's hosted pages, through third-party providers
  </Card>

  <Card title="Real-time status" icon="bell">
    Webhooks on every order status change
  </Card>
</div>

## Integration steps

The same five steps apply to buy and sell orders. Each step page has an **Onramp (buy)** / **Offramp (sell)** switch where the two differ.

<Steps>
  <Step title="Check supported config">
    Discover which assets, chains, payment modes and countries are live. [Read more →](/quickstart/ramp-intent/supported-config)
  </Step>

  <Step title="Get a quote">
    Price the order with `POST /ext/ramp_order/quote` and show the user what they get. [Read more →](/quickstart/ramp-intent/get-quote)
  </Step>

  <Step title="Create the order">
    Call `POST /ext/ramp_order/checkout` with the order and the user's details. Rampnow creates the user for you. [Read more →](/quickstart/ramp-intent/create-order)
  </Step>

  <Step title="Redirect the user">
    Send the user to the returned `redirectUrl` to finish verification and the payment or crypto deposit. [Read more →](/quickstart/ramp-intent/redirect-user)
  </Step>

  <Step title="Track the order">
    Get status updates by webhook, or poll the order by your `externalOrderUid`. [Read more →](/quickstart/ramp-intent/track-order)
  </Step>
</Steps>

<Tip>
  Every call is authenticated with your API key and an HMAC signature. Set this up first: [Authentication](/api-reference/authentication).
</Tip>

<Info>
  The examples in this guide use the production host `https://api.rampnow.io`. While integrating, use a **sandbox** key against `https://api.sandbox.rampnow.io` (checkout pages are served from `https://app.sandbox.rampnow.io`). Keys are environment-scoped. See [Environments](/api-reference/authentication#environments).
</Info>

## Sequence

<Tabs>
  <Tab title="Onramp (buy)">
    ```mermaid theme={null}
    sequenceDiagram
        participant User
        participant Partner as Your Platform
        participant Rampnow as Rampnow API

        User->>Partner: Chooses asset + amount
        Partner->>Rampnow: POST /ext/ramp_order/quote
        Rampnow-->>Partner: Quote (amounts, feeDetails)
        Partner->>User: Shows quote
        User->>Partner: Confirms
        Partner->>Rampnow: POST /ext/ramp_order/checkout (order + user)
        Rampnow-->>Partner: orderUid, userUid, redirectUrl
        Partner->>User: Redirect to redirectUrl
        Rampnow->>User: Email + OTP verification
        Rampnow->>User: KYC (only if the user isn't already verified)
        Rampnow->>User: Payment with the selected or chosen payment method
        Rampnow-->>User: Redirect back to returnUrl
        Rampnow-->>Partner: Webhook (order status)
    ```
  </Tab>

  <Tab title="Offramp (sell)">
    ```mermaid theme={null}
    sequenceDiagram
        participant User
        participant Partner as Your Platform
        participant Rampnow as Rampnow API

        User->>Partner: Chooses asset + amount
        Partner->>Rampnow: POST /ext/ramp_order/quote
        Rampnow-->>Partner: Quote (amounts, feeDetails)
        Partner->>User: Shows quote
        User->>Partner: Confirms
        Partner->>Rampnow: POST /ext/ramp_order/checkout (order + user)
        Rampnow-->>Partner: orderUid, userUid, redirectUrl
        Partner->>User: Redirect to redirectUrl
        Rampnow->>User: Email + OTP verification
        Rampnow->>User: KYC (only if the user isn't already verified)
        Rampnow->>User: Payout account confirmation
        Rampnow->>User: Crypto deposit to the address shown, with on-chain confirmation
        Rampnow-->>User: Redirect back to returnUrl
        Rampnow-->>Partner: Webhook (order status)
    ```
  </Tab>
</Tabs>

## When to use the Intent flow

<AccordionGroup>
  <Accordion title="Ideal for" icon="check">
    * Platforms that want to own the pre-checkout experience (quote, asset picker, user details)
    * Apps that already hold verified user data and want to pre-fill it
    * Backends that need to create and reconcile orders server-to-server
  </Accordion>

  <Accordion title="Considerations" icon="triangle-exclamation">
    * Needs backend work: request signing, quote and order calls, webhook handling
    * The user leaves your app for the hosted checkout step
    * For a no-code embed, use the [Widget](/quickstart/ramp-widget/overview) or the [SDK](/quickstart/ramp-sdk/overview) instead
  </Accordion>
</AccordionGroup>

<Card title="Start: Step 1 — Check supported config" icon="arrow-right" href="/quickstart/ramp-intent/supported-config">
  Find out which buy and sell routes are live for your account
</Card>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.