e-invoicing

Create a document

Build a valid Standard Business Document (SBD), the wrapper you need for every invoice you send to Sovos.

The SBD carries the routing metadata and invoice payload that Sovos needs to process and deliver the document. The SBD has two parts:

Standard Business Document Header (SBDH)
Holds the routing metadata.
Sovos Canonical Invoice
Carries your invoice data in Universal Business Language (UBL) 2.1 format.

Sovos validates and transforms the Sovos Canonical Invoice into PINT-AE XML, then sends it to the PEPPOL Access Point.

UAE-specific SBDH fields - SCI format

Use this table when submitting invoices in SCI format.

Section XML XPath element Field name M/C/O Data type Rule Notes
Header sbd:HeaderVersion Header version Required Text Fixed: 1.0 Always 1.0. Don't change.
Sender sbd:Sender/sbd:Identifier Sender identifier Required Text (15) If ProfileID=selfbilling, use the customer Tax Registration Number (TRN). Otherwise, use the supplier's TRN. Must match the corporate TRN of the issuing party.
sbd:Sender/sbd:Identifier/@Authority Sender authority Required Code Fixed: AE Country of the issuing party.
Receiver sbd:Receiver/sbd:Identifier Receiver identifier Required Text If ProfileID=selfbilling, use the supplier TRN. Otherwise, use the customer's TRN. Corporate TRN of the receiving party.
sbd:Receiver/sbd:Identifier/@Authority Receiver authority Required Code Fixed: AE Country of the receiving party.
Document identification sbd:DocumentIdentification/sbd:Standard Document standard Required URI urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 -
sbd:DocumentIdentification/sbd:TypeVersion Type version Required Text Fixed: 2.1 Always use 2.1 for UAE PINT.
sbd:DocumentIdentification/sbd:Type Document type Required Code Fixed: Invoice -
sbd:DocumentIdentification/sbd:MultipleType Multiple type flag Required Boolean Fixed: false Always use false for invoice and credit note submissions.
sbd:DocumentIdentification/sbd:CreationDateAndTime Creation date and time Required DateTime YYYY-MM-DDTHH:MM:SSZ (UTC ISO 8601) UTC timestamp of when the SBD envelope was created.
BusinessScope - Core routing Scope[Type='Country']/Identifier Country Required Code Fixed: AE Country code of the issuer.
Scope[Type='CompanyCode']/Identifier Company code Required Text If ProfileID=selfbilling, use the customer TRN. Otherwise, use the supplier TRN. Sender's TRN.
Scope[Type='SenderDocumentId']/Identifier Sender document ID Required Text ≤35 The UUID of the document. UUID format: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$.
Scope[Type='SenderSystemId']/Identifier Sender system ID Required Text Enterprise Resource Planning (ERP) system name or identifier. Default: DefaultSystemERP Identifies an originating ERP system such as D365FO, SAP, or Oracle.
Scope[Type='ProcessType']/Identifier Process type Required Code Fixed: Outbound Outbound means the invoice is sent from the ERP to Sovos.
Scope[Type='BusinessCategory']/Identifier Business category Required Code Fixed: B2B -
Scope[Type='BusinessProcess']/BusinessService/BusinessServiceName Business service name Required Code Fixed: Default Turns on the full end-to-end Sovos pipeline.
Scope[Type='Version']/Identifier Version Required Text Fixed: 1.0 -
Scope[Type='SubSchema']/Identifier Sub-schema Required Text Blank always Leave blank for standard processing. Only set this value if Sovos instructs you to do so.
BusinessScope - Mapping scopes Scope[Type='Mapping.TransformDocument']/Identifier Transform document Required Code Invoice: SCI-TO-LEGAL_INVOICE. Credit note: SCI-TO-LEGAL_CREDIT_NOTE. -
Scope[Type='Mapping.OutputSchema']/Identifier Output schema Required Code Fixed: pint -

UAE-specific SBDH fields - PINT-AE format

Use this table when submitting invoices in the PINT-AE (UAE PEPPOL UBL) format.

