Skip to content
barcoder

Standards/virtuaaliviivakoodi

Virtuaaliviivakoodi

TypeCode 128 / text
PrimaryFI
MentionedFI
Completeness71%high

Overview

The virtuaaliviivakoodi ("virtual barcode") is the 54-digit human-readable form of the Finnish bank bar code (pankkiviivakoodi), a Code 128 symbol printed on the credit transfer form (tilisiirtolomake) of Finnish invoices 18. The bank bar code is approved by Finance Finland (Finanssiala, FFI) and was jointly developed by Finnish banks "to accelerate payments and to prevent erroneous data from being keyed in" 1. It packs the payee's IBAN, the amount, a creditor reference (Finnish national viitenumero in version 4, ISO 11649 RF reference in version 5) and the due date into a fixed-length numeric string that banking apps can read with a camera or accept by pasting 17.

History

  • The current specification is the Bank Bar Code Guide version 5.3, published 8 November 2012 and corrected 21 October 2019 1. Its version history lists v5.1 (20 October 2009) and v5.2 (26 January 2010, corrected version-5 test invoice; 16 March 2010 added an end date for symbol version 2) 1.
  • Version 5.3 of the guide removed bar code symbol version 2, the calculation of "check digit 1" and the version-2 test invoices, leaving only symbol versions 4 and 5 1.
  • The 2019 correction renamed the publisher from the Federation of Finnish Financial Services to Finance Finland 1.
  • In February 2014 a QR code was added to the standard credit transfer form template (in the place previously used for the BIC); Finance Finland's July 2015 QR guideline states that the QR code and the domestic bar code "will at first function side by side" 3.
  • The Finnish national creditor reference rules in Finance Finland's English guide are dated 1 November 2009 4. Finance Finland's October 2023 RF guide states that an RF reference no longer has to be derived from a Finnish reference; the body text gives 19 November 2023 as the date of that change while the cover note gives 18 November 2024 5 (the two dates conflict within the same document).

The original introduction date of the Finnish bank bar code is not given in the sources consulted.

Technical specification

