Skip to navigation

Decode QR Unregistered

View as Markdown

Identical to decodeQr but requires no customer_id and no registered customer. Use it when you want to decode a QR before the sender is registered, for example to show the merchant name and amount up front.

  • customer_id is ignored if sent.
  • The customer is attached at executePayout, which still requires a registered customer before any balance is locked.
  • On corridors where the verified recipient name comes from a payment network lookup that requires the registered sender (LATAM: AR, BR, PE, BO, CO), merchant returns the QR’s own label instead of the verified account holder. Decode with a registered customer_id when you need the verified name.
  • Not available for Thailand (TH): that corridor needs the registered payer at decode time, so the call answers 400 INVALID_REQUEST (customer_id is required to decode this QR). Decode Thai QRs with decodeQr and a customer_id.
  • missing_fields may be omitted on some corridors; the required sender fields are still recorded on the transaction and enforced at executePayout.

Same authentication and request body as decodeQr otherwise.

Authentication

AuthorizationBasic

Basic Auth: base64(client_id:client_secret)

Query parameters

dpintegerOptional0-10Defaults to 2

Decimal places for monetary fields in the response (USD amounts, fees, exchange rates). Default 2, which rounds sub-cent fees to 0. Use dp=4 or higher to reconcile against exact deducted totals: at full precision amount_usd + percentage_fee + fixed_fee equals the amount deducted from your balance. Rounding is applied to the response only; all stored values and balance deductions always use full precision.

Request

This endpoint expects an object.
qr_stringstringRequired

EMV / local QR string, or for KE/TZ a numeric till/paybill number.

customer_idstringOptional
Ignored on this endpoint. The customer is attached at executePayout instead.
partner_transaction_idstringOptional
partner_app_idstringOptional

Optional partner sub-app id (1–64 chars, [a-zA-Z0-9_-]). Body value wins over the customer profile value.

payment_currencystringOptional
ISO 4217 source currency when it cannot be resolved from the QR.
wallet_identifierstringOptional
country_codestringOptional

ISO alpha-2 override. Required when QR is not EMV-parseable (e.g. BO encrypted QR, or KE/TZ + merchant_id).

merchant_idstringOptional

Till or paybill number for KE/TZ, typed instead of scanned, via decodeQr. Prefer /lookupPaymentCode for the same flow.

account_referencestringOptional

Paybill account reference: the account, bill or customer number the paybill expects. Required for Kenya paybills (returned in missing_fields when absent); optional for TZ.

Response

OK
is_dynamicbooleanOptional
is_businessbooleanOptional
amountdoubleOptional
merchantstringOptional
merchant_idstringOptional

Africa (KE/TZ) till or paybill number when returned.

merchant_namestringOptional

Africa (KE/TZ) verified merchant display name when returned.

payment_typeenumOptional

Africa (KE/TZ) payment destination type when returned.

Allowed values:
merchant_infoobjectOptional

Africa (KE/TZ) merchant metadata when returned.

countrystringOptional
tx_idstringOptional
currencystringOptional
partner_transaction_idstringOptional
amount_usddoubleOptional
feedoubleOptional
percentage_feedoubleOptional
fixed_feedoubleOptional
missing_fieldslist of maps from strings to anyOptional
suggested_valuesmap from strings to anyOptional
sendermap from strings to anyOptional
recipientmap from strings to anyOptional

Errors

400
Bad Request Error