Dátový model INVOICE by square QR kódu

Cieľom tohto návodu je zjednodušiť implementáciu INVOICE by square na strane vystavovateľa faktúr. Predpokladá aspoň základnú znalosť účtovných pojmov nachádzajúcich sa na bežných faktúrach. Návod je členený podľa dátového modelu INVOICE by square, postupne vysvetľuje akým spôsobom je potrebné správne naplniť dátový model pred vytvorením QR kódu. Text je priebežne dopĺňaný na základe postrehov a odporúčaní od  našich klientov. V prípade, že niečomu nerozumiete alebo sa Vám niečo zdá byť nezrozumiteľné, respektíve máte návrh ako tento návod vylepšiť, prosím napíšte nám email na [email protected].

1. Hlavička fakúry

V hlavičke faktúry sa uvádzajú údaje spoločné pre všetky typy faktúr. Údaje sa mapujú podľa špecifikácií, ktoré vychádzajú z potrieb hlavne pre správne zadefinovanie údajov potrebných pri spracovaní v účtovníctve prijímateľa faktúr a ich vyťažovanie do ERP systému.

1.1. Povinné údaje

  • InvoiceID – Číslo faktúry, jednoznačne identifikuje faktúru v rámci účtovného systému spoločnosti.
  • IssueDate – Dátum vystavenia faktúry.
  • LocalCurrencyCode – Domáca mena v ISO 4217 formáte (3 písmená skratka).

1.2. Nepovinné údaje

  • TaxPointDate – Dátum zdaniteľného plnenia (vzniku daňovej povinnosti), dodania tovaru alebo služby.
  • OrderID – Číslo objednávky.
  • DeliveryNoteID – Číslo dodacieho listu.

V prípade, že faktúra obsahuje viacero objednávok alebo dodacích listov, primárna objednávka alebo dodací list sa uvádza v poliach OrderID a DeliveryNoteID, ostatné sa uvádzajú až pri položkách v INVOICE ITEMS QR kóde.

Príklad
<Invoice type="Invoice">
    <InvoiceID>2013018</InvoiceID>
    <IssueDate>2013-05-13</IssueDate>
    <TaxPointDate>2013-05-13</TaxPointDate>
    <OrderID>201300018</OrderID>
    <DeliveryNoteID>20130018</DeliveryNoteID>
    <LocalCurrencyCode>EUR</LocalCurrencyCode>
    ...
</Invoice>

1.3. Zahraničná mena

Faktúru je možné vystaviť aj v zahraničnej mene, potom všetky čiastky na faktúre sa uvádzajú v zahraničnej mene. V tomto prípade sa uvádzajú (všetky tri) nasledujúce polia:

  • ForeignCurrencyCode – Zahraničná mena v ISO 4217 formáte (3 písmená skratka).
  • CurrRate – Kurz zahraničnej meny – priama kotácia, vzhľadom na domácu menu.Jednotka zahraničnej meny = X jednotiek domácej meny. Na prepočet zo zahraničnej meny na domácu sa použite tento kurz.
  • ReferenceCurrRate – Kurz zahraničnej meny – nepriama kotácia, vzhľadom na domácu menu.Jednotka domácej meny = X jednotiek zahraničnej meny. Na prepočet z domácej na zahraničnú by mal byť použitý tento kurz.
Príklad
<Invoice type="Invoice"&gt
    ...
    <LocalCurrencyCode>EUR</LocalCurrencyCode>
    <ForeignCurrencyCode>USD</ForeignCurrencyCode>
    <CurrRate>0.78</CurrRate>
    <ReferenceCurrRate>1.29</ReferenceCurrRate>
    ...
</Invoice>

1.4. Identifikácia zúčastnených strán

Údaje o dodávateľovi (SupplierParty) a odberateľovi (CustomerParty) vychádzajú z jednej spoločnej štruktúry údajov (Party).

  • PartyName – Názov spoločnosti (právnickej ososby), alebo meno a priezvisko fyzyckej osoby.
  • CompanyTaxID – DIČ: Daňové identifikačné číslo.
  • CompanyVATID – IČ-DPH: Identifikačné číslo pre daň z pridanej hodnoty.
  • CompanyRegisterID – IČO: Identifikačné číslo organizácie.
