HCT QR Code

The HCT QR Code is a standardized payment QR format defined for Hungary’s instant payment system, enabling near-real-time bank transfers via QR scanning. It is part of the domestic instant payment ecosystem developed under the auspices of the Magyar Nemzeti Bank (MNB) and associated clearing infrastructure and has become known locally as the Instant Payment Code used for retail and online checkout flows.

In Hungary’s instant payment context, scanning a HCT QR Code with a compatible mobile banking app automatically populates a payment order that is executed within seconds through the Azonnali Fizetési Rendszer (Instant Payment System). This QR-based mechanism is supported across banks and facilitates instant transfers (typically within ~5 seconds) without transaction fees for the payer.

An example HCT QR Code with which 4000 HUF will be donated to the Hungarian Red Cross:

Sample HCT QR Code for a 4000 HUF donation to the Hungarian Red Cross

Endpoints

The API can be called via POST method. The endpoint returns an PNG image.

POST/v1/hct-qr-code

curl -X POST https://api.apistax.io/v1/hct-qr-code \
    -o 'qr-code.png' \
    -H 'Authorization: Bearer API_KEY_HERE' \
    -H 'Content-Type: application/json' \
    -d '{
          "iban": "HU70 1040 5004 0002 6542 0000 0005",
          "bic": "OKHBHUHB",
          "validTill": "2030-12-31T23:59:59"
        }'

Parameters

The following parameters can be used as JSON fields in the POST request.

iban: String

The international bank account number of the recipient. Any spaces between the blocks are removed.

bic: String

The bank identifier code of the recipient's bank. Often known as SWIFT code.

recipient: String

The recipients name. The name can be maximum 70 characters long.

currency: String = HUF

The currency according to ISO 4217 (USD, EUR etc.).

amount: Integer

The amount to be paid with no decimal places. The value is optional, but recommended. If the amount is not specified, the payer must enter it in the banking app itself. The amount must be between 0 and 1,000,000,000,00.

size: Integer = 300

The size of the QR code in pixels. The value must be between 100 and 2000 pixels.

validTill: Datetime

The date time until which the code is valid in the format YYYY-MM-DDThh:mm:ss, for example 2020-01-31T10:20:00

remittanceInformation: String

The remittance information, which may be a maximum of 70 characters long.

shopId: String

The identifier may be a maximum of 35 characters long. In case of physical retail purchases to identify the point of sale.

merchantId: String

The identifier may be a maximum of 35 characters long. In case of physical retail purchases to identify the corresponding device like cash register or POS terminal.

invoiceId: String

The identifier of the bill or invoice to be paid, which may be a maximum of 35 characters long.

customerId: String

The potential customer identifier of a service provider for bill payments, which may be a maximum of 35 characters long.

internalId: String

The internal identifier, which may be a maximum of 35 characters long.

loyaltyId: String

The potential identifier for linked specific discounts or loyalty card numbers, which may be a maximum of 35 characters long.

navVerificationCode: String

The National Tax and Customs Administration (NAV) verification code in the case of retail purchases, which may be a maximum of 35 characters long.

If most parameters are utilized, an example curl request could look like this:

curl -X POST https://api.apistax.io/v1/hct-qr-code \
    -o 'qr-code.png' \
    -H 'Authorization: Bearer API_KEY_HERE' \
    -H 'Content-Type: application/json' \
    -d '{
          "iban": "HU70 1040 5004 0002 6542 0000 0005",
          "bic": "OKHBHUHB",
          "amount": 4000,
          "size": 300,
          "currency": "HUF",
          "recipient": "Hungarian Red Cross",
          "validTill": "2030-12-31T23:59:59",
          "remittanceInformation": "Donation"
        }'

Possible errors

Identifier Description
message.ibanMustBeValid Parameter iban must be a valid IBAN according to ISO 13616-1:2020.
message.bicMustBeValid Parameter bic must be a valid BIC according to ISO 9362.
message.bicMustNotBeBlank Parameter bic mut not be blank.
message.ibanMustNotBeBlank Parameter iban mut not be blank.
message.sizeMustMotBeBiggerThan2000Pixels Parameter size must be between 100 and 2000 pixels.
message.sizeMustNotBeSmallerThan100Pixels Parameter size must be between 100 and 2000 pixels.
message.amountIsTooHigh Parameter amount must be between 0 and 1 000 000 000 000.
message.amountIsTooLow Parameter amount must be between 0 and 1 000 000 000 000.
message.recipientMustNotBeBlank Parameter recipient mut not be blank.
message.recipientMustNotBeLongerThan70Characters Parameter recipient must be maximum 70 characters long.
message.currencyMustBeValid Parameter currency must be valid and provided as an ISO 4217 currency code.
message.validTillMustNotBeNull Parameter validTill must not be null.
message.remittanceInformationMustNotBeLongerThan70Characters Parameter remittanceInformation must be maximum 70 characters long.
message.shopIdMustNotBeLongerThan35Characters Parameter shopId must be maximum 35 characters long.
message.merchantIdMustNotBeLongerThan35Characters Parameter merchantId must be maximum 35 characters long.
message.invoiceIdMustNotBeLongerThan35Characters Parameter invoiceId must be maximum 35 characters long.
message.customerIdMustNotBeLongerThan35Characters Parameter customerId must be maximum 35 characters long.
message.internalIdMustNotBeLongerThan35Characters Parameter internalId must be maximum 35 characters long.
message.loyaltyIdMustNotBeLongerThan35Characters Parameter loyaltyId must be maximum 35 characters long.
message.navVerificationCodeMustNotBeLongerThan35Characters Parameter navVerificationCode must be maximum 35 characters long.

It should be noted that there are a number of common error messages, which can be found in the "Possible errors" section of the general documentation.

HCT QR Code costs
Generate HCT QR codes for Hungary’s instant payment system to enable fast, bank-to-bank transfers via standardized QR payments.
1
Credits spent
Credit cost per REST call
0,0040
EUR per call
Price depends on your subscription