Flick.
PINT OM CompliantCountry guide

Oman - eInvoicing Mandates

Comprehensive guide for implementing PINT OM-compliant e-invoicing in Oman. Built on Peppol International standards with Oman-specific requirements for seamless OTA integration and compliance.

PINT OMSpecifications
DCTCEModel
PeppolNetwork
PhasedRollout

Reporting Mandates

  • OTA Peppol eInvoicing
  • PINT OM Framework

Exchange Networks

  • Peppol Network
  • Accredited Service Providers

Supported Documents

  • Commercial Invoices (380)
  • Self-Billed Invoices (389)
  • Credit Notes (381)
  • Debit Notes (383)
  • Self-Billed Credit Notes (261)

Introduction to Oman E-Invoicing

The Sultanate of Oman is a country located on the southeastern coast of the Arabian Peninsula. As part of its vision for digital transformation and economic modernization, the Oman government is implementing electronic invoicing systems to enhance tax compliance, transparency, and operational efficiency across the business sector.

Key Authorities

AuthorityRoleResponsibilities
Ministry of Commerce, Industry and Investment PromotionPrimary regulatory body for e-invoicing• Developing and publishing e-invoicing standards and specifications
• Setting compliance requirements for businesses
• Managing the implementation timeline and phased rollout
• Providing official guidance and documentation
• Coordinating with other government entities

Website: www.moci.gov.om
Tax Authority of Oman (OTA)Tax administration and enforcement• Collecting and processing Tax Data Documents (TDD) from e-invoicing transactions
• Monitoring VAT compliance through e-invoicing data
• Conducting tax audits and enforcement
• Providing tax-related guidance to businesses

Website: www.OTA.gov.om

Digital Transformation Vision

The e-invoicing program is part of Oman's broader "Oman Vision 2040" strategy:

ObjectiveDescription
DigitizationTransform government services and business processes to digital platforms
Economic TransparencyEnhance transparency and competitiveness in the business environment
Tax ComplianceCombat tax evasion and eliminate the shadow economy
Ease of BusinessImprove and streamline business operations and processes
Data-Driven PolicyEnable informed government decision-making through real-time data

E-Invoicing Overview

Oman has adopted an e-invoicing framework based on international standards, specifically the Peppol network, adapted to local requirements through the PINT OM (Peppol International Oman) specifications. This system enables businesses to exchange electronic invoices in a standardized format while ensuring tax compliance through automated reporting to the Tax Authority of Oman.


For official updates and detailed information, please refer to the Ministry of Commerce, Industry and Investment Promotion and Tax Authority of Oman websites.

Oman E-Invoicing and Fiscalization Mandates

The Sultanate of Oman has introduced e-invoicing mandates as part of its digital transformation strategy. This section outlines the key mandate affecting businesses operating in Oman.

OTA eInvoicing with Peppol

The Ministry of Commerce, Industry and Investment Promotion has implemented a mandatory e-invoicing system based on the international Peppol network, adapted for local requirements through the PINT OM (Peppol International Oman) specifications.

What is Peppol?

Peppol (Pan-European Public Procurement Online) is an international network that enables businesses to exchange electronic documents, including invoices, in a standardized format. Oman has adopted this proven framework and customized it to meet local tax and business requirements.

Regulatory Framework

ComponentDetails
Issuing AuthorityMinistry of Commerce, Industry and Investment Promotion
Tax AuthorityTax Authority of Oman (OTA)
StandardPINT OM (Oman Peppol International Specifications)
NetworkPeppol Network
ModelDecentralized Continuous Transaction Control and Exchange (DCTCE)

Who Must Comply?

CategoryScope
Business TypeAll businesses operating in Oman
VAT StatusBoth VAT-registered and non-VAT registered entities
Transaction TypesB2B (Business-to-Business) and B2G (Business-to-Government)

How It Works

The Oman e-invoicing system operates through a five-corner model:

CornerParticipantRole
C1SupplierIssues the invoice
C2Supplier's Service ProviderValidates and transmits the invoice, reports tax data to OTA
C3Buyer's Service ProviderReceives and validates the invoice, reports tax data to OTA
C4BuyerReceives the invoice
C5Tax Authority of Oman (OTA)Collects tax data from both service providers

This decentralized approach means businesses must work with Accredited Service Providers (ASPs) to exchange invoices and report tax information automatically to the OTA.

Document Types

The mandate covers several types of electronic documents:

CodeDocument TypeDescription
380InvoiceStandard business invoices for regular transactions
381Credit NoteFor returns, adjustments, and corrections
383Debit NoteFor additional charges and adjustments to previously issued invoices
389Self-Billing InvoiceBuyer-issued invoices (in specific scenarios)
261Self-Billing Credit NoteBuyer-issued credit notes to adjust self-billing invoices

Key Requirements

To comply with the OTA eInvoicing mandate, businesses must:

#RequirementDescription
1PINT OM Compliant SystemsInvoice format must follow Oman specifications
2Accredited Service ProviderUse authorized providers to exchange invoices
3Peppol Network ExchangeAll invoices transmitted through the Peppol infrastructure
4Automatic Tax ReportingService providers report Tax Data Documents (TDD) to the OTA
5Record MaintenanceKeep proper audit trails and documentation

Benefits

The e-invoicing system provides the following benefits:

BenefitImpact
Improved VAT ComplianceReduces tax evasion and increases compliance rates
Enhanced TransparencyIncreases visibility in business transactions
Reduced Manual WorkMinimizes manual processing and human errors
Faster ProcessingEnables quicker invoice exchange and approval
Streamlined AuditsSimplifies tax audit processes and documentation
Real-Time DataSupports government decision-making with live transaction data

Implementation

The e-invoicing mandate is being rolled out in phases. Businesses should take the following steps:

StepActionPurpose
1. Stay InformedMonitor official Ministry of Commerce announcementsKeep updated on timelines and requirements
2. System AssessmentEvaluate current invoicing systemsIdentify gaps and needed changes
3. Provider EngagementConnect with Accredited Service ProvidersEstablish integration and exchange capabilities
4. PreparationPrepare for compliance ahead of deadlinesEnsure smooth transition and avoid penalties

For detailed specifications and official timelines, refer to the Ministry of Commerce, Industry and Investment Promotion e-invoicing portal.

OTA E-Invoicing with Peppol

The Tax Authority of Oman (OTA) e-invoicing system is built on the PINT OM (Peppol International Oman) specifications, establishing a comprehensive framework for electronic invoice exchange and tax reporting.

What is Oman E-Invoicing?

The Oman e-invoicing program requires businesses to exchange electronic invoices in a standardized format through the Peppol network. This system enables real-time invoice validation, automated tax reporting, and seamless business-to-business document exchange while ensuring compliance with Oman tax regulations.

The framework is based on the international Peppol BIS Billing 3.0 standard, customized for Oman requirements through the PINT OM (Peppol International Oman) specifications.

The Five-Corner Model

Oman has adopted a Decentralized Continuous Transaction Control and Exchange (DCTCE) model, which operates through five key participants:

CornerParticipantRole & Responsibilities
C1Supplier• Issues the invoice
• Submits invoice data to their Service Provider
• Receives confirmation and status messages
C2Supplier's Accredited Service Provider• Validates invoice data from supplier
• Converts invoice to standard XML format (if needed)
• Transmits invoice to buyer's Service Provider
• Reports Tax Data Document (TDD) to OTA
• Forwards status messages to supplier
C3Buyer's Accredited Service Provider• Receives and validates the invoice
• Delivers invoice to buyer
• Reports Tax Data Document (TDD) to OTA
• Sends validation status messages
• Forwards OTA status to buyer
C4Buyer• Receives the validated invoice
• Reviews and processes the invoice
• Receives status confirmations
C5Tax Authority of Oman (OTA)• Collects Tax Data Documents from both Service Providers
• Monitors VAT compliance
• Provides reporting confirmation messages

How It Works

The invoice flow follows these steps:

  1. Supplier creates invoice and submits it to their Accredited Service Provider (C2)
  2. C2 validates the invoice data and converts it to Oman standard XML format
  3. C2 transmits the invoice to the Buyer's Service Provider (C3) via Peppol network
  4. C2 reports the Tax Data Document (TDD) to the OTA (C5)
  5. C3 validates the received invoice and sends status message to C2
  6. C3 delivers the invoice to the Buyer (C4)
  7. C3 reports the Tax Data Document (TDD) to the OTA (C5)
  8. OTA confirms receipt of TDD to both C2 and C3
  9. Status messages flow back through the chain to inform both parties

Key Components

PINT OM Data Dictionary

The Data Dictionary defines all required and optional fields for invoices, including:

  • Invoice identification and dates
  • Party information (supplier, buyer, payee)
  • Line items with pricing and quantities
  • Tax breakdowns by category
  • Payment terms and methods
  • Allowances and charges

Tax Data Document (TDD)

A subset of the invoice data that is automatically reported to the OTA by both Service Providers, containing:

  • Essential tax-related fields
  • Party identifiers
  • Tax calculations
  • Transaction amounts

Message Level Status (MLS)

Real-time status messages that confirm each stage of the process:

  • Validation success or failure
  • Transmission confirmation
  • Receipt acknowledgment
  • TDD reporting confirmation

Business Use Cases

The Oman e-invoicing framework defines 16 business use cases (matching the 20-bit transaction type identifier) that cover common invoice, credit note, and debit note scenarios. These use cases ensure standardized handling of various transaction types while maintaining compliance with Oman VAT regulations.

The 5 Mandatory Use Cases

These use cases establish the fundamental requirements for any e-invoicing implementation in Oman. All businesses must support these scenarios:

#Use CaseDescriptionData Requirements
1Standard Tax InvoiceBasic e-invoice for taxable supplies50 mandatory data points, including 15 new fields not previously required by Oman VAT law
2Standard Tax Credit NoteCorrects or adjusts previously issued e-invoicesMandatory and frequently used optional fields as per Data Dictionary
3Debit NoteAdditional charges or adjustments to previously issued invoicesMandatory fields as per Data Dictionary
4Self-Billing InvoiceCreated by the buyer on behalf of the supplierStandard invoicing data elements as specified
5Self-Billing Credit NoteCorrects or adjusts a self-billing invoiceMandatory fields as per Data Dictionary

The 11 Additional (Conditional) Use Cases

These use cases handle specific business scenarios with additional data requirements beyond standard invoice fields:

#Use CasePurposeAdditional Data Required
6Third Party InvoiceInvoice issued by a third party on behalf of the supplierThird party identifiers and authorization details
7Summary InvoiceConsolidated invoice for multiple transactions over a periodTransaction grouping data and summary period information
8Continuous SupplySubscription or recurring servicesService period details and recurrence patterns
9ExportCross-border sales outside OmanExport documentation references and destination details
10Deemed SupplyNon-monetary transfers treated as taxable suppliesSpecific deemed supply identifiers and valuation data
11Import (Reverse Charge)Special tax mechanism where buyer accounts for VAT on importsReverse-charge transaction indicators and reason codes
12Profit MarginSpecial VAT scheme for used goods, art, antiquesMargin calculation data and scheme identifiers
13E-CommerceDigital marketplace or online platform salesPlatform identifiers and digital commerce metadata
14Import of GoodsImportation of goods into OmanImport documentation, customs references, and duty data
15Special ZoneTransactions involving special economic or free zone entitiesZone identifiers and customs-related data
16PrepaymentAdvance payments before delivery of goods or servicesPrepayment reference, linked invoice details, and settlement terms

Field Complexity by Scenario

The data requirements vary significantly based on the use case:

  • Mandatory use cases: 49-50 mandatory data fields
  • Conditional use cases: Up to 120 data fields per invoice (mandatory, conditional, and optional)
  • Total coverage: Over 135 business terms across all scenarios in the PINT OM Data Dictionary

Implementation Requirements

Businesses must:

  1. Identify applicable use cases for their business operations
  2. Support all 5 mandatory use cases at minimum
  3. Implement conditional use cases relevant to their transaction types
  4. Ensure data completeness for all required fields per use case
  5. Validate against PINT OM specifications before transmission
  6. Test scenarios with their Accredited Service Provider

Standards & Format

StandardSpecification
Base StandardPeppol BIS Billing 3.0
Oman ExtensionPINT OM (Peppol International Oman)
FormatUBL 2.1 XML
NetworkPeppol 4-Corner Model + OTA as 5th Corner
EncodingUTF-8

For detailed technical specifications and field definitions, refer to the Ministry of Commerce, Industry and Investment Promotion e-invoicing portal.

PINT OM Invoice Datapoints

These are the datapoints included in PINT OM in an e-invoice.

Customization ID: urn:peppol:pint:billing-1@om-1

Base-Level Invoice Datapoints

document_identifier

UBL Tag: cbc:ID
Requirement: Mandatory
Type: String

Unique identifier for the invoice.

Regional API

JSON
{
  "document_identifier": "INV-001/2025"
}

Unified API

JSON
{
  "document_identifier": "INV-001/2025"
}

Rules:

  • [ibr-001]: Invoice MUST contain invoice number (IBT-001)
  • Must be unique within the supplier's system
  • No specific format required, but should be sequential and traceable

uuid

UBL Tag: cbc:UUID
Requirement: Mandatory
Type: String (UUID v4)
PINT Reference: BTOM-002

Universally unique identifier for the invoice. Must be a standard UUID v4 format.

Regional API

JSON
{
  "uuid": "6f47cc9a-3b2e-4d5f-a1c8-7e9d3b4f6a2c"
}

Unified API

JSON
{
  "uuid": "6f47cc9a-3b2e-4d5f-a1c8-7e9d3b4f6a2c"
}

Rules:

  • [BTOM-002]: Invoice MUST contain a UUID
  • Must be a valid UUID v4 format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
  • Must be unique per invoice
  • Required for all invoice types

issue_date

UBL Tag: cbc:IssueDate
Requirement: Mandatory
Type: Date (YYYY-MM-DD)

The date when the invoice was issued.

Regional API

JSON
{
  "issue_date": "2025-06-15"
}

Unified API

JSON
{
  "issue_date": "2025-06-15"
}

Rules:

  • [ibr-002]: Invoice MUST contain invoice issue date (IBT-002)
  • Must be in ISO 8601 format: YYYY-MM-DD
  • Cannot be a future date

issue_time

UBL Tag: cbc:IssueTime
Requirement: Mandatory
Type: Time (HH:MM:SS)
PINT Reference: IBT-168

The time when the invoice was issued. PINT OM requires the issue time on all invoices.

Regional API

JSON
{
  "issue_time": "14:30:00"
}

Unified API

JSON
{
  "issue_time": "14:30:00"
}

Rules:

  • [IBT-168]: Invoice issue time is mandatory for all PINT OM invoices
  • Must be in ISO 8601 format: HH:MM:SS
  • Represents the local time of invoice issuance

due_date

UBL Tag: cbc:DueDate
Requirement: Conditional
Type: Date (YYYY-MM-DD)

The date by which payment is due.

Rules:

  • [IBT-009]: Payment due date
  • [ibr-127-om]: Payment due date MUST be present when the amount due for payment (IBT-115) is greater than 0, except when invoice type code (IBT-003) is Credit Note (381) or Self-Billing Credit Note (261), or when the transaction type code (BTOM-001) indicates Deemed supply
  • Must be in ISO 8601 format: YYYY-MM-DD
  • Should be equal to or after issue_date

document_type

UBL Tag: cbc:InvoiceTypeCode
Requirement: Mandatory
Type: Code

Specifies the type of invoice document.

Regional API

JSON
{
  "document_type": "380"
}

Unified API

JSON
{
  "document_type": "380"
}

Allowed Values:

CodeDescription
380Invoice (standard tax invoice)
381Credit Note
383Debit Note
389Self-Billing Invoice
261Self-Billing Credit Note

Rules:

  • [ibr-003]: Invoice MUST contain invoice type code (IBT-003)
  • [ibr-cl-01]: Invoice type code MUST be from UNCL1001 subset
  • Must be one of the five approved codes for Oman

transaction_type_code

UBL Tag: cbc:ProfileExecutionID
Requirement: Mandatory
Type: String (20-bit binary)
PINT Reference: BTOM-001

A 20-character binary string indicating the nature of the invoice transaction. Each bit position corresponds to a specific transaction characteristic. If applicable, set to 1; if not, set to 0.

Regional API

JSON
{
  "transaction_type_code": "10000000000000000000"
}

Unified API

JSON
{
  "transaction_type_code": "10000000000000000000"
}

Bit Positions:

PositionCodeDescription
1FullTaxFull tax invoice
2SimplifiedSimplified tax invoice
3SelfBilledSelf-billed invoice
4ThirdPartyThird-party invoice
5SummarySummary invoice
6ContinuousContinuous supply invoice
7ExportExport invoice
8DeemedDeemed supply
9ImportRCMImport reverse charge mechanism
10ProfitMarginProfit margin scheme
11ProfitMarginSelfProfit margin self-billed
12ECommerceE-commerce supply
13ImportGoodsImport of goods
14SpecialZoneSpecial economic zone transaction
15PrepaymentPrepayment invoice
16–20ReservedReserved for future use

Rules:

  • [BTOM-001]: Transaction type code MUST be a string of exactly 20 characters consisting only of 0 and 1
  • At least one of the non-reserved positions (1–15) MUST be set to 1
  • Reserved positions (16–20) MUST be 0
  • Multiple positions can be set simultaneously where applicable

note

