Popis formátu

Formát řetězce QR Faktury je navržen tak, aby byl kompaktní, co se velikosti obsažených dat týče. Výhodou navrženého formátu je relativně dobrá lidská čitelnost a potenciální rozšiřitelnost o specifické atributy.

Řetězec může obsahovat libovolné znaky ze znakové sady UTF-8. Pro efektivní uložení do QR kódu doporučujeme sestavit řetězec tak, aby obsahoval pouze následující znaky:

  • 0–9
  • A–Z [pouze velká písmena]
  • mezera
  • $, %, *, +, -, ., /, :

Při zachování znaků výhradně z uvedené množiny bude použit tzv. alfanumerický formát QR kódu. Množina znaků používaná v klíčích a řídících strukturách navrženého formátu je proto volena právě z této množiny tak, aby nebylo zabráněno dosažení maximální možné efektivity uložení účetních informací do QR kódů. Bude-li v hodnotě kteréhokoli pole použit znak z jiné množiny, než je uvedena výše, bude použit tzv. binární formát QR kódu.

Řetězec je vždy zahájen fixní hlavičkou SID*. Následuje verze protokolu (dvě čísla oddělená tečkou) ukončená hvězdičkou, např. 1.0*. Následně řetězec obsahuje jednotlivé účetní atributy ve formátu:

  • ${klíč}:${hodnota}*

Tedy klíč je od hodnoty oddělen dvojtečkou, hodnota je zakončena hvězdičkou. Pole ${hodnota} smí obsahovat hvězdičku pouze v případě, že řetězec není integrován s QR Platbou. Hvězdička je v hodnotě zakódována jako %2A. Poslední hodnota v řetězci nemusí být ukončena hvězdičkou.

 

${klíč} Klíč daného atributu je vždy zapsán velkými znaky z množiny znaků [A-Z-]. Seznam klíčů (základní sada atributů) je uveden v Tabulce 1. Formát může být libovolně rozšířen o proprietární klíče (mimo definici tohoto standardu), které mají např. lokální význam pro konkrétní lokalitu, instituci, nebo výstavce. Takové klíče obsahují na začátku svého názvu znaky „X-“. Tímto standardem definované proprietární klíče jsou uvedeny v Tabulce 2.

Každý klíč v řetězci musí mít hodnotu. Nepřipouští se existence klíče v řetězci bez hodnoty. U některých klíčů lze interpretovat jednoznačným způsobem jejich nepřítomnost v řetězci (a tím zkrátit celkovou délku řetězce) – taková interpretace je u příslušných klíčů uvedena v Tabulce 1.

${hodnota} Hodnota každého atributu může obsahovat libovolné znaky, ale musí být zároveň v přípustném formátu – viz. popis formátu hodnoty v Tabulce 1. Hodnota nesmí být obklopena bílými znaky (tj. za “:” a před “*” nesmí být bílé znaky) a nesmí obsahovat znak * (hvězdička). Hodnota může obsahovat znak : (dvojtečka).

Hodnota může obsahovat speciální znaky kódované pomocí URL kódování, tj. např. hvězdičku je možno do hodnoty zahrnout pomocí zápisu %2A.

Pozn.: Podpora pro kódování speciálních znaků je základním parametrem typově podobných formátů. V principu existuje několik přístupů, např. HTML entity, back-slashing nebo touto specifikací zvolené URL kódování.

Pokud bude hodnota obsahovat více znaků, než připouští formát, bude zpracován pouze formátem specifikovaný počet znaků zleva, ostatní budou ignorovány.

 

Tabulka 1 – Základní atributy

 

Klíč Povinný Délka Formát Popis formátu hodnoty Příklad zápisu klíče a hodnoty
ID ANO Max. 40 znaků Všechny znaky z povolené množiny mimo  ‘*’ Jednoznačné označení dokladu ID:ABCD123456789EF*
DD ANO Právě 8 znaků ISO 8601, tj. datum ve formátu YYYYMMDD.
Pouze numerické znaky
Datum vystavení dokladu DD:20160615*
AM ANO Max. 18 znaků Desetinné číslo.
Max. 2 desetinné cifry.
Tečka jako oddělovač desetinných míst
Výše celkové částky k úhradě v měně specifikované klíčem CC.

V případě kladné hodnoty bez znaménka, záporná hodnota se znaménkem.

