Release notes for PINT OM Self-Billing
Version 1.0.1
| Maintained by | Oman Tax Authority |
|---|---|
Release Date |
2026-07-29 |
Status |
Final |
|
Member Review amendments: This revision of the 1.0.1 release notes incorporates the resolutions to the Oman Tax Authority (OTA) and other Members review comments, made within the Member Review cycle (no new version increment):
|
What’s new in this release?
-
Adapted all the changes from PINT General 1.1.3 to PINT OM 1.0.1:
-
Schematron rules.
-
Code lists updates.
-
Documentation updates.
-
-
Rounding tolerance for tax-inclusive (B2C) scenarios
-
Added bounded "Baisa Gap" tolerance handling (one baisa, 0.001 OMR, per invoice line) on the VAT amount fields only —
BTOM-016(IBR-168-OM) andIBT-117(ALIGNED-IBRP-S-09-OM). The taxable amount (IBT-116) and total including VAT (BTOM-017) are not toleranced. -
Tolerance applies where systematic rounding artefacts arise from backward derivation of tax-exclusive values from tax-inclusive retail prices.
-
-
Three-tier validation outcome on the VAT amount fields
-
IBR-168-OMandALIGNED-IBRP-S-09-OMnow classify each invoice as Accepted, Accepted with warning, or Rejected. -
An exact match is Accepted silently; a non-zero difference within tolerance is Accepted with warning; a difference beyond tolerance is Rejected.
-
The acceptance boundary is evaluated at each field’s native precision — three decimals for the line VAT amount (
BTOM-016), two decimals for the document-level VAT category tax amount (IBT-117).
-
-
No restrictions on Rounding Amount (IBT-114)
-
IBT-114 (PayableRoundingAmount)is accepted as a free-form value and is not capped, equality-checked, or reconciled by any dedicated rule. -
The tolerance on
IBR-168-OMandALIGNED-IBRP-S-09-OMis applied independently ofIBT-114; the sender is not required to reportIBT-114to benefit from the tolerance. -
This allows
IBT-114to absorb other rounding-off differences (for example, those arising from exchange-rate conversion).
-
-
Business Rule Logic Updates
-
IBR-168-OM: the business rule statesBTOM-016 (Line Item VAT amount)MUST equalIBT-131 × VAT rate. The per-line±0.001 OMRtolerance is implemented in the Schematron only (surfaced as a warning) and is not part of the business-rule statement. -
ALIGNED-IBRP-S-09-OM: the business rule statesIBT-117 (VAT category tax amount)MUST equal the sum of line VAT amounts plus charges' VAT minus allowances' VAT. The±(0.001 × number of invoice lines) OMRtolerance is implemented in the Schematron only (surfaced as a warning). -
IBR-158-OM(BTOM-017) andALIGNED-IBRP-S-08-OM(IBT-116) do not apply the Baisa tolerance; they retain standard exact reconciliation (two-decimal rounding only), consistent with the E/O/Z taxable-amount checks.
-
-
Business Terms excluded
-
The Tolerance-applied indicator and related terms (
BGOM-08,BTOM-035,BTOM-035-1,BTOM-200-OM) are excluded from OM PINT; no tolerance indicator is required or processed.
-
-
Schematron Enhancements
-
Added centralized Baisa Gap tolerance constants and helper functions.
-
Added warning-level assertions (
IBR-168-OM-WARN,ALIGNED-IBRP-S-09-OM-WARN) that surface when a transaction is accepted within tolerance. -
Improved
IBR-171-OMbusiness rule check on current date and time.
-
-
Documentation and Validation Clarifications
-
Added detailed guidance for tax-inclusive pricing and document-level rounding behaviour.
-
Clarified compatibility and auditability behaviour for tax-inclusive rounding scenarios.
-
-
UUID validation corrected (IBR-002-OM, IBR-173-OM)
-
IBR-002-OM(Invoice UUID,BTOM-002) previously required an RFC 4122 version 4 UUID. It now requires an RFC 4122 version 5 UUID. Version 4 is no longer accepted forBTOM-002. -
IBR-173-OM(Seller UUID,BTOM-004) previously tested^[A-Za-z0-9-]+$, which is not a UUID check — it accepted any string of letters, digits and dashes. It now enforces proper UUID structure, accepting version 5. -
No other UUID-bearing element is format-checked.
-
-
UUID versions per business term
-
BTOM-002(Invoice UUID): version 5 only. -
BTOM-004(Seller UUID): version 5 only.
-
-
BGOM-03(Prepayment Document Reference) mapping change-
BGOM-03mapping is changed fromcac:OriginatorDocumentReferencetocac:AdditionalDocumentReferencewithcbc:DocumentTypeCodeasPDR.
-
-
Schematron review corrections
-
IBR-158-OM(Total amount including VAT): aligned withIBR-038-OM— a simplified tax invoice line that omits the Line Item VAT amount (BTOM-016) is no longer rejected. The calculation now guards its numeric inputs and treats a missing line VAT amount as zero. -
IBR-171-A-OM: the YYYY-MM-DD date-format check now also covers the Payment due date (IBT-009,cbc:DueDate), matching the rule’s stated scope. -
Added defensive
castable as xs:decimalguards to the standard-rate VAT breakdown calculations (ALIGNED-IBRP-S-08-OM,ALIGNED-IBRP-S-09-OM). -
Corrected diagnostic/message text and removed dead code (unused helper functions, an unused variable, and the inert
debugphase /DOC-SUMMARYreport). No change to validation outcomes.
-
-
Sample files
-
New sample files added for tolerance logic.
-
All sample UUIDs — Invoice UUID (
BTOM-002) and Seller UUID (BTOM-004) — regenerated as valid RFC 4122 version 5 UUIDs; each sample now carries a distinct UUID (previously several samples shared one placeholder value, and a few carried malformed values such asr12f329f-…, which contains a non-hexadecimal character). -
Old samples updated to ensure the validation.
-
Prepayment files are changed according to the
BGOM-03mapping change.
-
Overview
This release introduces bounded rounding-tolerance support for tax-inclusive (B2C) invoicing scenarios in PINT OM Self-Billing.
In Omani retail environments, commercial prices are typically expressed as tax-inclusive rounded values, while PINT calculations are derived using tax-exclusive arithmetic. Due to the OMR three-decimal precision model, backward derivation of net amounts may introduce a systematic rounding difference of one baisa (0.001 OMR) per invoice line.
PINT OM 1.0.1 absorbs these differences through a bounded tolerance on the VAT amount fields, without weakening validation integrity. On BTOM-016 (Line Item VAT amount) the tolerance is ±0.001 OMR per invoice line; on IBT-117 (VAT category tax amount) it is ±(0.001 × number of invoice lines) OMR. Each comparison is evaluated at the field’s native precision — three decimals for the line-level BTOM-016 and two decimals for the document-level IBT-117 — and the tolerance is applied independently of the Rounding Amount (IBT-114).
These two rules now produce a graduated outcome: an exact calculation is Accepted; a non-zero difference that remains within tolerance is Accepted with a warning, allowing the transaction to be identified; and a difference beyond tolerance is Rejected. The Rounding Amount (IBT-114 (PayableRoundingAmount)) remains available to record any residual difference for audit purposes, but no restriction is placed on its value, and it is not required for the tolerance to apply.
This release adds bounded tolerance handling to the VAT amount rules and supporting documentation while preserving existing strict validation behaviour.
Version Information
| PINT General | 1.1.3 |
|---|---|
PINT OM |
1.0.1 |
Applies to |
PINT OM Self-Billing |
Reviewed |
- |
Changes
Rounding Amount (IBT-114) Handling
No restrictions are placed on IBT-114 (PayableRoundingAmount) in this release. Specifically, PINT OM 1.0.1 does not introduce:
-
a cap on the magnitude of
IBT-114relative to the number of invoice lines; -
an equality requirement tying
IBT-115 (PayableAmount)toIBT-112,IBT-113, andIBT-114; or -
a rule requiring
IBT-114to equal a measured reconciliation gap.
Reason: the rounding amount may legitimately combine the systematic one-baisa-per-line tolerance with other rounding-off differences, including those arising from exchange-rate conversion. Constraining IBT-114 to the per-line tolerance alone would incorrectly reject otherwise valid invoices.
|
The 0.001 OMR tolerance continues to be enforced on the VAT calculation fields — |
UUID Validation (IBR-002-OM, IBR-173-OM)
Two rules validate a UUID, and both were incorrect — in different ways.
IBR-002-OM validated the Invoice UUID (BTOM-002) against an expression that hard-coded the version 4 nibble (…-4xxx-…), so structurally valid version 5 (name-based, SHA-1) UUIDs failed validation. BTOM-002 is now specified as a version 5 UUID.
IBR-173-OM validated the Seller UUID (BTOM-004, cbc:AdditionalAccountID) against ^[A-Za-z0-9-]+$. This is not a UUID check: it accepts any string of letters, digits and dashes (for example abc, ------, or an arbitrary account code). It let version 4 and version 5 UUIDs pass only because it let virtually everything pass. BTOM-004 now accepts version 5.
IBR-002-OM — Invoice UUID (BTOM-002), version 5 only^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-5[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
IBR-173-OM — Seller UUID (BTOM-004), version 5^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-5[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
In both expressions the third group’s leading nibble carries the UUID version (5, or [45]), and the [89abAB] group enforces the RFC 4122 variant. No other UUID-bearing element (for example the UUIDs inside cac:OriginatorDocumentReference or cac:AdditionalDocumentReference) is format-checked.
| Rule ID | Syntax (XML location) | Change | Business Rule | Reason |
|---|---|---|---|---|
IBR-002-OM |
|
Updated |
The unique identifier (“UUID”, |
The previous expression hard-coded the version 4 nibble. |
IBR-173-OM |
|
Updated |
If Buyer electronic address ( |
The previous expression ( |
Business Rule Logic Updates
| Rule ID | Syntax (XML location) | Change | Business Rule | Reason |
|---|---|---|---|---|
IBR-168-OM |
Invoice line VAT calculations |
Updated |
|
Supports tax-inclusive pricing scenarios while keeping the business rule a strict equality and surfacing tolerance use through a Schematron warning. |
IBR-158-OM |
Invoice line totals |
Clarified |
|
Per OTA review: tolerance is not required on |
ALIGNED-IBRP-S-08-OM |
VAT breakdown taxable amount |
Clarified |
|
Per OTA review: tolerance is not required on |
ALIGNED-IBRP-S-09-OM |
VAT breakdown tax amount |
Updated |
|
Keeps the business rule a strict equality while surfacing tolerance use through a Schematron warning. |
Validation Outcome Model (IBR-168-OM and ALIGNED-IBRP-S-09-OM)
The two VAT amount rules covered by the tolerance specification now resolve to one of three outcomes. Each comparison is evaluated at the field’s native precision — three decimals for the line-level BTOM-016 (IBR-168-OM) and two decimals for the document-level IBT-117 (ALIGNED-IBRP-S-09-OM):
| Condition | Outcome | Schematron behaviour |
|---|---|---|
The reported VAT amount equals the calculated amount exactly. |
Accepted |
No assertion is raised. |
The difference is non-zero but within tolerance — |
Accepted with warning |
The warning assertion ( |
The difference exceeds the tolerance. |
Rejected |
The fatal assertion ( |
The tolerance is determined entirely from the invoice arithmetic and does not depend on IBT-114 being reported. The normative business rule for both IBR-168-OM and ALIGNED-IBRP-S-09-OM remains the exact equality; the graduated outcome above is Schematron validation behaviour, not a relaxation of the business rule itself.
Schematron Enhancements
| Component | Change | Description | Rationale |
|---|---|---|---|
Centralized constants |
Added |
Added |
Provides reusable centralized tolerance calculations across Schematron rules. |
|
Added |
Helper function validating strict equality OR acceptance of a bounded residual difference within the Baisa cap. |
Enables reusable tolerance logic for the VAT calculation rules. |
|
Added |
Helper function validating that a deviation falls within the Baisa Gap cap. |
Supports reusable cap-only validation scenarios at line level. |
|
Added |
Warning-level assertions that are raised when the reported VAT amount is not exact but falls within tolerance. They use the existing |
Implements the Accepted with warning tier so tolerance use is surfaced without rejecting the document. |
Documentation
| Document | Section | Change Description | Reason |
|---|---|---|---|
Release Notes |
Rounding Amount (IBT-114) Handling |
Added explanation that no restrictions are placed on |
Clarifies the business and mathematical rationale behind the approach. |
Validation Documentation |
Schematron tolerance |
Added guidance describing the bounded Baisa Gap tolerance behaviour on the VAT calculation fields. |
Improves implementer understanding and troubleshooting capability. |
Compatibility |
Various |
Added compatibility guidance for existing PINT OM implementations. |
Clarifies upgrade impact and backward compatibility behaviour. |
Business Rules / Web Specification |
IBR-168-OM, ALIGNED-IBRP-S-09-OM, IBR-158-OM, ALIGNED-IBRP-S-08-OM |
Removed tolerance wording from the normative business-rule statements (tolerance is Schematron behaviour); clarified that |
Implements OTA review comments separating tolerance (Schematron) from the business rules. |
Data Model / Web Specification |
Business terms |
Excluded the Tolerance-applied indicator terms ( |
OTA assessed the indicator as added burden without value to taxpayers/service providers. |
Business Processes |
Core Header Rules → UUID Format |
Added a "UUID Format (Version 5)" segment and made the generic UUID row specific: Invoice UUID ( |
Documents the UUID version requirements now enforced by |
Semantic Data Model |
|
Extended the definitions of the Invoice UUID ( |
Aligns the data-model documentation with the corrected UUID validation rules. |
Rounding (Baisa Gap) Example
| Component | Amount |
|---|---|
Retail price (tax-inclusive) |
0.050 OMR |
Derived Net Price ( |
|
Line VAT amount ( |
|
Invoice line total ( |
|
Customer actually paid |
0.050 OMR |
Difference (Baisa Gap) |
|
Design Principles
| Principle | Description |
|---|---|
Mathematical integrity |
Existing strict mathematical validation behaviour remains unchanged; each acceptance boundary is evaluated at the field’s native precision (three decimals for line-level VAT amounts, two decimals for document-level VAT amounts). |
Bounded tolerance |
The systematic rounding difference is tolerated only within a strict bound on the VAT amount fields: |
Graduated outcome |
On these two rules, an exact match is Accepted, a non-zero difference within tolerance is Accepted with warning, and a difference beyond tolerance is Rejected — making tolerance use visible without weakening the boundary. |
Auditability |
Any residual difference MAY be recorded in |
No restriction on IBT-114 |
|
No manual flags |
Tolerance is determined entirely by invoice data behaviour without introducing tax-inclusive indicators. |
Compatibility
-
Transaction type (BTOM-001) continues to use the
1/0bitmap encoding (inactive positions =0); the encoding is unchanged and no re-encoding of instance data is required. -
Existing strict validation pathways remain unchanged.
-
IBR-158-OM(Total amount including VAT, BTOM-017) no longer requires the Line Item VAT amount (BTOM-016) on a simplified tax invoice line, consistent withIBR-038-OM. This is a relaxation; invoices already providing the amount are unaffected. -
IBR-171-A-OMnow also validates that the Payment due date (IBT-009,cbc:DueDate), when present, is a valid YYYY-MM-DD date. This is a tightening; a malformed due date that previously passed will now be rejected. -
IBR-002-OMnow requires a UUID version 5 for the Invoice UUID (BTOM-002). -
IBR-173-OMnow enforces UUID structure on the Seller UUID (BTOM-004), accepting version 5. This is a tightening: values that satisfied the previous^[A-Za-z0-9-]+$expression but are not valid UUIDs will now be rejected where the Buyer electronic address is997770000099. Senders already placing a genuine version 5 UUID incbc:AdditionalAccountIDare unaffected. -
Tax-inclusive (B2C) invoices may now carry the systematic rounding artefact within the bounded tolerance on the VAT amount fields. Where the tolerance is used,
IBR-168-OMandALIGNED-IBRP-S-09-OMnow return an Accepted with warning outcome rather than a silent acceptance; receivers should treat these warnings as informational, not as failures. -
IBT-114 (PayableRoundingAmount)is accepted without restriction and is not required for the tolerance to apply. -
The Tolerance-applied indicator business terms (
BGOM-08,BTOM-035,BTOM-035-1,BTOM-200-OM) are excluded from OM PINT; no other business terms, syntax structures, or semantic data model elements have been removed.
Code Lists
No changes to code list values in this release. The transaction-type bitmap representation (CL-03-OM and the web specification) uses the 1/0 encoding for active/inactive positions.
Action Items for Implementers
-
Update validation environments to include the Baisa Gap tolerance handling on the VAT amount rules (
IBR-168-OM,ALIGNED-IBRP-S-09-OM); note thatIBT-116andBTOM-017carry no Baisa tolerance. -
Ensure the validation pipeline surfaces, and does not reject, the Accepted with warning outcome from
IBR-168-OM-WARNandALIGNED-IBRP-S-09-OM-WARN. -
Ensure
IBT-114 (PayableRoundingAmount)is accepted as a free-form value without restriction. -
Ensure no Tolerance-applied indicator (
OM-TOLERANCE-APPLIED) is required or expected. -
Verify handling of tax-inclusive pricing scenarios where a systematic one-baisa-per-line rounding artefact is present.
-
Migrate the Invoice UUID (
BTOM-002) to an RFC 4122 version 5 (name-based, SHA-1) UUID.IBR-002-OMno longer accepts version 4; senders emitting a version 4 Invoice UUID will be rejected. -
Ensure the Seller UUID (
BTOM-004,cbc:AdditionalAccountID) is a valid UUID version 5 where the Buyer electronic address (IBT-049) is997770000099.IBR-173-OMnow validates its structure and no longer accepts arbitrary alphanumeric/dash values.