---
title: "Get a v2 payment order by ID (provider)"
method: GET
path: "/provider/orders/{id}"
tags: ["Provider"]
---

# Get a v2 payment order by ID (provider)

`GET /provider/orders/{id}`

Returns a single payment order assigned to the authenticated provider, including polymorphic source/destination, providerAccount, and transaction logs.

## Path parameters

- `id` string, uuid, required

## Response `200`

V2 payment order

- object
  - `status` string
  - `message` string
  - `data` V2PaymentOrderGetResponse — Response for a single order (or list item)
    - `id` string, uuid
    - `status` 'initiated' | 'deposited' | 'pending' | 'fulfilling' | 'fulfilled' | 'validated' | 'settling' | 'settled' | 'cancelled' | 'refunding' | 'refunded' | 'expired'
    - `orderType` 'regular' | 'otc'
    - `direction` 'offramp' | 'onramp'
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `amount` string
    - `amountInUsd` string
    - `amountPaid` string
    - `amountReturned` string
    - `percentSettled` string
    - `rate` string
    - `senderFee` string
    - `senderFeePercent` string
    - `transactionFee` string
    - `reference` string
    - `txHash` string
    - `providerAccount` union
      - V2CryptoProviderAccount — Returned for offramp orders — the address to send stablecoins to
        - `network` string
        - `receiveAddress` string — EVM address to send stablecoins to
        - `validUntil` string, date-time — Deadline for the stablecoin deposit
      - V2FiatProviderAccount — Returned for onramp orders — the virtual account to deposit fiat into
        - `institution` string — Institution label for the virtual account (human-readable; from provider or stored metadata).
        - `accountIdentifier` string — Account number or mobile number to send fiat to
        - `accountName` string
        - `amountToTransfer` string — Exact fiat amount the user must deposit
        - `currency` string — Fiat currency code
        - `validUntil` string, date-time — Deadline — order expires if fiat not received by this time
    - `source` union
      - V2CryptoSource
        - `type` 'crypto', required
        - `currency` string, required — Stablecoin symbol (e.g. USDT, USDC, cNGN)
        - `network` 'ethereum' | 'base' | 'bnb-smart-chain' | 'lisk' | 'scroll' | 'celo' | 'arbitrum-one' | 'polygon', required
        - `refundAddress` string, required — Wallet address for refunds if the order can't be fulfilled
      - V2FiatSource
        - `type` 'fiat', required
        - `currency` string, required — Fiat currency code (e.g. NGN, KES, BRL)
        - `country` string — ISO 3166-1 alpha-2 country code (optional)
        - `refundAccount` V2FiatRefundAccount, required
          - `institution` string, required — Bank or mobile provider code (SWIFT prefix or Paycrest institution code)
          - `institutionName` string — Human-readable institution name (e.g. OPay). Present on GET responses when the code resolves in Paycrest.
          - `accountIdentifier` string, required — Account number or mobile number
          - `accountName` string, required — Account holder name
    - `destination` union
      - V2FiatDestination
        - `type` 'fiat', required
        - `currency` string, required — Fiat currency code (e.g. NGN, KES)
        - `country` string — ISO 3166-1 alpha-2 country code (optional)
        - `providerId` string — Pin order to a specific provider (optional)
        - `kyc` object — Optional destination (recipient) KYC for offramp. Do not send sender or provider KYB on offramp create.
        - `recipient` V2FiatRecipient, required
          - `institution` string, required — Institution code (e.g. SAFAKEPC for Safaricom M-Pesa). Till and Paybill use the same mobile institution with channel metadata.
          - `institutionName` string — Human-readable institution name (e.g. OPay). Present on GET responses when the code resolves in Paycrest.
          - `accountIdentifier` string, required — Bank account, mobile phone (E.164 or local), till number, or paybill account reference depending on channel.
          - `accountName` string, required
          - `memo` string, required — Payment narration / reference
          - `metadata` object — Corridor-specific hints. For KES mobile offramp, use channel and optional businessNumber (see Sender API Integration guide).
            - `channel` 'Mobile' | 'Till' | 'Paybill' — KES payout channel. Mobile = phone M-Pesa; Till = buy goods; Paybill = paybill. Omit for default phone M-Pesa when accountIdentifier is a mobile number.
            - `businessNumber` string — Paybill business number (required for Paybill when not inferrable from accountIdentifier alone).
      - V2CryptoDestination
        - `type` 'crypto', required
        - `currency` string, required — Stablecoin symbol (e.g. USDT, USDC)
        - `providerId` string
        - `recipient` V2CryptoRecipient, required
          - `address` string, required — Wallet address to receive stablecoins
          - `network` 'ethereum' | 'base' | 'bnb-smart-chain' | 'lisk' | 'scroll' | 'celo' | 'arbitrum-one' | 'polygon', required

## Other responses

- `401` — Unauthorized
- `404` — Order not found

---

[API](https://skmtc.net/paycrest/apis/paycrest-aggregator-api.md) · [All operations](https://skmtc.net/paycrest/apis/paycrest-aggregator-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/paycrest/paycrest-aggregator-api/revisions/f20903971a91/schema)
