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

# Checkout catalog (corridors, methods, and providers)

> Single indicative catalog for partner checkout UI: per-country onramp/offramp, ``mobile_money`` and ``bank`` buckets with live provider lists, optional ``rails`` for international payout markets, and ``international_bank`` for EUR/USD payin. Composed from cached upstream discovery APIs (refreshed periodically). ``providers[].id`` is the opaque institution UUID to send as ``payment_method.network_id`` on quote (bank rows may also use ``GET /banks``). Each provider includes ``min_amount``, ``max_amount``, and ``currency`` for checkout validation. **OnRamp and OffRamp provider lists can differ** for the same country (filter with ``order_type``). Optional filters: ``country``, ``currency``, ``order_type`` (``OnRamp`` | ``OffRamp``). Omit filters for the full tree. Binding eligibility: ``POST /partner/orders/quote``.

Single indicative catalog for partner checkout: per-country onramp/offramp, `mobile_money` and `bank` buckets with live provider lists, optional `rails` for international payout markets, and `international_bank` for EUR/USD payin.

### Provider IDs

`providers[].id` is the opaque institution UUID to send as `payment_method.network_id` on quote. Bank rows may also use [`GET /partner/banks`](/partner/banks).

Each provider includes `min_amount`, `max_amount`, and `currency` for checkout validation.

<Warning>
  **OnRamp and OffRamp provider lists can differ** for the same country — filter with `order_type`.
</Warning>

Optional filters: `country`, `currency`, `order_type`. Omit filters for the full tree.

<Note>
  Binding eligibility: [`POST /partner/orders/quote`](/partner/orders/quote).
</Note>


## OpenAPI

````yaml /api-reference/openapi.json get /partner/catalog
openapi: 3.1.0
info:
  title: Element Pay Partner API
  description: >-
    Provider-neutral fiat ↔ crypto ramps for partners. Discover corridors,
    create a binding quote, accept it, and receive webhooks. African local fiat
    (mobile money and bank) is auto-routed by corridor.
  version: 1.0.0
servers:
  - url: https://sandbox.elementpay.net/api/v1
    description: Sandbox
security:
  - APIKeyHeader: []
tags:
  - name: partner
    description: >-
      Corridor discovery, indicative rates, binding quotes, and order acceptance
      (including account currency conversion).
    x-group: Partner
  - name: partner-customers
    description: >-
      Vault KYC: requirements, create, list, get/update, documents, and submit
      (pcus_*).
    x-group: Customers
  - name: partner-customer-accounts
    description: >-
      Customer accounts and funding: open/list/get rails, deposit instructions,
      stablecoin sends, and same-currency fiat book transfers.
    x-group: Customer accounts
