Skip to main content
POST
/
api
/
v1
/
payment-methods
/
qr
/
decode
{
  "qr_string": "00020101021238570010A000000727012700069704360113VQRQ12345678900208QRIBFTTA53037045802VN62160812Test payment6304ABCD"
}
{
  "message": "success",
  "data": {
    "data": {
      "bank_bin_code": "970436",
      "bank_account_number": "1234567890",
      "amount": 1000000,
      "purpose": "Test payment"
    },
    "error": "",
    "error_code": 0,
    "message": ""
  }
}

Documentation Index

Fetch the complete documentation index at: https://pay-docs.holdstation.com/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Partners can decode a VietQR string or QR image URL into structured payment information — bank BIN code, destination account number, amount, and purpose. Pass exactly one of qr_string or qr_image_url per request.

Authentication

Partner-App-Key
string
required
Your partner app key.
X-HSPay-Signature
string
required
Base64-encoded Ed25519 signature of the sign data.
X-HSPay-Timestamp
string
required
Unix timestamp (seconds) of the request. Must be within 60 seconds of server time.

Body Parameters

qr_string
string
Raw VietQR string. Mutually exclusive with qr_image_url.
qr_image_url
string
HTTPS URL pointing to a QR code image. Mutually exclusive with qr_string.

Error Codes

When decoding fails, the response includes a non-zero error_code:
error_codeMeaning
1Invalid input
2Image download failed
3Image decode failed
4Parse failed
{
  "qr_string": "00020101021238570010A000000727012700069704360113VQRQ12345678900208QRIBFTTA53037045802VN62160812Test payment6304ABCD"
}
{
  "message": "success",
  "data": {
    "data": {
      "bank_bin_code": "970436",
      "bank_account_number": "1234567890",
      "amount": 1000000,
      "purpose": "Test payment"
    },
    "error": "",
    "error_code": 0,
    "message": ""
  }
}