> For the complete documentation index, see [llms.txt](https://docs.inqud.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.inqud.com/on-ramp/integration/checkout-flow.md).

# Checkout flow

## Prerequisites

* Your business account with Inqud is set up, complete with API tokens configured.
* The On-Ramp Project has been established and configured within the Inqud platform.
* The On-Ramp Project is active.

### Workflow

<figure><img src="/files/yDoqXJ9qes7CmdeyXewE" alt=""><figcaption></figcaption></figure>

### Checkout status transition

<figure><img src="/files/KRt4epmzM8BqaJ3aJX79" alt="" width="375"><figcaption></figcaption></figure>

### Integration

#### 1. Create checkout through Inqud API

[Create On-Ramp Checkout API Reference](https://apireference.inqud.com/#tag/on-ramp-checkouts/operation/user-on_ramp-create_checkout)

{% tabs %}
{% tab title="Only Required Fields" %}
Request Example:\
\
POST `https://api.inqud.com/v1/user/on-ramp/{onRampProjectId}/checkouts`

| Header             | Value            |
| ------------------ | ---------------- |
| X-Token-API-Id     | {tokenApiId}     |
| X-Token-API-Secret | {tokenApiSecret} |

Request Body Example:

```json
{    
    "type": "FIXED_PRICE", // Type of checkout
    "fixedAmount": {
        "amount": 100,     // User pay amount
        "currency": "USD"  // User pay currency
    },
    "clientOrderId": null, // If not provided, identify by id or orderId from response
    "expiresAt": null,     // If not provided, used default: now() + 1 hour
    "merchantShareUserData": null, // If not provided, user will sign-in/up by himself
    "name": null,          // If not provided, user will not see it on payment page
    "returnUrl": null      // If not provided, user will not be redirected on payment complete
}
```

Response Example:

```json
{
  "id": "ORCO-979d6f5d-f26b-4943-bc4f-eabc65787c6c", // Checkout id
  "onRampUrl": "https://onramp.inqud.com/checkout/ORCO-979d6f5d-f26b-4943-bc4f-eabc65787c6c", // User redirect payment URL
  "orderId": "ORD-ec9735a4-2098-479d-9f00-b142db4adfff", // Order id
  "projectId": "ORP-46dfa42b-6338-4c33-1e1d-cf7062053f22", // On-Ramp project ID
  "projectName": "My on-ramp project",  // On-Ramp project Name
  "sourceAmount": 90, // User pay amount, may be different from fixedAmount.amount if currency changed
  "sourceCurrency": "EUR",  // User pay currency, may be different from fixedAmount.currency
  "status": "PENDING",  // Checkout status
  "targetAmount": 99.5,  // Merchant receive amount
  "targetCurrency": "USDC", // Merchant receive currency
  "type": "FIXED_PRICE", // Checkout type
  "createdAt": "2026-01-01T00:00:00Z",
  "modifiedAt": "2026-01-01T00:00:00Z",
  "expiresAt": "2026-01-02T00:00:00Z",
  "name": null,
  "clientOrderId": null,
  "returnUrl": null,
  "deposit": null,
  "endUserId": null,
  "exchange": null,
  "transfer": null,
}
```

{% endtab %}

{% tab title="Required and Optional Fields" %}
Request Example:\
\
POST `https://api.inqud.com/v1/user/on-ramp/{onRampProjectId}/checkouts`

| Header             | Value            |
| ------------------ | ---------------- |
| X-Token-API-Id     | {tokenApiId}     |
| X-Token-API-Secret | {tokenApiSecret} |

Request Body Example:

```json
{    
    "type": "FIXED_PRICE", // Type of checkout
    "fixedAmount": {
        "amount": 100,     // User pay amount
        "currency": "USD"  // User pay currency
    },
    "clientOrderId": "unique-merchant-id", // If provided, can be used to identify checkout
    "expiresAt": "2026-01-31T00:00:00Z", // Checkout expiration date
    "merchantShareUserData": null, // If not provided, user will sign-in/up by himself
    "name": "100 USD Top Up", // Will be displayed on checkout page
    "returnUrl": "https://merchant-site.com/success?id=unique-merchant-id" // If provided, user will be redirected on payment complete
}
```

Response Example:

```json
{
  "id": "ORCO-979d6f5d-f26b-4943-bc4f-eabc65787c6c", // Checkout id
  "onRampUrl": "https://onramp.inqud.com/checkout/ORCO-979d6f5d-f26b-4943-bc4f-eabc65787c6c", // User redirect payment URL
  "orderId": "ORD-ec9735a4-2098-479d-9f00-b142db4adfff", // Order id
  "projectId": "ORP-46dfa42b-6338-4c33-1e1d-cf7062053f22", // On-Ramp project ID
  "projectName": "My on-ramp project",  // On-Ramp project Name
  "sourceAmount": 90,// User pay amount, may be different from fixedAmount.amount if currency changed
  "sourceCurrency": "EUR",  // User pay currency, may be different from fixedAmount.currency
  "status": "PENDING",  // Checkout status
  "targetAmount": 99.5,  // Merchant receive amount
  "targetCurrency": "USDC", // Merchant receive currency
  "clientOrderId": "unique-merchant-id", // If provided, can be used to identify checkout
  "type": "FIXED_PRICE", // Checkout type
  "createdAt": "2026-01-01T00:00:00Z",
  "modifiedAt": "2026-01-01T00:00:00Z",
  "expiresAt": "2026-01-31T00:00:00Z",
  "name": "100 USD Top Up", // Will be displayed on checkout page
  "returnUrl": "https://merchant-site.com/success?id=unique-merchant-id", // If provided, user will be redirected on payment complete
  "deposit": null,
  "endUserId": null,
  "exchange": null,
  "transfer": null,
}
```

{% endtab %}

{% tab title="Share KYC " %}
Refer to [Shared KYC](/on-ramp/integration/shared-kyc.md) for extra details\
\
Generate token for your user using\
<https://docs.sumsub.com/reference/generate-share-token>\
\
Provide shared token to `merchantShareUserData.shareToken`\
\ <br>

Request Example:\
\
POST `https://api.inqud.com/v1/user/on-ramp/{onRampProjectId}/checkouts`

| Header             | Value            |
| ------------------ | ---------------- |
| X-Token-API-Id     | {tokenApiId}     |
| X-Token-API-Secret | {tokenApiSecret} |

Request Body Example:

```json
{    
    "type": "FIXED_PRICE", // Type of checkout
    "fixedAmount": {
        "amount": 100,     // User pay amount
        "currency": "USD"  // User pay currency
    },
    "clientOrderId": "unique-merchant-id", // If provided, can be used to identify checkout
    "expiresAt": "2026-01-31T00:00:00Z", // Checkout expiration date
    "merchantShareUserData": {
        "email": "user@example.com", // User email in merchant system
        "shareToken": "share_token_abc123" // Sumsub-generated share token
    },
    "name": "100 USD Top Up", // Will be displayed on checkout page
    "returnUrl": "https://merchant-site.com/success?id=unique-merchant-id" // If provided, user will be redirected on payment complete
}
```

Response Example:

```json
{
  "id": "ORCO-979d6f5d-f26b-4943-bc4f-eabc65787c6c", // Checkout id
  "onRampUrl": "https://onramp.inqud.com/checkout/ORCO-979d6f5d-f26b-4943-bc4f-eabc65787c6c", // User redirect payment URL
  "orderId": "ORD-ec9735a4-2098-479d-9f00-b142db4adfff", // Order id
  "projectId": "ORP-46dfa42b-6338-4c33-1e1d-cf7062053f22", // On-Ramp project ID
  "projectName": "My on-ramp project",  // On-Ramp project Name
  "sourceAmount": 90,// User pay amount, may be different from fixedAmount.amount if currency changed
  "sourceCurrency": "EUR",  // User pay currency, may be different from fixedAmount.currency
  "status": "PENDING",  // Checkout status
  "targetAmount": 99.5,  // Merchant receive amount
  "targetCurrency": "USDC", // Merchant receive currency
  "clientOrderId": "unique-merchant-id", // If provided, can be used to identify checkout
  "type": "FIXED_PRICE", // Checkout type
  "createdAt": "2026-01-01T00:00:00Z",
  "modifiedAt": "2026-01-01T00:00:00Z",
  "expiresAt": "2026-01-31T00:00:00Z",
  "name": "100 USD Top Up", // Will be displayed on checkout page
  "returnUrl": "https://merchant-site.com/success?id=unique-merchant-id", // If provided, user will be redirected on payment complete
  "deposit": null,
  "endUserId": null,
  "exchange": null,
  "transfer": null,
}
```

{% endtab %}
{% endtabs %}

#### 2. Receive a webhook when a checkout changes status

As checkout changes its statuses, webhook are being sent if configured.\
Webhook body contains same model as **POST** `/checkouts` response. \
Proceed to Web Hooks section for extra information and examples

{% content-ref url="/pages/4nXWDxW1Hzl8qm87YMMm" %}
[Web Hooks](/on-ramp/integration/web-hooks.md)
{% endcontent-ref %}


---

# 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:

```
GET https://docs.inqud.com/on-ramp/integration/checkout-flow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