UBL Tag: cbc:Note
Requirement: Conditional (multiple allowed) Type: Array of Objects

Free-text notes or additional information about the invoice. Each note is an object with a text field (required) and an optional subject_code.

Regional API

JSON
{
  "note": [
    {
      "text": "Tax invoice for services rendered"
    }
  ]
}

Unified API

JSON
{
  "note": [
    {
      "text": "Tax invoice for services rendered"
    }
  ]
}

Rules:

  • [IBT-022]: Invoice note (free text)
  • [ibr-160-om]: When Frequency of billing (BTOM-006) value is 'Others', then value should be provided in Invoice note (IBT-022)
  • Multiple notes can be included
  • Each note can have an optional subject code (IBT-021)

tax_point_date

UBL Tag: cbc:TaxPointDate
Requirement: Conditional
Type: Date (YYYY-MM-DD)

The date when VAT becomes accountable (delivery date or tax point).

Regional API

JSON
{
  "tax_point_date": "2025-06-14"
}

Unified API

JSON
{
  "tax_point_date": "2025-06-14"
}

Rules:

  • [IBT-007]: Value added tax point date
  • [ibr-124-om]: VAT point date MUST NOT be present when invoice type code (IBT-003) is Credit Note (381) or Self-Billing Credit Note (261)
  • [ibr-141-om]: When VAT point date is present, it should be before the Invoice issue date (IBT-002)
  • Must be in ISO 8601 format: YYYY-MM-DD
  • Typically the delivery date or date of supply

document_currency

UBL Tag: cbc:DocumentCurrencyCode
Requirement: Mandatory Type: Code (ISO 4217)

The currency in which all invoice amounts are expressed.

Regional API

JSON
{
  "document_currency": "OMR"
}

Unified API

JSON
{
  "document_currency": "OMR"
}

Rules:

  • [ibr-005]: Invoice MUST contain invoice currency code (IBT-005)
  • [ibr-cl-03]: Currency ID MUST be coded using ISO 4217 alpha-3
  • [ibr-126]: All currency ID attributes must match document currency code
  • [ibr-159-om]: Currency exchange rate (BTOM-004) is MUST when the Invoice currency code (IBT-005) is different from 'OMR'
  • [ibr-175-om]: When Invoice currency code (IBT-005) is other than 'OMR' and Tax accounting currency (IBT-006) is 'OMR', then the value in Invoice total VAT amount in tax accounting currency (IBT-111) and Invoice total amount with VAT in OMR (BTOM-020) MUST be present
  • For Oman transactions, typically "OMR" (Omani Rial)

currency_exchange_rate

UBL Tag: cbc:ExchangeRate
Requirement: Conditional
Type: Decimal

The exchange rate for converting document currency to OMR.

Regional API

JSON
{
  "currency_exchange_rate": 0.384615
}

Unified API

JSON
{
  "currency_exchange_rate": 0.384615
}

Rules:

  • [ibr-002-om]: Currency exchange rate (BTOM-004) should contain the values to a maximum of 6 decimal places
  • [ibr-159-om]: Currency exchange rate (BTOM-004) is MUST when the Invoice currency code (IBT-005) is different from 'OMR'
  • [ibr-153-om]: When the Tax accounting currency (IBT-006) is set to OMR and the invoice currency code (IBT-005) differs from OMR, the source currency must be designated as the invoice currency code (IBT-005), and the target currency must be specified as the Tax accounting currency (IBT-006), provided that the currency exchange rate (BTOM-004) is available

accounting_cost

UBL Tag: cbc:AccountingCost
Requirement: Optional
Type: String

Buyer's accounting reference or cost center code.

Regional API

JSON
{
  "accounting_cost": "4025:123:4343"
}

Unified API

JSON
{
  "accounting_cost": "4025:123:4343"
}

Rules:

  • [IBT-019]: Buyer accounting reference
  • Free-text field for buyer's internal accounting codes

buyer_reference

UBL Tag: cbc:BuyerReference
Requirement: Optional
Type: String

Unique identifier assigned by the buyer for routing purposes.

Regional API

JSON
{
  "buyer_reference": "BR-001/23"
}

Unified API

JSON
{
  "buyer_reference": "BR-001/23"
}

Rules:

  • [IBT-010]: Buyer reference

invoice_period

UBL Tag: cac:InvoicePeriod
Requirement: Conditional Type: Object

The period (or specific date) to which the invoice relates.

Regional API

JSON
{
  "invoice_period": {
    "start_date": "2025-06-01",
    "end_date": "2025-06-30",
    "description_code": "MTH"
  }
}

Unified API

JSON
{
  "invoice_period": {
    "start_date": "2025-06-01",
    "end_date": "2025-06-30",
    "description_code": "MTH"
  }
}

Fields:

FieldUBL TagTypeDescription
start_datecbc:StartDateDatePeriod start date (IBT-073)
end_datecbc:EndDateDatePeriod end date (IBT-074)
description_codecbc:DescriptionCodeStringPeriod description code (BTOM-006)

description_code Allowed Values:

Allowed values: DLY, WKY, Q15, MTH, Q45, Q60, QTR, YRL, HYR, OTH

Context: cac:InvoicePeriod/cbc:DescriptionCode

Test: ((not(contains(normalize-space(.), ' ')) and contains(' DLY WKY Q15 MTH Q45 Q60 QTR YRL HYR OTH ', concat(' ', normalize-space(.), ' '))))

Rules:

  • [IBG-14]: Invoicing period (optional group)
  • [ibr-030]: If period end date is provided, start date MUST also be provided
  • [ibr-138-om]: Invoicing period (IBG-14) is MUST when transaction type code (BTOM-001) has position 5 set (Summary invoice)
  • [ibr-005-om]: Frequency of billing (BTOM-006) should be taken from the frequency of billing code list
  • Dates must be in ISO 8601 format: YYYY-MM-DD

order_reference

UBL Tag: cac:OrderReference
Requirement: Optional Type: Object

Reference to the buyer's purchase order.

Regional API

JSON
{
  "order_reference": {
    "po_number": "PO-001/23",
    "so_number": "SO-001/23"
  }
}

Unified API

JSON
{
  "order_reference": {
    "po_number": "PO-001/23",
    "so_number": "SO-001/23"
  }
}

Fields:

FieldUBL TagTypeDescription
po_numbercbc:IDStringPurchase order number (IBT-013)
so_numbercbc:SalesOrderIDStringSales order number (IBT-014)

Rules:

  • [IBT-013]: Purchase order reference
  • [IBT-014]: Sales order reference

document_references

UBL Tag: cac:BillingReference
Requirement: Conditional (multiple allowed) Type: Array of Objects

Reference to preceding invoice (e.g., for credit notes or debit notes).

Regional API

JSON
{
  "document_references": [
    {
      "id": "INV-1001/2025",
      "issue_date": "2025-05-15"
    }
  ]
}

Unified API

JSON
{
  "document_references": [
    {
      "id": "INV-1001/2025",
      "issue_date": "2025-05-15"
    }
  ]
}

Fields:

FieldUBL TagTypeDescription
idcbc:IDStringPreceding invoice number (IBT-025)
issue_datecbc:IssueDateDateIssue date of preceding invoice (IBT-026)

Rules:

  • [IBG-03]: Preceding invoice reference
  • [ibr-055-om]: Preceding invoice reference (IBG-03) is mandatory when invoice type code (IBT-003) is 381 (Credit Note), 383 (Debit Note), or 261 (Self-Billing Credit Note)
  • Multiple billing references can be provided

credit_note_reason_code

UBL Tag: cac:DiscrepancyResponse/cbc:ResponseCode
Requirement: Conditional
Type: Code

The reason code for issuing a credit note. Required when document_type is 381 (Credit Note) or 261 (Self-Billing Credit Note).

Regional API

JSON
{
  "credit_note_reason_code": "CAN"
}

Unified API

JSON
{
  "credit_note_reason_code": "CAN"
}

Allowed Values:

CodeDescription
CANCancellation of the original invoice
VATVAT treatment change
VALValue/consideration adjustment
QTYQuantity adjustment (goods returned in full or part)
OTHOther reason

Rules:

  • [ibr-001-om]: Credit note reason code (BTOM-003) value should be from the Reasons for credit note code list
  • [ibr-158-om]: Where the Invoice type code (IBT-003) is Credit Note (381) or Self-Billing Credit Note (261), Credit note reason code (BTOM-003) MUST be present

prepayment_invoice_id

UBL Tag: cac:BillingReference/cac:InvoiceDocumentReference/cbc:ID
Requirement: Conditional
Type: String
PINT Reference: BTOM-027

Reference to the prepayment invoice number. Required when the transaction type code (BTOM-001) position 15 is set (Prepayment).

Regional API

JSON
{
  "prepayment_invoice_id": "PREPAY-001/2025"
}

Unified API

JSON
{
  "prepayment_invoice_id": "PREPAY-001/2025"
}

Rules:

  • [BTOM-027]: Prepayment invoice reference number
  • Required when the final invoice settles a prepayment
  • Must reference a valid, previously issued prepayment invoice

prepayment_invoice_uuid

UBL Tag: cac:BillingReference/cac:InvoiceDocumentReference/cbc:UUID
Requirement: Conditional
Type: String (UUID v4)
PINT Reference: BTOM-014

The UUID of the referenced prepayment invoice. Required when prepayment_invoice_id is provided.

Regional API

JSON
{
  "prepayment_invoice_uuid": "a4b2c8d1-3e5f-4a7b-9c1d-2e4f6a8b0c3d"
}

Unified API

JSON
{
  "prepayment_invoice_uuid": "a4b2c8d1-3e5f-4a7b-9c1d-2e4f6a8b0c3d"
}

Rules:

  • [BTOM-014]: Prepayment invoice UUID
  • Must be a valid UUID v4 format
  • Must match the UUID of the referenced prepayment invoice

other_references

Requirement: Optional
Type: Object

Additional document references related to the invoice transaction.

Regional API

JSON
{
  "other_references": {
    "despatch_document_reference": "DESP-2025-001",
    "receipt_document_reference": "REC-2025-001",
    "originator_document_reference": "ORIG-2025-001",
    "contract_document_reference": {
      "id": "CONTRACT-2025-001",
      "document_description": "OMR 100000"
    },
    "customs_document_reference": "CUSTOMS-2025-001",
    "project_reference": "PROJECT-2025-001"
  }
}

Unified API

JSON
{
  "other_references": {
    "despatch_document_reference": "DESP-2025-001",
    "receipt_document_reference": "REC-2025-001",
    "originator_document_reference": "ORIG-2025-001",
    "contract_document_reference": {
      "id": "CONTRACT-2025-001",
      "document_description": "OMR 100000"
    },
    "customs_document_reference": "CUSTOMS-2025-001",
    "project_reference": "PROJECT-2025-001"
  }
}

Fields:

FieldUBL TagIBTTypeDescription
despatch_document_referencecac:DespatchDocumentReference/cbc:IDIBT-016StringDespatch advice reference number
receipt_document_referencecac:ReceiptDocumentReference/cbc:IDIBT-015StringReceipt advice reference number
originator_document_referencecac:OriginatorDocumentReference/cbc:IDIBT-017StringOriginator document identifier (e.g., Tender or Lot reference)
contract_document_referencecac:ContractDocumentReferenceIBT-012ObjectReference to a contract
contract_document_reference.idcbc:ID-StringContract identifier
contract_document_reference.document_descriptioncbc:DocumentDescription-StringContract total amount (e.g., "OMR 100000")
customs_document_referencecac:AdditionalDocumentReference/cbc:ID-StringCustoms declaration reference number
project_referencecbc:ProjectReferenceIBT-011StringProject reference identifier

Rules:

  • [IBT-011]: Project reference (optional)
  • [IBT-012]: Contract reference (optional)
  • [IBT-015]: Receipt advice reference (optional)
  • [IBT-016]: Despatch advice reference (optional)
  • [IBT-017]: Originator document reference (optional)
  • All fields within other_references are optional

Party Information

sending_party

UBL Tag: cac:AccountingSupplierParty
Requirement: Mandatory Type: Object

Information about the supplier (seller) issuing the invoice.

Regional API

JSON
{
  "sending_party": {
    "trade_name": "Muscat Trading LLC",
    "peppol_id": "0248:OM1234567890",
    "street_address": "Al Qurum Heights, Way 2834",
    "city_address": "Muscat",
    "additional_street_address": "Building 45",
    "postal_zone": "112",
    "country_subdivision_code": "MO",
    "additional_address_lines": "Near City Centre",
    "country_code": "OM",
    "vat_number": "OM1234567890",
    "legal_name": "Muscat Trading LLC",
    "identifiers": [
      {
        "type": "CR",
        "value": "1234567"
      }
    ],
    "contact_name": "Ahmed Al-Busaidi",
    "contact_telephone": "+96824567890",
    "contact_email": "ahmed@muscattrading.om"
  }
}

Unified API

JSON
{
  "sending_party": {
    "trade_name": "Muscat Trading LLC",
    "peppol_id": "0248:OM1234567890",
    "street_address": "Al Qurum Heights, Way 2834",
    "city_address": "Muscat",
    "additional_street_address": "Building 45",
    "postal_zone": "112",
    "country_subdivision_code": "MO",
    "additional_address_lines": "Near City Centre",
    "country_code": "OM",
    "vat_number": "OM1234567890",
    "legal_name": "Muscat Trading LLC",
    "identifiers": [
      {
        "type": "CR",
        "value": "1234567"
      }
    ],
    "contact_name": "Ahmed Al-Busaidi",
    "contact_telephone": "+96824567890",
    "contact_email": "ahmed@muscattrading.om"
  }
}

Key Fields:

FieldUBL PathIBT IDCardinalityDescription
trade_namecac:Party/cac:PartyName/cbc:NameIBT-0280..1Trading name
peppol_idcac:Party/cbc:EndpointIDIBT-0341..1Peppol electronic address (mandatory, scheme 0248)
street_addresscac:PostalAddress/cbc:StreetNameIBT-0350..1Address line 1
city_addresscac:PostalAddress/cbc:CityNameIBT-0370..1City
additional_street_addresscac:PostalAddress/cbc:AdditionalStreetNameIBT-0360..1Address line 2
postal_zonecac:PostalAddress/cbc:PostalZoneIBT-0380..1Postal code
country_subdivision_codecac:PostalAddress/cbc:CountrySubentityIBT-0390..1Country subdivision code
additional_address_linescac:PostalAddress/cac:AddressLine/cbc:LineIBT-1620..1Additional address line
country_codecac:PostalAddress/cac:Country/cbc:IdentificationCodeIBT-0401..1Country code (mandatory)
vat_numbercac:PartyTaxScheme/cbc:CompanyIDIBT-0311..1VAT registration number (mandatory)
legal_namecac:PartyLegalEntity/cbc:RegistrationNameIBT-0271..1Legal registration name (mandatory)
identifierscac:PartyLegalEntity/cbc:CompanyIDIBT-0300..nArray of registration identifiers
identifiers[].typecbc:CompanyID/@schemeAgencyID-0..1Registration identifier type
identifiers[].valuecbc:CompanyIDIBT-0301..1Registration identifier value
contact_namecac:Contact/cbc:NameIBT-0410..1Contact person name
contact_telephonecac:Contact/cbc:TelephoneIBT-0420..1Contact telephone
contact_emailcac:Contact/cbc:ElectronicMailIBT-0430..1Contact email address

Country Subdivision Codes:

CodeDescription
SHRFZSalalah Free Zone
SEZADSpecial Economic Zone at Duqm
SLLFZSohar Free Zone / Port
AFZAl Mazunah Free Zone
MOMuscat / Other

Rules:

  • [ibr-004]: Legal name (IBT-027) MUST be provided
  • [ibr-006]: Postal address (IBG-05) MUST contain country code (IBT-040)
  • [ibr-009-om]: Electronic address (IBT-034) MUST have scheme identifier 0248
  • [ibr-144-om]: In postal address (IBG-05), Address line 1 (IBT-035), City (IBT-037) and country subdivision (IBT-039) must be provided
  • [ibr-om-vat]: Supplier VAT number (IBT-031) MUST be provided

receiving_party

UBL Tag: cac:AccountingCustomerParty
Requirement: Mandatory Type: Object

Information about the party receiving the invoice.

Regional API

JSON
{
  "receiving_party": {
    "trade_name": "Salalah Imports Co.",
    "peppol_id": "0248:OM0987654321",
    "street_address": "23rd July Street",
    "city_address": "Salalah",
    "additional_street_address": "Office 12, Block B",
    "postal_zone": "211",
    "country_subdivision_code": "SHRFZ",
    "additional_address_lines": "Industrial Area",
    "country_code": "OM",
    "vat_number": "OM0987654321",
    "legal_name": "Salalah Imports Co. SAOG",
    "identifiers": [
      {
        "type": "CR",
        "value": "7654321"
      }
    ],
    "contact_name": "Fatma Al-Lawati",
    "contact_telephone": "+96823456789",
    "contact_email": "fatma@salalahimports.om"
  }
}

Unified API

JSON
{
  "receiving_party": {
    "trade_name": "Salalah Imports Co.",
    "peppol_id": "0248:OM0987654321",
    "street_address": "23rd July Street",
    "city_address": "Salalah",
    "additional_street_address": "Office 12, Block B",
    "postal_zone": "211",
    "country_subdivision_code": "SHRFZ",
    "additional_address_lines": "Industrial Area",
    "country_code": "OM",
    "vat_number": "OM0987654321",
    "legal_name": "Salalah Imports Co. SAOG",
    "identifiers": [
      {
        "type": "CR",
        "value": "7654321"
      }
    ],
    "contact_name": "Fatma Al-Lawati",
    "contact_telephone": "+96823456789",
    "contact_email": "fatma@salalahimports.om"
  }
}

