Skip to main content
POST
Preview a QR code's decode and classification
Decode and classify an External QR before creating a Payment. This does not reserve a priced quote or move funds. Use Payment creation for binding funding amounts and fees. QR contents and decoded account numbers are sensitive; do not log or persist raw decode responses.

Authorizations

Authorization
string
header
required

HTTP Basic auth. Username is the Stableyard app ID. Password is the app secret. The optional Stableyard-Version request header must match the environment pin.

Headers

Stableyard-Version
enum<string>

Optional contract-version assertion. Omit it to use the app environment's pinned version. A different supported version is accepted only after that environment is explicitly migrated.

Available options:
2026-09-09

Body

application/json
sender
object
required
country
string
required
Pattern: ^[A-Z]{2}$
Example:

"PH"

qrPayload
string
required
Required string length: 1 - 4096

Response

QR decode preview

accountNumber
string | null
required

Decoded destination account number when returned; preserve leading zeros. Sensitive data, not a linked bank account or an authorization to pay.

Maximum string length: 64
qrInfo
object
required

Normalized, allowlisted QR display metadata. Keys are always present; unknown values are null. Amounts are exact decimal strings. Decode metadata is not a locked Payment quote.

payable
boolean
required

False for a personal/peer-to-peer QR classification -- not payable through POST /v2/payments.

merchant
object
required
manualBankTransfer
object

Present only when payable is false and the provider returned a manual bank-transfer destination.

providerReferenceId
string
destinationAmount
object

Present only for a dynamic QR that embeds a fixed amount; absent for a static/amount-flexible QR.