← Back to blog

QR code payments for bank transfers in Shopify checkout

Turn every bank transfer order into a scannable QR code. Checkito generates SPAYD, PAY by square, SEPA EPC and ZBP codes with the account number, amount and reference already filled in.

Β·8 min read

Bank transfer is still one of the most popular payment methods in Central and Eastern Europe. It costs you nothing in gateway fees, but it has one big weakness: after the customer places the order, they have to open their banking app and retype an account number, an amount and a reference number by hand. Every one of those steps is a chance to make a typo, to postpone the payment, or to never pay at all.

Checkito's QR payment feature removes that friction. As soon as the order is placed, the customer sees a QR code right on the thank you page. They scan it in their banking app, and the payment is pre-filled: your account, the exact outstanding amount and the correct reference. One scan, one confirmation, done.

What the QR payment feature does

The feature adds a payment instructions block to the Shopify checkout flow. It renders in two places:

  • Thank you page – immediately after the order is placed, while the customer still has the phone in their hand.
  • Order status page in the customer account – so the customer can come back to the code later and pay when it suits them.

The block contains a short instruction text, a panel with the payment details in a readable form (local account number, IBAN and the reference number), and one or two QR codes depending on the country. Everything is generated from the real order, so the amount always matches what is actually left to pay.

Which QR standards Checkito generates

There is no single global QR payment standard, so Checkito generates the one that the customer's banking app actually understands. The standard is chosen automatically from the currency of your bank account and the billing country of the order.

SPAYD – QR Platba (Czech Republic)

The Czech Short Payment Descriptor standard, supported by every major Czech banking app. Checkito fills in the IBAN, the amount with two decimals, the currency, the due date, a message for the recipient and the variable symbol. Used for all accounts in CZK.

PAY by square (Slovakia)

The Slovak standard used by Slovak banking apps. It is generated for euro accounts when the order is billed to Slovakia or the account IBAN is Slovak. In that case the customer gets two codes – PAY by square and SEPA EPC – so it does not matter which app they open.

SEPA EPC (eurozone)

The EPC069-12 credit transfer standard used across the eurozone. Checkito builds it with the beneficiary name, IBAN, the amount in euros and the payment message. The BIC is left out on purpose – since version 002 of the standard the bank derives it from the IBAN, which keeps the code compatible with more apps.

Rekomendacja ZBP (Poland)

The two-dimensional code recommended by the Polish Bank Association. It is generated for accounts in PLN and contains the NRB account number, the amount in grosze, the beneficiary and the payment title.

Accounts in CZK, EUR and PLN always produce a QR code. A CZK or SK account in another currency falls back to SPAYD. For other currencies the block still shows the written payment instructions – the customer simply copies the details instead of scanning.

What gets filled in automatically

You do not maintain anything per order. Every value in the QR code comes straight from the order:

  • Amount – the outstanding balance of the order, not the original total. If the order is partially paid, the QR code asks for the remainder.
  • Currency – the presentment currency the customer actually checked out in.
  • Reference / variable symbol – the Shopify order number, so matching incoming payments to orders is trivial.
  • Beneficiary – the account name you configured, so the customer sees who they are paying.
  • Payment message – a note referencing the order name, visible in the bank statement.
  • Account number – for Czech and Slovak IBANs it is also displayed in the familiar local prefix-number/bank-code format.

What you can configure

Bank accounts

In the QR Payments section of the app you add as many bank accounts as you need – there is no limit. Each account has:

  • Name – an internal label, for example "CZK – Czech Republic".
  • IBAN – the account the money should arrive at.
  • BIC / SWIFT – optional, used by the Slovak PAY by square code.
  • Currency – one of CZK, EUR, PLN, HUF, GBP, CHF, DKK, SEK, NOK, RON, BGN or USD. This also decides which QR standard is generated.
  • Countries – the billing countries this account should serve, picked from 30 European countries.

How the right account is picked

If you sell across several markets, you usually have a local account per currency. Which one is used is decided by the billing country of the order – so always fill in the Countries field. An account with no countries selected is never used.

  1. 1Only accounts whose Countries include the billing country of the order are eligible – the country list is a filter, not a preference.
  2. 2Among the eligible accounts, the one whose currency matches the order currency is used.
  3. 3If none of them matches the currency, the first eligible account is used. If no account covers the billing country, the block does not appear at all.

Which payment methods trigger the block

In QR Payments β†’ Settings you list the payment methods that should show the QR code. The values are matched as case-insensitive fragments against the name of the payment method on the order, so a single entry like "deposit" or "transfer" covers every manual method whose name contains it. If you leave the field empty, Checkito falls back to "deposit".

Texts and translations

Three texts can be rewritten per language – the heading, the introduction and the tip below it. Checkito ships built-in translations for English, Czech, Slovak, Polish and French, and you can add your own wording for German, Hungarian and Romanian as well.

The introduction supports two placeholders so you do not have to hardcode anything:

  • {{account}} – inserts the account number of the selected bank account.
  • {{vs}} – inserts the reference number of the order.
The labels inside the payment details panel – account number, IBAN, reference and the QR standard captions – are translated by the app itself, so you only write the parts that carry your own tone of voice.

When the QR code appears

The block is deliberately conservative: it only shows up when a QR code is genuinely useful.

  • The payment method of the order matches one of your configured method names.
  • The order is still unpaid – its financial status is pending. As soon as you mark the order as paid, the instructions stop showing.
  • A bank account is configured that can serve the order.

That means a customer who paid by card never sees payment instructions, and a customer who already transferred the money is not asked twice.

How to set it up

  1. 1Open the Checkito app in your Shopify admin and go to QR Payments.
  2. 2Create a bank account – name, IBAN, optional BIC, currency and the countries it serves. Save.
  3. 3Open QR Payments β†’ Settings and add the payment method names that should show the QR code. Optionally rewrite the texts for your languages.
  4. 4In the Shopify checkout editor, add the "Payments - Qr Code" block to the thank you page, and do the same on the order status page in the customer account editor.
  5. 5Place a test order with your bank transfer method and check that the code scans correctly in your banking app.
Step four matters: the extension is a checkout block, so until you place it in the editor the customer will not see anything, even with everything else configured.

Availability

QR payment instructions are part of the paid Checkito plan, which starts at $3.99 per month and includes every other Checkito feature – hiding, renaming and reordering payment and shipping methods, and the full set of rule conditions. There is a free trial, so you can test the whole flow on a real order before you commit.

If you take bank transfers in Czechia, Slovakia, Poland or anywhere in the eurozone, this is one of the cheapest conversion wins available: the same orders, the same payment method, just far fewer customers who never get around to paying.

Ready to customize your checkout?

Try free
QR Code Bank Transfer Payments in Shopify Checkout | Checkito