paths:
  /partner/catalog:
    get:
      tags:
        - partner
      summary: Checkout catalog (corridors, methods, and providers)
      description: >-
        Single indicative catalog for partner checkout UI: per-country
        onramp/offramp, ``mobile_money`` and ``bank`` buckets with live provider
        lists, optional ``rails`` for international payout markets, and
        ``international_bank`` for EUR/USD payin. Composed from cached upstream
        discovery APIs (refreshed periodically). ``providers[].id`` is the
        opaque institution UUID to send as ``payment_method.network_id`` on
        quote (bank rows may also use ``GET /banks``). Each provider includes
        ``min_amount``, ``max_amount``, and ``currency`` for checkout
        validation. **OnRamp and OffRamp provider lists can differ** for the
        same country (filter with ``order_type``). Optional filters:
        ``country``, ``currency``, ``order_type`` (``OnRamp`` | ``OffRamp``).
        Omit filters for the full tree. Binding eligibility: ``POST
        /partner/orders/quote``.
      operationId: partner_catalog_partner_catalog_get
      parameters:
        - name: country
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by ISO country (e.g. KE).
            title: Country
          description: Filter by ISO country (e.g. KE).
        - name: currency
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by fiat currency (e.g. KES, EUR).
            title: Currency
          description: Filter by fiat currency (e.g. KES, EUR).
        - name: order_type
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: 'Filter by order type: OnRamp (buy) or OffRamp (sell).'
            examples:
              - OnRamp
              - OffRamp
            title: Order Type
          description: 'Filter by order type: OnRamp (buy) or OffRamp (sell).'
      responses:
        '200':
          description: Checkout catalog (corridors, methods, providers)
          content:
            application/json:
              schema:
                type: object
                required:
                  - status
                  - message
                properties:
                  status:
                    type: string
                    enum:
                      - success
                  message:
                    type: string
                  data:
                    type: object
              example:
                status: success
                message: Supported corridors and payment methods
                data:
                  disclaimer: >-
                    Indicative catalog. Binding eligibility and price: POST
                    /api/v1/partner/orders/quote.
                  onramp:
                    countries:
                      KE:
                        country_code: KE
                        country_name: Kenya
                        currency: KES
                        enabled: true
                        payment_methods:
                          mobile_money:
                            enabled: true
                            label: Mobile Money
                            quote_type: mobile_money
                            providers:
                              - code: M PESA
                                name: Mobile Wallet (M-PESA)
                                enabled: true
                                id: 7ea6df5c-6bba-46b2-a7e6-f511959e7edb
                                min_amount: 150
                                max_amount: 250000
                                currency: KES
                          bank:
                            enabled: true
                            label: Bank Transfer
                            quote_type: bank
                            providers:
                              - code: NATIONAL_BANK_OF_KENYA
                                name: NATIONAL BANK OF KENYA
                                enabled: true
                                id: 30f11b2e-0905-4c09-ba5f-d05aa4e4a11c
                                min_amount: 300
                                max_amount: 99999999
                                currency: KES
              examples:
                ke_onramp_catalog:
                  summary: KE OnRamp catalog slice
                  value:
                    status: success
                    message: Supported corridors and payment methods
                    data:
                      disclaimer: >-
                        Indicative catalog. Binding eligibility and price: POST
                        /api/v1/partner/orders/quote.
                      onramp:
                        countries:
                          KE:
                            country_code: KE
                            country_name: Kenya
                            currency: KES
                            enabled: true
                            payment_methods:
                              mobile_money:
                                enabled: true
                                label: Mobile Money
                                quote_type: mobile_money
                                providers:
                                  - code: M PESA
                                    name: Mobile Wallet (M-PESA)
                                    enabled: true
                                    id: 7ea6df5c-6bba-46b2-a7e6-f511959e7edb
                                    min_amount: 150
                                    max_amount: 250000
                                    currency: KES
                              bank:
                                enabled: true
                                label: Bank Transfer
                                quote_type: bank
                                providers: []
        '400':
          description: Bad request (missing corridor parameters or rail resolution failed)
          content:
            application/json:
              schema:
                type: object
                required:
                  - status
                  - message
                properties:
                  status:
                    type: string
                    enum:
                      - error
                  message:
                    type: string
                  data:
                    type:
                      - object
                      - 'null'
                    properties:
                      field:
                        type: string
                      country:
                        type: string
                      currency:
                        type: string
                      upstream_http_status:
                        type: integer
              example:
                status: error
                message: >-
                  Provide country for African corridors (e.g. KE) or currency
                  for international bank (EUR/USD).
                data: null
        '422':
          description: Validation error (corridor not supported or invalid parameters)
          content:
            application/json:
              schema:
                type: object
                required:
                  - status
                  - message
                properties:
                  status:
                    type: string
                    enum:
                      - error
                  message:
                    type: string
                  data:
                    type:
                      - object
                      - 'null'
                    properties:
                      field:
                        type: string
                      country:
                        type: string
                      currency:
                        type: string
                      upstream_http_status:
                        type: integer
              example:
                status: error
                message: Corridor not supported on this environment.
                data:
                  currency: EUR
                  country: FR
        '502':
          description: Upstream discovery temporarily unavailable
          content:
            application/json:
              schema:
                type: object
                required:
                  - status
                  - message
                properties:
                  status:
                    type: string
                    enum:
                      - error
                  message:
                    type: string
                  data:
                    type:
                      - object
                      - 'null'
                    properties:
                      field:
                        type: string
                      country:
                        type: string
                      currency:
                        type: string
                      upstream_http_status:
                        type: integer
              example:
                status: error
                message: Quote request failed
                data:
                  upstream_http_status: 502
              examples:
                upstream_unavailable:
                  summary: Discovery upstream error
                  value:
                    status: error
                    message: Quote request failed
                    data:
                      upstream_http_status: 502
      security:
        - APIKeyHeader: []
components:
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key

````