Complyance Logo

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

Extension Specifications

Saudi Arabia

ZATCA-Specific Fields

FieldDescriptionRequiredExample
zatca.qr_codeBase64 encoded QR codeRequiredBase64 encoded string
zatca.invoice_hashSHA256 hash of invoiceRequired64-character hex string
zatca.previous_invoice_hashPIH for invoice sequencingRequired64-character hex string
zatca.digital_signatureXML digital signatureRequiredXML 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.00

Malaysia

MyInvois-Specific Fields

FieldDescriptionRequiredExample
myinvois.tinTax Identification NumberRequiredC12345678912
myinvois.sst_numberSales and Service Tax NumberOptionalSST-12345
myinvois.business_codeBusiness Activity CodeOptional01111
myinvois.lhdn_idLHDN Participant IDRequiredMY-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

FieldDescriptionRequiredExample
be_vat.vat_numberBelgium VAT number (BE + 10 digits)RequiredBE0123456789
be_vat.cbe_numberCBE registration numberRequired0123.456.789
be_vat.peppol_idPeppol network identifierOptional9925:BE0123456789
be_vat.ibanInternational Bank Account NumberRequired for paymentsBE68 5390 0754 7034
be_vat.bicBank Identifier CodeRequired for paymentsKREDBEBB
be_digital.signature_methodDigital signature methodOptionalRSA-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

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"
    )
);

Next Steps