Oman: validation rules
Find the PINT OM rule behind a rejected Omani invoice and correct it. Start with the document type you sent and the errors returned by Unify.
Omani invoices are checked against PINT OM, Oman’s Peppol invoice specification. Self-billed documents, imports of goods and imports of services under reverse charge use the PINT OM Self-Billing rules; every other document uses the PINT OM Billing rules. Credit notes have their own rule set.
Check the GETS request
Open the Oman field reference. Requirement covers every document type, modifier and variant; read Description for conditional requirements. Choose List with sample request to pick your document type, modifiers and variant and see the fields beside a sample request.
The field reference does not show every PINT OM condition. Check these before you send:
| Check | What to send | Rule |
|---|---|---|
| Invoice UUID | header.uuid: a UUID version 5, new for each invoice. | IBR-002-OM |
| Issue date and time | header.issueDate as YYYY-MM-DD, not in the future in Oman’s time zone, and header.issueTime. | IBR-171-OM, ALIGNED-IBRP-016-OM |
| VATINs | OM followed by exactly 10 digits, for the seller, the buyer and any third party. | IBR-003-OM |
| Seller address and phone | addressLine1, addressLine2, addressLine3, city and postalCode, plus parties.seller.contact.phone. | IBR-010-OM, IBR-011-OM |
| Buyer identity and address | A buyer VATIN or buyer identifier on a tax invoice. The buyer’s three address lines, city and postal code on a tax invoice and most other full documents. | IBR-016-OM, IBR-019-OM |
| Currency | For a currency other than OMR, send header.exchangeRate.rate and header.taxCurrency set to OMR. For OMR, leave the exchange rate out. | IBR-004-OM, IBR-034-OM, IBR-172-OM |
| Item classification | On each line of a full document, extensions.om_itemType (G or S) and an ISIC code in extensions.om_industrialClassifications. A goods line needs an HS code in commodityClassification with scheme HS. | IBR-078-OM, IBR-081-OM, IBR-174-OM |
| Service type | When a line has om_itemType, also send a service type code in extensions.om_serviceTypes. | |
| VAT | Category S, Z, E or O. A standard-rated (S) line uses rate 5. Line VAT is the line net amount times the rate. | ALIGNED-IBRP-S-05-OM, IBR-168-OM |
| Line totals | lineTotal is lineTaxableValue plus taxAmount, except on profit margin invoices. | IBR-158-OM |
| Decimals | Line, price, allowance, charge and tax breakdown amounts have at most three decimals. Document totals have at most two. | IBR-DEC-03-OM |
| Credit and debit notes | A supportingDocuments entry with documentType precedingInvoiceReference, the original invoice’s id, issueDate and UUID in extensions.om_uuid, and a reason in extensions.om_reasonCode (CAN, VAT, VAL, QTY or OTH). | IBR-023-OM, IBR-032-OM |
Some modifiers add their own requirements:
| Modifier | What to add | Rule |
|---|---|---|
third_party | The third party’s name, VATIN, three address lines, city, postal code and country in extensions.om_thirdParty*. | IBR-015-OM |
summary, continuous_supply | The invoicing period in header.invoicePeriod. A summary invoice covers one calendar month. | IBR-037-OM |
export | The delivery country in parties.delivery.address.country. | IBR-014-OM |
import_goods | The import date in extensions.om_importDate, the customs declaration number and Incoterms in parties.delivery.deliveryTerms, each line’s country of origin, and the buyer’s importer customs ID with extensions.om_buyerTextualId set to ICID. | IBR-085-OM, IBR-084-OM, IBR-153-OM |
reverse_charge | A seller address outside Oman. | IBR-160-OM |
special_zone_supplies | Seller and buyer country subdivision codes in extensions.om_sellerCountrySubdivisionCode and extensions.om_buyerCountrySubdivisionCode. | IBR-150-OM |
margin_scheme | Currency OMR. | IBR-169-OM |
These tables are a guide to the common failures, not the full rule set. Coded values come from the PINT OM code lists.
Read a rejection
A 422 response from Unify lists each failed check in errors. The code is the PINT OM rule ID, getsPath names the GETS field, and message quotes the rule. Correct the source data for that field, then send the document again. If the code is not in the tables above, search for it in the PINT OM rule list. See Unify errors for the response format and Oman examples for a sample 422.
Use the values from the original invoice. Do not fill a missing VATIN, UUID or amount with a guessed value to pass validation.
Last updated