Príklad
<Party>
    <PartyName>Forsys a. s.</PartyName>
    <CompanyTaxID>2022683003</CompanyTaxID>
    <CompanyVATID>SK2022683003</CompanyVATID>
    <CompanyRegisterID>44232730</CompanyRegisterID>
</Party>

Poštová adresa sídla spoločnosti (PostalAddress) sa uvádza len u dodávateľa, detailné údaje o zákazníkovi sa z kapacitných dôvodov do QR kódu neukladajú. Adresa sa uvádza prostredníctvom nasledujúcich polí:

  • StreetName – Názov ulice bez orientačného čísla.
  • BuildingNumber – Orientačné číslo budovy.
  • CityName – Mesto (okres).
  • PostalZone – PSČ: Poštové smerovacie číslo.
  • State – Štát v rámci federácie, neuvádza sa pre Slovenskú republiku.
  • Country – Krajina v ISO 3166 formáte (3 písmená skratka).
Príklad
<PostalAddress>
    <StreetName>Zochova</StreetName>
    <BuildingNumber>6-8</BuildingNumber>
    <CityName>Bratislava</CityName>
    <PostalZone>81103</PostalZone>
    <Country>SVK</Country>
</PostalAddress>

V prípade potreby je možné (nie nutné) uviesť do QR kódu aj kontaktné údaje na odberateľa (Contact) prostredníctvom nasledujúcich polí:

  • Name – Meno kontaktnej osoby alebo oddelenia, ak je iné ako hodnota poľa PartyName.
  • Telephone – Telefónne číslo, odporúča sa uvádzať s medzinárodnou predvoľbou.
  • EMail – Emailová adresa.
Príklad
<Contact>
    <Name>Zákaznícka linka</Name>
    <Telephone>+421900900900</Telephone>
    <EMail>[email protected]</EMail>
</Contact>

K údajom o odberateľovi sa môže uviesť ešte jeden nepovinný údaj navyše a to PartyIdentification, slúži ako identifikátor odberateľa v účtovnom systéme dodávateľa pre účely intérneho spracovania. Údaje nie je potrebné uvádzať, pokiaľ je možné odberateľa identifikovať v systéme pomocou IČO, DIČ, IČ-DPH alebo niektorého z už uvedených údajov.

2. Typy faktúr a ich implementácia

V praxi sa stretávame s potrebou spracovania/zaúčtovania faktúr rôzneho typu. Z toho vyplývajú viaceré odporúčania pre implementáciu podľa špecifikácii INVOICE by square.

2.1. Faktúra ako daňový a účtovný doklad

Faktúry slúžia v účtovníctve na zachytenie a evidenciu obchodnej činnosti medzi odberateľom a dodávateľom tovaru alebo služieb. Faktúra obsahuje údaje podľa Zákona o účtovníctve, Zákona o DPH a obchodných zvyklostí. Táto evidencia a následné spracovanie týchto údajov v zmysle daňových zákonov (zaúčtovanie, výkazníctvo) vytvárajú potreby na rozlíšenie typov faktúr v praxi.

Rozoznávame nasledujúce typy faktúr (podľa toho, ako sa uvádzajú v ERP):

  • Faktúra (Invoice)
  • Proforma faktúra (ProformaInvoice)
  • Dobropis (CreditNote)
  • Ťarchopis (DebitNote)
  • Zálohová faktúra (AdvanceInvoice)

Typ faktúry sa v XML uvádza ako hodnota atribútu type v koreňovom elemente dokumentu.

Príklad: <Invoice type="CreditNote" ... >...</Invoice>

V softvérových knižniciach sa typ faktúry rozlišuje podľa názvu pod triedy.

Príklad: InvoiceBase invoice = new CreditNote();

Niekedy sa faktúra vystavuje so zápornými číslami, jej význam je ako dobropis s kladnými číslami. Do INVOICE by square sa všetky číselné údaje (čiastky, okrem zaokrúhlenia) uvádzajú ako kladné čísla.

2.2. Hlavičková faktúra