AM:123456789.45*
TP NE Právě 1 znak Číslice Identifikace typu daňového plnění.

0, nebo není klíč v řetězci přítomen = běžný typ plnění
1 = RPDP
2 = smíšený

TP:0*
TD NE Právě 1 znak Číslice Identifikace typu dokladu.

0 – nedaňový doklad (např. zálohová faktura)

1 – opravný daňový doklad

2 – doklad k přijaté platbě

3 – splátkový kalendář

4 – platební kalendář

5 – souhrnný daňový doklad

9 – ostatní daňové doklady

Není-li klíč v řetězci přítomen = 9

TD:9*
SA NE Právě 1 znak Číslice Příznak, který rozlišuje, zda faktura obsahuje zúčtování záloh.

0, nebo klíč není v řetězci přítomen = faktura neobsahuje zúčtování záloh
1 = faktura obsahuje zúčtování záloh

SA:1*
MSG NE Max. 40 znaků Všechny znaky z povolené množiny mimo  ‘*’ Textový popis předmětu fakturace MSG:KONZULTACE KVETEN 2016*
ON NE Max. 20 znaků Všechny znaky z povolené množiny mimo  ‘*’ Číslo (označení) objednávky, k níž se vztahuje tento účetní doklad. ON:OBJ20160614TK*
VS NE Max. 10 znaků Celé číslo Variabilní symbol VS:1234567890*
VII NE Max. 14 znaků Alfanumerický řetězec DIČ výstavce VII:CZ12345678*
INI NE Max. 8 znaků Celé číslo IČO výstavce INI:12345678*
VIR NE Max. 14 znaků Alfanumerický řetězec DIČ příjemce VIR:CZ09876543*
INR NE Max. 8 znaků Celé číslo IČO příjemce INR:98765432*
DUZP NE Právě 8 znaků ISO 8601, tj. datum ve formátu YYYYMMDD.
Pouze numerické znaky
Datum uskutečnění zdanitelného plnění DUZP:20160413*
DPPD NE Právě 8 znaků ISO 8601, tj. datum ve formátu YYYYMMDD.
Pouze numerické znaky
Datum povinnosti přiznat daň DPPD:20161201*
DT NE Právě 8 znaků ISO 8601, tj. datum ve formátu YYYYMMDD.
Pouze numerické znaky
Datum splatnosti celkové částky DT:20160908*
TB0 NE Max. 18 znaků Desetinné číslo.
Max. 2 desetinné cifry.
Tečka jako oddělovač desetinných míst
Částka základu daně v základní daňové sazbě v CZK včetně haléřového vyrovnání.

V případě kladné hodnoty bez znaménka, záporná hodnota se znaménkem. Znaménko vždy explicitně určuje směr toku peněz bez ohledu na jiné atributy.

TB0:3000*
T0 NE Max. 18 znaků Desetinné číslo.
Max. 2 desetinné cifry.
Tečka jako oddělovač desetinných míst
Částka daně v základní daňové sazbě v CZK včetně haléřového vyrovnání.

V případě kladné hodnoty bez znaménka, záporná hodnota se znaménkem. Znaménko vždy explicitně určuje směr toku peněz bez ohledu na jiné atributy.

T0:630*
TB1 NE Max. 18 znaků Desetinné číslo.
Max. 2 desetinné cifry.
Tečka jako oddělovač desetinných míst
Částka základu daně v první snížené daňové sazbě v CZK včetně haléřového vyrovnání.

V případě kladné hodnoty bez znaménka, záporná hodnota se znaménkem. Znaménko vždy explicitně určuje směr toku peněz bez ohledu na jiné atributy.

TB1:2000*
T1 NE Max. 18 znaků Desetinné číslo.
Max. 2 desetinné cifry.
Tečka jako oddělovač desetinných míst
Částka daně v první snížené daňové sazbě v CZK včetně haléřového vyrovnání.

V případě kladné hodnoty bez znaménka, záporná hodnota se znaménkem. Znaménko vždy explicitně určuje směr toku peněz bez ohledu na jiné atributy.

T1:300*
TB2 NE Max. 18 znaků Desetinné číslo.
Max. 2 desetinné cifry.
Tečka jako oddělovač desetinných míst
Částka základu daně ve druhé snížené daňové sazbě v CZK včetně haléřového vyrovnání.