Symbology

  • Symbology: USS Code 128 per ISO/IEC 15417, Character Set C only, with a fixed Start Code C and no set changes inside the symbol; numeric data only, fixed number of code characters 1 (see Code 128).
  • Size: length 70–105 mm (banks' optical reading prefers 105 mm), height 10.0–12.7 mm; left quiet zone 20 mm, right quiet zone at least 20 mm; at most 5.0 mm quiet zone below 1.
  • Print quality: at least grade 1.5/10/670 measured per ISO/IEC 15416:2000 1.
  • Check character: the standard Code 128 Modulo 103 check ("Check Digit 2"), computed over the Start C value 105 (weight 1) and the 27 digit pairs (weights 1–27) 1.
  • Only one account number fits; no other bar codes may be printed on the credit transfer form under the bar-code-only rules, and the code can only be printed for IBANs beginning with FI 1.

Data structure (54 digits)

Field Version 4 (national reference) Version 5 (RF reference)
Version number 1 digit, 4 1 digit, 5
Payee IBAN without FI 16 digits 16 digits
Euros 6 digits, zero-padded 6 digits
Cents 2 digits 2 digits
Reserve 3 digits, 000 not used
Reference 20 digits, national reference, zero-padded on the left 23 digits: RF check digits + zeros + reference body
Due date 6 digits YYMMDD (may be zeros) 6 digits YYMMDD
Total 54 54

Source: 1.

  • Amount: range 000000.00–999999.99 euros; if the invoice exceeds 99 999 999 cents, or if the payer chooses the amount, the euro and cent fields are printed as 00000000 (or the bar code is omitted) 1.
  • Version 5 reference: formed by removing RF from the RF reference and inserting zeros after position 2 to reach 23 digits — e.g. national 9991 → RF04 9991 → 04000000000000000009991. If the RF reference contains letters after RF (allowed by ISO 11649), the bar code is not formed or the reference field is printed as zeros 1.
  • Worked example (from the spec, version 4, test invoice 2): IBAN FI58 1017 1000 0001 22, €482.99, reference 55958 22432 94671, due 31.01.2012 → digit pairs 45 81 01 71 00 00 00 12 20 00 48 29 90 00 00 00 05 59 58 22 43 29 46 71 12 01 31, Modulo 103 check value 55 1, i.e. the virtual barcode 458101710000001220004829900000000559582243294671120131. The same invoice in version 5 (RF06 5595 8224 3294 671, due 31.1.2010) yields check value 31 1.
  • Virtual barcode: the akselinurmio/virtuaaliviivakoodi README describes virtuaaliviivakoodi as the "clear text implementation" of the pankkiviivakoodi; libraries output it as a plain 54-digit string, e.g. 437159030000007760000122500000000000000000011112161221 for FI37 1590 3000 0007 76, reference 11112, €12.25, due 21.12.2016 810.

Finnish national reference number (viitenumero)

  • Minimum 4 digits (3 + check digit); maximum 19 + 1 digits; printed in groups of five digits with leading zeros omitted 4.
  • Check digit (7-3-1): multiply the digits from right to left by 7, 3, 1, 7, 3, 1…; subtract the sum from the next full ten; a result of 10 gives 0. Example: stem 123456 → sum 89 → check digit 1 → 12 34561 4.
  • The RF Creditor Reference (RF Creditor Reference (ISO 11649)) is printed in groups of four characters from left to right, has two ISO 11649 check digits (same algorithm as IBAN) and a maximum length of 21 alphanumeric characters 5. If a credit transfer form carries a bar code, version 5 must be adopted together with the RF reference 5.

Use cases

  • Paper and PDF invoices: printed on the Finance Finland credit transfer form; the bar code can only be used when the invoice uses a reference number 1.
  • Bank channels: readable "on an ATM, at a bank payment centre, with a mobile application, or with a reader connected to a PC"; payers can still key data manually 1.
  • Mobile banking: Nordea Mobile lets users pay an invoice "without typing" by scanning it with the phone camera or by using the virtual barcode 7; Nordea Mobile's "Scan invoice" feature pre-fills payment details from the invoice barcode 12.
  • Invoice generation tooling: the Typst template laskutys produces Finnish-standard invoices with an optional bank barcode and EPC QR code 11; Python, Ruby and JavaScript libraries generate the string for invoicing systems 8910.

Implementations

All repositories found are small; only a reference-number utility exceeds 10 stars.

  • akselinurmio/virtuaaliviivakoodi — JavaScript (npm virtuaaliviivakoodi), 8 stars, active 2026-06; generates versions 4 and 5, Node.js 20+ 8.
  • nocfo/virtuaaliviivakoodi — Python (PyPI virtuaaliviivakoodi), 3 stars, last push 2024-10; generates and deconstructs virtual barcodes 9.
  • kiskolabs/virtuaaliviivakoodi — Ruby gem, 4 stars, last push 2024-03; versions 4 and 5 10.
  • TheJiahao/laskutys — Typst invoice template, 8 stars, 2026-02; bank barcode + EPC QR + RF reference generation 11.
  • lupinesse/barcode-wallet — JavaScript PWA, 0 stars, 2026-06; scans Finnish bill barcodes (Code 128 and others) from camera, image or PDF and re-renders the decoded value 13.
  • vkomulai/finnish-bank-utils — JavaScript, 22 stars, last push 2019-10; validates and creates Finnish IBANs and reference numbers (not the barcode itself) 6.

Comparison

  • vs. EPC QR / Stuzza: Finance Finland's 2015 guideline says QR codes "will in the future replace bank bar codes in the Single European Payments Area" 3. The bank bar code holds 54 digits; the QR code holds almost any character data 3. The bar code requires a reference number and an FI IBAN 1, whereas the QR code can be used whether the invoice carries a reference number or a free-text message, and carries the beneficiary name, BIC and IBAN 3. The Finnish QR profile is EPC version 001, maximum QR version 13 / 331 bytes, X-dimension 0.5 mm (max 3.5 cm), with the due date carried in the beneficiary-to-originator field as ReqdExctnDt/YYYY-MM-DD 3. Both may be printed on the same credit transfer form 3. Choose the bank bar code for compatibility with legacy Finnish readers and the virtual-barcode copy/paste flow; choose EPC QR for name/BIC/free-text content and SEPA-wide recognition.
  • vs. national vs. RF reference: version 4 carries the national viitenumero (max 20 digits), version 5 the numeric RF reference (23 digits); purely alphabetic RF content cannot be represented 1.

Fun facts

The bar code's Modulo 103 check gives the Start character and the first digit pair the same weight (1) — the spec flags this with "NOTE!" 1. The same guide notes that banks' optical readers prefer the maximum 105 mm length over the 70 mm minimum 1.

Status

Active. Bank Bar Code Guide v5.3 (with both versions 4 and 5) remains listed among Finance Finland's current payment technical documents alongside the QR code guidelines and RF reference guides 2. Nordea's current mobile banking page advertises paying invoices via the virtual barcode 7. Finance Finland states that no decision has been made on discontinuing the Finnish national creditor reference 5. EPC QR is positioned as the eventual successor 3.

Sources

1 Bank Bar Code Guide, Version 5.3 — Finance Finland, 2012 (corrected 2019), accessed 2026. 2 Payment services: Technical Documents — Finance Finland, accessed 2026. 3 Guidelines for the QR code in the Credit Transfer Forms — Finance Finland, July 2015, accessed 2026. 4 Forming a Finnish reference number — Finance Finland, 1 November 2009, accessed 2026. 5 Introduction of the Global Structured Creditor Reference (RF) in Finnish Companies — Finance Finland, October 2023, accessed 2026. 6 vkomulai/finnish-bank-utils — GitHub, accessed 2026. 7 Ota käyttöön Nordea Mobile — Nordea, accessed 2026. 8 akselinurmio/virtuaaliviivakoodi — GitHub, accessed 2026. 9 nocfo/virtuaaliviivakoodi — GitHub, accessed 2026. 10 kiskolabs/virtuaaliviivakoodi — GitHub, accessed 2026. 11 TheJiahao/laskutys — GitHub, accessed 2026. 12 Finland — Banking QR/Barcode Standards Report — Barcoder research corpus, 2025. 13 lupinesse/barcode-wallet — GitHub, accessed 2026.

Deployments

Found in the following country reports (grep across reports/countries/):

source · content/standards/virtuaaliviivakoodi/index.md