Jedná sa o najjednoduchší typ faktúry, kde sú do QR kódu povinne kódované len najpodstatnejšie údaje ako napríklad “text”, “suma” a “daňová rekapitulácia”. Neobsahuje položky vo formáte “názov položky”, “množstvo”, “jednotková cena”, atď … V tomto prípade sa do INVOICE kódu uloží informácia o počte položiek (NumberOfInvoiceLines) ako “0” a môže pridať nepovinný textový popis (InvoiceDescription).

Príklad
<Invoice type="Invoice" ...>
    ...
    <NumberOfInvoiceLines>0</NumberOfInvoiceLines>
    <InvoiceDescription>Hlavičková faktúra</InvoiceDescription>
    ...
</Invoice>

Ďalej v prípadoch, kde je síce veľa fakturovaných položiek, ale rozhodneme sa nepoužiť dodatočné INVOICE ITEMS QR kódy. Tu ako text slúži buď hlavný text faktúry alebo text z prvej položky. Príkladom je fakturácia za telekomunikačné služby, kde býva viacero položiek. Napríklad za telefónne a internetové poplatky. V takom prípade by sme vytvorili hlavičkovú faktúru s textom “telekomunikačné služby” alebo “telefónne poplatky”. Vo väčšine sa tieto faktúry zaúčtovávajú len jedným riadkom a teda sa nerozpisujú na položky v ERP systémoch.

2.3. Jednopoložková faktúra

Jedná sa o typ faktúry, kde kódujeme do QR kódu 1 položku vo formáte formáte “názov položky”, “množstvo”, “jednotková cena”, atď …

  • OrderLineID – Číslo objednávky pre 1 položku faktúry. Uvádza sa len v prípade, ak je rôzne od čísla hlavnej objednávky na faktúre.
  • DeliveryNoteLineID – Číslo dodacieho listu pre 1 položku faktúry. Uvádza sa len v prípade, ak je rôzne od čísla hlavného dodacieho listu na faktúre.
  • ItemName – Názov a popis položky. Môže slúžiť aj na uloženie štruktúrovanej informácie o položke.
  • ItemEANCode – EAN (European Article Number) kód položky.
  • PeriodFromDate – Počiatočný dátum fakturačného obdobia položky.
  • PeriodToDate – Konečný dátum fakturačného obdobia položky.
  • InvoicedQuantity – Počet kusov (kvantita) tejto položky.

Na identifikáciu položky sa používa iba jedno z polí “ItemName” alebo “ItemEANCode”, polia sa navzájom vylučujú, tzn. ak je uvedené jedno nesmie byť uvedené druhé.

Príklad
<SingleInvoiceLine>
    <ItemName>Názov položky</ItemName>
    <PeriodFromDate>2013-05-01</PeriodFromDate>
    <PeriodToDate>2013-05-31</PeriodToDate>
    <InvoicedQuantity>5</InvoicedQuantity>
</SingleInvoiceLine>

Jednotková cena položky sa v prípade jednopoložkovej faktúry dopočítava z celkovej faktúrovanej čiastky. Napríklad ak je faktúra vystavená na 100 € bez DPH, v 20 % sadzbe DPH a pri položke je uvedených 5 kusov, výsledná jednotková cena položky sa dopočíta ako 100 / 5 = 20.

Príklad
<SingleInvoiceLine>
    ...
    <InvoicedQuantity>5</InvoicedQuantity>
    <UnitPriceTaxExclusiveAmount>20</UnitPriceTaxExclusiveAmount>
    <UnitPriceTaxInclusiveAmount>24</UnitPriceTaxInclusiveAmount>
    <UnitPriceTaxAmount>4</UnitPriceTaxAmount>
</SingleInvoiceLine>
...
<MonetarySummary>
    <TaxExclusiveAmount>100</TaxExclusiveAmount>
    <TaxInclusiveAmount>120</TaxInclusiveAmount>
    <TaxAmount>20</TaxAmount>
    ...
</MonetarySummary>

2.4. Viacpoložková faktúra

