iris_payment
Greek IRIS payment QR code generator for Flutter. Validate AFM (Greek VAT/Tax ID), generate IRIS-standard QR data, and render payment QR codes.
IRIS is Greece's instant payment system managed by DIAS Interbanking Systems. Since December 2025, all Greek businesses must accept IRIS payments.
Features
- AFM Validation - Greek VAT number (AFM) checksum verification
- Static QR -
IRISTIN{AFM}format for physical store checkout - Dynamic QR -
IRISCOM{UUID}format for e-commerce transactions - QR Parser - Parse scanned IRIS QR strings back to structured data
- IrisQrCode Widget - Customizable QR code with colors and logo overlay
- IrisPaymentCard Widget - Ready-to-use payment card with business name
- Cross-platform - Works on Android, iOS, Web, Windows, macOS, Linux
Installation
dependencies:
iris_payment: ^0.1.0
Usage
Validate an AFM
import 'package:iris_payment/iris_payment.dart';
// Quick check
AfmValidator.isValid('090000045'); // true
// Detailed result
final result = AfmValidator.validate('123456789');
if (!result.isValid) {
print(result.message); // "Invalid AFM checksum"
}
// Format (strip whitespace/dashes)
AfmValidator.format('090-000-045'); // "090000045"
Generate IRIS QR Data
// Static QR for physical store (customer enters amount in bank app)
final data = IrisData.fromAfm('090000045');
print(data.qrString); // "IRISTIN090000045"
// Dynamic QR for e-commerce (amount set by payment gateway)
final tx = IrisData.fromTransactionId('52bb5e73-2ebd-4299-9ccf-e9714b9873fc');
print(tx.qrString); // "IRISCOM52bb5e73-2ebd-4299-9ccf-e9714b9873fc"
// Parse a scanned QR code
final parsed = IrisData.parse('IRISTIN090000045');
print(parsed?.type); // IrisQrType.tin
print(parsed?.afm); // "090000045"
Display QR Code Widget
// Simple QR code
IrisQrCode(
afm: '090000045',
size: 250,
)
// Customized QR code with logo
IrisQrCode(
afm: '090000045',
size: 300,
foregroundColor: Colors.indigo,
logo: Image.asset('assets/my_logo.png'),
logoSize: 70,
)
// Full payment card
IrisPaymentCard(
afm: '090000045',
businessName: 'My Coffee Shop',
qrSize: 200,
)
IRIS QR Format Reference
| Type | Format | Use Case |
|---|---|---|
| Static | IRISTIN{9-digit AFM} |
Physical store POS, printed QR |
| Dynamic | IRISCOM{UUID} |
E-commerce, payment gateway generated |
Static QR: The business displays a fixed QR code. Customers scan with their banking app and enter the amount themselves. Maximum per-transaction: 1,000 EUR.
Dynamic QR: Generated by payment gateways (Cardlink, Nexi, Viva, etc.) for each transaction. Contains a unique ID that maps to a specific amount on the gateway's backend.
AFM Checksum Algorithm
The Greek AFM is a 9-digit number. The last digit is a check digit:
checksum = (d[0]*256 + d[1]*128 + d[2]*64 + d[3]*32 + d[4]*16 + d[5]*8 + d[6]*4 + d[7]*2) % 11 % 10
The check digit must equal d[8].
License
MIT License - see LICENSE for details.
Libraries
- iris_payment
- Greek IRIS payment QR code generator.