Section XML XPath element Field name M/C/O Data type Rule Notes
Header sbd:HeaderVersion Header version Required Text Fixed: 1.0 Always 1.0. Don't change.
Sender sbd:Sender/sbd:Identifier Sender identifier Required Text (15) If ProfileID=selfbilling, use the customer TRN. Otherwise, use the supplier TRN. Must match the corporate TRN of the issuing party.
sbd:Sender/sbd:Identifier/@Authority Sender authority Required Code Fixed: AE Country of the issuing party.
Receiver sbd:Receiver/sbd:Identifier Receiver identifier Required Text If ProfileID=selfbilling, use the supplier TRN. Otherwise, use the customer TRN. Corporate TRN of the receiving party.
sbd:Receiver/sbd:Identifier/@Authority Receiver authority Required Code Fixed: AE Country of the receiving party.
Document identification sbd:DocumentIdentification/sbd:Standard Document standard Required URI urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 -
sbd:DocumentIdentification/sbd:TypeVersion Type version Required Text Fixed: 2.1 Always 2.1 for UAE PINT.
sbd:DocumentIdentification/sbd:Type Document type Required Code Fixed: Invoice -
sbd:DocumentIdentification/sbd:MultipleType Multiple type flag Required Boolean Fixed: false Always use false for invoice and credit note submissions.
sbd:DocumentIdentification/sbd:CreationDateAndTime Creation date and time Required DateTime YYYY-MM-DDTHH:MM:SSZ (UTC ISO 8601) UTC timestamp of when the SBD envelope was created.
BusinessScope - Core routing Scope[Type='Country']/Identifier Country Required Code Fixed: AE Country code of the issuer.
Scope[Type='CompanyCode']/Identifier Company code Required Text If ProfileID=selfbilling, use the customer TRN. Otherwise, use the supplier TRN. Sender's TRN.
Scope[Type='SenderDocumentId']/Identifier Sender document ID Required Text ≤35 The UUID of the document. UUID format: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$.
Scope[Type='SenderSystemId']/Identifier Sender system ID Required Text ERP system name or identifier. Default: DefaultSystemERP Identifies the originating ERP system (for example, D365FO, SAP, or Oracle).
Scope[Type='ProcessType']/Identifier Process type Required Code Fixed: Outbound Outbound means the invoice is sent from the ERP to Sovos.
Scope[Type='BusinessCategory']/Identifier Business category Required Code Fixed: B2B -
Scope[Type='BusinessProcess']/BusinessService/BusinessServiceName Business service name Required Code Fixed: Default Turns on the full end-to-end Sovos pipeline.
Scope[Type='Version']/Identifier Version Required Text Fixed: 1.0 -
Scope[Type='SubSchema']/Identifier Sub-schema Required Text Blank always Leave blank for standard processing. Only set this value if Sovos instructs you to do so.
Businesscope - Mapping scopes Scope[Type='Mapping.TransformDocument']/Identifier Transform document Required Code Invoice: LEGAL-TO-SCI_INVOICE. Credit note: LEGAL-TO-SCI_CREDIT_NOTE. -
Scope[Type='Mapping.OutputSchema']/Identifier Output schema Required Code Fixed: pint -

Invoice body

Sovos accepts United Arab Emirates (UAE) invoices and credit notes in the Sovos Canonical Invoice (SCI) format. SCI follows the Universal Business Language (UBL) 2.1 structure. Sovos transforms SCI into the required PINT-AE legal format before passing it to the Pan-European Public Procurement On-Line (PEPPOL) access point.

Standard Business Document Header values

When submitting a UAE invoice or credit note, use these values alongside the standard Standard Business Document Header (SBDH) setup.

Embedding the invoice

How you embed the invoice depends on the format. For SCI format, the invoice XML goes inside <svs:SovosCanonicalInvoice>. For all other formats (UBL, CII, Factur-X), the document is Base64-encoded and placed in <svs:SovosLegalDocument>.

SCI format
CODE
<svs:SovosDocument>
<svs:SovosCanonicalInvoice>
<Invoice>
<!-- Invoice XML here -->
</Invoice>
</svs:SovosCanonicalInvoice>
</svs:SovosDocument>
PINT AE format
CODE
<svs:SovosDocument>
<svs:SovosLegalDocument>
<enc:Base64Document>
<enc:EmbeddedDocument mimeCode="application/xml">
        [Base64-encoded invoice XML]
</enc:EmbeddedDocument>
</enc:Base64Document>
</svs:SovosLegalDocument>
</svs:SovosDocument>

Invoice schema

A UAE SCI invoice opens with namespace declarations on the root <Invoice> element, followed by header fields, party blocks, tax totals, monetary totals, and one or more invoice lines. For the full list of namespace declarations, see Troubleshoot issues.

The cbc: prefix marks simple values (text, dates, codes, and amounts). The cac: prefix marks structured blocks (parties, addresses, and line items). Both are defined by the namespace declarations and are required for the document to be valid.

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#conformant#urn:fdc:ae.gov.mof:2025:pint-ae:billing:1.0</cbc:CustomizationID>
  <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
  <cbc:ID>INV-2026-001</cbc:ID>
  <cbc:IssueDate>2026-05-01</cbc:IssueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>AED</cbc:DocumentCurrencyCode>

  <cac:AccountingSupplierParty>...</cac:AccountingSupplierParty>
  <cac:AccountingCustomerParty>...</cac:AccountingCustomerParty>
  <cac:TaxTotal>...</cac:TaxTotal>
  <cac:LegalMonetaryTotal>...</cac:LegalMonetaryTotal>
  <cac:InvoiceLine>...</cac:InvoiceLine>

