> For the complete documentation index, see [llms.txt](https://docs.fonbnk.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fonbnk.com/server-to-server/api-endpoints/get-order-limits.md).

# Get order limits

## <mark style="color:$success;">\[GET]</mark> /api/v2/order-limits

Returns the min and max order amount for one deposit/payout pair, in both the leg's own currency and USD.

Request query params type:

```typescript
type QueryParams = {
    depositPaymentChannel: PaymentChannel,// required
    depositCurrencyType: CurrencyType,// required
    depositCurrencyCode: string,// required
    depositCarrierCode?: string,// optional
    depositCountryIsoCode?: string,// required if depositCurrencyType is fiat
    payoutPaymentChannel: PaymentChannel,// required
    payoutCurrencyType: CurrencyType,// required
    payoutCurrencyCode: string,// required
    payoutCarrierCode?: string,// optional
    payoutCountryIsoCode?: string// required if payoutCurrencyType is fiat
}
```

Request URL example:

{% code overflow="wrap" %}

```
GET /api/v2/order-limits?depositPaymentChannel=bank&depositCurrencyType=fiat&depositCurrencyCode=NGN&depositCountryIsoCode=NG&payoutPaymentChannel=crypto&payoutCurrencyType=crypto&payoutCurrencyCode=CELO_USDT
```

{% endcode %}

Response type:

{% code overflow="wrap" expandable="true" %}

```typescript
type Response = {
  deposit: {
    min: number;              // in the deposit currency
    max: number;
    minUsd: number;
    maxUsd: number;
    step: number;             // increment the amount must be a multiple of
    supportsDecimals: boolean;// false means whole units only
  },
  payout: {
    min: number;
    max: number;
    minUsd: number;
    maxUsd: number;
    step: number;
    supportsDecimals: boolean;
  },
  supported: boolean;         // false means no offer serves this corridor
  unsupportedReason?: {       // present only when supported is false
    errorCode: string;
    message: string;
    details: { leg: 'deposit' | 'payout'; field: string };
  },
}
```

{% endcode %}

Use `step` and `supportsDecimals` to drive your amount input. A fiat leg is usually whole units with `step: 1`; a crypto leg usually allows decimals. Rounding an amount the wrong way is the most common cause of a rejected Create quote.

Response example:

```json
{
    "deposit": {
        "min": 1494,
        "max": 747367,
        "minUsd": 1,
        "maxUsd": 500,
        "step": 1,
        "supportsDecimals": false
    },
    "payout": {
        "min": 1,
        "max": 500,
        "minUsd": 1,
        "maxUsd": 500,
        "step": 0.000001,
        "supportsDecimals": true
    },
    "supported": true
}
```

### When the corridor is not served

This endpoint always answers `200`. A corridor no offer serves comes back with every limit set to `0`, `supported: false`, and an `unsupportedReason` that says which field has nothing behind it. `unsupportedReason.errorCode` and `unsupportedReason.details` are the same values, in the same shape, that a `404` from Create quote would carry — see Errors.

```json
{
    "deposit": { "min": 0, "max": 0, "minUsd": 0, "maxUsd": 0, "step": 0, "supportsDecimals": false },
    "payout": { "min": 0, "max": 0, "minUsd": 0, "maxUsd": 0, "step": 0, "supportsDecimals": false },
    "supported": false,
    "unsupportedReason": {
        "errorCode": "COUNTRY_NOT_SUPPORTED",
        "message": "Fonbnk does not support this deposit country for this currency. Supported countries: KE, NG. Call GET /api/v2/currencies for the currencies, countries, payment channels and carriers Fonbnk supports.",
        "details": { "leg": "deposit", "field": "deposit.countryIsoCode" }
    }
}
```

{% hint style="danger" %}
**Check `supported` before you read a limit.** The channel and currency-type params are not enum-validated, so a typo, an unsupported pair, and a pair whose providers are all currently unavailable all come back as `200` with zeros. Never show `0` to a user as a limit. `unsupportedReason.errorCode` tells you whether to fix the request or to retry later — the codes are listed on Errors.
{% endhint %}

{% hint style="info" %}
`LIMITS_DO_NOT_OVERLAP` is the one code you will see here and nowhere else. It means both legs have routes and no single amount satisfies both, usually because of a per-transaction limit on your account. There is nothing further to read: this endpoint is the window, and it is these zeros.
{% endhint %}

### How the window is built

Start with the **widest** range any available provider supports — the lowest minimum and the highest maximum across all matching offers. That range is then narrowed twice: by the limit rules on your account, and by reconciling the two legs against each other so both are satisfiable.

So the number you get is not any single provider's range, and it moves with exchange rates, with provider availability, and with your own limits. Read it again each time the user opens your amount screen rather than caching it.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.fonbnk.com/server-to-server/api-endpoints/get-order-limits.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