Key Fields:

FieldUBL PathIBT IDCardinalityDescription
trade_namecac:Party/cac:PartyName/cbc:NameIBT-0450..1Trading name
peppol_idcac:Party/cbc:EndpointIDIBT-0491..1Peppol electronic address (mandatory, scheme 0248)
street_addresscac:PostalAddress/cbc:StreetNameIBT-0500..1Address line 1
city_addresscac:PostalAddress/cbc:CityNameIBT-0520..1City
additional_street_addresscac:PostalAddress/cbc:AdditionalStreetNameIBT-0510..1Address line 2
postal_zonecac:PostalAddress/cbc:PostalZoneIBT-0530..1Postal code
country_subdivision_codecac:PostalAddress/cbc:CountrySubentityIBT-0540..1Country subdivision code
additional_address_linescac:PostalAddress/cac:AddressLine/cbc:LineIBT-1620..1Additional address line
country_codecac:PostalAddress/cac:Country/cbc:IdentificationCodeIBT-0551..1Country code (mandatory)
vat_numbercac:PartyTaxScheme/cbc:CompanyIDIBT-0480..1VAT/TRN identifier
legal_namecac:PartyLegalEntity/cbc:RegistrationNameIBT-0441..1Legal registration name (mandatory)
identifierscac:PartyLegalEntity/cbc:CompanyIDIBT-0470..nArray of registration identifiers
identifiers[].typecbc:CompanyID/@schemeAgencyID-0..1Registration identifier type
identifiers[].valuecbc:CompanyIDIBT-0471..1Registration identifier value
contact_namecac:Contact/cbc:NameIBT-0560..1Contact person name
contact_telephonecac:Contact/cbc:TelephoneIBT-0570..1Contact telephone
contact_emailcac:Contact/cbc:ElectronicMailIBT-0580..1Contact email address

Country Subdivision Codes:

CodeDescription
SHRFZSalalah Free Zone
SEZADSpecial Economic Zone at Duqm
SLLFZSohar Free Zone / Port
AFZAl Mazunah Free Zone
MOMuscat / Other

Rules:

  • [ibr-007]: Legal name (IBT-044) MUST be provided
  • [ibr-008]: Postal address (IBG-08) MUST contain country code (IBT-055)
  • [ibr-011]: Electronic address (IBT-049) MUST have scheme identifier
  • [ibr-CL-11]: Electronic address scheme MUST be from code list
  • [ibr-144-om]: In postal address (IBG-08), Address line 1 (IBT-050), City (IBT-052) and country subdivision (IBT-054) must be provided
  • [ibr-135-om]: Either identifier (IBT-046) or VAT identifier (IBT-048) MUST be present when the transaction type code (BTOM-001) does not indicate an Export (position 7) and scheme identifier (IBT-049-1) is '0248'
  • [ibr-179-om]: VAT identifier (IBT-048) MUST occur maximum once

third_party

UBL Tag: cac:TaxRepresentativeParty
Requirement: Conditional
Type: Object

Third-party details for third-party invoices. Required when transaction type code (BTOM-001) position 4 is set (ThirdParty).

Regional API

JSON
{
  "third_party": {
    "name": "Oman Agency Services LLC",
    "vat_number": "OM1122334455",
    "street_address": "Sultan Qaboos Street",
    "city_address": "Nizwa",
    "postal_zone": "611",
    "country_subdivision_code": "MO",
    "country_code": "OM"
  }
}

Unified API

JSON
{
  "third_party": {
    "name": "Oman Agency Services LLC",
    "vat_number": "OM1122334455",
    "street_address": "Sultan Qaboos Street",
    "city_address": "Nizwa",
    "postal_zone": "611",
    "country_subdivision_code": "MO",
    "country_code": "OM"
  }
}

Key Fields:

FieldUBL PathIBT IDCardinalityDescription
namecac:PartyName/cbc:NameIBT-0621..1Third-party name (mandatory when present)
vat_numbercac:PartyTaxScheme/cbc:CompanyIDIBT-0631..1Third-party VAT number (mandatory when present)
street_addresscac:PostalAddress/cbc:StreetNameIBT-0640..1Address line 1
city_addresscac:PostalAddress/cbc:CityNameIBT-0660..1City
postal_zonecac:PostalAddress/cbc:PostalZoneIBT-0670..1Postal code
country_subdivision_codecac:PostalAddress/cbc:CountrySubentityIBT-0680..1Country subdivision code
country_codecac:PostalAddress/cac:Country/cbc:IdentificationCodeIBT-0691..1Country code (mandatory when present)

Rules:

  • [ibr-om-third]: When transaction type code (BTOM-001) position 4 is set (ThirdParty), the third_party group MUST be provided
  • [ibr-056]: Third-party name (IBT-062) MUST be provided when group is present
  • [ibr-057]: Third-party VAT number (IBT-063) MUST be provided when group is present
  • [ibr-058]: Third-party country code (IBT-069) MUST be provided when group is present

Invoice Lines

invoice_lines

UBL Tag: cac:InvoiceLine
Requirement: Mandatory (at least one)
Type: Array of Objects

Individual line items in the invoice.

Regional API

JSON
{
  "invoice_lines": [
    {
      "id": "1",
      "note": "Consulting services for Q2",
      "quantity": 10,
      "uom": "HUR",
      "accounting_cost": "SVC-001",
      "name": "IT Consulting",
      "description": "IT infrastructure consulting services",
      "item_type": "SV",
      "hs_code": "998311",
      "vat_category": "S",
      "vat_percentage": 5,
      "unit_price": 150.000,
      "base_quantity": 1,
      "line_total_including_vat": 1575.000
    },
    {
      "id": "2",
      "quantity": 50,
      "uom": "H87",
      "name": "Office Supplies",
      "description": "A4 paper boxes",
      "item_type": "GS",
      "hs_code": "48025610",
      "vat_category": "S",
      "vat_percentage": 5,
      "unit_price": 12.500,
      "base_quantity": 1,
      "line_total_including_vat": 656.250
    }
  ]
}

Unified API

JSON
{
  "invoice_lines": [
    {
      "id": "1",
      "note": "Consulting services for Q2",
      "quantity": 10,
      "uom": "HUR",
      "accounting_cost": "SVC-001",
      "name": "IT Consulting",
      "description": "IT infrastructure consulting services",
      "item_type": "SV",
      "hs_code": "998311",
      "vat_category": "S",
      "vat_percentage": 5,
      "unit_price": 150.000,
      "base_quantity": 1,
      "line_total_including_vat": 1575.000
    },
    {
      "id": "2",
      "quantity": 50,
      "uom": "H87",
      "name": "Office Supplies",
      "description": "A4 paper boxes",
      "item_type": "GS",
      "hs_code": "48025610",
      "vat_category": "S",
      "vat_percentage": 5,
      "unit_price": 12.500,
      "base_quantity": 1,
      "line_total_including_vat": 656.250
    }
  ]
}

Key Fields:

FieldIBT IDCardinalityDescription
idIBT-1261..1Unique line identifier
noteIBT-1270..1Free-text note for the line
quantityIBT-1291..1Quantity of items
uomIBT-1301..1Unit of measure code
line_extension_amountIBT-1311..1Line net amount (before tax)
nameIBT-1531..1Item name
descriptionIBT-1541..1Item description
item_typeBTOM-0131..1Item type: "GS" (goods) or "SV" (services)
hs_codeIBT-1580..nHS code / classification identifier
vat_categoryIBT-1511..1VAT category code for item (S, E, O, Z)
vat_percentageIBT-1520..1VAT rate for item
vat_exemption_reason_codeIBT-1860..1VAT exemption reason code (for E-category lines)
zero_rating_reason_code-0..1Zero rating reason code (for Z-category lines)
unit_priceIBT-1461..1Item net price per unit
base_quantityIBT-1491..1Quantity to which price applies
line_total_including_vatBTOM-0171..1Line total amount including VAT
accounting_cost-0..1Accounting reference for the line
discount_reason_codeIBT-1390..nCode specifying the identification of a discount
discount_amountIBT-1360..nDiscount amount
charge_reason_codeIBT-1440..nCode specifying the identification of a charge
charge_amountIBT-1410..nCharge amount
buyers_item_codeIBT-1560..nItem code assigned by the Buyer
supplier_item_codeIBT-1550..nItem code assigned by the Seller
dispatch_reference-0..nShipping reference number for item specific
order_reference-0..nOrder reference number for item specific
invoice_period_start_dateIBT-1340..nPeriod start date relevant for the invoice line
invoice_period_end_dateIBT-1350..nPeriod end date relevant for the invoice line
origin_countryIBT-1590..nCountry from which the item originates
additional_item_property_nameIBT-1600..nAdditional attribute name
additional_item_property_valueIBT-1610..nAdditional attribute value

Item Type Codes (BTOM-013):

CodeDescriptionNotes
GSGoodsHS code (IBT-158) recommended
SVServicesService classification recommended

VAT Category Codes:

CodeDescriptionRate
SStandard rated5%
EExempt from VATN/A
OOutside scope of VATN/A
ZZero-rated0%

VAT Exemption Reason Codes (IBT-186) — required when vat_category is E:

CodeDescription
VATEX-OM-01Financial services (specified)
VATEX-OM-02Supply of residential property (first sale/lease)
VATEX-OM-03Bare land
VATEX-OM-04Local passenger transport
VATEX-OM-05Healthcare services
VATEX-OM-06Educational services
VATEX-OM-07Supply of medicines and medical equipment (specified list)
VATEX-OM-08Supply of food items (specified list)
VATEX-OM-09Rental of residential property
VATEX-OM-10Charitable and humanitarian activities
VATEX-OM-11Government services
VATEX-OM-12Other exempt supply (as specified by regulation)

Zero-Rating Reason Codes — required when vat_category is Z:

CodeDescription
VATZR-OM-01Export of goods
VATZR-OM-02Export of services
VATZR-OM-03International transport of goods
VATZR-OM-04International transport of passengers
VATZR-OM-05Supply of means of transport for international use
VATZR-OM-06Supply related to international transport
VATZR-OM-07Supply of precious metals (investment grade)
VATZR-OM-08Supply to designated/special zones
VATZR-OM-09First supply of residential property within 3 years
VATZR-OM-10Supply of crude oil and natural gas
VATZR-OM-11Supply of food items (zero-rated list)
VATZR-OM-12Supply of medicines and medical equipment (zero-rated list)
VATZR-OM-13Diplomatic and international organization supply
VATZR-OM-14Supply under customs suspension
VATZR-OM-15Transfer of going concern
VATZR-OM-16Other zero-rated supply (as specified by regulation)

Rules:

  • [ibr-021]: Each invoice line MUST have unique identifier (IBT-126)
  • [ibr-022]: Each invoice line MUST contain invoiced quantity (IBT-129)
  • [ibr-023]: Each invoice line MUST contain unit of measure code (IBT-130)
  • [ibr-024]: Each invoice line MUST contain line net amount (IBT-131)
  • [ibr-025]: Unit of measure code MUST be from UN/ECE Recommendation 20
  • [ibr-026]: Each invoice line MUST contain item net price (IBT-146)
  • [ibr-027]: Item net price MUST NOT be negative
  • [ibr-CL-23]: Unit code MUST be coded according to UN/ECE Rec 20 with Rec 21 extension
  • [ibr-SR-50]: Item description (IBT-154) MUST occur maximum once
  • [ibr-SR-58]: Invoiced item VAT category code (IBT-151) MUST be present
  • [ibr-125-om]: In Item Information (IBG-31), Item description (IBT-154) MUST be there
  • [ibr-145-om]: Each Invoice line (IBG-25) MUST be categorized with an Invoiced item VAT category code (IBT-151)
  • [ibr-147-om]: Invoice line net amount (IBT-131) MUST equal (Invoiced quantity (IBT-129) × (Item net price (IBT-146) / Item price base quantity (IBT-149)) + Sum of invoice line charge amount (IBT-141) − Sum of invoice line allowance amount (IBT-136))
  • [BTOM-013]: Item type MUST be either "GS" (goods) or "SV" (services)
  • [BTOM-017]: Line total including VAT MUST be provided
  • [ibr-167-om]: Line VAT Information (IBG-30) with Invoiced item VAT category code (IBT-151) as 'Exempt from VAT' MUST have a VAT exemption reason code (IBT-186)
  • [ibr-163-om]: In Line VAT Information (IBG-30) where Invoiced item VAT category code (IBT-151) is 'Exempt', VAT Line amount shall not be present
  • [ibr-165-om]: In Line VAT Information (IBG-30) where Invoiced item VAT category code (IBT-151) is 'Zero Rated', VAT Line amount MUST be zero
  • [ibr-om-zero]: When VAT category code (IBT-151) is 'Z' (Zero-rated), a zero_rating_reason_code MUST be provided
  • [ibr-194-om]: Invoice line amount payable (BTOM-010) must be provided
  • [ibr-126-om]: In Price Details (IBG-29), Item price base quantity (IBT-149) and Item Gross Price (IBT-148) MUST be there

Import Details

import_details

Requirement: Conditional
Type: Object

Import-related details. Required when transaction type code (BTOM-001) position 13 is set (ImportGoods).

Regional API

JSON
{
  "import_details": {
    "import_date": "2025-06-10",
    "customs_declaration_number": "CD-2025-OM-00456",
    "incoterms": "CIF"
  }
}

Unified API

JSON
{
  "import_details": {
    "import_date": "2025-06-10",
    "customs_declaration_number": "CD-2025-OM-00456",
    "incoterms": "CIF"
  }
}

Fields:

FieldTypeCardinalityDescription
import_dateDate (YYYY-MM-DD)1..1Date of importation
customs_declaration_numberString1..1Customs declaration reference number
incotermsString0..1Incoterms code (e.g., CIF, FOB, EXW, DDP)

Rules:

  • [ibr-om-import]: When transaction type code (BTOM-001) position 13 is set (ImportGoods), import_details MUST be provided
  • [ibr-om-import-date]: Import date MUST be in ISO 8601 format: YYYY-MM-DD
  • [ibr-om-import-cdn]: Customs declaration number MUST be provided for import transactions

Totals

invoice_totals

UBL Tag: cac:LegalMonetaryTotal
Requirement: Mandatory
Type: Object

Summary of all monetary totals for the invoice.

Regional API

JSON
{
  "invoice_totals": {
    "line_extension_amount": "2125.000",
    "tax_exclusive_amount": "2125.000",
    "tax_inclusive_amount": "2231.250",
    "allowance_total_amount": "0.000",
    "charge_total_amount": "0.000",
    "prepaid_amount": "500.000",
    "payable_rounding_amount": "0.000",
    "payable_amount": "1731.250"
  }
}

Unified API

JSON
{
  "invoice_totals": {
    "line_extension_amount": "2125.000",
    "tax_exclusive_amount": "2125.000",
    "tax_inclusive_amount": "2231.250",
    "allowance_total_amount": "0.000",
    "charge_total_amount": "0.000",
    "prepaid_amount": "500.000",
    "payable_rounding_amount": "0.000",
    "payable_amount": "1731.250"
  }
}

Key Fields:

FieldIBT IDCardinalityDescription
line_extension_amountIBT-1061..1Sum of all invoice line net amounts
tax_exclusive_amountIBT-1091..1Invoice total without VAT
tax_inclusive_amountIBT-1121..1Invoice total with VAT
allowance_total_amountIBT-1070..1Sum of document-level allowances
charge_total_amountIBT-1080..1Sum of document-level charges
prepaid_amountIBT-1130..1Sum of amounts already paid
payable_rounding_amountIBT-1140..1Rounding adjustment
payable_amountIBT-1151..1Final amount due for payment

Rules:

  • [ibr-009]: Invoice total amounts MUST be provided
  • [ibr-012]: Invoice total VAT amount MUST equal sum of VAT category tax amounts
  • [ibr-013]: Invoice total without VAT = Sum of line net amounts − allowances + charges
  • [ibr-014]: Invoice total with VAT = Invoice total without VAT + Invoice total VAT amount
  • [ibr-015]: Amount due for payment = Invoice total with VAT − Prepaid amount + Rounding amount
  • All amounts must be in the document currency (IBT-005)
  • OMR amounts should use 3 decimal places

Additional Datapoints

allowance_charge (Document Level)

UBL Tag: cac:AllowanceCharge
Requirement: Optional (multiple allowed)
Type: Array of Objects

Document-level allowances (discounts) or charges (fees).

Regional API

