Skip to main content

Core objects

Last updated: 2026-05-22

PaymentOrder (merchant view)

All merchant-facing responses and webhooks return the same PaymentOrder shape.

FieldTypeNotes
idstring (UUID)Payment order ID
merchantReferencestringYour reference (not enforced unique by the API; treat as unique on your side)
paymentMethodstring (enum)See Payment methods
typestring (enum)PAYMENT_ORDER_TYPE_PAYMENT_IN or PAYMENT_ORDER_TYPE_PAYMENT_OUT
statusstring (enum)See status lifecycle below
amountstring (int64)Minor units
currencyCodestringISO 4217 currency code
paymentUrlstringOptional payment URL. Some H2P and H2H pay-in flows return it
redirectUrlstringOptional. Merchant return URL (pay-ins)
failureReasonstringPresent for negative states
failureReasonCodestring (int64)Present with failureReason
createdAtstring (date-time)UTC
updatedAtstring (date-time)UTC
trafficVerticalstring (enum)Traffic category used for payment selection and compliance
customerSegmentstring (enum)Request-context value. May be echoed back in merchant-visible objects
marketDetailsobjectOptional selected-market details for the stored payment when returned

Merchant responses include the fields needed to reconcile and display your payment flow.

Request context dimensions

trafficVertical values:

  • TRAFFIC_VERTICAL_UNSPECIFIED
  • TRAFFIC_VERTICAL_GAMBLING
  • TRAFFIC_VERTICAL_FOREX
  • TRAFFIC_VERTICAL_OTHER

customerSegment values:

  • CUSTOMER_SEGMENT_UNSPECIFIED
  • CUSTOMER_SEGMENT_FTD
  • CUSTOMER_SEGMENT_TRUSTED
  • CUSTOMER_SEGMENT_VIP

isGambling is kept for legacy compatibility in requests. For new integrations, use trafficVertical.

Payment status lifecycle

  • PAYMENT_ORDER_STATUS_CREATED
  • PAYMENT_ORDER_STATUS_PENDING
  • PAYMENT_ORDER_STATUS_COMPLETED (terminal)
  • PAYMENT_ORDER_STATUS_FAILED
  • PAYMENT_ORDER_STATUS_CANCELLED (terminal)
  • PAYMENT_ORDER_STATUS_EXPIRED (terminal)

PENDING -> PENDING updates are valid and can be sent more than once while a payment is pending. A late provider confirmation can also correct FAILED to COMPLETED, so process webhook updates idempotently and use the latest accepted paymentOrder.status for reconciliation.

Market details

When returned, marketDetails describes the selected market for the stored payment. Treat it as checkout guidance for that payment, not as a global support matrix.

FieldTypeNotes
countryCodestringISO 3166-1 alpha-2 country code of the selected market
mobileMoney.supportedbooleanWhether mobile money is supported for the stored route
mobileMoney.operatorRequiredbooleanWhether payer/operator selection is required before processing
mobileMoney.operatorLockedbooleanWhether the operator was already selected and stored on the payment
mobileMoney.operatorstringStored operator code when operatorLocked = true
mobileMoney.operators[]arrayCheckout-safe operator options for payer selection
mobileMoney.unavailableReasonstringReason when mobile-money details are unavailable or unsupported

mobileMoney.operators[].operator is a machine-readable code. Reuse it exactly if your checkout flow asks the payer to select an operator.

Failure reasons

When a payment reaches a negative state (FAILED, CANCELLED, EXPIRED), the API may set:

  • failureReason (string)
  • failureReasonCode (stringified int)
failureReasonfailureReasonCodeMeaning
internal_error1Processing error
unknown2Unknown reason
declined3Declined by customer or payment partner
cancelled_by_user4User cancelled
invalid_request5Invalid or unsupported request parameters
insufficient_funds6Insufficient funds (customer or merchant, context-dependent)
expired_payment7Payment session expired
expired_payment_form8Payment form expired
suspected_fraud9Suspected fraud
provider_unavailable10Temporary processing unavailability
amount_out_of_range11Amount outside supported limits

MerchantBalance

Returned by GET /merchant/api/v1/balances.

FieldTypeDescription
accountIdstring (UUID)Ledger account ID
accountTypestring (enum)Account type
currencyCodestringISO 4217
amountstring (int64)Signed minor units

amount is signed. A negative value means the merchant has a net liability/owed amount for that account/currency.

Bank

Returned by bank listing endpoints.

FieldType
codestring
namestring

MobileMoneyOperator

Returned by GET /merchant/api/v1/payins/mmo and GET /merchant/api/v1/payouts/mmo. Reuse operator exactly as returned when initializing or creating operator-aware mobile-money payments.

FieldTypeNotes
operatorstringMachine-readable operator code to send back in operator-aware mobile-money requests
namestringHuman-readable operator name for merchant UI/display