</Invoice>

Header fields

SCI / UBL path Element Cardinality Description
Invoice/CustomizationID <cbc:CustomizationID> 1..1 Required PINT-AE specification identifier. See the UAE-specific fields section.
Invoice/ProfileID <cbc:ProfileID> 1..1 PEPPOL billing process identifier. See the UAE-specific fields section.
Invoice/ID <cbc:ID> 1..1 Invoice number. Must be sequential and unique within your system.
Invoice/IssueDate <cbc:IssueDate> 1..1 Invoice date. Format: YYYY-MM-DD.
Invoice/InvoiceTypeCode <cbc:InvoiceTypeCode> 1..1 Document type. 380 for invoices, 381 for credit notes.
Invoice/DocumentCurrencyCode <cbc:DocumentCurrencyCode> 1..1 Invoice currency. ISO 4217, for example AED. Any currency is permitted, but AED tax totals are always required at both header and line level regardless of invoice currency.
Invoice/TaxCurrencyCode <cbc:TaxCurrencyCode> 0..1 VAT accounting currency. Set to AED when the invoice currency is not AED. Triggers inclusion of a second <cac:TaxTotal> block in AED. See the Tax total section.
Invoice/TaxPointDate <cbc:TaxPointDate> 0..1 Date VAT becomes chargeable, if different from the invoice date.
Invoice/DueDate <cbc:DueDate> 0..1 Payment due date.
Invoice/Note <cbc:Note> 0..n Free-text note.
Invoice/BuyerReference <cbc:BuyerReference> 0..1 Buyer's internal routing reference.

Validation

CustomizationID
Must be set to the full PINT-AE URN. Missing or incorrect values return a 422 validation error.
ID (invoice number)
Must be sequential and unique within your system. Sovosdoesn't assign invoice numbers.
InvoiceTypeCode
Must be 380 or 381.
DocumentCurrencyCode
Any ISO 4217 currency is permitted, but all tax amounts must also be expressed in AED.

Seller block

<cac:AccountingSupplierParty>

XML
<cac:AccountingSupplierParty>
  <cac:Party>
    <cbc:EndpointID schemeID="0235">[Your_TIN]</cbc:EndpointID>
    <cac:PartyIdentification>
      <cbc:ID schemeID="TIN">[Your_TIN]</cbc:ID>
    </cac:PartyIdentification>
    <cac:PartyName>
      <cbc:Name>[Supplier name]</cbc:Name>
    </cac:PartyName>
    <cac:PostalAddress>
      <cbc:StreetName>[Street]</cbc:StreetName>
      <cbc:CityName>[City]</cbc:CityName>
      <cac:Country>
        <cbc:IdentificationCode>AE</cbc:IdentificationCode>
      </cac:Country>
    </cac:PostalAddress>
    <cac:PartyTaxScheme>
      <cbc:CompanyID>[Your_TRN]</cbc:CompanyID>  <!-- 15-character TRN for VAT-registered suppliers -->
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:PartyTaxScheme>
    <cac:PartyLegalEntity>
      <cbc:RegistrationName>[Supplier legal name]</cbc:RegistrationName>
    </cac:PartyLegalEntity>
  </cac:Party>
</cac:AccountingSupplierParty>
Seller fields Element Cardinality Description
AccountingSupplierParty/Party/EndpointID <cbc:EndpointID schemeID="0235"> 1..1 Your PEPPOL Participant ID. Set schemeID="0235" and use your 10-digit TIN as the value.
AccountingSupplierParty/Party/PartyTaxScheme/CompanyID <cbc:CompanyID> 0..1 Your 15-character Tax Registration Number (TRN). Required for VAT-registered suppliers. In a VAT group, each entity uses its own TRN.
AccountingSupplierParty/Party/PostalAddress/Country/IdentificationCode <cbc:IdentificationCode> 1..1 ISO 3166-1 alpha-2 country code. Use AE for UAE-based suppliers.

Buyer block

<cac:AccountingCustomerParty>

