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

# Get Transaction Status

> Query the current status of a collection (payin) or disbursement (payout) using your own reference or Niobi's transaction reference. Use this to poll for a terminal status when a callback hasn't arrived yet, or to reconcile a transaction after the fact. See [Payout Best Practices](/making-payments/best-practices#2-the-double-verification-reconciliation-recipe-for-payouts) for the recommended reconciliation flow.

<Note>
  Please ensure that a new `signature` is generated each time you create a transaction status request
</Note>

`id` accepts your own `third_party_reference_1`/`third_party_reference_2` supplied when you created the transaction, or the Niobi-generated `ref` returned in the original response, so you can query by whichever identifier you already have on hand. See [Payout Best Practices](/making-payments/best-practices#2-the-double-verification-reconciliation-recipe-for-payouts) for the recommended reconciliation flow when a callback hasn't arrived yet.


## OpenAPI

````yaml post /api/v3/get-unified-transaction-status
openapi: 3.0.0
info:
  title: Niobi API
  description: >-
    REST API for collecting payments, sending payouts, and managing
    multi-currency wallets across Africa and global corridors. All requests
    require IP whitelisting and a unique per-request HMAC SHA-256 signature.
  version: 4.0.0
servers:
  - url: https://sandbox.users.niobi.co
    description: Sandbox, Development and Testing
security: []
tags:
  - name: Niobi
    description: API Endpoints of Niobi
paths:
  /api/v3/get-unified-transaction-status:
    post:
      tags:
        - payment
      summary: Get Transaction Status
      description: >-
        Query the current status of a collection (payin) or disbursement
        (payout) using your own reference or Niobi's transaction reference. Use
        this to poll for a terminal status when a callback hasn't arrived yet,
        or to reconcile a transaction after the fact. See [Payout Best
        Practices](/making-payments/best-practices#2-the-double-verification-reconciliation-recipe-for-payouts)
        for the recommended reconciliation flow.
      operationId: getUnifiedTransactionStatusV3
      requestBody:
        description: >-
          Signed request envelope. All root fields except params are
          authentication fields.
        required: true
        content:
          application/json:
            schema:
              required:
                - client_id
                - sender
                - timestamp
                - salt
                - signature
                - params
              properties:
                client_id:
                  description: >-
                    Your Client ID from the Niobi Dashboard under Workspace >
                    Integrations.
                  type: string
                sender:
                  description: >-
                    The exact title of your integration as registered in the
                    Dashboard. Case-sensitive.
                  type: string
                timestamp:
                  description: >-
                    Unix timestamp in seconds at the time of signing. Must match
                    the value used to generate the signature.
                  type: integer
                salt:
                  description: >-
                    A unique random string you generate per request. Must be the
                    same value used when generating the signature.
                  type: string
                signature:
                  description: >-
                    SHA-256 signature computed from this payload. Generate via
                    the [Signature
                    endpoint](/api-reference/authentication/generate-signature)
                    or your own backend.
                  type: string
                params:
                  required:
                    - id
                    - type
                  properties:
                    id:
                      description: >-
                        The transaction identifier to look up. Accepts your own
                        `third_party_reference_1`/`third_party_reference_2`
                        supplied at creation, or the Niobi-generated transaction
                        reference (`ref`) returned in the original response.
                      type: string
                    type:
                      description: >-
                        Transaction type matching how it was created: `payin`
                        for collections, `payout` for disbursements.
                      type: string
                      example: payin/payout
                  type: object
              type: object
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Transaction data fetched successfully.
                  data:
                    type: object
                    properties:
                      amount:
                        type: number
                        example: 1000
                        description: Transaction principal amount
                      fee:
                        type: number
                        example: 15
                        description: Applied processing fee
                      currency:
                        type: string
                        example: KES
                        description: Currency code
                      status:
                        type: string
                        example: success
                        description: 'Terminal status: success, failed, or pending'
                      status_code:
                        type: string
                        example: '000000'
                        description: >-
                          Terminal status code: 000000 for success, 000005 for
                          failed, 000006 for timeout
                      payee:
                        type: string
                        example: John Doe
                        description: Payee identifier/name
                      invoice_no:
                        type: string
                        example: INV-10023
                        description: Invoice reference
                      mobile:
                        type: string
                        example: '254161166649'
                        description: Destination phone number or account
                      account_number:
                        type: string
                        example: ACC847291
                        description: Merchant float account number
                      ref:
                        type: string
                        example: NIO-TX-984721
                        description: Niobi transaction reference
                      balance:
                        type: string
                        example: '45200.00'
                        description: Account balance post-transaction
                      transaction_detail:
                        type: string
                        example: Disbursement payment
                        description: Transaction narrative
                      payment_channel:
                        type: string
                        example: MPESA B2C DARAJA
                        description: Upstream provider channel
                      transaction_date:
                        type: string
                        example: '2026-08-29 12:30:00'
                        description: Transaction execution timestamp
                      created_at:
                        type: string
                        example: '2026-08-29 12:30:00'
                        description: Record creation timestamp
                      updated_at:
                        type: string
                        example: '2026-08-29 12:30:15'
                        description: Record update timestamp
                      callback_url:
                        type: string
                        example: https://example.com/callback
                        description: Merchant webhook URL
                      failureReason:
                        type: object
                        properties:
                          failureCode:
                            type: string
                            nullable: true
                            example: null
                            description: Upstream failure code if failed
                          failureMessage:
                            type: string
                            nullable: true
                            example: null
                            description: Upstream failure reason if failed
                type: object
              example:
                success: true
                message: Transaction data fetched successfully.
                data:
                  amount: 1000
                  fee: 15
                  currency: KES
                  status: success
                  status_code: '000000'
                  payee: John Doe
                  invoice_no: INV-10023
                  mobile: '254161166649'
                  account_number: ACC847291
                  ref: NIO-TX-984721
                  balance: '45200.00'
                  transaction_detail: Disbursement payment
                  payment_channel: MPESA B2C DARAJA
                  transaction_date: '2026-08-29 12:30:00'
                  created_at: '2026-08-29 12:30:00'
                  updated_at: '2026-08-29 12:30:15'
                  callback_url: https://example.com/callback
                  failureReason:
                    failureCode: null
                    failureMessage: null
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: Niobi user not found or Transaction was not created!
                type: object
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: >-
                      Entity integration record not found or Client id not
                      matched or Request was not verified.
                type: object
      security:
        - apiKeyAuth: []
components: {}

````