V případě kladné hodnoty bez znaménka, záporná hodnota se znaménkem. Znaménko vždy explicitně určuje směr toku peněz bez ohledu na jiné atributy.

TB2:1000*
T2 NE Max. 18 znaků Desetinné číslo.
Max. 2 desetinné cifry.
Tečka jako oddělovač desetinných míst
Částka daně ve druhé snížené daňové sazbě v CZK včetně haléřového vyrovnání.

V případě kladné hodnoty bez znaménka, záporná hodnota se znaménkem. Znaménko vždy explicitně určuje směr toku peněz bez ohledu na jiné atributy.

T2:100*
NTB NE Max. 18 znaků Desetinné číslo.
Max. 2 desetinné cifry.
Tečka jako oddělovač desetinných míst
Částka osvobozených plnění, plnění mimo předmět DPH, plnění neplátců DPH v CZK včetně haléřového vyrovnání. V případě kladné hodnoty bez znaménka, záporná hodnota se znaménkem. Znaménko vždy explicitně určuje směr toku peněz bez ohledu na jiné atributy. NTB:500*
CC NE Právě 3 znaky ISO 4217 – délka 3 znaky, velká písmena Měna celkové částky. Není-li klíč v řetězci přítomen = měna je CZK CC:CZK*
FX NE Max. 18 znaků Desetinné číslo.
Max. 3 desetinné cifry.
Tečka jako oddělovač desetinných míst
Směnný kurz mezi CZK a měnou celkové částky FX:123456.789*
FXA NE Max. 5 znaků Celé číslo Počet jednotek cizí měny pro přepočet pomocí klíče FX. Není-li v řetězci klíč přítomen = 1 FXA:100*
ACC NE Max. 46 znaků
(IBAN+BIC)
IBAN, BIC Identifikace čísla účtu výstavce faktury, která je složena ze dvou komponent oddělených znaménkem +
Tyto komponenty jsou:
číslo účtu ve formátu IBAN
identifikace banky ve formátu SWIFT dle ISO 9362.
Druhá komponenta (SWIFT) je přitom volitelná
ACC:CZ5855000000001265098001
+RZBCCZPP*
a nebo (varianta bez BIC):
ACC:CZ5855000000001265098001*
CRC32 NE Právě 8 znaků Znaky z množiny:
[A-F0-9]
Kontrolní součet. Hodnota vznikne výpočtem CRC32 celého řetězce (bez klíče CRC32) a převedením této číselné hodnoty do hexadecimálního zápisu.

Princip vypočítání CRC32 (zajištění jednoznačnosti reprezentace pro výpočet CRC32):

·      Použijí se všechny atributy mimo atributu CRC32

·      Sestaví se kanonický řetězec tak, že převezme hlavičku („SID*1.0*”), ostatní atributy se setřídí abecedně dle klíče, v tomto pořadí se zakódují do řetězce dle specifikace (včetně hvězdičky na konci řetězce) a sestaví se tak základ pro počítání CRC32

Výsledek se převede do šestnáctkové soustavy a klíč s hodnotou se připojí k řetězci.

CRC32:1234ABCD*

Tabulka 2 – Proprietární atributy

Klíč Povinný Délka Formát Popis formátu hodnoty Příklad zápisu klíče a hodnoty
X-SW NE Max. 30 znaků Všechny znaky z povolené množiny mimo  ‘*’ Označení účetního software, ve kterém byl řetězec QR Faktury (faktura) vytvořen. Libovolný řetězec dle rozhodnutí výrobce účetního software. Označení by mělo být obecně unikátní a neměnné pro daný software (nebo jeho verzi). X-SW:E-FAKTURANT V5.3*
X-URL NE Max. 70 znaků Všechny znaky z povolené množiny mimo  ‘*’ Údaje pro získání účetních údajů (případně faktury) ve strukturovaném formátu z on-line uložiště. X-URL:HTTP://E-FAKTURANT.CZ/INV/
ABCD123456789EFG.ISDOC *

 

Ukládání a sdílení řetězce

Formát definuje pro potřeby klientských aplikací vlastní příponu souboru pro případ uložení a vlastní MIME type.

MIME-type: application/x-shortinvoicedescriptor

Přípona souboru: *.sind

 

Integrace s QR Platbou
Příklady

 

Stáhněte si kompletní popis formátu standardu QR Faktura [PDF, 639 kB].