Popis formátu
Popis formátu QR Faktury
QR Faktura používá pro reprezentaci účetních dat z faktury formát Short Invoice Descriptor (SIND) pro snadné načtení. Aby jej mohli implementovat tvůrci SW pro vystavování faktur, ostatní výstavci faktur a například e-shopy.
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.
Znaková sada a formát řetězce
Ř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íče a hodnoty atributů
${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í.
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 | 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 = RPDP2 = 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ý doklad2 – doklad k přijaté platbě3 – splátkový kalendář4 – platební kalendář5 – souhrnný daňový doklad9 – ostatní daňové dokladyNení-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áloh1 = 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 IBANidentifikace 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í CRC32Výsledek se převede do šestnáctkové soustavy a klíč s hodnotou se připojí k řetězci. | CRC32:1234ABCD* |
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/ |
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