# 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](https://docs.peppol.eu/poac/om/pint-om-sb/); every other document uses the [PINT OM Billing rules](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/). Credit notes have [their own rule set](https://docs.peppol.eu/poac/om/pint-om/trn-creditnote/rule/).

## Check the GETS request

Open the [Oman field reference](https://docs.complyance.io/countries/om/fields/). **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](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/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](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-171-OM/), [ALIGNED-IBRP-016-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/ALIGNED-IBRP-016-OM/) |
| VATINs | `OM` followed by exactly 10 digits, for the seller, the buyer and any third party. | [IBR-003-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-003-OM/) |
| Seller address and phone | `addressLine1`, `addressLine2`, `addressLine3`, `city` and `postalCode`, plus `parties.seller.contact.phone`. | [IBR-010-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-010-OM/), [IBR-011-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/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](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-016-OM/), [IBR-019-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/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](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-004-OM/), [IBR-034-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-034-OM/), [IBR-172-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/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](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-078-OM/), [IBR-081-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-081-OM/), [IBR-174-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/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](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/ALIGNED-IBRP-S-05-OM/), [IBR-168-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-168-OM/) |
| Line totals | `lineTotal` is `lineTaxableValue` plus `taxAmount`, except on profit margin invoices. | [IBR-158-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-158-OM/) |
| Decimals | Line, price, allowance, charge and tax breakdown amounts have at most three decimals. Document totals have at most two, even in `OMR`. | [IBR-DEC-03-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-DEC-03-OM/) for amounts; IBR-091, IBR-123, IBR-124 and IBR-125 in the [shared PINT rules](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/PINT-UBL-validation-preprocessed/) for totals |
| 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](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-023-OM/), [IBR-032-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/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](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-015-OM/) |
| `summary`, `continuous_supply` | The invoicing period in `header.invoicePeriod`. A summary invoice covers one calendar month. | [IBR-037-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-037-OM/) |
| `export` | The delivery country in `parties.delivery.address.country`. | [IBR-014-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/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](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-085-OM/), [IBR-084-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-084-OM/), [IBR-153-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-153-OM/) |
| `reverse_charge` | A seller address outside Oman. | [IBR-160-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-160-OM/) |
| `special_zone_supplies` | Seller and buyer country subdivision codes in `extensions.om_sellerCountrySubdivisionCode` and `extensions.om_buyerCountrySubdivisionCode`. | [IBR-150-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/IBR-150-OM/) |
| `margin_scheme` | Currency `OMR`. | [IBR-169-OM](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/rule/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](https://docs.peppol.eu/poac/om/pint-om/trn-invoice/codelist/).

## 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](https://docs.complyance.io/api-reference/unify/errors/) for the response format and [Oman examples](https://docs.complyance.io/countries/om/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.

Source: https://docs.complyance.io/countries/om/validation-rules/
