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

# Accept a partner order quote

> Accepts a quote returned by `/partner/orders/quote`. For local fiat rail, the `quote_id` already contains the provider and direction, so the request body can be `{}`. international bank quote ids work the same way. Accepting creates or returns the local ElementPay order, copies the API key webhook URL, and triggers partner webhook notifications as the order moves through `order.processing`, `order.settled`, `order.failed`, or `order.refunded`. This route is idempotent for already accepted local fiat rail previews: retries return the existing local order.

Accept a previously created quote and create the local order.

Send the same customer and payment method payload shape used at quote time (see [Test payloads](/sandbox/test-payloads)).

OnRamp: final payment instructions are returned after accept when applicable.


## OpenAPI

````yaml /api-reference/openapi.json post /partner/orders/{quote_id}/accept
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/orders/{quote_id}/accept:
    post:
      tags:
        - partner
      summary: Accept a partner order quote
      description: >-
        Accepts a quote returned by `/partner/orders/quote`. For local fiat
        rail, the `quote_id` already contains the provider and direction, so the
        request body can be `{}`. international bank quote ids work the same
        way. Accepting creates or returns the local ElementPay order, copies the
        API key webhook URL, and triggers partner webhook notifications as the
        order moves through `order.processing`, `order.settled`, `order.failed`,
        or `order.refunded`. This route is idempotent for already accepted local
        fiat rail previews: retries return the existing local order.
      operationId: partner_order_accept_partner_orders__quote_id__accept_post
      parameters:
        - name: quote_id
          in: path
          required: true
          schema:
            type: string
            description: Quote id returned by `/partner/orders/quote`.
            title: Quote Id
          description: Quote id returned by `/partner/orders/quote`.
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
                - $ref: '#/components/schemas/PartnerOrderAcceptRequest'
                - type: 'null'
              title: Body
            examples:
              empty:
                summary: Accept quote
                description: >-
                  Most callers can send an empty object; provider is inferred
                  from quote_id.
                value: {}
              provider_assertion:
                summary: Accept quote with provider assertion
                value:
                  rail: local_fiat
      responses:
        '200':
          description: Partner order quote accepted
          content:
            application/json:
              schema: {}
              example:
                status: success
                message: Partner order quote accepted
                data:
                  quote_id: yc_receive_580e04c2-a136-5cca-be54-b49fcf80970c
                  status: processing
                  order:
                    order_id: YC-580e04c2-a136-5cca-be54-b49fcf80970c
                    status: processing
                    order_type: OnRamp
                    amount_fiat: 800
                    amount_crypto: 5.94999
                    currency: KES
                    token: BASE_USDC
                    wallet_address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
                    exchange_rate: 131.69
                    psp_transaction_id: 580e04c2-a136-5cca-be54-b49fcf80970c
                  accepted:
                    payment_instructions:
                      type: momo
                      source:
                        accountNumber: '+2541111111111'
                        networkName: Mobile Wallet (M-PESA)
                  webhooks:
                    events:
                      - order.processing
                      - order.settled
                      - order.failed
                      - order.refunded
                    delivery: >-
                      ElementPay will notify the webhook_url configured on the
                      API key.
                  rail: local_fiat
        '400':
          description: Invalid quote id or provider mismatch
          content:
            application/json:
              example:
                status: error
                message: >-
                  Unsupported quote_id. Expected `yc_receive_<preview_id>` or
                  `yc_send_<preview_id>`.
        '409':
          description: Provider quote is not acceptable
          content:
            application/json:
              examples:
                not_accepted_or_terminal:
                  summary: local fiat rail preview cannot be synced as accepted
                  value:
                    status: error
                    message: Quote request failed
                    data: null
              example:
                status: error
                message: Quote request failed
                data: null
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                type: object
                required:
                  - status
                  - message
                properties:
                  status:
                    type: string
                    enum:
                      - error
                  message:
                    type: string
                  data:
                    type:
                      - object
                      - 'null'
              example:
                status: error
                message: Missing requirements for selected route
                data:
                  field: order_type
        '502':
          description: Provider accept/lookup failed
          content:
            application/json:
              examples:
                accept_failed:
                  summary: local fiat rail accept failed upstream
                  value:
                    status: error
                    message: Quote request failed
                    data: null
              example:
                status: error
                message: Quote request failed
                data: null
      security:
        - APIKeyHeader: []
components:
  schemas:
    PartnerOrderAcceptRequest:
      properties:
        provider:
          anyOf:
            - type: string
              enum:
                - local fiat rail
                - international bank
                - elementpay
            - type: 'null'
          title: Provider
          description: Optional provider assertion. Usually inferred from quote_id.
        payment_method:
          anyOf:
            - type: object
            - type: 'null'
          title: Payment Method
          description: >-
            Required for international bank OffRamp: form fields from the
            corridor's ``form_schema`` (returned in the quote response). Keys
            match the international bank FormSchema properties e.g.
            ``BankDetails``, ``AccountHolderName``, ``PaymentPurpose``.
      additionalProperties: false
      type: object
      title: PartnerOrderAcceptRequest
      description: >-
        Accept a partner quote. Empty body is supported when quote_id identifies
        the route.
      examples:
        - {}
        - rail: local_fiat
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key

````