UBL 2.1 XML formaat

PEPPOL arvete tehniline formaat. Mõistke, kuidas teie arve andmed on struktureeritud masinatevaheliseks suhtluseks.

Mis on UBL?

UBL (Universal Business Language) on rahvusvaheline standard äridokumentide nagu arvete struktureerimiseks. Mõelge sellest kui täpsest mallist, mis ütleb arvutitele täpselt, kust leida iga teabe — arve number, summad, KM, müüja andmed jne.

Kui loote aiDoksis arve, teisendame teie andmed automaatselt sellesse UBL XML formaati. See tagab, et iga süsteem, mis teie arve saab, suudab seda õigesti lugeda, olenemata kasutatavast tarkvarast.

Te ei pea XML-i kirjutama

aiDoks loob teie sisendist automaatselt täiusliku UBL XML-i. See lehekülg on neile, kes soovivad mõista, mis toimub kulisside taga, või peavad töötama toorfailidega.

Arve struktuur ülevaatlikult

Iga PEPPOL arve sisaldab neid põhisektsioone selles järjekorras:

Päise infoArve number, kuupäevad, valuuta ja PEPPOL identifikaatorid
Müüja (Tarnija)Teie ettevõtte nimi, aadress, KM number, PEPPOL ID
Ostja (Klient)Kliendi ettevõtte andmed ja PEPPOL ID
Makse infoPangakonto, maksemeetod, maksetingimused
Maksu kokkuvõteKM jaotus kategooria ja määra järgi
KogusummadRea kogusumma, maksu kogusumma ja makstav summa
ReadIga toode/teenus koos koguse, hinna ja KM-ga

Põhielementide selgitus

Siin on UBL arve kõige olulisemad osad ja mida need sisaldavad:

PEPPOL identifikaatorid
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID> <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>

Need identifikaatorid ütlevad vastuvõtvatele süsteemidele, et see on PEPPOL BIS 3.0 vastav arve. Need on alati samad standardarvete jaoks — aiDoks lisab need automaatselt.

Arve üksikasjad
<cbc:ID>INV-2025-001</cbc:ID> <cbc:IssueDate>2025-01-29</cbc:IssueDate> <cbc:DueDate>2025-02-28</cbc:DueDate> <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode> <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>

Teie arve number, väljaandmise kuupäev, tähtaeg, tüüp (380 = standardarve) ja valuuta. Kuupäevad peavad olema YYYY-MM-DD formaadis.

Müüja teave
<cac:AccountingSupplierParty> <cac:Party> <cbc:EndpointID schemeID="0191">EE123456789</cbc:EndpointID> <cac:PartyName> <cbc:Name>Your Company OÜ</cbc:Name> </cac:PartyName> <!-- Address, VAT number, registration... --> </cac:Party> </cac:AccountingSupplierParty>

Teie ettevõtte andmed. EndpointID koos schemeID-ga on teie PEPPOL osaleja identifikaator — nii teab võrk, kuhu vastused saata.

Arve rida
<cac:InvoiceLine> <cbc:ID>1</cbc:ID> <cbc:InvoicedQuantity unitCode="HUR">40</cbc:InvoicedQuantity> <cbc:LineExtensionAmount currencyID="EUR">3000.00</cbc:LineExtensionAmount> <cac:Item> <cbc:Name>Web Development Services</cbc:Name> </cac:Item> <cac:Price> <cbc:PriceAmount currencyID="EUR">75.00</cbc:PriceAmount> </cac:Price> </cac:InvoiceLine>

Iga ese, mille eest arveldate. Sisaldab rea numbrit, kogust (koos ühikukoodiga nagu HUR tundide jaoks), rea kogusummat, kauba kirjeldust ja ühikuhinda. Võib olla mitu InvoiceLine elementi.

Levinud koodide viide

PEPPOL osaleja ID skeemid

Skeemi IDRiikKirjeldus
0191EestiKM number (EE + 9 numbrit)
0192EestiÄriregistri kood (8 numbrit)
0193LätiKM number (LV + 11 numbrit)
0200LeeduKM number (LT + 9-12 numbrit)
9915AustriaKM number
9930ItaaliaKM number

Maksemeetodi koodid