JSON
{
  "allowance_charge": [
    {
      "charge_indicator": false,
      "allowance_charge_reason_code": "95",
      "allowance_charge_reason": "Discount",
      "multiplier_factor_numeric": "2.00",
      "amount": "42.500",
      "base_amount": "2125.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    }
  ]
}

Unified API

JSON
{
  "allowance_charge": [
    {
      "charge_indicator": false,
      "allowance_charge_reason_code": "95",
      "allowance_charge_reason": "Discount",
      "multiplier_factor_numeric": "2.00",
      "amount": "42.500",
      "base_amount": "2125.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    }
  ]
}

Key Fields:

FieldIBT IDTypeDescription
charge_indicator-Booleanfalse = allowance, true = charge
amountIBT-092/099StringAllowance/charge amount
base_amountIBT-093/100StringBase amount for calculation
multiplier_factor_numericIBT-094/101StringPercentage factor
allowance_charge_reasonIBT-097/104StringReason description
allowance_charge_reason_codeIBT-098/105StringCoded reason
vat_categoryIBT-095/102StringVAT category code (S, Z, E, O)
vat_percentageIBT-096/103StringVAT rate percentage

Rules:

  • [ibr-036]: Document level allowance amount MUST NOT be negative
  • [ibr-037]: Document level allowance base amount MUST be provided if percentage is provided
  • [ibr-038]: Document level charge amount MUST NOT be negative
  • [ibr-039]: Document level charge base amount MUST be provided if percentage is provided
  • [ibr-041]: Document level allowance MUST have VAT category code (IBT-095)
  • [ibr-042]: Document level charge MUST have VAT category code (IBT-102)
  • [ibr-CO-04]: Allowance amount = Base amount × Multiplier factor
  • [ibr-CO-05]: Charge amount = Base amount × Multiplier factor
  • [ibr-131-om]: Allowance amount (IBT-092, IBT-136) must equal base amount (IBT-093, IBT-137) × percentage (IBT-094, IBT-138) ÷ 100 if base amount and percentage exist
  • [ibr-146-om]: Charge amount (IBT-099, IBT-141) must equal base amount (IBT-100, IBT-142) × percentage (IBT-101, IBT-143) ÷ 100 if base amount and percentage exist
  • [ibr-168-om]: Document level allowances (IBG-20) with Document level allowance VAT category code (IBT-095) as 'Exempt from VAT' MUST have a Document level allowance VAT exemption reason code (IBT-196)
  • [ibr-169-om]: Document level charges (IBG-21) with Document level charge VAT category code (IBT-102) as 'Exempt from VAT' MUST have a Document level charge VAT exemption reason code (IBT-198)

payment_means

UBL Tag: cac:PaymentMeans
Requirement: Conditional (multiple allowed)
Type: Array of Objects

Payment method information including bank details or card information.

Regional API

JSON
{
  "payment_means": [
    {
      "payment_means_code": "30",
      "payment_id": "INV-2025-001",
      "account_id": "OM070101234567890123456",
      "account_name": "Muscat Trading LLC",
      "financial_institution_branch": "BMUSTOMXXX"
    }
  ]
}

Unified API

JSON
{
  "payment_means": [
    {
      "payment_means_code": "30",
      "payment_id": "INV-2025-001",
      "account_id": "OM070101234567890123456",
      "account_name": "Muscat Trading LLC",
      "financial_institution_branch": "BMUSTOMXXX"
    }
  ]
}

Common Payment Means Codes:

CodeDescription
1Instrument not defined
10Cash
20Cheque
30Credit transfer
31Debit transfer
42Payment to bank account
48Bank card
49Direct debit
55Debit card
58SEPA credit transfer

Rules:

  • [ibr-049]: Payment means type code (IBT-081) MUST be from UN/ECE code list 4461
  • [ibr-061]: If payment means is credit transfer, account identifier (IBT-084) MUST be provided
  • [ibr-CL-16]: Payment means code MUST be from approved subset
  • [ibr-191-om]: Payment means type code (IBT-081) must be provided except when the invoice type code (IBT-003) is Credit Note (381), Self-Billing Credit Note (261), or when the transaction type code (BTOM-001) indicates Deemed supply (position 8)
  • [ibr-192-om]: When Payment means type code (IBT-081) is 'credit transfer' then Payment account identifier (IBT-084) must be provided

delivery_terms

UBL Tag: cac:DeliveryTerms
Requirement: Conditional
Type: Object

Delivery terms (Incoterms) for the transaction.

Rules:

  • [ibr-196-om]: The Incoterms (BTOM-022) must be provided when applicable (e.g., for export and import transactions)


Oman eInvoicing Lifecycle

This guide covers the complete lifecycle of e-invoicing in Oman, from onboarding to the Peppol network through sending and receiving invoices.


Onboarding to Network

Before you can send or receive e-invoices through the Oman Peppol network, you must complete the onboarding process:

1. Register with an Accredited Service Provider (ASP)

The Oman e-invoicing system operates through Accredited Service Providers. You must:

  • Select an ASP approved by the Tax Authority of Oman (OTA)
  • Complete registration with your chosen ASP
  • Provide your business registration details (Commercial Registration, VAT TIN)
  • Obtain your Peppol participant identifier

2. Obtain Peppol Credentials

Your ASP will provide you with:

CredentialDescriptionFormat
Peppol IDYour unique participant identifier0248:OM1234567890 (scheme 0248 + OM prefix + 10-digit TIN Number)
Participant IDYour internal UUID for API callsUUID format
API CredentialsAccess keys for programmatic integrationAPI Key (static) or OAuth2 client credentials

3. Configure Your System

Set up your integration:

  • Configure API authentication
  • Map your internal data models to PINT OM format
  • Set up webhook endpoints (for receiving invoices)
  • Test your connection in sandbox environment

4. Go Live

Once testing is complete:

  • Activate your production account
  • Begin exchanging invoices with registered Peppol participants
  • Monitor compliance through your ASP dashboard

Sending an Invoice

Sending an invoice through Peppol involves four key steps: preparing the invoice data, verifying the recipient, sending the document, and handling responses.

Preparing the Invoice Data

Create your invoice following the PINT OM specification. Here's the basic structure:

Regional API

JSON
{
  "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "document_identifier": "OM001-Test",
  "issue_date": "2025-01-30",
  "issue_time": "14:30:00",
  "due_date": "2025-02-06",
  "document_type": "380",
  "document_currency": "OMR",
  
  "receiving_party": {
    "peppol_id": "0248:OM1345678901",
    "street_address": "Street Name",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "134567890123003",
    "legal_name": "Buyer Legal Name",
    "identifiers": [
      {
        "type": "CR",
        "value": "112345679000001"
      }
    ]
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Oman Trading SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "1000.00",
    "tax_exclusive_amount": "1000.00",
    "tax_inclusive_amount": "1050.00",
    "payable_amount": "1050.00"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "100",
      "uom": "H87",
      "line_extension_amount": "1000.00",
      "name": "Item Name",
      "description": "Item Description",
      "commodity_code": "G",
      "hs_code": "84713000",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "10.00",
      "base_quantity": "1"
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "document_identifier": "OM001-Test",
  "issue_date": "2025-01-30",
  "issue_time": "14:30:00",
  "due_date": "2025-02-06",
  "document_type": "380",
  "document_currency": "OMR",
  
  "receiving_party": {
    "peppol_id": "0248:OM1345678901",
    "street_address": "Street Name",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "134567890123003",
    "legal_name": "Buyer Legal Name",
    "identifiers": [
      {
        "type": "CR",
        "value": "112345679000001"
      }
    ]
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Oman Trading SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "1000.00",
    "tax_exclusive_amount": "1000.00",
    "tax_inclusive_amount": "1050.00",
    "payable_amount": "1050.00"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "100",
      "uom": "H87",
      "line_extension_amount": "1000.00",
      "name": "Item Name",
      "description": "Item Description",
      "commodity_code": "G",
      "hs_code": "84713000",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "10.00",
      "base_quantity": "1"
    }
  ]
}

Key Points:

  • The document_type "380" represents a standard commercial invoice
  • Buyer must have valid Peppol ID
  • At least one invoice line is mandatory

Verifying the Recipient

Before sending an invoice, verify that the recipient is registered in the Peppol network to avoid errors.

Single Lookup

Verify a single recipient by Peppol ID.

Endpoint: GET /v1/peppol/lookup/{peppol_id}

Example Request:

Text
GET /v1/peppol/lookup/0248:OM1345678901

Response:

JSON
{
  "status": "success",
  "message": "Participant lookup completed.",
  "data": {
    "network": "peppol",
    "identifier": "0248:OM1345678901",
    "is_registered": true,
    "participant_name": "Buyer Legal Name",
    "country_code": "OM",
    "supported_document_types": [
      "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2",
      "urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2"
    ]
  }
}

Lookup by Document Type

Check whether a specific participant supports a particular document type.

Endpoint: GET /v1/peppol/lookup/{peppol_id}/{document_type}

Example Request:

Text
GET /v1/peppol/lookup/0248:OM1345678901/invoice

Response:

JSON
{
  "status": "success",
  "message": "Participant lookup completed.",
  "data": {
    "network": "peppol",
    "identifier": "0248:OM1345678901",
    "is_registered": true,
    "participant_name": "Buyer Legal Name",
    "country_code": "OM",
    "supported_document_types": [
      "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
    ]
  }
}

Best Practices:

  • Always verify recipients before sending
  • Cache verification results to avoid repeated checks
  • Handle cases where is_registered is false
  • Provide clear error messages to users

Validating a Document (Optional)

Before sending, you can validate your invoice against the PINT OM specification without submitting it to the network.

Endpoint: POST /v1/{participant_id}/documents/validate

Request Body:

JSON
{
  "document": {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "document_identifier": "OM001-Test",
    "issue_date": "2025-01-30",
    "issue_time": "14:30:00",
    "document_type": "380",
    "document_currency": "OMR",
    "receiving_party": { },
    "invoice_totals": { },
    "invoice_lines": [ ]
  }
}

Response (valid):

JSON
{
  "status": "success",
  "message": "Document validated.",
  "data": {
    "result": "valid",
    "error_count": 0,
    "errors": []
  }
}

Response (invalid):

JSON
{
  "status": "success",
  "message": "Document validated.",
  "data": {
    "result": "invalid",
    "error_count": 2,
    "errors": [
      {
        "field_name": "receiving_party.legal_name",
        "rule_code": "ibr-001",
        "error_message": "An Invoice MUST have a Buyer name (IBT-044).",
        "error_level": "fatal"
      }
    ]
  }
}

Sending the Document

Once the invoice data is prepared and the recipient is verified, send the invoice through the Peppol network.

Single Document Submission

Send a single invoice to the Peppol network.

Endpoint: POST /v1/{participant_id}/documents

The endpoint accepts two content types:

Content-TypeFormatDescription
application/jsonJSONPINT OM data model (see examples below)
application/xml / text/xmlUBL 2.1 XMLRaw PINT OM-compliant UBL XML document

When submitting XML, the document is parsed, mapped to the internal PINT OM data model, and run through the same validation pipeline as the JSON path. The response is always application/json.

Regional API

JSON
{
  "document": {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "document_identifier": "OM001-Test",
    "issue_date": "2025-01-30",
    "issue_time": "14:30:00",
    "due_date": "2025-02-06",
    "document_type": "380",
    "document_currency": "OMR",
    "receiving_party": {
      "peppol_id": "0248:OM1345678901",
      "country_code": "OM",
      "vat_number": "134567890123003",
      "legal_name": "Buyer Legal Name"
    },
    "invoice_totals": {
      "line_extension_amount": "1000.00",
      "tax_exclusive_amount": "1000.00",
      "tax_inclusive_amount": "1050.00",
      "payable_amount": "1050.00"
    },
    "invoice_lines": [ ]
  }
}

Unified API

JSON
{
  "country": "OM",
  "document": {
    "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "document_identifier": "OM001-Test",
    "issue_date": "2025-01-30",
    "issue_time": "14:30:00",
    "due_date": "2025-02-06",
    "document_type": "380",
    "document_currency": "OMR",
    "receiving_party": {
      "peppol_id": "0248:OM1345678901",
      "country_code": "OM",
      "vat_number": "134567890123003",
      "legal_name": "Buyer Legal Name"
    },
    "invoice_totals": {
      "line_extension_amount": "1000.00",
      "tax_exclusive_amount": "1000.00",
      "tax_inclusive_amount": "1050.00",
      "payable_amount": "1050.00"
    },
    "invoice_lines": [ ]
  }
}

Request Headers:

Text
X-Flick-Auth-Key: your_api_key
 
Content-Type: application/json        # for JSON submission
# or
Content-Type: application/xml         # for PINT OM XML submission

Bulk Document Submission

Send multiple invoices in a single request for efficient batch processing.

Endpoint: POST /v1/{participant_id}/documents/bulk

Regional API

JSON
{
  "documents": [
    {
      "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "document_identifier": "OM001-Test",
      "issue_date": "2025-01-30",
      "issue_time": "14:30:00",
      "document_type": "380",
      "document_currency": "OMR",
      "receiving_party": { },
      "invoice_totals": { },
      "invoice_lines": [ ]
    },
    {
      "uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "document_identifier": "OM002-Test",
      "issue_date": "2025-01-30",
      "issue_time": "14:30:00",
      "document_type": "380",
      "document_currency": "OMR",
      "receiving_party": { },
      "invoice_totals": { },
      "invoice_lines": [ ]
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "documents": [
    {
      "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "document_identifier": "OM001-Test",
      "issue_date": "2025-01-30",
      "issue_time": "14:30:00",
      "document_type": "380",
      "document_currency": "OMR",
      "receiving_party": { },
      "invoice_totals": { },
      "invoice_lines": [ ]
    },
    {
      "uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "document_identifier": "OM002-Test",
      "issue_date": "2025-01-30",
      "issue_time": "14:30:00",
      "document_type": "380",
      "document_currency": "OMR",
      "receiving_party": { },
      "invoice_totals": { },
      "invoice_lines": [ ]
    }
  ]
}

Bulk Submission Limits:

Limit TypeMaximum ValueDescription
Invoice Count100 invoicesMaximum number of documents per bulk request
Payload Size10 MBMaximum total request body size
Per Document Size2 MBMaximum size for individual document

Best Practices for Bulk Submission:

  • Split large batches into multiple requests if needed
  • Monitor results[].status for individual document outcomes
  • Implement retry logic for failed documents only (use POST /v1/{participant_id}/documents/{document_id}/retry)
  • Use bulk submission for end-of-day batch processing
  • Track document_id values in results for status checking

Handling Responses

The API returns different responses based on the outcome of your request.

Single Document Success Response

Regional API

JSON
{
  "status": "success",
  "message": "Document accepted for Peppol network delivery.",
  "data": {
    "document_id": "019534a1-b7be-7212-8c77-685b3edf267f",
    "status": "processing",
    "document_identifier": "OM001-Test",
    "peppol_message_id": null,
    "envelope_id": null,
    "exchange_status": "pending",
    "reporting_status": "pending",
    "is_duplicate": false
  }
}

Unified API

JSON
{
  "status": "success",
  "message": "Document accepted for Peppol network delivery.",
  "data": {
    "document_id": "019534a1-b7be-7212-8c77-685b3edf267f",
    "status": "processing",
    "document_identifier": "OM001-Test",
    "peppol_message_id": null,
    "envelope_id": null,
    "exchange_status": "pending",
    "reporting_status": "pending",
    "is_duplicate": false
  }
}

Response Fields:

FieldDescription
statusAPI response status: success or failed
data.document_idUUID of the created document record — use for status checks
data.statusOverall document status: processing, completed, failed
data.document_identifierYour business document reference number
data.exchange_statusDelivery status: pending, delivered, failed, not_required
data.reporting_statusOTA reporting status: pending, reported, failed, not_required
data.is_duplicatetrue if this document was already submitted (same Idempotency-Key)

Bulk Submission Success Response

Regional API

JSON
{
  "status": "success",
  "message": "Batch accepted for Peppol network delivery.",
  "data": {
    "batch_id": "019534a1-b7be-7212-8c77-685aafd41e2b",
    "total_documents": 2,
    "submitted_count": 2,
    "failed_count": 0,
    "is_duplicate": false,
    "results": [
      {
        "document_id": "019534a1-b7be-7212-8c77-685b3edf267f",
        "status": "processing",
        "document_identifier": "OM001-Test",
        "exchange_status": "pending",
        "reporting_status": "pending",
        "error": null
      },
      {
        "document_id": "019534a2-c8cf-8323-9d88-796c4feg378g",
        "status": "processing",
        "document_identifier": "OM002-Test",
        "exchange_status": "pending",
        "reporting_status": "pending",
        "error": null
      }
    ]
  }
}

Unified API

JSON
{
  "status": "success",
  "message": "Batch accepted for Peppol network delivery.",
  "data": {
    "batch_id": "019534a1-b7be-7212-8c77-685aafd41e2b",
    "total_documents": 2,
    "submitted_count": 2,
    "failed_count": 0,
    "is_duplicate": false,
    "results": [
      {
        "document_id": "019534a1-b7be-7212-8c77-685b3edf267f",
        "status": "processing",
        "document_identifier": "OM001-Test",
        "exchange_status": "pending",
        "reporting_status": "pending",
        "error": null
      },
      {
        "document_id": "019534a2-c8cf-8323-9d88-796c4feg378g",
        "status": "processing",
        "document_identifier": "OM002-Test",
        "exchange_status": "pending",
        "reporting_status": "pending",
        "error": null
      }
    ]
  }
}

Bulk Response Fields:

FieldDescription
data.batch_idUnique identifier for the entire batch
data.total_documentsTotal number of documents in the batch
data.submitted_countNumber of documents accepted for delivery
data.failed_countNumber of documents that failed validation
data.resultsArray of individual document submission results
data.results[].document_idUUID to use for subsequent status checks
data.results[].errorValidation or transmission error (only when status=failed)

Error Response

Regional API

JSON
{
  "status": "failed",
  "message": "Validation failed. The document contains errors.",
  "data": {
    "document_identifier": "OM001-Test",
    "field_name": ["This field is required."],
    "receiving_party.peppol_id": ["Participant not registered on Peppol network."]
  }
}

Unified API

JSON
{
  "status": "failed",
  "message": "Validation failed. The document contains errors.",
  "data": {
    "document_identifier": "OM001-Test",
    "field_name": ["This field is required."],
    "receiving_party.peppol_id": ["Participant not registered on Peppol network."]
  }
}

HTTP Status Codes:

HTTP CodeStatusDescription
200successDocument accepted and queued for processing
400failedValidation error — check data for field-level details
401unauthorizedInvalid or expired API key
500server_errorInternal server error — retry with backoff

Checking Document Status

After submitting documents, you can check their processing status.

Single Document Status

Retrieve the status of a single submitted document using the document_id returned at submission.

Endpoint: GET /v1/{participant_id}/documents/{document_id}

Example Request:

Text
GET /v1/019534a1-b7be-7212-8c77-685aafd41e2b/documents/019534a1-b7be-7212-8c77-685b3edf267f

Regional API Response

JSON
{
  "status": "success",
  "message": "Document retrieved successfully.",
  "data": {
    "id": "019534a1-b7be-7212-8c77-685b3edf267f",
    "status": "completed",
    "document_identifier": "OM001-Test",
    "participant_id": "019534a1-b7be-7212-8c77-685aafd41e2b",
    "direction": "outgoing",
    "sender_id": "0248:OM1234567890",
    "receiver_id": "0248:OM1345678901",
    "type": "invoice",
    "exchange_status": "delivered",
    "reporting_status": "reported",
    "reporting_reference": "OTA-2025-ABC123",
    "peppol_message_id": "msg-uuid-here",
    "envelope_id": "env-uuid-here",
    "validation": {
      "result": "valid",
      "errors": []
    }
  }
}

Unified API Response

JSON
{
  "status": "success",
  "message": "Document retrieved successfully.",
  "data": {
    "id": "019534a1-b7be-7212-8c77-685b3edf267f",
    "status": "completed",
    "document_identifier": "OM001-Test",
    "participant_id": "019534a1-b7be-7212-8c77-685aafd41e2b",
    "direction": "outgoing",
    "sender_id": "0248:OM1234567890",
    "receiver_id": "0248:OM1345678901",
    "type": "invoice",
    "exchange_status": "delivered",
    "reporting_status": "reported",
    "reporting_reference": "OTA-2025-ABC123",
    "peppol_message_id": "msg-uuid-here",
    "envelope_id": "env-uuid-here",
    "validation": {
      "result": "valid",
      "errors": []
    }
  }
}

Overall Status Values:

StatusDescription
processingDocument in progress — either exchange or reporting is pending
completedExchange delivered and OTA reporting done (or not required)
failedExchange delivery or OTA reporting has failed

Exchange Status Values:

Exchange StatusDescription
pendingAwaiting delivery to recipient's access point
deliveredSuccessfully delivered to recipient (Corner 4)
failedDelivery to recipient failed
not_requiredDelivery not applicable (e.g. export invoices)

Reporting Status Values:

Reporting StatusDescription
pendingAwaiting OTA reporting
reportedSuccessfully reported to OTA — reporting_reference populated
failedOTA reporting failed
not_requiredOTA reporting not applicable for this document type

List Documents

Retrieve all documents for a participant with filtering and pagination.

Endpoint: GET /v1/{participant_id}/documents

Query Parameters:

ParameterTypeDescription
directionstringFilter by incoming or outgoing
is_unreadbooleantrue for unread, false for read
statusstringFilter by processing, completed, or failed
exchange_statusstringFilter by exchange status
reporting_statusstringFilter by OTA reporting status
fromISO 8601Filter from timestamp
toISO 8601Filter to timestamp
pagenumberPage number (default: 1)
limitnumberItems per page (default: 10, max: 100)

Example Request:

Text
GET /v1/{participant_id}/documents?is_unread=true&direction=incoming&limit=50

Receiving an Invoice

You can receive invoices through two methods: Push System (webhooks) or Pull System (API polling).

Push System - Webhooks

Webhooks provide real-time notifications when you receive a new invoice. Set up a webhook endpoint to receive immediate notifications.

Webhook Management

Manage your webhook endpoints programmatically.

Register a Webhook

Add a new webhook endpoint to receive document notifications.

Endpoint: POST /v1/webhooks/subscriptions

Request Body:

JSON
{
  "name": "Production Invoice Webhook",
  "endpoint": "https://your-domain.com/webhooks/peppol/document-received",
  "event_types": ["document.received", "document.failed"],
  "participant_ids": ["019534a1-b7be-7212-8c77-685aafd41e2b"]
}

Note: participant_ids is optional — omit or leave empty to receive events for all participants.

Response:

JSON
{
  "status": "success",
  "message": "Webhook subscription created.",
  "data": {
    "uuid": "wbhk_b35f6b3145074cf9ad513610786c19d5",
    "name": "Production Invoice Webhook",
    "endpoint": "https://your-domain.com/webhooks/peppol/document-received",
    "active": true,
    "event_types": ["document.received", "document.failed"],
    "created_at": "2025-01-30T14:23:45Z",
    "secret": "R50iP7JVKOE1m8SCNFgNXV4xT"
  }
}

Important: The secret is only returned once at creation. Store it securely — use it to verify incoming webhook signatures.

Available Event Types:

Use GET /v1/webhooks/event-types to retrieve the full list of supported event types. Common events include:

  • document.received - New incoming document received
  • document.exchange.delivered - Document successfully delivered to recipient's access point
  • document.exchange.failed - Peppol network delivery failed
  • document.reporting.reported - Document successfully reported to OTA
  • document.reporting.failed - OTA reporting failed
  • document.completed - Document fully processed (exchange delivered + OTA reported)
  • document.failed - Document failed (exchange or reporting)

List Webhooks

Get all registered webhook subscriptions.

Endpoint: GET /v1/webhooks/subscriptions

Response:

JSON
{
  "status": "success",
  "message": "Subscriptions retrieved successfully.",
  "data": [
    {
      "uuid": "wbhk_b35f6b3145074cf9ad513610786c19d5",
      "name": "Production Invoice Webhook",
      "endpoint": "https://your-domain.com/webhooks/peppol/document-received",
      "active": true,
      "event_types": ["document.received", "document.failed"],
      "created_at": "2025-01-30T14:23:45Z"
    }
  ]
}

Remove a Webhook

Delete a webhook subscription.

Endpoint: DELETE /v1/webhooks/subscriptions/{uuid}

Example Request:

Text
DELETE /v1/webhooks/subscriptions/wbhk_b35f6b3145074cf9ad513610786c19d5

Response:

JSON
{
  "status": "success",
  "message": "Webhook subscription deleted.",
  "data": null
}

Update a Webhook

Modify an existing webhook subscription.

Endpoint: PATCH /v1/webhooks/subscriptions/{uuid}

Request Body:

JSON
{
  "endpoint": "https://new-domain.com/webhooks/peppol",
  "event_types": ["document.received"],
  "active": true
}

Response:

JSON
{
  "status": "success",
  "message": "Webhook subscription updated.",
  "data": {
    "uuid": "wbhk_b35f6b3145074cf9ad513610786c19d5",
    "endpoint": "https://new-domain.com/webhooks/peppol",
    "event_types": ["document.received"],
    "active": true,
    "updated_at": "2025-01-30T15:00:00Z"
  }
}

Rotate Signature Key

Generate a new signing secret for a webhook subscription.

Endpoint: POST /v1/webhooks/subscriptions/{uuid}/signature-key

Response:

JSON
{
  "status": "success",
  "message": "Signature key rotated.",
  "data": {
    "secret": "NewSecret123XYZ"
  }
}

View Delivery History

Inspect recent delivery attempts for a webhook subscription.

Endpoint: GET /v1/webhooks/subscriptions/{uuid}/deliveries


Document Received Event

When a new invoice arrives, you'll receive a webhook payload:

JSON
{
  "event_type": "document.received",
  "subscription_uuid": "wbhk_b35f6b3145074cf9ad513610786c19d5",
  "timestamp": "2025-01-30T14:23:45Z",
  "data": {
    "document_id": "019534a1-b7be-7212-8c77-685b3edf267f",
    "participant_id": "019534a1-b7be-7212-8c77-685aafd41e2b",
    "direction": "incoming",
    "type": "invoice",
    "status": "processing",
    "exchange_status": "delivered",
    "reporting_status": "pending",
    "sender_id": "0248:OM1345678901",
    "receiver_id": "0248:OM1234567890",
    "document_identifier": "OM001-Test"
  }
}

Webhook Response:

Your endpoint should return a 200 OK status to acknowledge receipt:

JSON
{
  "acknowledged": true,
  "processed": true
}

Webhook Security:

All webhook requests include a signature header for verification:

Text
X-Flick-Signature: sha256=abc123...
X-Flick-Timestamp: 2025-01-30T14:23:45Z

Verify Signature (Example in Node.js):

JavaScript
const crypto = require('crypto');
 
function verifyWebhookSignature(payload, signature, secret) {
  const hmac = crypto.createHmac('sha256', secret);
  const digest = 'sha256=' + hmac.update(payload).digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(digest)
  );
}

Best Practices:

  • Respond quickly (within 5 seconds) to avoid timeouts
  • Process the document asynchronously after acknowledging
  • Implement retry logic for failed processing
  • Always validate webhook signatures for security
  • Store raw webhook payloads for debugging
  • Use HTTPS endpoints only
  • Handle duplicate webhook deliveries idempotently
  • Monitor webhook delivery failures in your logs

Pull System

If you prefer polling over webhooks, use the Pull System to retrieve documents at your own pace.

Get Document

Retrieve the full invoice document and its parsed content by document ID.

Endpoint: GET /v1/{participant_id}/documents/{document_id}

JSON
{
  "status": "success",
  "message": "Document retrieved successfully.",
  "data": {
    "id": "019534a1-b7be-7212-8c77-685b3edf267f",
    "status": "completed",
    "direction": "incoming",
    "type": "invoice",
    "document_identifier": "OM001-Test",
    "sender_id": "0248:OM1345678901",
    "receiver_id": "0248:OM1234567890",
    "exchange_status": "delivered",
    "reporting_status": "reported",
    "reporting_reference": "OTA-2025-ABC123",
    "document": {
      "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "document_identifier": "OM001-Test",
      "issue_date": "2025-01-30",
      "issue_time": "14:30:00",
      "due_date": "2025-02-06",
      "document_type": "380",
      "document_currency": "OMR",
      "receiving_party": {
        "peppol_id": "0248:OM1234567890",
        "street_address": "Street Name",
        "city_address": "Muscat",
        "country_subdivision_code": "MO",
        "country_code": "OM",
        "vat_number": "134780954301003",
        "legal_name": "Your Company Legal Name"
      },
      "payment_means": [
        {
          "payment_means_code": "30",
          "account_id": "OM070100000123456789012"
        }
      ],
      "invoice_totals": {
        "line_extension_amount": "1000.00",
        "tax_exclusive_amount": "1000.00",
        "tax_inclusive_amount": "1050.00",
        "payable_amount": "1050.00"
      },
      "invoice_lines": [
        {
          "id": "1",
          "quantity": "100",
          "uom": "H87",
          "line_extension_amount": "1000.00",
          "name": "Item Name",
          "description": "Item Description",
          "commodity_code": "G",
          "vat_category": "S",
          "vat_percentage": "5.00",
          "unit_price": "10.00",
          "base_quantity": "1"
        }
      ]
    }
  }
}

Additional endpoints for retrieving document content:

  • GET /v1/{participant_id}/documents/{document_id}/xml — Raw UBL XML
  • GET /v1/{participant_id}/documents/{document_id}/pdf — Rendered PDF
  • GET /v1/{participant_id}/documents/{document_id}/xml-base64 — Base64-encoded XML
  • GET /v1/{participant_id}/documents/{document_id}/pdf-base64 — Base64-encoded PDF

Mark Document as Read

After processing a received invoice, mark it as read.

Endpoint: PUT /v1/{participant_id}/documents/{document_id}/read

No request body required.

Response:

JSON
{
  "status": "success",
  "message": "Document marked as read.",
  "data": null
}

Benefits of Marking as Read:

  • Track which invoices have been processed
  • Filter by is_unread=true to find unprocessed invoices
  • Maintain audit trails
  • Improve document management workflow

Pull System Best Practices

When using the Pull System:

  1. Polling Frequency: Check for new documents every 5-15 minutes
  2. Batch Processing: Retrieve multiple unread documents in one request
  3. Status Tracking: Always mark documents as read after processing
  4. Error Handling: Implement retry logic for failed retrievals
  5. Filtering: Use query parameters to filter by date range or status

Example Polling Flow:

Text
1. GET /v1/{participant_id}/documents?is_unread=true&direction=incoming&limit=50
2. Process each document
3. PUT /v1/{participant_id}/documents/{id}/read
4. Wait 5-15 minutes
5. Repeat

Simulating Incoming Documents (Sandbox Only)

When developing and testing your integration in the sandbox environment, you won't have real external parties sending you documents. The Simulate Incoming Document endpoint lets you create realistic incoming documents so you can test your receiving flow — webhooks, polling, document retrieval, and read-marking — without needing a live counterparty.

Sandbox only — This endpoint is only available in the sandbox environment. It will return an error in production.

Simulate an Incoming Document

Endpoint: POST /v1/{participant_id}/simulate/incoming

The endpoint creates a completed incoming document with direction: "incoming" and read_at: null (unread). If you have webhooks configured, it also fires the document.received event — so you can test your full webhook flow end-to-end.

Request Body:

All fields are optional. If omitted, the API generates realistic mock data automatically.

JSON
{
  "type": "380",
  "issuing_party": {
    "legal_name": "Omantel LLC",
    "peppol_id": "0248:OM123456789012345",
    "vat_number": "300000000000001",
    "street_address": "Sultan Qaboos Street",
    "city_address": "Muscat",
    "country_code": "OM"
  }
}

Parameters:

FieldTypeDefaultDescription
typeString"380"Document type code: 380 (Invoice), 381 (Credit Note), 383 (Debit Note), 389 (Self-billing Invoice), 261 (Self-billing Credit Note)
issuing_partyObjectAuto-generatedSender details. If omitted, realistic mock sender data is generated
documentObjectAuto-generatedFull or partial document payload. type and issuing_party from top-level fields take precedence over matching fields in this object

Response:

JSON
{
  "status": "success",
  "message": "Incoming document simulated successfully.",
  "data": {
    "id": "019534a1-b7be-7212-8c77-685b3edf267f",
    "status": "completed",
    "direction": "incoming",
    "document_identifier": "SIM-INV-A1B2C3D4",
    "type": "invoice",
    "exchange_status": "delivered",
    "reporting_status": "reported",
    "sender_id": "0248:OM123456789012345",
    "receiver_id": "0248:OM1234567890",
    "read_at": null,
    "created_at": "2025-02-15T10:30:00Z"
  }
}

The simulated document is immediately available through all the standard document endpoints — you can retrieve it, download its XML/PDF, and mark it as read just like a real incoming document.

Testing Your Receiving Flow

Use simulate to verify each part of your integration:

1. Test Webhook Delivery

Text
1. Register a webhook subscription
   POST /v1/webhooks/subscriptions

2. Simulate an incoming document
   POST /v1/{participant_id}/simulate/incoming

3. Verify your webhook endpoint receives the document.received event

4. Confirm signature verification works with your stored secret

2. Test Polling Flow

Text
1. Simulate an incoming document
   POST /v1/{participant_id}/simulate/incoming

2. Poll for unread incoming documents
   GET /v1/{participant_id}/documents?is_unread=true&direction=incoming

3. Retrieve the full document
   GET /v1/{participant_id}/documents/{document_id}

4. Mark as read
   PUT /v1/{participant_id}/documents/{document_id}/read

3. Test Different Document Types

Simulate various document types to ensure your system handles them all:

JSON
{"type": "380"}
JSON
{"type": "381"}
JSON
{"type": "389"}

Complete Lifecycle Example

Here's a complete example showing both sending and receiving:

Sending Flow

Text
1. Verify recipient exists in Peppol network
   GET /v1/peppol/lookup/{peppol_id}
   (or GET /v1/peppol/lookup/{peppol_id}/{document_type} for type-specific check)

2. Prepare invoice data with all required datapoints
   (optionally validate first via POST /v1/{participant_id}/documents/validate)

3. Send invoice via POST /v1/{participant_id}/documents
   (or POST /v1/{participant_id}/documents/bulk for multiple documents)

4. Receive confirmation with document_id (UUID)

5. Track status via:
   a. Polling — GET /v1/{participant_id}/documents/{document_id}
      Monitor: exchange_status → delivered, reporting_status → reported
   b. Webhooks — listen for document.exchange.delivered, document.reporting.reported,
      document.completed events

6. OTA reporting handled automatically — check reporting_status and reporting_reference

Receiving Flow (Webhook)

Text
1. Register webhook subscription
   POST /v1/webhooks/subscriptions
   (save returned secret for signature verification)

2. Webhook triggered when invoice arrives

3. Receive document.received event

4. Acknowledge webhook immediately (200 OK)

5. Verify X-Flick-Signature header

6. Retrieve full document via GET /v1/{participant_id}/documents/{document_id}

7. Import into accounting system

8. Mark document as read
   PUT /v1/{participant_id}/documents/{document_id}/read

Receiving Flow (Polling)

Text
1. Poll GET /v1/{participant_id}/documents?is_unread=true&direction=incoming

2. Retrieve unread documents

3. For each document:
   - Get full details via GET /v1/{participant_id}/documents/{id}
   - Validate and process
   - Mark as read via PUT /v1/{participant_id}/documents/{id}/read

4. Wait 5-15 minutes

5. Repeat

Additional Resources

For detailed information on:

Oman E-Invoicing Examples

Complete collection of PINT OM compliant invoice examples covering standard invoices, credit notes, debit notes, self-billing, and special transaction scenarios.


Standard Invoices

Standard Tax Invoice (380)

A typical commercial invoice with standard 5% VAT rate, including allowances and charges.

Key Features:

  • Invoice Type Code: 380 (Commercial invoice)
  • Standard VAT rate: 5% (category S)
  • uuid and issue_time fields (mandatory in PINT OM)
  • country_subdivision_code for governorate identification
  • Full buyer information with Peppol endpoints

Regional API

JSON
{
  "uuid": "6e7f8a9b-1c2d-4e5f-a6b7-c8d9e0f1a2b3",
  "document_identifier": "OM-01TEST",
  "issue_date": "2025-03-15",
  "issue_time": "09:30:00",
  "due_date": "2025-03-29",
  "document_type": "380",
  "note": [{"text": "Tax invoice"}],
  "tax_point_date": "2025-03-10",
  "document_currency": "OMR",
  "accounting_cost": "Regular sales",
  "buyer_reference": "PO-OM-330",
  
  "invoice_period": {
    "start_date": "2025-03-01",
    "end_date": "2025-03-15"
  },
  
  "order_reference": {
    "po_number": "PO-OM-330",
    "so_number": "Salesorder-4055"
  },
  
  "document_references": [
    {
      "id": "INV-OM-501-2025",
      "issue_date": "2025-03-15"
    }
  ],
  
  "receiving_party": {
    "trade_name": "Oman Oil Company SAOC",
    "peppol_id": "0248:OM1345678901",
    "street_address": "Mina Al Fahal",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM1345678901",
    "legal_name": "Oman Oil Company SAOC",
    "identifiers": [
      {
        "type": "CR",
        "value": "1234567"
      }
    ],
    "contact_name": "Ahmed Al-Balushi",
    "contact_telephone": "+96824567890",
    "contact_email": "procurement@omanoil.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Oman Oil Company SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "allowance_charge": [
    {
      "charge_indicator": false,
      "allowance_charge_reason_code": "100",
      "allowance_charge_reason": "Bulk Order Discount",
      "multiplier_factor_numeric": "3.00",
      "amount": "150.000",
      "base_amount": "5000.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    },
    {
      "charge_indicator": true,
      "allowance_charge_reason_code": "AAT",
      "allowance_charge_reason": "Express Delivery Charge",
      "multiplier_factor_numeric": "2.00",
      "amount": "100.000",
      "base_amount": "5000.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "5000.000",
    "tax_exclusive_amount": "4950.000",
    "tax_inclusive_amount": "5197.500",
    "allowance_total_amount": "150.000",
    "charge_total_amount": "100.000",
    "payable_rounding_amount": "0.000",
    "payable_amount": "5197.500"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "note": "Industrial drilling equipment",
      "quantity": "50",
      "uom": "H87",
      "line_extension_amount": "5000.000",
      "name": "Drill Bit Assembly",
      "description": "Heavy-duty industrial drill bit assembly for oil exploration",
      "commodity_code": "G",
      "hs_code": "82071900",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "100.000",
      "base_quantity": "1",
      "buyers_item_code": "DBA-2025-A",
      "supplier_item_code": "SUP-DBA-100",
      "origin_country": "OM",
      "discount_reason_code": "95",
      "discount_amount": "50.000",
      "charge_reason_code": "AAC",
      "charge_amount": "25.000"
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "uuid": "6e7f8a9b-1c2d-4e5f-a6b7-c8d9e0f1a2b3",
  "document_identifier": "OM-01TEST",
  "issue_date": "2025-03-15",
  "issue_time": "09:30:00",
  "due_date": "2025-03-29",
  "document_type": "380",
  "note": [{"text": "Tax invoice"}],
  "tax_point_date": "2025-03-10",
  "document_currency": "OMR",
  "accounting_cost": "Regular sales",
  "buyer_reference": "PO-OM-330",
  
  "invoice_period": {
    "start_date": "2025-03-01",
    "end_date": "2025-03-15"
  },
  
  "order_reference": {
    "po_number": "PO-OM-330",
    "so_number": "Salesorder-4055"
  },
  
  "document_references": [
    {
      "id": "INV-OM-501-2025",
      "issue_date": "2025-03-15"
    }
  ],
  
  "receiving_party": {
    "trade_name": "Oman Oil Company SAOC",
    "peppol_id": "0248:OM1345678901",
    "street_address": "Mina Al Fahal",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM1345678901",
    "legal_name": "Oman Oil Company SAOC",
    "identifiers": [
      {
        "type": "CR",
        "value": "1234567"
      }
    ],
    "contact_name": "Ahmed Al-Balushi",
    "contact_telephone": "+96824567890",
    "contact_email": "procurement@omanoil.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Oman Oil Company SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "allowance_charge": [
    {
      "charge_indicator": false,
      "allowance_charge_reason_code": "100",
      "allowance_charge_reason": "Bulk Order Discount",
      "multiplier_factor_numeric": "3.00",
      "amount": "150.000",
      "base_amount": "5000.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    },
    {
      "charge_indicator": true,
      "allowance_charge_reason_code": "AAT",
      "allowance_charge_reason": "Express Delivery Charge",
      "multiplier_factor_numeric": "2.00",
      "amount": "100.000",
      "base_amount": "5000.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "5000.000",
    "tax_exclusive_amount": "4950.000",
    "tax_inclusive_amount": "5197.500",
    "allowance_total_amount": "150.000",
    "charge_total_amount": "100.000",
    "payable_rounding_amount": "0.000",
    "payable_amount": "5197.500"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "note": "Industrial drilling equipment",
      "quantity": "50",
      "uom": "H87",
      "line_extension_amount": "5000.000",
      "name": "Drill Bit Assembly",
      "description": "Heavy-duty industrial drill bit assembly for oil exploration",
      "commodity_code": "G",
      "hs_code": "82071900",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "100.000",
      "base_quantity": "1",
      "buyers_item_code": "DBA-2025-A",
      "supplier_item_code": "SUP-DBA-100",
      "origin_country": "OM",
      "discount_reason_code": "95",
      "discount_amount": "50.000",
      "charge_reason_code": "AAC",
      "charge_amount": "25.000"
    }
  ]
}

Zero-Rated Invoice (380)

Invoice for zero-rated supplies (0% VAT) — typically for exports or specific government-designated goods/services in Oman.

Key Features:

  • Invoice Type Code: 380 (Commercial invoice)
  • VAT Category: Z (Zero rated)
  • VAT Rate: 0%
  • zero_rating_reason_code identifies the legal basis for zero-rating

Regional API

JSON
{
  "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "document_identifier": "OM-ZR-001-TEST",
  "issue_date": "2025-03-20",
  "issue_time": "14:15:00",
  "due_date": "2025-04-04",
  "document_type": "380",
  "note": [{"text": "Zero-rated tax invoice"}],
  "tax_point_date": "2025-03-18",
  "document_currency": "OMR",
  
  "order_reference": {
    "po_number": "PO-OM-ZR-100",
    "so_number": "SO-ZR-2025-001"
  },
  
  "receiving_party": {
    "trade_name": "Oman LNG LLC",
    "peppol_id": "0248:OM9876543210",
    "street_address": "Qalhat Industrial Area",
    "city_address": "Sur",
    "country_subdivision_code": "SJ",
    "country_code": "OM",
    "vat_number": "OM9876543210",
    "legal_name": "Oman LNG LLC",
    "identifiers": [
      {
        "type": "CR",
        "value": "7654321"
      }
    ],
    "contact_name": "Fatma Al-Rashdi",
    "contact_telephone": "+96825123456",
    "contact_email": "invoices@omanlng.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Gulf Energy Supplies SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "75000.000",
    "tax_exclusive_amount": "75000.000",
    "tax_inclusive_amount": "75000.000",
    "payable_amount": "75000.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "500",
      "uom": "MTQ",
      "line_extension_amount": "75000.000",
      "name": "Natural Gas Pipeline Components",
      "description": "High-pressure pipeline fittings for LNG processing plant",
      "commodity_code": "G",
      "hs_code": "73079300",
      "vat_category": "Z",
      "vat_percentage": "0.00",
      "zero_rating_reason_code": "VATZR-OM-01",
      "unit_price": "150.000",
      "base_quantity": "1"
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "document_identifier": "OM-ZR-001-TEST",
  "issue_date": "2025-03-20",
  "issue_time": "14:15:00",
  "due_date": "2025-04-04",
  "document_type": "380",
  "note": [{"text": "Zero-rated tax invoice"}],
  "tax_point_date": "2025-03-18",
  "document_currency": "OMR",
  
  "order_reference": {
    "po_number": "PO-OM-ZR-100",
    "so_number": "SO-ZR-2025-001"
  },
  
  "receiving_party": {
    "trade_name": "Oman LNG LLC",
    "peppol_id": "0248:OM9876543210",
    "street_address": "Qalhat Industrial Area",
    "city_address": "Sur",
    "country_subdivision_code": "SJ",
    "country_code": "OM",
    "vat_number": "OM9876543210",
    "legal_name": "Oman LNG LLC",
    "identifiers": [
      {
        "type": "CR",
        "value": "7654321"
      }
    ],
    "contact_name": "Fatma Al-Rashdi",
    "contact_telephone": "+96825123456",
    "contact_email": "invoices@omanlng.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Gulf Energy Supplies SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "75000.000",
    "tax_exclusive_amount": "75000.000",
    "tax_inclusive_amount": "75000.000",
    "payable_amount": "75000.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "500",
      "uom": "MTQ",
      "line_extension_amount": "75000.000",
      "name": "Natural Gas Pipeline Components",
      "description": "High-pressure pipeline fittings for LNG processing plant",
      "commodity_code": "G",
      "hs_code": "73079300",
      "vat_category": "Z",
      "vat_percentage": "0.00",
      "zero_rating_reason_code": "VATZR-OM-01",
      "unit_price": "150.000",
      "base_quantity": "1"
    }
  ]
}

Exempt Invoice (380)

Invoice for VAT-exempt supplies — applicable to financial services, healthcare, education, and other categories exempt under Oman VAT law.

Key Features:

  • Invoice Type Code: 380 (Commercial invoice)
  • VAT Category: E (Exempt from tax)
  • VAT Rate: 0%
  • vat_exemption_reason_code identifies the legal exemption basis

Regional API

JSON
{
  "uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
  "document_identifier": "OM-EX-001-TEST",
  "issue_date": "2025-03-22",
  "issue_time": "10:45:00",
  "due_date": "2025-04-05",
  "document_type": "380",
  "note": [{"text": "Exempt tax invoice"}],
  "document_currency": "OMR",
  "buyer_reference": "PO-OM-EX-200",
  
  "receiving_party": {
    "trade_name": "Bank Muscat SAOG",
    "peppol_id": "0248:OM5566778899",
    "street_address": "Airport Heights",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM5566778899",
    "legal_name": "Bank Muscat SAOG",
    "identifiers": [
      {
        "type": "CR",
        "value": "2233445"
      }
    ],
    "contact_name": "Khalid Al-Habsi",
    "contact_telephone": "+96824789012",
    "contact_email": "vendor.management@bankmuscat.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Financial Services Provider LLC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "12500.000",
    "tax_exclusive_amount": "12500.000",
    "tax_inclusive_amount": "12500.000",
    "payable_amount": "12500.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "1",
      "uom": "C62",
      "line_extension_amount": "8500.000",
      "name": "Core Banking System License",
      "description": "Annual license renewal for core banking software platform",
      "commodity_code": "S",
      "service_accounting_code": "SAC-FIN-01",
      "vat_category": "E",
      "vat_percentage": "0.00",
      "vat_exemption_reason_code": "VATEX-OM-01",
      "unit_price": "8500.000",
      "base_quantity": "1"
    },
    {
      "id": "2",
      "quantity": "50",
      "uom": "HUR",
      "line_extension_amount": "4000.000",
      "name": "System Integration Services",
      "description": "Technical consulting for banking system integration",
      "commodity_code": "S",
      "service_accounting_code": "SAC-FIN-02",
      "vat_category": "E",
      "vat_percentage": "0.00",
      "vat_exemption_reason_code": "VATEX-OM-01",
      "unit_price": "80.000",
      "base_quantity": "1"
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
  "document_identifier": "OM-EX-001-TEST",
  "issue_date": "2025-03-22",
  "issue_time": "10:45:00",
  "due_date": "2025-04-05",
  "document_type": "380",
  "note": [{"text": "Exempt tax invoice"}],
  "document_currency": "OMR",
  "buyer_reference": "PO-OM-EX-200",
  
  "receiving_party": {
    "trade_name": "Bank Muscat SAOG",
    "peppol_id": "0248:OM5566778899",
    "street_address": "Airport Heights",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM5566778899",
    "legal_name": "Bank Muscat SAOG",
    "identifiers": [
      {
        "type": "CR",
        "value": "2233445"
      }
    ],
    "contact_name": "Khalid Al-Habsi",
    "contact_telephone": "+96824789012",
    "contact_email": "vendor.management@bankmuscat.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Financial Services Provider LLC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "12500.000",
    "tax_exclusive_amount": "12500.000",
    "tax_inclusive_amount": "12500.000",
    "payable_amount": "12500.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "1",
      "uom": "C62",
      "line_extension_amount": "8500.000",
      "name": "Core Banking System License",
      "description": "Annual license renewal for core banking software platform",
      "commodity_code": "S",
      "service_accounting_code": "SAC-FIN-01",
      "vat_category": "E",
      "vat_percentage": "0.00",
      "vat_exemption_reason_code": "VATEX-OM-01",
      "unit_price": "8500.000",
      "base_quantity": "1"
    },
    {
      "id": "2",
      "quantity": "50",
      "uom": "HUR",
      "line_extension_amount": "4000.000",
      "name": "System Integration Services",
      "description": "Technical consulting for banking system integration",
      "commodity_code": "S",
      "service_accounting_code": "SAC-FIN-02",
      "vat_category": "E",
      "vat_percentage": "0.00",
      "vat_exemption_reason_code": "VATEX-OM-01",
      "unit_price": "80.000",
      "base_quantity": "1"
    }
  ]
}

Credit Notes

Standard Credit Note (381)

Standard credit note for taxable supplies with type code 381. Used to correct or cancel a previously issued invoice.

Key Features:

  • Document Type Code: 381 (Credit note)
  • credit_note_reason_code: CAN (Cancellation)
  • References original invoice via document_references

Regional API

JSON
{
  "uuid": "c3d4e5f6-a7b8-9012-cdef-234567890123",
  "document_identifier": "OM-CN-001-TEST",
  "issue_date": "2025-03-25",
  "issue_time": "11:20:00",
  "document_type": "381",
  "note": [{"text": "Credit note - cancellation of original invoice"}],
  "document_currency": "OMR",
  "credit_note_reason_code": "CAN",
  "accounting_cost": "Regular sales",
  "buyer_reference": "PO-OM-330",
  
  "invoice_period": {
    "start_date": "2025-03-01",
    "end_date": "2025-03-25"
  },
  
  "order_reference": {
    "po_number": "PO-OM-330",
    "so_number": "Salesorder-4055"
  },
  
  "document_references": [
    {
      "id": "OM-01TEST",
      "issue_date": "2025-03-15"
    }
  ],
  
  "receiving_party": {
    "trade_name": "Oman Oil Company SAOC",
    "peppol_id": "0248:OM1345678901",
    "street_address": "Mina Al Fahal",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM1345678901",
    "legal_name": "Oman Oil Company SAOC",
    "identifiers": [
      {
        "type": "CR",
        "value": "1234567"
      }
    ]
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Oman Oil Company SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "allowance_charge": [
    {
      "charge_indicator": false,
      "allowance_charge_reason_code": "100",
      "allowance_charge_reason": "Bulk Order Discount",
      "multiplier_factor_numeric": "3.00",
      "amount": "150.000",
      "base_amount": "5000.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "5000.000",
    "tax_exclusive_amount": "4850.000",
    "tax_inclusive_amount": "5092.500",
    "allowance_total_amount": "150.000",
    "payable_amount": "5092.500"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "note": "Full cancellation of original invoice line",
      "quantity": "50",
      "uom": "H87",
      "line_extension_amount": "5000.000",
      "name": "Drill Bit Assembly",
      "description": "Heavy-duty industrial drill bit assembly for oil exploration",
      "commodity_code": "G",
      "hs_code": "82071900",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "100.000",
      "base_quantity": "1"
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "uuid": "c3d4e5f6-a7b8-9012-cdef-234567890123",
  "document_identifier": "OM-CN-001-TEST",
  "issue_date": "2025-03-25",
  "issue_time": "11:20:00",
  "document_type": "381",
  "note": [{"text": "Credit note - cancellation of original invoice"}],
  "document_currency": "OMR",
  "credit_note_reason_code": "CAN",
  "accounting_cost": "Regular sales",
  "buyer_reference": "PO-OM-330",
  
  "invoice_period": {
    "start_date": "2025-03-01",
    "end_date": "2025-03-25"
  },
  
  "order_reference": {
    "po_number": "PO-OM-330",
    "so_number": "Salesorder-4055"
  },
  
  "document_references": [
    {
      "id": "OM-01TEST",
      "issue_date": "2025-03-15"
    }
  ],
  
  "receiving_party": {
    "trade_name": "Oman Oil Company SAOC",
    "peppol_id": "0248:OM1345678901",
    "street_address": "Mina Al Fahal",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM1345678901",
    "legal_name": "Oman Oil Company SAOC",
    "identifiers": [
      {
        "type": "CR",
        "value": "1234567"
      }
    ]
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Oman Oil Company SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "allowance_charge": [
    {
      "charge_indicator": false,
      "allowance_charge_reason_code": "100",
      "allowance_charge_reason": "Bulk Order Discount",
      "multiplier_factor_numeric": "3.00",
      "amount": "150.000",
      "base_amount": "5000.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "5000.000",
    "tax_exclusive_amount": "4850.000",
    "tax_inclusive_amount": "5092.500",
    "allowance_total_amount": "150.000",
    "payable_amount": "5092.500"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "note": "Full cancellation of original invoice line",
      "quantity": "50",
      "uom": "H87",
      "line_extension_amount": "5000.000",
      "name": "Drill Bit Assembly",
      "description": "Heavy-duty industrial drill bit assembly for oil exploration",
      "commodity_code": "G",
      "hs_code": "82071900",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "100.000",
      "base_quantity": "1"
    }
  ]
}

Debit Note (383)

Debit note for additional charges or corrections that increase the amount owed. Unique to PINT OM — used when the supplier needs to charge additional amounts after the original invoice.

Key Features:

  • Document Type Code: 383 (Debit note)
  • References original invoice via document_references
  • Increases the amount payable by the buyer
  • Specific to PINT OM specification

Regional API

JSON
{
  "uuid": "d4e5f6a7-b8c9-0123-defa-345678901234",
  "document_identifier": "OM-DN-001-TEST",
  "issue_date": "2025-03-28",
  "issue_time": "08:45:00",
  "document_type": "383",
  "note": [{"text": "Debit note - additional charges for expedited processing"}],
  "document_currency": "OMR",
  "buyer_reference": "PO-OM-330",
  
  "document_references": [
    {
      "id": "OM-01TEST",
      "issue_date": "2025-03-15"
    }
  ],
  
  "receiving_party": {
    "trade_name": "Oman Oil Company SAOC",
    "peppol_id": "0248:OM1345678901",
    "street_address": "Mina Al Fahal",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM1345678901",
    "legal_name": "Oman Oil Company SAOC",
    "identifiers": [
      {
        "type": "CR",
        "value": "1234567"
      }
    ],
    "contact_name": "Ahmed Al-Balushi",
    "contact_telephone": "+96824567890",
    "contact_email": "procurement@omanoil.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Industrial Supplies Oman LLC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "750.000",
    "tax_exclusive_amount": "750.000",
    "tax_inclusive_amount": "787.500",
    "payable_amount": "787.500"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "1",
      "uom": "C62",
      "line_extension_amount": "500.000",
      "name": "Expedited Processing Fee",
      "description": "Additional charge for priority order processing and expedited quality inspection",
      "commodity_code": "S",
      "service_accounting_code": "SAC-EXP-01",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "500.000",
      "base_quantity": "1"
    },
    {
      "id": "2",
      "quantity": "5",
      "uom": "HUR",
      "line_extension_amount": "250.000",
      "name": "Overtime Labor",
      "description": "Additional labor hours for weekend delivery coordination",
      "commodity_code": "S",
      "service_accounting_code": "SAC-LAB-01",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "50.000",
      "base_quantity": "1"
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "uuid": "d4e5f6a7-b8c9-0123-defa-345678901234",
  "document_identifier": "OM-DN-001-TEST",
  "issue_date": "2025-03-28",
  "issue_time": "08:45:00",
  "document_type": "383",
  "note": [{"text": "Debit note - additional charges for expedited processing"}],
  "document_currency": "OMR",
  "buyer_reference": "PO-OM-330",
  
  "document_references": [
    {
      "id": "OM-01TEST",
      "issue_date": "2025-03-15"
    }
  ],
  
  "receiving_party": {
    "trade_name": "Oman Oil Company SAOC",
    "peppol_id": "0248:OM1345678901",
    "street_address": "Mina Al Fahal",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM1345678901",
    "legal_name": "Oman Oil Company SAOC",
    "identifiers": [
      {
        "type": "CR",
        "value": "1234567"
      }
    ],
    "contact_name": "Ahmed Al-Balushi",
    "contact_telephone": "+96824567890",
    "contact_email": "procurement@omanoil.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Industrial Supplies Oman LLC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "750.000",
    "tax_exclusive_amount": "750.000",
    "tax_inclusive_amount": "787.500",
    "payable_amount": "787.500"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "1",
      "uom": "C62",
      "line_extension_amount": "500.000",
      "name": "Expedited Processing Fee",
      "description": "Additional charge for priority order processing and expedited quality inspection",
      "commodity_code": "S",
      "service_accounting_code": "SAC-EXP-01",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "500.000",
      "base_quantity": "1"
    },
    {
      "id": "2",
      "quantity": "5",
      "uom": "HUR",
      "line_extension_amount": "250.000",
      "name": "Overtime Labor",
      "description": "Additional labor hours for weekend delivery coordination",
      "commodity_code": "S",
      "service_accounting_code": "SAC-LAB-01",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "50.000",
      "base_quantity": "1"
    }
  ]
}

Self-Billing

Self-Billing Invoice (389)

Invoice issued by the buyer on behalf of the supplier (type code 389). Used in scenarios where the buyer has an agreement to self-bill — common in oil & gas procurement contracts in Oman.

Key Features:

  • Invoice Type Code: 389 (Self-billed invoice)
  • Uses urn:peppol:pint:selfbilling-1@om-1 customization
  • Buyer creates the invoice instead of supplier

Regional API

JSON
{
  "uuid": "e5f6a7b8-c9d0-1234-efab-456789012345",
  "document_identifier": "OM-SB-001-TEST",
  "issue_date": "2025-04-01",
  "issue_time": "07:00:00",
  "due_date": "2025-04-15",
  "document_type": "389",
  "note": [{"text": "Self-billing tax invoice"}],
  "tax_point_date": "2025-03-28",
  "document_currency": "OMR",
  "accounting_cost": "Procurement",
  "buyer_reference": "SB-OM-2025-001",
  
  "invoice_period": {
    "start_date": "2025-03-01",
    "end_date": "2025-03-31"
  },
  
  "order_reference": {
    "po_number": "PO-OM-SB-500",
    "so_number": "SO-SB-2025-100"
  },
  
  "document_references": [
    {
      "id": "GRN-OM-2025-0312",
      "issue_date": "2025-03-28"
    }
  ],
  
  "receiving_party": {
    "trade_name": "Muscat Steel Industries SAOC",
    "peppol_id": "0248:OM2233445566",
    "street_address": "Rusayl Industrial Estate",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM2233445566",
    "legal_name": "Muscat Steel Industries SAOC",
    "identifiers": [
      {
        "type": "CR",
        "value": "3344556"
      }
    ],
    "contact_name": "Mohammed Al-Kindi",
    "contact_telephone": "+96824112233",
    "contact_email": "accounts@muscatsteel.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Muscat Steel Industries SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "allowance_charge": [
    {
      "charge_indicator": false,
      "allowance_charge_reason_code": "100",
      "allowance_charge_reason": "Contract Volume Rebate",
      "multiplier_factor_numeric": "2.00",
      "amount": "600.000",
      "base_amount": "30000.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "30000.000",
    "tax_exclusive_amount": "29400.000",
    "tax_inclusive_amount": "30870.000",
    "allowance_total_amount": "600.000",
    "payable_amount": "30870.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "200",
      "uom": "TNE",
      "line_extension_amount": "20000.000",
      "name": "Carbon Steel Plates",
      "description": "Grade A carbon steel plates 10mm thickness for construction",
      "commodity_code": "G",
      "hs_code": "72085100",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "100.000",
      "base_quantity": "1"
    },
    {
      "id": "2",
      "quantity": "500",
      "uom": "MTR",
      "line_extension_amount": "10000.000",
      "name": "Steel Reinforcement Bars",
      "description": "12mm diameter deformed steel rebar for concrete reinforcement",
      "commodity_code": "G",
      "hs_code": "72142000",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "20.000",
      "base_quantity": "1"
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "uuid": "e5f6a7b8-c9d0-1234-efab-456789012345",
  "document_identifier": "OM-SB-001-TEST",
  "issue_date": "2025-04-01",
  "issue_time": "07:00:00",
  "due_date": "2025-04-15",
  "document_type": "389",
  "note": [{"text": "Self-billing tax invoice"}],
  "tax_point_date": "2025-03-28",
  "document_currency": "OMR",
  "accounting_cost": "Procurement",
  "buyer_reference": "SB-OM-2025-001",
  
  "invoice_period": {
    "start_date": "2025-03-01",
    "end_date": "2025-03-31"
  },
  
  "order_reference": {
    "po_number": "PO-OM-SB-500",
    "so_number": "SO-SB-2025-100"
  },
  
  "document_references": [
    {
      "id": "GRN-OM-2025-0312",
      "issue_date": "2025-03-28"
    }
  ],
  
  "receiving_party": {
    "trade_name": "Muscat Steel Industries SAOC",
    "peppol_id": "0248:OM2233445566",
    "street_address": "Rusayl Industrial Estate",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM2233445566",
    "legal_name": "Muscat Steel Industries SAOC",
    "identifiers": [
      {
        "type": "CR",
        "value": "3344556"
      }
    ],
    "contact_name": "Mohammed Al-Kindi",
    "contact_telephone": "+96824112233",
    "contact_email": "accounts@muscatsteel.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Muscat Steel Industries SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "allowance_charge": [
    {
      "charge_indicator": false,
      "allowance_charge_reason_code": "100",
      "allowance_charge_reason": "Contract Volume Rebate",
      "multiplier_factor_numeric": "2.00",
      "amount": "600.000",
      "base_amount": "30000.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "30000.000",
    "tax_exclusive_amount": "29400.000",
    "tax_inclusive_amount": "30870.000",
    "allowance_total_amount": "600.000",
    "payable_amount": "30870.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "200",
      "uom": "TNE",
      "line_extension_amount": "20000.000",
      "name": "Carbon Steel Plates",
      "description": "Grade A carbon steel plates 10mm thickness for construction",
      "commodity_code": "G",
      "hs_code": "72085100",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "100.000",
      "base_quantity": "1"
    },
    {
      "id": "2",
      "quantity": "500",
      "uom": "MTR",
      "line_extension_amount": "10000.000",
      "name": "Steel Reinforcement Bars",
      "description": "12mm diameter deformed steel rebar for concrete reinforcement",
      "commodity_code": "G",
      "hs_code": "72142000",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "20.000",
      "base_quantity": "1"
    }
  ]
}

Self-Billing Credit Note (261)

Credit note issued by the buyer for self-billed transactions (type code 261). Used to reverse a previously issued self-billed invoice.

Key Features:

  • Document Type Code: 261 (Self-billed credit note)
  • Uses urn:peppol:pint:selfbilling-1@om-1 customization
  • Issued by buyer to reverse self-billed invoice
  • References the original self-billed invoice

Regional API

JSON
{
  "uuid": "f6a7b8c9-d0e1-2345-fabc-567890123456",
  "document_identifier": "OM-SB-CN-001-TEST",
  "issue_date": "2025-04-05",
  "issue_time": "16:30:00",
  "document_type": "261",
  "note": [{"text": "Self-billing credit note - defective goods returned"}],
  "document_currency": "OMR",
  "credit_note_reason_code": "CAN",
  "accounting_cost": "Procurement",
  "buyer_reference": "SB-OM-2025-001",
  
  "invoice_period": {
    "start_date": "2025-03-01",
    "end_date": "2025-04-05"
  },
  
  "document_references": [
    {
      "id": "OM-SB-001-TEST",
      "issue_date": "2025-04-01"
    }
  ],
  
  "receiving_party": {
    "trade_name": "Muscat Steel Industries SAOC",
    "peppol_id": "0248:OM2233445566",
    "street_address": "Rusayl Industrial Estate",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM2233445566",
    "legal_name": "Muscat Steel Industries SAOC",
    "identifiers": [
      {
        "type": "CR",
        "value": "3344556"
      }
    ]
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Muscat Steel Industries SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "2000.000",
    "tax_exclusive_amount": "2000.000",
    "tax_inclusive_amount": "2100.000",
    "payable_amount": "2100.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "20",
      "uom": "TNE",
      "line_extension_amount": "2000.000",
      "name": "Carbon Steel Plates",
      "description": "Return of defective carbon steel plates - failed quality inspection",
      "commodity_code": "G",
      "hs_code": "72085100",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "100.000",
      "base_quantity": "1"
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "uuid": "f6a7b8c9-d0e1-2345-fabc-567890123456",
  "document_identifier": "OM-SB-CN-001-TEST",
  "issue_date": "2025-04-05",
  "issue_time": "16:30:00",
  "document_type": "261",
  "note": [{"text": "Self-billing credit note - defective goods returned"}],
  "document_currency": "OMR",
  "credit_note_reason_code": "CAN",
  "accounting_cost": "Procurement",
  "buyer_reference": "SB-OM-2025-001",
  
  "invoice_period": {
    "start_date": "2025-03-01",
    "end_date": "2025-04-05"
  },
  
  "document_references": [
    {
      "id": "OM-SB-001-TEST",
      "issue_date": "2025-04-01"
    }
  ],
  
  "receiving_party": {
    "trade_name": "Muscat Steel Industries SAOC",
    "peppol_id": "0248:OM2233445566",
    "street_address": "Rusayl Industrial Estate",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM2233445566",
    "legal_name": "Muscat Steel Industries SAOC",
    "identifiers": [
      {
        "type": "CR",
        "value": "3344556"
      }
    ]
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Muscat Steel Industries SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "2000.000",
    "tax_exclusive_amount": "2000.000",
    "tax_inclusive_amount": "2100.000",
    "payable_amount": "2100.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "20",
      "uom": "TNE",
      "line_extension_amount": "2000.000",
      "name": "Carbon Steel Plates",
      "description": "Return of defective carbon steel plates - failed quality inspection",
      "commodity_code": "G",
      "hs_code": "72085100",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "100.000",
      "base_quantity": "1"
    }
  ]
}

Special Scenarios

Third Party Invoice

Invoice issued by a third party on behalf of the supplier. The transaction type bit 4 is set to indicate third-party billing.

Key Features:

  • Invoice Type Code: 380
  • Transaction type bit 4 set (third-party billing)
  • metadata.transaction_type_bits: bit 4 enabled
  • Third party issues invoice on behalf of the actual supplier

Regional API

JSON
{
  "uuid": "a7b8c9d0-e1f2-3456-abcd-678901234567",
  "document_identifier": "OM-3P-001-TEST",
  "issue_date": "2025-04-10",
  "issue_time": "13:00:00",
  "due_date": "2025-04-24",
  "document_type": "380",
  "note": [{"text": "Third party tax invoice"}],
  "document_currency": "OMR",
  "buyer_reference": "PO-OM-3P-001",
  
  "metadata": {
    "transaction_type_bits": "0000000000010000"
  },
  
  "order_reference": {
    "po_number": "PO-OM-3P-001",
    "so_number": "SO-3P-2025-050"
  },
  
  "receiving_party": {
    "trade_name": "Omantel SAOG",
    "peppol_id": "0248:OM4455667788",
    "street_address": "Madinat Al Irfan",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM4455667788",
    "legal_name": "Oman Telecommunications Company SAOG",
    "identifiers": [
      {
        "type": "CR",
        "value": "4455667"
      }
    ],
    "contact_name": "Sara Al-Lawati",
    "contact_telephone": "+96824556677",
    "contact_email": "payables@omantel.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Third Party Billing Services LLC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "18500.000",
    "tax_exclusive_amount": "18500.000",
    "tax_inclusive_amount": "19425.000",
    "payable_amount": "19425.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "100",
      "uom": "H87",
      "line_extension_amount": "15000.000",
      "name": "Network Switches",
      "description": "Managed Layer 3 network switches for data center upgrade",
      "commodity_code": "G",
      "hs_code": "85176200",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "150.000",
      "base_quantity": "1"
    },
    {
      "id": "2",
      "quantity": "50",
      "uom": "HUR",
      "line_extension_amount": "3500.000",
      "name": "Installation Services",
      "description": "Professional installation and configuration of network equipment",
      "commodity_code": "S",
      "service_accounting_code": "SAC-NET-01",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "70.000",
      "base_quantity": "1"
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "uuid": "a7b8c9d0-e1f2-3456-abcd-678901234567",
  "document_identifier": "OM-3P-001-TEST",
  "issue_date": "2025-04-10",
  "issue_time": "13:00:00",
  "due_date": "2025-04-24",
  "document_type": "380",
  "note": [{"text": "Third party tax invoice"}],
  "document_currency": "OMR",
  "buyer_reference": "PO-OM-3P-001",
  
  "metadata": {
    "transaction_type_bits": "0000000000010000"
  },
  
  "order_reference": {
    "po_number": "PO-OM-3P-001",
    "so_number": "SO-3P-2025-050"
  },
  
  "receiving_party": {
    "trade_name": "Omantel SAOG",
    "peppol_id": "0248:OM4455667788",
    "street_address": "Madinat Al Irfan",
    "city_address": "Muscat",
    "country_subdivision_code": "MO",
    "country_code": "OM",
    "vat_number": "OM4455667788",
    "legal_name": "Oman Telecommunications Company SAOG",
    "identifiers": [
      {
        "type": "CR",
        "value": "4455667"
      }
    ],
    "contact_name": "Sara Al-Lawati",
    "contact_telephone": "+96824556677",
    "contact_email": "payables@omantel.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Third Party Billing Services LLC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "18500.000",
    "tax_exclusive_amount": "18500.000",
    "tax_inclusive_amount": "19425.000",
    "payable_amount": "19425.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "100",
      "uom": "H87",
      "line_extension_amount": "15000.000",
      "name": "Network Switches",
      "description": "Managed Layer 3 network switches for data center upgrade",
      "commodity_code": "G",
      "hs_code": "85176200",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "150.000",
      "base_quantity": "1"
    },
    {
      "id": "2",
      "quantity": "50",
      "uom": "HUR",
      "line_extension_amount": "3500.000",
      "name": "Installation Services",
      "description": "Professional installation and configuration of network equipment",
      "commodity_code": "S",
      "service_accounting_code": "SAC-NET-01",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "70.000",
      "base_quantity": "1"
    }
  ]
}

Export Invoice

Invoice for goods exported outside Oman with zero VAT rate and foreign currency support. Transaction type bit 7 is set to indicate an export transaction.

Key Features:

  • Transaction type bit 7 set (export)
  • Document Currency: USD (with OMR tax currency)
  • VAT Category: Z (Zero rated for exports)
  • Exchange rate included

Regional API

JSON
{
  "uuid": "b8c9d0e1-f2a3-4567-bcde-789012345678",
  "document_identifier": "OM-EXP-001-TEST",
  "issue_date": "2025-04-12",
  "issue_time": "10:00:00",
  "due_date": "2025-05-12",
  "document_type": "380",
  "note": [{"text": "Export tax invoice"}],
  "tax_point_date": "2025-04-10",
  "document_currency": "USD",
  "currency_exchange_rate": "2.600000",
  
  "metadata": {
    "transaction_type_bits": "0000000010000000"
  },
  
  "order_reference": {
    "po_number": "EXP-OM-2025-001",
    "so_number": "SO-EXP-2025-300"
  },
  
  "receiving_party": {
    "trade_name": "Global Metals Trading Inc",
    "peppol_id": "0248:OM7788990011",
    "street_address": "1200 Industrial Parkway",
    "city_address": "Houston",
    "postal_zone": "77001",
    "country_code": "US",
    "legal_name": "Global Metals Trading Inc",
    "identifiers": [
      {
        "value": "US-EIN-987654321"
      }
    ],
    "contact_name": "John Smith",
    "contact_telephone": "+17135551234",
    "contact_email": "imports@globalmetals.example.com"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Oman Copper Mining SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "125000.00",
    "tax_exclusive_amount": "125000.00",
    "tax_inclusive_amount": "125000.00",
    "payable_amount": "125000.00",
    "total_amount_in_omr": "325000.000",
    "vat_amount_in_omr": "0.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "5000",
      "uom": "KGM",
      "line_extension_amount": "100000.00",
      "name": "Refined Copper Cathodes",
      "description": "Grade A refined copper cathodes 99.99% purity for export",
      "commodity_code": "G",
      "hs_code": "74031100",
      "vat_category": "Z",
      "vat_percentage": "0.00",
      "zero_rating_reason_code": "VATZR-OM-01",
      "unit_price": "20.00",
      "base_quantity": "1",
      "origin_country": "OM"
    },
    {
      "id": "2",
      "quantity": "2000",
      "uom": "KGM",
      "line_extension_amount": "25000.00",
      "name": "Copper Wire Rod",
      "description": "8mm copper wire rod for electrical applications",
      "commodity_code": "G",
      "hs_code": "74081100",
      "vat_category": "Z",
      "vat_percentage": "0.00",
      "zero_rating_reason_code": "VATZR-OM-01",
      "unit_price": "12.50",
      "base_quantity": "1",
      "origin_country": "OM"
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "uuid": "b8c9d0e1-f2a3-4567-bcde-789012345678",
  "document_identifier": "OM-EXP-001-TEST",
  "issue_date": "2025-04-12",
  "issue_time": "10:00:00",
  "due_date": "2025-05-12",
  "document_type": "380",
  "note": [{"text": "Export tax invoice"}],
  "tax_point_date": "2025-04-10",
  "document_currency": "USD",
  "currency_exchange_rate": "2.600000",
  
  "metadata": {
    "transaction_type_bits": "0000000010000000"
  },
  
  "order_reference": {
    "po_number": "EXP-OM-2025-001",
    "so_number": "SO-EXP-2025-300"
  },
  
  "receiving_party": {
    "trade_name": "Global Metals Trading Inc",
    "peppol_id": "0248:OM7788990011",
    "street_address": "1200 Industrial Parkway",
    "city_address": "Houston",
    "postal_zone": "77001",
    "country_code": "US",
    "legal_name": "Global Metals Trading Inc",
    "identifiers": [
      {
        "value": "US-EIN-987654321"
      }
    ],
    "contact_name": "John Smith",
    "contact_telephone": "+17135551234",
    "contact_email": "imports@globalmetals.example.com"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Oman Copper Mining SAOC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "125000.00",
    "tax_exclusive_amount": "125000.00",
    "tax_inclusive_amount": "125000.00",
    "payable_amount": "125000.00",
    "total_amount_in_omr": "325000.000",
    "vat_amount_in_omr": "0.000"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "5000",
      "uom": "KGM",
      "line_extension_amount": "100000.00",
      "name": "Refined Copper Cathodes",
      "description": "Grade A refined copper cathodes 99.99% purity for export",
      "commodity_code": "G",
      "hs_code": "74031100",
      "vat_category": "Z",
      "vat_percentage": "0.00",
      "zero_rating_reason_code": "VATZR-OM-01",
      "unit_price": "20.00",
      "base_quantity": "1",
      "origin_country": "OM"
    },
    {
      "id": "2",
      "quantity": "2000",
      "uom": "KGM",
      "line_extension_amount": "25000.00",
      "name": "Copper Wire Rod",
      "description": "8mm copper wire rod for electrical applications",
      "commodity_code": "G",
      "hs_code": "74081100",
      "vat_category": "Z",
      "vat_percentage": "0.00",
      "zero_rating_reason_code": "VATZR-OM-01",
      "unit_price": "12.50",
      "base_quantity": "1",
      "origin_country": "OM"
    }
  ]
}

Special Zone Invoice (SHRFZ)

Invoice for supplies within or from the Salalah Free Zone (SHRFZ). Requires the country_subdivision_code set to SHRFZ and transaction type bit 14 set.

Key Features:

  • country_subdivision_code: SHRFZ (Salalah Free Zone)
  • Transaction type bit 14 set (special economic zone)
  • Standard VAT applies within the free zone
  • Specific to Oman's designated free zones

Regional API

JSON
{
  "uuid": "c9d0e1f2-a3b4-5678-cdef-890123456789",
  "document_identifier": "OM-FZ-001-TEST",
  "issue_date": "2025-04-15",
  "issue_time": "12:30:00",
  "due_date": "2025-04-29",
  "document_type": "380",
  "note": [{"text": "Special zone tax invoice - Salalah Free Zone"}],
  "document_currency": "OMR",
  "buyer_reference": "PO-SHRFZ-2025-010",
  
  "metadata": {
    "transaction_type_bits": "0100000000000000"
  },
  
  "invoice_period": {
    "start_date": "2025-04-01",
    "end_date": "2025-04-15"
  },
  
  "order_reference": {
    "po_number": "PO-SHRFZ-2025-010",
    "so_number": "SO-FZ-2025-080"
  },
  
  "receiving_party": {
    "trade_name": "Salalah Port Services Company SAOG",
    "peppol_id": "0248:OM6677889900",
    "street_address": "Salalah Free Zone, Block C",
    "city_address": "Salalah",
    "country_subdivision_code": "SHRFZ",
    "country_code": "OM",
    "vat_number": "OM6677889900",
    "legal_name": "Salalah Port Services Company SAOG",
    "identifiers": [
      {
        "type": "CR",
        "value": "5566778"
      }
    ],
    "contact_name": "Rashid Al-Mashani",
    "contact_telephone": "+96823456789",
    "contact_email": "procurement@salalahport.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Free Zone Logistics LLC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "allowance_charge": [
    {
      "charge_indicator": true,
      "allowance_charge_reason_code": "FC",
      "allowance_charge_reason": "Freight Charge",
      "multiplier_factor_numeric": "5.00",
      "amount": "2250.000",
      "base_amount": "45000.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "45000.000",
    "tax_exclusive_amount": "47250.000",
    "tax_inclusive_amount": "49612.500",
    "charge_total_amount": "2250.000",
    "payable_amount": "49612.500"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "3",
      "uom": "C62",
      "line_extension_amount": "30000.000",
      "name": "Container Handling Equipment",
      "description": "Heavy-duty container spreaders for port operations",
      "commodity_code": "G",
      "hs_code": "84261200",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "10000.000",
      "base_quantity": "1",
      "origin_country": "OM"
    },
    {
      "id": "2",
      "quantity": "1000",
      "uom": "LTR",
      "line_extension_amount": "5000.000",
      "name": "Industrial Hydraulic Oil",
      "description": "ISO VG 46 hydraulic oil for port machinery",
      "commodity_code": "G",
      "hs_code": "27101991",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "5.000",
      "base_quantity": "1",
      "origin_country": "OM"
    },
    {
      "id": "3",
      "quantity": "200",
      "uom": "HUR",
      "line_extension_amount": "10000.000",
      "name": "Maintenance Services",
      "description": "Preventive maintenance for quay crane systems",
      "commodity_code": "S",
      "service_accounting_code": "SAC-MNT-01",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "50.000",
      "base_quantity": "1",
      "invoice_period_start_date": "2025-04-01",
      "invoice_period_end_date": "2025-04-15"
    }
  ]
}

Unified API

JSON
{
  "country": "OM",
  "uuid": "c9d0e1f2-a3b4-5678-cdef-890123456789",
  "document_identifier": "OM-FZ-001-TEST",
  "issue_date": "2025-04-15",
  "issue_time": "12:30:00",
  "due_date": "2025-04-29",
  "document_type": "380",
  "note": [{"text": "Special zone tax invoice - Salalah Free Zone"}],
  "document_currency": "OMR",
  "buyer_reference": "PO-SHRFZ-2025-010",
  
  "metadata": {
    "transaction_type_bits": "0100000000000000"
  },
  
  "invoice_period": {
    "start_date": "2025-04-01",
    "end_date": "2025-04-15"
  },
  
  "order_reference": {
    "po_number": "PO-SHRFZ-2025-010",
    "so_number": "SO-FZ-2025-080"
  },
  
  "receiving_party": {
    "trade_name": "Salalah Port Services Company SAOG",
    "peppol_id": "0248:OM6677889900",
    "street_address": "Salalah Free Zone, Block C",
    "city_address": "Salalah",
    "country_subdivision_code": "SHRFZ",
    "country_code": "OM",
    "vat_number": "OM6677889900",
    "legal_name": "Salalah Port Services Company SAOG",
    "identifiers": [
      {
        "type": "CR",
        "value": "5566778"
      }
    ],
    "contact_name": "Rashid Al-Mashani",
    "contact_telephone": "+96823456789",
    "contact_email": "procurement@salalahport.example.om"
  },
  
  "payment_means": [
    {
      "payment_means_code": "30",
      "account_id": "OM070100000123456789012",
      "account_name": "Free Zone Logistics LLC",
      "financial_institution_branch": "BMUSCMCX"
    }
  ],
  
  "allowance_charge": [
    {
      "charge_indicator": true,
      "allowance_charge_reason_code": "FC",
      "allowance_charge_reason": "Freight Charge",
      "multiplier_factor_numeric": "5.00",
      "amount": "2250.000",
      "base_amount": "45000.000",
      "vat_category": "S",
      "vat_percentage": "5.00"
    }
  ],
  
  "invoice_totals": {
    "line_extension_amount": "45000.000",
    "tax_exclusive_amount": "47250.000",
    "tax_inclusive_amount": "49612.500",
    "charge_total_amount": "2250.000",
    "payable_amount": "49612.500"
  },
  
  "invoice_lines": [
    {
      "id": "1",
      "quantity": "3",
      "uom": "C62",
      "line_extension_amount": "30000.000",
      "name": "Container Handling Equipment",
      "description": "Heavy-duty container spreaders for port operations",
      "commodity_code": "G",
      "hs_code": "84261200",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "10000.000",
      "base_quantity": "1",
      "origin_country": "OM"
    },
    {
      "id": "2",
      "quantity": "1000",
      "uom": "LTR",
      "line_extension_amount": "5000.000",
      "name": "Industrial Hydraulic Oil",
      "description": "ISO VG 46 hydraulic oil for port machinery",
      "commodity_code": "G",
      "hs_code": "27101991",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "5.000",
      "base_quantity": "1",
      "origin_country": "OM"
    },
    {
      "id": "3",
      "quantity": "200",
      "uom": "HUR",
      "line_extension_amount": "10000.000",
      "name": "Maintenance Services",
      "description": "Preventive maintenance for quay crane systems",
      "commodity_code": "S",
      "service_accounting_code": "SAC-MNT-01",
      "vat_category": "S",
      "vat_percentage": "5.00",
      "unit_price": "50.000",
      "base_quantity": "1",
      "invoice_period_start_date": "2025-04-01",
      "invoice_period_end_date": "2025-04-15"
    }
  ]
}

Invoice Type Codes Reference

CodeDocument TypeDescriptionUse Case
380Commercial invoiceStandard taxable invoiceRegular B2B/B2C sales
381Credit noteCredit note for taxable suppliesCorrections, returns, cancellations
383Debit noteDebit note for additional chargesPost-invoice charges, adjustments upward
389Self-billed invoiceBuyer issues invoiceBuyer-generated invoices (oil & gas, procurement)
261Self-billed credit noteBuyer issues credit noteReversing self-billed invoices

VAT Category Codes Reference

CodeCategoryRateDescription
SStandard rated5%Normal taxable supplies in Oman
ZZero rated0%Exports, international transport, designated goods
EExempt from tax-Financial services, healthcare, education, residential property

Transaction Type Bits Reference

BitPositionDescriptionUse Case
40000000000010000Third-party billingInvoice issued by third party on behalf of supplier
70000000010000000Export transactionGoods exported outside Oman
140100000000000000Special economic zoneSupplies within designated free zones (SHRFZ, etc.)

Country Subdivision Codes Reference

CodeGovernorate / ZoneDescription
MOMuscatCapital governorate
DOAd DakhiliyahInterior governorate
SJSouth Ash SharqiyahSouth-eastern governorate
NJNorth Ash SharqiyahNorth-eastern governorate
DBAd DhahirahWestern governorate
BNAl BuraimiNorthern border governorate
BSNorth Al BatinahNorthern coastal governorate
BJSouth Al BatinahSouthern coastal governorate
WSAl WustaCentral governorate
ZUDhofarSouthern governorate
MUMusandamNorthern exclave governorate
SHRFZSalalah Free ZoneSpecial economic zone in Dhofar

Best Practices for Examples

Using Examples Effectively

  1. Include UUID: Every PINT OM invoice must include a unique uuid — generate a new UUID v4 for each document
  2. Include Issue Time: The issue_time field is mandatory in PINT OM (unlike some other PINT profiles)
  3. Country Subdivision: Always include country_subdivision_code to identify the governorate
  4. Start with Standard Invoice: Begin with the standard 380 example and modify for your scenario
  5. Match Your Scenario: Choose the example closest to your business case
  6. Validate Tax Calculations: Ensure all amounts calculate correctly (OMR uses 3 decimal places)
  7. Test in Sandbox: Always test with example data before production

Common Patterns

Simple Sale (Standard VAT):

Text
Type Code: 380
VAT Category: S (5%)
Required: uuid, issue_time, receiving party, line items, totals

Zero-Rated Supply:

Text
Type Code: 380
VAT Category: Z (0%)
Required: zero_rating_reason_code on each line item

Exempt Supply:

Text
Type Code: 380
VAT Category: E (0%)
Required: vat_exemption_reason_code on each line item

Credit Adjustment:

Text
Type Code: 381
Required: credit_note_reason_code, document_references with preceding invoice id

Debit Note:

Text
Type Code: 383
Required: document_references with preceding invoice id
Note: Specific to PINT OM — increases amount owed

Export Transaction:

Text
Type Code: 380
VAT Category: Z (0%)
Metadata: transaction_type_bits bit 7 set
Additional: Exchange rate for foreign currency

Free Zone (SHRFZ):

Text
Type Code: 380
country_subdivision_code: SHRFZ
Metadata: transaction_type_bits bit 14 set

Third Party Billing:

Text
Type Code: 380
Metadata: transaction_type_bits bit 4 set
Note: Invoice issued by third party on behalf of supplier

Additional Resources