Skip to content

Operations ​

Get one operation's status and state timeline ​

GET/api/v1/tenant/operations/{uid}

Scope operations:read

The operation as every write returned it, plus timeline (every state change in order) and, for an operation that went through a payment provider, provider (null for internal operations). A top-up intent also carries intentReference and expiresAt.

Path parameters ​

NameTypeRequiredDescription
uidstringyes

Response · 200 ​

FieldTypeDescription
uidstring
typestringOperation type, e.g. wallet_credit, wallet_debit, payout_b2c or topup_c2b.
statestringOperation state: created, awaiting_authorization, authorized, held, processing, pending_provider, confirmed, failed, reversed or completed.
amountstringA decimal amount with two decimal places.
feestringA decimal amount with two decimal places.
taxstringA decimal amount with two decimal places.
currencystringISO-4217.
clientReferencestring | nullYour reference, exactly as you supplied it.
sourceWalletUidstring | nullWallet transfers only: the wallet the money left.
destinationWalletUidstring | nullWallet transfers only: the wallet the money reached.
createdAtstring
completedAtstring | nullWhen the operation first reached a final state.
linksobject
links.selfstringAPI-relative path of this operation (GET /tenant/operations/{uid}).
links.receiptstringAPI-relative path of its receipt (GET /tenant/operations/{uid}/receipt).
timelineobject[]State transitions of the operation, in sequenceNo order.
timeline[].sequenceNonumber0 for the creation event, then monotonically increasing.
timeline[].fromStatestring | nullState the operation moved from; null on the creation event.
timeline[].toStatestring | nullState the operation moved to.
timeline[].occurredAtstring
timeline[].actorTypeenum | nullKind of actor that drove the transition. One of api_client, admin, system, provider, customer.
providerobject | nullPayment provider status of a top-up or payout; null for operations that involve no payment provider.
provider.statestringStatus at the payment provider: created, initiated, pending, confirmed, failed, reversed, uncertain or reconciled.
provider.referencestring | nullThe provider's own reference, when known.
provider.lastUpdatedAtstringLast provider-side change Neo Wallet recorded.
intentReferencestring | nullFor a top-up intent (type = topup_c2b), the reference the payer quotes to the provider; null for every other operation.
expiresAtstring | nullFor a top-up intent, the instant after which a payment against the reference is not matched; null for every other operation.
Example (placeholder values)
json
{
  "uid": "01J9Z3K5X8QW2R4T6V8Y0B1C3D",
  "type": "string",
  "state": "string",
  "amount": "2500.00",
  "fee": "12.50",
  "tax": "1.88",
  "currency": "ETB",
  "clientReference": "string",
  "sourceWalletUid": "01J9Z3K5X8QW2R4T6V8Y0B1C3D",
  "destinationWalletUid": "01J9Z3K5X8QW2R4T6V8Y0B1C3D",
  "createdAt": "2026-09-03T10:15:30.000Z",
  "completedAt": "2026-09-03T10:15:30.000Z",
  "links": {
    "self": "string",
    "receipt": "string"
  },
  "timeline": [
    {
      "sequenceNo": 0,
      "fromState": "string",
      "toState": "string",
      "occurredAt": "2026-09-03T10:15:30.000Z",
      "actorType": "api_client"
    }
  ],
  "provider": {
    "state": "string",
    "reference": "string",
    "lastUpdatedAt": "2026-09-03T10:15:30.000Z"
  },
  "intentReference": "string",
  "expiresAt": "2026-09-03T10:15:30.000Z"
}

Errors ​

400 401 403 404 429 500 503 — one body shape for all of them, see Errors.

Get the receipt of one operation ​

GET/api/v1/tenant/operations/{uid}/receipt

Scope operations:read

Amounts, fee breakdown, masked counterparty and references, plus receiptHash over the canonical receipt so any copy can be verified. 404 until the operation has moved funds. A wallet transfer has two receipts: by default the sender's, with the fee and tax; with walletUid set to the wallet that was paid, the recipient's, which is the amount alone with no fee lines. walletUid must be one of the operation's wallets.

Path parameters ​

NameTypeRequiredDescription
uidstringyes

Query parameters ​

NameTypeRequiredDescription
walletUidstringnoThe wallet the receipt is for; defaults to the wallet the money left

Response · 200 ​

FieldTypeDescription
operationUidstring
typestringOperation type, e.g. wallet_credit, wallet_debit, payout_b2c or topup_c2b.
occurredAtstringWhen the operation completed, otherwise when its money movement was first recorded.
amountstringA decimal amount with two decimal places.
feestringA decimal amount with two decimal places.
taxstringA decimal amount with two decimal places.
totalDebitedstringWhat left the customer's wallet: amount + fee + tax. For a failed or reversed operation, only the charges that are not refunded — 0.00 when every charge is refunded.
currencystringISO-4217.
counterpartyobject
counterparty.hintstring | nullThe counterparty, masked.
referencesobject
references.clientReferencestring | nullYour reference, exactly as you supplied it.
references.providerReferencestring | nullThe provider's own reference, when known.
feeBreakdownobject[]
feeBreakdown[].labelstring
feeBreakdown[].amountstringA decimal amount with two decimal places.
statestringOperation state: created, awaiting_authorization, authorized, held, processing, pending_provider, confirmed, failed, reversed or completed.
receiptHashstringSHA-256 (hex) of the canonical receipt; identical on every read.
Example (placeholder values)
json
{
  "operationUid": "01J9Z3K5X8QW2R4T6V8Y0B1C3D",
  "type": "string",
  "occurredAt": "2026-09-03T10:15:30.000Z",
  "amount": "2500.00",
  "fee": "12.50",
  "tax": "1.88",
  "totalDebited": "2514.38",
  "currency": "ETB",
  "counterparty": {
    "hint": "string"
  },
  "references": {
    "clientReference": "string",
    "providerReference": "string"
  },
  "feeBreakdown": [
    {
      "label": "string",
      "amount": "12.50"
    }
  ],
  "state": "string",
  "receiptHash": "string"
}

Errors ​

400 401 403 404 429 500 503 — one body shape for all of them, see Errors.