GETS Country Extensions
Country-specific extensions and customizations in the Global E-Invoice Transformation Standard (GETS) to meet local compliance requirements and regulatory standards.
Saudi Arabia (KSA)
ZATCA (Zakat, Tax and Customs Authority) e-invoicing compliance
Key Extensions
- QR Code generation for all invoices
- Digital signature requirements
- PIH (Previous Invoice Hash) calculation
- Simplified invoice thresholds (1,000 SAR)
Document Types
- Standard - Full e-invoice with QR code
- Simplified - Simplified invoice for small amounts
- Credit Note - Invoice corrections
- Debit Note - Additional charges
Malaysia (MY)
LHDN (Lembaga Hasil Dalam Negeri) e-invoicing compliance
Key Extensions
- Approval code requirements
- Software ID validation
- Specific tax rate handling
- Multi-language support
Document Types
- Invoice - Standard business invoice
- Credit Note - Invoice corrections
- Debit Note - Additional charges
- Receipt - Payment confirmations
Belgium (BE)
EU e-invoicing compliance with Peppol network support
Key Extensions
- EU standard compliance (EN 16931-1:2017)
- Peppol BIS Billing 3.0 support
- VAT number format (BE + 10 digits)
- CBE (Crossroads Bank for Enterprises) registration numbers
- Multi-language support (French/Dutch)
- IBAN and BIC codes for payments
Document Types
- Tax Invoice - Standard B2B tax invoice
- Credit Note - Invoice corrections
- Debit Note - Additional charges
- Simplified Invoice - Simplified tax invoice
United Arab Emirates (UAE)
FTA (Federal Tax Authority) PINT e-invoicing compliance
Key Extensions
- FTA PINT (Paperless Invoice Network Technology) integration
- Tax Registration Number (TRN) validation
- UUID for unique invoice identification
- Clearance status tracking
- Multi-language support (Arabic/English)
- VAT exemption reason codes
Document Types
- Tax Invoice - Standard VAT invoice
- Credit Note - Invoice corrections
- Debit Note - Additional charges
- Simplified Tax Invoice - Simplified invoices for small amounts
Germany (DE)
XRechnung and EU e-invoicing compliance
Key Extensions
- XRechnung format compliance
- Leitweg ID routing for public sector
- EN 16931-1:2017 EU standard
- GoBD (Grundsätze zur ordnungsmäßigen Führung) archiving requirements
- SEPA payment integration
- Reverse charge VAT handling
Document Types
- Invoice - Standard business invoice
- Credit Note - Invoice corrections
- Debit Note - Additional charges
- Self-Billing Invoice - Customer-generated invoices
Extension Specifications
Saudi Arabia
ZATCA-Specific Fields
| Field | Description | Required | Example |
|---|---|---|---|
zatca.qr_code | Base64 encoded QR code | Required | Base64 encoded string |
zatca.invoice_hash | SHA256 hash of invoice | Required | 64-character hex string |
zatca.previous_invoice_hash | PIH for invoice sequencing | Required | 64-character hex string |
zatca.digital_signature | XML digital signature | Required | XML signature string |
B2C QR Code Structure
ZATCA QR Code TLV Structure:
- Tag 1: Seller Name (UTF-8)
- Tag 2: VAT Registration Number
- Tag 3: Invoice Date and Time (ISO 8601)
- Tag 4: Invoice Total (with VAT)
- Tag 5: VAT Amount
Example:
01|ACME Corporation|02|123456789012345|03|2024-01-15T10:30:00Z|04|2300.00|05|300.00Malaysia
MyInvois-Specific Fields
| Field | Description | Required | Example |
|---|---|---|---|
myinvois.tin | Tax Identification Number | Required | C12345678912 |
myinvois.sst_number | Sales and Service Tax Number | Optional | SST-12345 |
myinvois.business_code | Business Activity Code | Optional | 01111 |
myinvois.lhdn_id | LHDN Participant ID | Required | MY-12345 |
SST Compliance
Malaysian SST Structure:
- SST Rate: 6% for goods, 6% for services
- Tax Classification:
- Standard Rate (TX-01): 6%
- Zero Rate (TX-02): 0%
- Exempt (TX-03): N/A
Belgium
Belgium-Specific Fields
| Field | Description | Required | Example |
|---|---|---|---|
be_vat.vat_number | Belgium VAT number (BE + 10 digits) | Required | BE0123456789 |
be_vat.cbe_number | CBE registration number | Required | 0123.456.789 |
be_vat.peppol_id | Peppol network identifier | Optional | 9925:BE0123456789 |
be_vat.iban | International Bank Account Number | Required for payments | BE68 5390 0754 7034 |
be_vat.bic | Bank Identifier Code | Required for payments | KREDBEBB |
be_digital.signature_method | Digital signature method | Optional | RSA-SHA256 |
EU Compliance Standards
Belgium EU Invoice Structure:
- Standard: EN 16931-1:2017
- Peppol: Peppol BIS Billing 3.0
- VAT Rates:
- Standard Rate: 21%
- Reduced Rate: 6% or 12%
- Zero Rate: 0%
- Multi-language: French and Dutch support required
Peppol Network Integration
Belgium Peppol Requirements:
- Peppol ID format:
9925:BEXXXXXXXXXX - Document type:
urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 - Process ID:
urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
United Arab Emirates
FTA PINT-Specific Fields
| Field | Description | Required | Example |
|---|---|---|---|
ae_identification.ftaInvoiceRef | FTA Invoice Reference Number | Required | FTA-2024-001 |
ae_identification.trn | Tax Registration Number (15 digits) | Required | 100000000000003 |
ae_identification.uuid | Unique Universal Identifier | Required | 8e6c3c4a-5f9b-4c8d-a7e2-3f1b9c8d7e6f |
ae_identification.submissionDateTime | Invoice submission date and time | Required | 2024-01-15T10:30:00Z |
ae_identification.clearanceStatus | Clearance status from FTA | Required | CLEARED / REJECTED |
UAE Tax Details
| Field | Description | Required | Example |
|---|---|---|---|
ae_tax.vatCategoryCode | VAT category classification | Required | S (Standard) / Z (Zero) / E (Exempt) |
ae_tax.exemptionReasonCode | VAT exemption reason code | Conditional | VATEX-SA-32 |
ae_tax.exemptionReasonText | VAT exemption reason description | Conditional | Export of goods |
ae_tax.taxSchemeId | Tax scheme identifier | Required | VAT |
UAE Multi-Language Support
FTA requires bilingual support (Arabic and English):
- Invoice descriptions in both languages
- Line item names in Arabic
- Mandatory document language code specification
Germany
XRechnung-Specific Fields
| Field | Description | Required | Example |
|---|---|---|---|
de_identification.xrechnungVersion | XRechnung specification version | Required | 3.0.1 |
de_identification.leitwegId | Routing ID for public administration | Required | 991-12345-67 |
de_identification.buyerReference | Buyer's reference number | Required | PO-2024-001 |
de_identification.electronicAddressScheme | Electronic address identifier scheme | Required | EM (Email) |
German Tax Registration
| Field | Description | Required | Example |
|---|---|---|---|
de_tax.taxNumber | German tax number (Steuernummer) | Required | 12/345/67890 |
de_tax.vatIdentificationNumber | VAT identification number | Required | DE123456789 |
de_tax.taxOffice | Responsible tax office | Optional | Finanzamt Berlin |
de_tax.reverseChargeVat | Reverse charge VAT indicator | Optional | true / false |
GoBD Archiving Requirements
German GoBD Compliance:
- Retention Period: 10 years for invoices
- Document Integrity: SHA-256 hash required
- Immutability: Once archived, cannot be modified
- Audit Trail: Complete audit trail required
- Format: XRechnung or ZUGFeRD format
SEPA Payment Integration
Germany SEPA Payment Structure:
- IBAN format: DE + 20 digits
- BIC code: 8 or 11 characters
- SEPA Credit Transfer support
- Payment discount terms support
Implementation Guide
How to configure country extensions in your GETS integration.
Destination Configuration
{
"destinations": [
{
"type": "tax_authority",
"details": {
"country": "SA",
"authority": "ZATCA",
"environment": "production",
"extensions": {
"zatca": {
"certificate_path": "/path/to/cert.pem",
"private_key_path": "/path/to/key.pem",
"integration_type": "api",
"solution_name": "MyERP v1.0"
}
}
}
}
]
}Automatic Extension Loading
Based on Country
Extensions automatically loaded based on destination country code
Example:
{
"country": "SA" // -> ZATCA extensions
}Based on Authority
Specific tax authority extensions can be explicitly specified
Example:
{
"authority": "ZATCA" // -> Saudi extensions
}Usage Examples
Saudi Arabia Implementation
// Configure ZATCA extension
Map<String, Object> zatcaConfig = Map.of(
"country", "SA",
"authority", "ZATCA",
"extensions", Map.of(
"zatca", Map.of(
"certificate_path", "/path/to/cert.pem",
"private_key_path", "/path/to/key.pem",
"integration_type", "api",
"solution_name", "MyERP v1.0"
)
)
);
// Create invoice with ZATCA extensions
Map<String, Object> invoice = Map.of(
"invoiceNumber", "SA-INV-001",
"issueDate", "2024-01-15",
"seller", Map.of(
"name", "ACME Corporation",
"taxNumber", "123456789012345"
),
"buyer", Map.of(
"name", "Customer Company",
"taxNumber", "987654321098765"
),
"zatca", Map.of(
"qr_code", "base64_encoded_qr_code",
"invoice_hash", "sha256_hash_string",
"previous_invoice_hash", "previous_hash_string",
"digital_signature", "xml_signature_string"
)
);Malaysia Implementation
// Configure MyInvois extension
Map<String, Object> myinvoisConfig = Map.of(
"country", "MY",
"authority", "LHDN",
"extensions", Map.of(
"myinvois", Map.of(
"tin", "C12345678912",
"lhdn_id", "MY-12345",
"business_code", "01111"
)
)
);
// Create invoice with MyInvois extensions
Map<String, Object> invoice = Map.of(
"invoiceNumber", "MY-INV-001",
"issueDate", "2024-01-15",
"seller", Map.of(
"name", "Malaysian Company",
"taxNumber", "C12345678912"
),
"buyer", Map.of(
"name", "Customer Company",
"taxNumber", "C98765432109"
),
"myinvois", Map.of(
"tin", "C12345678912",
"sst_number", "SST-12345",
"business_code", "01111",
"lhdn_id", "MY-12345"
)
);Belgium Implementation
// Configure Belgium extension
Map<String, Object> belgiumConfig = Map.of(
"country", "BE",
"authority", "SPF_FINANCES",
"extensions", Map.of(
"be_vat", Map.of(
"vat_number", "BE0123456789",
"cbe_number", "0123.456.789",
"peppol_id", "9925:BE0123456789",
"iban", "BE68 5390 0754 7034",
"bic", "KREDBEBB"
),
"be_digital", Map.of(
"signature_method", "RSA-SHA256",
"certificate_info", "CN=Company,O=Org,C=BE"
)
)
);
// Create invoice with Belgium extensions
Map<String, Object> invoice = Map.of(
"invoiceNumber", "BE-INV-001",
"issueDate", "2024-01-15",
"seller", Map.of(
"name", "Société Belge SPRL",
"taxNumber", "BE0123456789",
"registrationNumber", "0123.456.789"
),
"buyer", Map.of(
"name", "Entreprise Belge SA",
"taxNumber", "BE0987654321"
),
"be_vat", Map.of(
"vat_number", "BE0123456789",
"cbe_number", "0123.456.789",
"peppol_id", "9925:BE0123456789",
"intra_eu_indicator", false,
"export_indicator", false
),
"payment", Map.of(
"iban", "BE68 5390 0754 7034",
"bic", "KREDBEBB"
)
);UAE Implementation
// Configure FTA PINT extension
Map<String, Object> uaeConfig = Map.of(
"country", "AE",
"authority", "FTA",
"extensions", Map.of(
"ae_identification", Map.of(
"trn", "100000000000003",
"uuid", "8e6c3c4a-5f9b-4c8d-a7e2-3f1b9c8d7e6f"
),
"ae_tax", Map.of(
"vatCategoryCode", "S",
"taxSchemeId", "VAT"
),
"ae_multilang", Map.of(
"languageCode", "en"
)
)
);
// Create invoice with UAE extensions
Map<String, Object> invoice = Map.of(
"invoiceNumber", "AE-INV-001",
"issueDate", "2024-01-15",
"seller", Map.of(
"name", "Emirates Company LLC",
"taxNumber", "100000000000003"
),
"buyer", Map.of(
"name", "Customer Company",
"taxNumber", "100000000000004"
),
"ae_identification", Map.of(
"ftaInvoiceRef", "FTA-2024-001",
"trn", "100000000000003",
"uuid", "8e6c3c4a-5f9b-4c8d-a7e2-3f1b9c8d7e6f",
"submissionDateTime", "2024-01-15T10:30:00Z",
"clearanceStatus", "CLEARED"
),
"ae_tax", Map.of(
"vatCategoryCode", "S",
"taxSchemeId", "VAT"
),
"ae_multilang", Map.of(
"descriptionAr", "فاتورة ضريبية",
"languageCode", "en"
)
);Germany Implementation
// Configure XRechnung extension
Map<String, Object> germanyConfig = Map.of(
"country", "DE",
"authority", "BUNDESFINANZMINISTERIUM",
"extensions", Map.of(
"de_identification", Map.of(
"xrechnungVersion", "3.0.1",
"leitwegId", "991-12345-67"
),
"de_tax", Map.of(
"taxNumber", "12/345/67890",
"vatIdentificationNumber", "DE123456789"
),
"de_payment", Map.of(
"iban", "DE89370400440532013000",
"bic", "COBADEFFXXX",
"sepaCreditTransfer", true
)
)
);
// Create invoice with Germany extensions
Map<String, Object> invoice = Map.of(
"invoiceNumber", "DE-INV-001",
"issueDate", "2024-01-15",
"seller", Map.of(
"name", "Deutsche Firma GmbH",
"taxNumber", "DE123456789",
"registrationNumber", "HRB 12345"
),
"buyer", Map.of(
"name", "Kunde Unternehmen AG",
"taxNumber", "DE987654321"
),
"de_identification", Map.of(
"xrechnungVersion", "3.0.1",
"leitwegId", "991-12345-67",
"buyerReference", "PO-2024-001",
"electronicAddressScheme", "EM"
),
"de_tax", Map.of(
"taxNumber", "12/345/67890",
"vatIdentificationNumber", "DE123456789",
"taxOffice", "Finanzamt Berlin",
"reverseChargeVat", false
),
"de_payment", Map.of(
"paymentReference", "PAY-2024-001",
"sepaCreditTransfer", true,
"iban", "DE89370400440532013000",
"bic", "COBADEFFXXX",
"discountTerms", "2% within 10 days"
),
"de_archiving", Map.of(
"timestamp", "2024-01-15T10:30:00Z",
"documentHash", "sha256_hash_string",
"archiveSystemId", "ARC-SYS-001",
"retentionPeriod", "10 years"
)
);Next Steps
- Schema Overview - Understanding the core GETS schema
- Field Mapping - Detailed field mapping guide
- Document Types - Supported document types
- Examples - Real-world implementation examples