The EPC QR Code, also known as GiroCode, can be used to initiate money transfers within SEPA. The QR code has been standardized by the European Payments Council (EPC) and is currently used in Austria, Finland, Germany, the Netherlands and Belgium.

An example EPC QR Code (with and without frame) with which 10€ will be donated to the Austrian Red Cross:

An example EPC QR code with frame which donates to the Austrian Red Cross An example GiroCode which donates to the Austrian Red Cross


The API can be called via GET or POST. Both endpoints return an image in the format image/png.


curl -X GET https://api.apistax.io/v1/epc-qr-code?iban=AT000000000000000000&recipient=Company \
    -o 'qr-code.png' \
    -H 'Authorization: Bearer API_KEY_HERE'

The API key can also be passed as a query parameter. More about this in the "Authentication" section of the general documentation.


curl -X POST https://api.apistax.io/v1/epc-qr-code \
    -o 'qr-code.png' \
    -H 'Authorization: Bearer API_KEY_HERE' \
    -H 'Content-Type: application/json' \
    -d '{ "iban": "AT00 0000 0000 0000 0000", "recipient": "Company"}'


The following parameters can be used either as query parameters in a GET request or as JSON fields in a POST request.

iban: String

The international bank account number of the recipient. Any spaces between the blocks are removed. For example, AT00 0000 0000 0000 0000 becomes AT000000000000000000

recipient: String

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

bic: String

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

amount: Float

The amount to be paid with a maximum of two decimal places. The value is optional, but recommended. If the amount is not specified, the payer must enter it in the banking app itself.

currency: String = EUR

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

reference: String

The payment reference which can be maximum 35 characters long.

text: String

The bank transfer text. The text can be up to 140 characters long and may not be used in the banking app if the reference parameter is set.

message: String

A user hint which can be maximum 70 characters long.

size: Integer = 300

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

frame: Boolean = false

true to draw a frame around the QR code.

If all parameters are used, a possible request body may look like the following:

    "iban": "AT57 2011 1400 1440 0144",
    "recipient": "Austrian Red Cross",
    "bic": "GIBAATWWXXX",
    "amount": 10.00,
    "currency": "EUR",
    "reference": "Donation",
    "text": "Emergency relief",
    "message": "Thank you for your donation",
    "size": 250,
    "frame": true

Possible errors

Identifier Description
message.ibanMustNotBeBlank Parameter iban is required.
message.recipientMustNotBeBlank Parameter recipient is required.
message.ibanMustBeValid Parameter iban must be provided in a valid format.
message.bicMustBeValid Parameter bic must be provided in a valid format.
message.currencyMustBeValid Parameter currency must be valid and provided as an ISO 4217 currency code.
message.recipientMustNotBeLongerThan70Characters Parameter recipient must be maximum 70 characters long.
message.referenceMustNotBeLongerThan35Characters Parameter reference must be maximum 75 characters long.
message.textMustNotBeLongerThan140Characters Parameter text must be maximum 140 characters long.
message.messageMustNotBeLongerThan70Characters Parameter message must be maximum 70 characters long.
message.sizeMustNotBeSmallerThan100Pixels Parameter size must be between 100 and 2000 pixels.
message.sizeMustMotBeBiggerThan2000Pixels Parameter size must be between 100 and 2000 pixels.
message.failedToGenerateQrCode An unexpected error occurred when generating the QR code. Please retry the request at a later time.

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.

EPC QR Code costs
Generate EPC QR Codes to use it on your invoices and payment requests.
Credits spent
Credit cost per REST call
EUR per call
Price depends on your subscription