IRT

Get a cross-border transaction by external id

Changed on

Returns the transaction you funded under this externalId — the same object the by-id lookup returns. Resolved against your own externalId namespace: a group owner looking up an externalId one of its sub-merchants registered must use the transaction id instead, because the same externalId is a valid key for the owner and for each sub-merchant at once.

get/irt/v1/transactions/external-id/{externalId}

Request

  • The document declares no server URL.
  • Auth
    none declared. Required headers: ApiKey, MerchantId, Environment

Path parameters

externalIdstring required

The idempotency key you supplied when funding the transaction, percent-encoded. Any non-empty string up to 255 characters is accepted on creation, so a key containing / or another reserved character must be escaped to reach this endpoint — send MTO%2F2026%2F00123 for the key MTO/2026/00123.

Headers

ApiKeystring required

Your api key. To create a key, please get into our dashboard. If you don't have access to it, please reach the Support team.

MerchantIdstring required

Your merchant ID. This information is available in our dashboard. If you don't have access to it, please reach the Support team.

Environment'live' | 'sandbox' required

Allow you to choose between the sandbox mode to perform some tests or the live mode for real world transactions.

Response

idstring required

Hub2 transaction identifier

externalIdstring required

Merchant-owned idempotency key echoed back

status'created' | 'pending' | 'compliance_review' | 'pending_manual' | 'successful' | 'failed' | 'cancelled' required

Current state. A successful create-and-fund returns pending: the float is reserved and the payout is on its way.

senderIdstring required

Registered sender the payout was initiated for

corridorstring required

Corridor the payout was priced on

rail'mobile_wallet' | 'bank_transfer' required

Last-mile rail

inputCurrencystring required

Input currency, ISO 4217

inputAmountstring required

Amount sent, exact decimal string. This is the amount converted and paid out — the Hub2 fee is charged on top of it, so the float is debited inputAmount plus hub2Fee.

outputCurrencystring required

Output currency, ISO 4217

outputAmountstring required

Amount the recipient receives, frozen at funding. Priced on the full inputAmount — the Hub2 fee is additive and never reduces it.

hub2Feestring required

Total Hub2 fee applied, frozen at funding. The sum of the fees lines. Charged in addition to inputAmount, not deducted from it.

hub2Ratestring required

Exchange rate applied, frozen at funding and never recalculated

descriptionstring

Free-text description carried on the transaction

createdAtstring required

Creation timestamp, ISO 8601

updatedAtstring required

Timestamp of the last state change, ISO 8601. Equal to "createdAt" until the transaction first moves, so a lookup can tell a payout still awaiting its partner from one that settled without a webhook arriving.

idempotentReplaytrue

Present, and true, only when the response replays an existing payout (idempotent replay, HTTP 200 with the X-Idempotent-Replay: true header). Absent when the transaction has just been created.

Example response

{
  "id": "cbt_V1StGXR8Z5jdHi6BmyT",
  "externalId": "MTO-TX-00123",
  "status": "pending",
  "senderId": "snd_V1StGXR8Z5jdHi6BmyT",
  "corridor": "XOF_MOBILE_SENEGAL",
  "rail": "mobile_wallet",
  "inputCurrency": "EUR",
  "inputAmount": "200",
  "outputCurrency": "XOF",
  "outputAmount": "129223",
  "hub2Fee": "10.00",
  "fees": [
    {
      "id": "fee_V1StGXR8Z5jdHi6BmyT",
      "rate": "5.00",
      "type": "percent",
      "amount": "10.00",
      "currency": "EUR",
      "taxes": [
        {
          "id": "tax_V1StGXR8Z5jdHi6BmyT",
          "taxType": "tva",
          "type": "percent",
          "value": "18.00"
        }
      ]
    }
  ],
  "hub2Rate": "646.1176450000",
  "failureCause": {
    "code": "insufficient_funds"
  },
  "duplicateConfirmation": {
    "rejectionId": "ndr_V1StGXR8_Z5jdHi6B-myT"
  },
  "idempotentReplay": true
}

Changes