> 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 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.fonbnk.com/server-to-server/api-endpoints/get-order-limits.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.