XML
<cac:AccountingCustomerParty>
  <cac:Party>
    <cbc:EndpointID schemeID="0235">[Buyer_TIN]</cbc:EndpointID>
    <cac:PartyIdentification>
      <cbc:ID schemeID="TIN">[Buyer_TIN]</cbc:ID>
    </cac:PartyIdentification>
    <cac:PartyName>
      <cbc:Name>[Buyer name]</cbc:Name>
    </cac:PartyName>
    <cac:PostalAddress>
      <cbc:StreetName>[Street]</cbc:StreetName>
      <cbc:CityName>[City]</cbc:CityName>
      <cac:Country>
        <cbc:IdentificationCode>AE</cbc:IdentificationCode>
      </cac:Country>
    </cac:PostalAddress>
    <cac:PartyTaxScheme>
      <cbc:CompanyID>[Buyer_TRN]</cbc:CompanyID>  <!-- 15-character TRN for VAT-registered buyers -->
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:PartyTaxScheme>
    <cac:PartyLegalEntity>
      <cbc:RegistrationName>[Buyer legal name]</cbc:RegistrationName>
    </cac:PartyLegalEntity>
  </cac:Party>
</cac:AccountingCustomerParty>
Buyer fields Element Cardinality Description
AccountingCustomerParty/Party/EndpointID <cbc:EndpointID schemeID="0235"> 1..1 Buyer's PEPPOL Participant ID. Set schemeID="0235" and use the buyer's 10-digit TIN. Required for routing. Sovos uses this to look up the buyer's Access Service Provider (ASP) in the PEPPOL network.
AccountingCustomerParty/Party/PartyTaxScheme/CompanyID <cbc:CompanyID> 0..1 Buyer's 15-character TRN. Required for reverse charge (use case 2) and other scenarios where the buyer is VAT-registered.
AccountingCustomerParty/Party/PostalAddress/Country/IdentificationCode <cbc:IdentificationCode> 1..1 ISO 3166-1 alpha-2 country code of the buyer. Use the buyer's non-UAE country code for zero-rated exports (use case 10).

Tax total

<cac:TaxTotal>

All UAE invoices must include tax amounts in AED at both header and line level, regardless of the invoice currency. When the invoice currency is not AED, include two <cac:TaxTotal> blocks: One in the invoice currency, one in AED.

XML
<!-- Tax total in invoice currency (always required) -->
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="[InvoiceCurrency]">[TaxAmount]</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="[InvoiceCurrency]">[TaxableAmount]</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="[InvoiceCurrency]">[TaxAmount]</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>5</cbc:Percent>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>

<!-- AED tax total (required when invoice currency is not AED) -->
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="AED">[AED_TaxAmount]</cbc:TaxAmount>
</cac:TaxTotal>

Validation

TaxTotal.TaxAmount in AED

Required at header level for all invoices. Calculate the AED equivalent using the applicable exchange rate.

Line-level AED tax amounts

Required on each invoice line. A validation error on TaxTotal or a line-level tax field is often caused by missing AED-equivalent amounts on a foreign-currency invoice.

TaxCategory/ID

Use the UAE VAT category codes from Technical reference: S (5% standard), Z (zero-rated), E (exempt), AE (reverse charge), and O (out of scope).

UAE-specific fields

These elements use standard UBL structure but carry UAE-specific values that the PINT-AE mandate sets.

CustomizationID

Required PINT-AE specification identifier. Set to the full Unified Number Inquiry (URN on every UAE invoice:

XML
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0#conformant#urn:fdc:ae.gov.mof:2025:pint-ae:billing:1.0</cbc:CustomizationID>

A missing or incorrect CustomizationID returns a 422 validation error.

ProfileID

PEPPOL billing process identifier. Always set it to <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>.:

UUID
Every UAE invoice needs a UUID. A UUID is a string of letters and numbers that gives each invoice a unique identity across all systems. Generate a new UUID for each submission. Resubmissions after a negative Message Level Status (MLS) require a new UUID.
Transaction type flags

Every UAE invoice must include an Invoice Transaction Type Code in the SovosExtension block. This tells the Federal Tax Authority (FTA) what kind of transaction the invoice represents. Validators reject invoices that omit or misconfigure this field.

Set each applicable flag to true when:

Flag Scenario
FreeTradeZoneSupply Either party is in a UAE Free Trade Zone.
MarginScheme The transaction uses the VAT margin scheme.
DeemedSupply The supply is a deemed supply.
SummaryInvoice The seller makes more than one supply to the same buyer in the same calendar month.
ContinuousSupply The supply of goods or services is made on a recurring basis.
AgentBilling A registered agent makes the supply on behalf of a principal.
ECommerceSupply The supply of goods or services is made through e-commerce.
Exports The supply of goods or services is made outside the UAE.
Credit notes
  • Set InvoiceTypeCode to 381.

  • Include the original invoice number in BillingReference.

  • Include an appropriate reason code following the PEPPOL framework.

  • A corrected invoice to replace the original must be submitted as a separate transaction after Sovos confirms the credit note.