Jedná sa o faktúru, kde chceme kódovať 2 a viac položiek vo formáte “názov položky”, “množstvo”, “jednotková cena”, atď… Viacero položiek kódujeme do dodatočných INVOICE items QR kódov. Takéto použitie je dobrovoľné a je vhodné pre odberateľov, ktorí vedú skladové hospodárstvo typu A (účtujú tovary na sklad).

Príklad
<Invoice type="Invoice" ...>
    ...
    <NumberOfInvoiceLines>2</NumberOfInvoiceLines>
    <InvoiceDescription>účtovné služby za obdobie 2Q 2013</InvoiceDescription>
    ...
</Invoice>

3. Daňová rekapitulácia faktúry a uhradené zálohy

Rekapitulácia sa úvádza ako zoznam rekapitulácií podľa jednotlivých sadzieb DPH. Potrebné je uviesť rekapituláciu aspoň v jednej sadzbe DPH. Jednotlivé sadzby DPH odporúčame uvádzať v poradí od najvyššej po najnižšiu (20%, 10%, …, 0%). Odpočet zálohy, ktorá bola predmetom daňového dokladu o prijatí platby na účely DPH je nutné vyplniť ako “AlreadyClaimedTaxExclusiveAmount” + “AlreadyClaimedTaxAmount”.

V tomto návode uvádzame len vstupné polia, okrem nich v dátovej schéme nájdete aj iné polia, ktorých hodnoty sa dopočítajú z týchto vstupných polí. Na vytvorenie QR kódu však nie sú potrebné a naše softvérové knižnice ich na vstupe ignorujú.

  • ClassifiedTaxCategory – Sadzba DPH vyjadrená v percentách na intervale 0 až 1.
  • TaxExclusiveAmount – Čiastka bez DPH.
  • TaxAmount – Čiastka DPH v tejto daňovej sadzbe.
  • AlreadyClaimedTaxExclusiveAmount – Uhradené zálohy bez DPH
  • AlreadyClaimedTaxAmount – DPH z uhradených záloh.

Zľavy sa nepovažujú za uhradené zálohy a do QR kódu sa nekódujú, generujeme len výslednú cenu tovaru alebo služby v danej sadzbe DPH. Napríklad, ak je na položke uvedená cena tovaru 15 €, následne uvedená zľava 5 €, výsledná cena tovaru zapísaná do QR kódu bude 10 €.

Príklad
<TaxCategorySummary>
    <ClassifiedTaxCategory>0.2</ClassifiedTaxCategory>
    <TaxExclusiveAmount>600</TaxExclusiveAmount>
    <TaxAmount>120</TaxAmount>
    <AlreadyClaimedTaxExclusiveAmount>300</AlreadyClaimedTaxExclusiveAmount>
    <AlreadyClaimedTaxAmount>60</AlreadyClaimedTaxAmount>
</TaxCategorySummary>

Jednoduchý odpočet zálohy, ktorá nebola predmetom daňového dokladu o prijatí platby na účely DPH stačí len sumu zaplatenej zálohy uviesť do poľa “PaidDepositAmount”.

  • PayableRoundingAmount – Zaokrúhlenie celkovej sumy. Pripočítava sa k celkovej sume. Toto pole je možné použiť aj na kompenzáciu zaokrúhľovacích chýb spôsobených kalkuláciou na reálnych číslach v účtovných systémoch.
  • PaidDepositsAmount – Zaplatené nezdanené zálohy.
Príklad
<MonetarySummary>
    <PayableRoundingAmount>-0.02</PayableRoundingAmount>
    <PaidDepositsAmount>15.35</PaidDepositsAmount>
</MonetarySummary>

Forma úhrady

Formy (možnosti) úhrady faktúry sa uvádzajú ako zoznam možností oddelených medzerou.

  • moneyTransfer – prevodový príkaz peňazí na bankový účet
  • cash – v hotovosti
  • cashOnDelivery – na dobierku
  • creditCard – kreditnou kartou
  • advance – zálohou
  • mutualOffset – zápočtom
  • other – iná, zatiaľ nedefinovaná forma úhrady
Príklad
    ...
    </MonetarySummary>
    <PaymentMeans>moneyTransfer cash creditCard</PaymentMeans>
</Invoice>