30Pangaülekanne (kõige levinum)
58SEPA krediidiülekanne
49Otsedebiteerimine
48Krediitkaart

Kuidas valideerimine töötab

Enne kui arvet saab PEPPOLi kaudu saata, peab see läbima mitu valideerimiskontrolli:

XML skeem (XSD)Automaatne

Kontrollib, kas XML struktuur on õige — kõik vajalikud elemendid on olemas, korralikult pesastatud ja kasutavad õigeid andmetüüpe.

Schematron reeglidAutomaatne

Valideerib äriloogika reegleid — näiteks et KM summad vastavad arvutatud väärtustele, vajalikud väljad on täidetud konteksti alusel ja koodi väärtused on kehtivad.

PEPPOL koodiloendidAutomaatne

Veendub, et kõik koodid (valuuta, riik, ühik, KM kategooria) on ametlikest PEPPOL heaks kiidetud loenditest.

Arvutuste kontrollAutomaatne

Kinnitab, et rea kogusummad liidetakse õigesti, KM arvutatakse korralikult ja lõplik makstav summa on täpne.

Valideerimine aiDoksis

aiDoks käivitab kõik need valideerimised enne saatmist. Kui on vigu, näete konkreetseid teateid, mis selgitavad, mida tuleb parandada — tavaliselt puuduv väli või vale väärtus.

Näide arve fail

Tahad näha täielikku näidet? Siin on minimaalne kehtiv PEPPOL arve:

XML
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
         xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
         xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
  <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
  <cbc:ID>INV-2025-001</cbc:ID>
  <cbc:IssueDate>2025-01-29</cbc:IssueDate>
  <cbc:DueDate>2025-02-28</cbc:DueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>

  <cac:AccountingSupplierParty>
    <cac:Party>
      <cbc:EndpointID schemeID="0191">EE123456789</cbc:EndpointID>
      <cac:PartyName><cbc:Name>Seller Company OÜ</cbc:Name></cac:PartyName>
      <cac:PostalAddress>
        <cbc:StreetName>Main Street 1</cbc:StreetName>
        <cbc:CityName>Tallinn</cbc:CityName>
        <cbc:PostalZone>10001</cbc:PostalZone>
        <cac:Country><cbc:IdentificationCode>EE</cbc:IdentificationCode></cac:Country>
      </cac:PostalAddress>
      <cac:PartyTaxScheme>
        <cbc:CompanyID>EE123456789</cbc:CompanyID>
        <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
      </cac:PartyTaxScheme>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>Seller Company OÜ</cbc:RegistrationName>
        <cbc:CompanyID>12345678</cbc:CompanyID>
      </cac:PartyLegalEntity>
    </cac:Party>
  </cac:AccountingSupplierParty>

  <cac:AccountingCustomerParty>
    <cac:Party>
      <cbc:EndpointID schemeID="0192">87654321</cbc:EndpointID>
      <cac:PartyName><cbc:Name>Buyer Company AS</cbc:Name></cac:PartyName>
      <cac:PostalAddress>
        <cbc:CityName>Tallinn</cbc:CityName>
        <cac:Country><cbc:IdentificationCode>EE</cbc:IdentificationCode></cac:Country>
      </cac:PostalAddress>
      <cac:PartyLegalEntity>
        <cbc:RegistrationName>Buyer Company AS</cbc:RegistrationName>
      </cac:PartyLegalEntity>
    </cac:Party>
  </cac:AccountingCustomerParty>

  <cac:TaxTotal>
    <cbc:TaxAmount currencyID="EUR">220.00</cbc:TaxAmount>
    <cac:TaxSubtotal>
      <cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
      <cbc:TaxAmount currencyID="EUR">220.00</cbc:TaxAmount>
      <cac:TaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>22</cbc:Percent>
        <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
      </cac:TaxCategory>
    </cac:TaxSubtotal>
  </cac:TaxTotal>

  <cac:LegalMonetaryTotal>
    <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
    <cbc:TaxExclusiveAmount currencyID="EUR">1000.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="EUR">1220.00</cbc:TaxInclusiveAmount>
    <cbc:PayableAmount currencyID="EUR">1220.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>

  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Name>Consulting Services</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>22</cbc:Percent>
        <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>
</Invoice>