# Submit a UAE sandbox invoice

Send a UAE tax invoice and a credit note in GETS and read each response up to the final status. You need an onboarded UAE sandbox source, a sandbox API key and real test identities approved for that environment.

> **Before you start**
>
> Complete [UAE onboarding](https://docs.complyance.io/countries/ae/onboarding/) and keep the returned source name and version. You need a [sandbox API key](https://docs.complyance.io/api-reference/authentication/). All names, TRNs, participant IDs and amounts below are made up; replace them with your company’s and your buyer’s real values.

## Save the request

Save this body as `uae-invoice.json`. It is a standard-rated tax invoice from one VAT-registered UAE business to another, in dirhams (AED), with one line at 5% VAT.

```json title="uae-invoice.json"
{
  "country": "AE",
  "environment": "sandbox",
  "purpose": "invoicing",
  "source": "acme-erp:1.0.0",
  "documentType": { "base": "tax_invoice", "modifiers": [] },
  "payload": {
    "header": {
      "documentType": { "base": "tax_invoice", "modifiers": [] },
      "documentNumber": "INV-2026-0142",
      "uuid": "6f1c2b8e-4a7d-4c3e-9b52-1d8e7f0a3c64",
      "issueDate": "2026-09-18",
      "dueDate": "2026-10-18",
      "currency": "AED"
    },
    "parties": {
      "seller": {
        "name": "Acme Trading LLC",
        "peppolId": "1234567890",
        "taxIds": [{ "type": "VAT", "value": "123456789000003" }],
        "registrationNumbers": [{ "type": "TL", "value": "CN-1234567" }],
        "address": {
          "addressLine1": "Sheikh Zayed Road",
          "addressLine2": "Business Bay",
          "city": "Dubai",
          "postalCode": "00000",
          "stateOrProvince": "DXB",
          "country": "AE"
        },
        "contact": {
          "name": "Accounts Receivable",
          "phone": "+97145551234",
          "email": "billing@acme.example"
        }
      },
      "buyer": {
        "name": "Gulf Hospitality LLC",
        "peppolId": "1009876543",
        "taxIds": [{ "type": "VAT", "value": "100987654300003" }],
        "registrationNumbers": [{ "type": "TL", "value": "CN-7654321" }],
        "address": {
          "addressLine1": "Corniche Road",
          "addressLine2": "Al Bateen",
          "city": "Abu Dhabi",
          "postalCode": "00000",
          "stateOrProvince": "AUH",
          "country": "AE"
        }
      }
    },
    "lineItems": [
      {
        "id": "1",
        "name": "Office chairs",
        "quantity": 20,
        "unitCode": "C62",
        "price": { "amount": 250, "grossPrice": 250, "baseQuantity": 1 },
        "lineTaxableValue": 5000,
        "taxCategory": "S",
        "taxRate": 5,
        "taxAmount": 250,
        "lineTotal": 5250,
        "commodityClassification": { "code": "940130", "scheme": "HS" }
      }
    ],
    "payment": {
      "paymentMeans": [
        {
          "paymentMeansCode": "CREDIT_TRANSFER",
          "creditTransferInfo": {
            "payeeFinancialAccountId": "AE070331234567890123456"
          }
        }
      ]
    },
    "taxTotals": [
      {
        "taxAmount": 250,
        "taxSubtotals": [
          {
            "taxableAmount": 5000,
            "taxAmount": 250,
            "taxCategory": "S",
            "percent": 5
          }
        ]
      }
    ],
    "totals": {
      "totalLineTaxableAmount": 5000,
      "totalAmountExcludingTax": 5000,
      "totalTaxAmount": 250,
      "totalAmountIncludingTax": 5250,
      "amountDue": 5250
    },
    "extensions": {
      "ae_seller_authorityName": "Dubai Economy and Tourism",
      "ae_buyer_authorityName": "Abu Dhabi Department of Economic Development",
      "peppol_seller_peppolIdScheme": "0235",
      "peppol_buyer_peppolIdScheme": "0235",
      "peppol_buyerAccountingReference": "PO-88213"
    }
  }
}
```

Replace `source` with your onboarded `name:version`, and use an unused `documentNumber`. Keep `environment: "sandbox"` with a sandbox key. These values are specific to the UAE:

- **Document type.** The envelope’s `documentType` decides which rules apply. Complyance copies it into `payload.header.documentType`, replacing any value there. An ordinary invoice takes no modifier.
- **TRN and Peppol ID.** `taxIds` holds the 15-digit TRN, which starts with `1` and ends with `03` ([IBR-132-AE](https://docs.peppol.eu/poac/ae/pint-ae/trn-invoice/rule/ibr-132-ae/)). `peppolId` is the party’s 10-digit TIN, the first 10 digits of its TRN, with scheme `0235` in `extensions.peppol_seller_peppolIdScheme` and `extensions.peppol_buyer_peppolIdScheme`.
- **Trade licence.** A `TL` registration number needs the name of the authority that issued it, in `extensions.ae_seller_authorityName` or `extensions.ae_buyer_authorityName` ([IBR-101-AE](https://docs.peppol.eu/poac/ae/pint-ae/trn-invoice/rule/ibr-101-ae/)).
- **Addresses.** `stateOrProvince` is the emirate code, such as `DXB` or `AUH`, from the [UAE code lists](https://docs.complyance.io/countries/ae/code-lists/).
- **Lines.** `price` needs `grossPrice` and `baseQuantity` ([IBR-126-AE](https://docs.peppol.eu/poac/ae/pint-ae/trn-invoice/rule/ibr-126-ae/)). For the UAE, `lineTotal` is the line amount including VAT; `lineTaxableValue` is the amount before VAT. Complyance works out each line’s amounts in AED for you.
- **Payment.** `paymentMeansCode` takes a name from the UAE payment means list, such as `CREDIT_TRANSFER`.

The [UAE field reference](https://docs.complyance.io/countries/ae/fields/) lists every field, with its PINT AE business term.

## Send the request

Sandbox and production use the same host, `https://prod.gets.complyance.io`. The `"environment": "sandbox"` field in the request body is what sends this invoice to sandbox.

```bash title="Submit the UAE request to sandbox"
curl --request POST 'https://prod.gets.complyance.io/api/v3/unify' \
  --header "Authorization: Bearer ${COMPLYANCE_API_KEY}" \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'new-api: true' \
  --data @uae-invoice.json
```

## Read the response

HTTP `200` means the invoice passed validation and was stored. This response is illustrative: the real `Base64XML` holds the generated PINT AE invoice, not this short fragment.

```json title="Validated invoice — HTTP 200"
{
  "documentId": "01K5EXAMPLE00000000000142",
  "documentNumber": "INV-2026-0142",
  "message": "Your invoice was validated and is ready for submission.",
  "Base64XML": "PEludm9pY2U+PElEPklOVi0yMDI2LTAxNDI8L0lEPjwvSW52b2ljZT4="
}
```

If the request returns HTTP `422`, read every entry in `errors`. This one is the response to a request without `totals.amountDue`:

```json title="Document failed validation — HTTP 422"
{
  "documentId": "01K5EXAMPLE00000000000143",
  "documentNumber": "INV-2026-0142",
  "message": "Your invoice could not be validated. Review the errors and try again.",
  "validationStage": "gets",
  "errors": [
    {
      "code": "IBR-015",
      "getsPath": "totals.amountDue",
      "payloadPath": "totals.amountDue",
      "message": "An Invoice MUST have the Amount due for payment (ibt-115).",
      "severity": "error",
      "ruleSet": "ae:tax_invoice"
    }
  ]
}
```

Correct the field named by `getsPath`, then send the request again. [UAE validation rules](https://docs.complyance.io/countries/ae/validation-rules/) lists every rule. For `404`, compare `source` with the onboarded source name and version; for `401` or `403`, check the API key and that it belongs to sandbox. See [Unify errors](https://docs.complyance.io/api-reference/unify/errors/) for other statuses.

## Check the final status

A `200` does not confirm delivery. Follow the document by `documentId`, as described in [Submit and retrieve](https://docs.complyance.io/api-reference/unify/submit-and-retrieve/#follow-the-document), until `isTerminal` is `true`. This response is shortened: `government`, which holds the Peppol exchange’s answers, and `artifacts` are left out.

```json title="Accepted by the buyer's ASP and the FTA — HTTP 200"
{
  "success": true,
  "data": {
    "documentId": "01K5EXAMPLE00000000000142",
    "documentNumber": "INV-2026-0142",
    "country": "AE",
    "environment": "sandbox",
    "state": "final_valid",
    "isTerminal": true,
    "lastUpdatedAt": "2026-09-18T10:04:31.000Z",
    "errors": [],
    "validationResults": {
      "status": "Valid",
      "validationSteps": [
        { "name": "Validation Passed", "status": "Valid", "error": null },
        { "name": "Queue Admitted", "status": "Valid", "error": null },
        {
          "name": "Delivery Processing Started",
          "status": "Valid",
          "error": null
        },
        { "name": "Final Valid", "status": "Valid", "error": null }
      ]
    }
  }
}
```

`final_valid` means both the buyer’s ASP and the FTA accepted the e-invoice; see [the five corners](https://docs.complyance.io/countries/ae/#how-a-uae-e-invoice-travels-the-five-corners). `final_invalid` means one of them rejected it.

## Credit note

A credit note reduces an invoice you have already sent. It names the invoice in `header.referenceId`, with that invoice’s date in `extensions.peppol_precedingInvoiceIssueDate`, and gives a reason from the UAE credit note reasons in `extensions.ae_creditNoteReasonCode`, such as `GOODS_OR_SERVICES_RETURNED`. Only a credit note with reason `VOLUME_DISCOUNT` can leave out the invoice reference ([IBR-055-AE](https://docs.peppol.eu/poac/ae/pint-ae/trn-creditnote/rule/ibr-055-ae/)).

```json title="uae-credit-note.json"
{
  "country": "AE",
  "environment": "sandbox",
  "purpose": "invoicing",
  "source": "acme-erp:1.0.0",
  "documentType": { "base": "credit_note", "modifiers": [] },
  "payload": {
    "header": {
      "documentType": { "base": "credit_note", "modifiers": [] },
      "documentNumber": "CN-2026-0037",
      "uuid": "2a9d4e71-8c3b-4f06-a5e2-7b1c9d0f4e38",
      "issueDate": "2026-09-25",
      "currency": "AED",
      "referenceId": "INV-2026-0142"
    },
    "parties": {
      "seller": {
        "name": "Acme Trading LLC",
        "peppolId": "1234567890",
        "taxIds": [{ "type": "VAT", "value": "123456789000003" }],
        "registrationNumbers": [{ "type": "TL", "value": "CN-1234567" }],
        "address": {
          "addressLine1": "Sheikh Zayed Road",
          "addressLine2": "Business Bay",
          "city": "Dubai",
          "postalCode": "00000",
          "stateOrProvince": "DXB",
          "country": "AE"
        },
        "contact": {
          "name": "Accounts Receivable",
          "phone": "+97145551234",
          "email": "billing@acme.example"
        }
      },
      "buyer": {
        "name": "Gulf Hospitality LLC",
        "peppolId": "1009876543",
        "taxIds": [{ "type": "VAT", "value": "100987654300003" }],
        "registrationNumbers": [{ "type": "TL", "value": "CN-7654321" }],
        "address": {
          "addressLine1": "Corniche Road",
          "addressLine2": "Al Bateen",
          "city": "Abu Dhabi",
          "postalCode": "00000",
          "stateOrProvince": "AUH",
          "country": "AE"
        }
      }
    },
    "lineItems": [
      {
        "id": "1",
        "name": "Office chairs",
        "quantity": 2,
        "unitCode": "C62",
        "price": { "amount": 250, "grossPrice": 250, "baseQuantity": 1 },
        "lineTaxableValue": 500,
        "taxCategory": "S",
        "taxRate": 5,
        "taxAmount": 25,
        "lineTotal": 525,
        "commodityClassification": { "code": "940130", "scheme": "HS" }
      }
    ],
    "payment": {
      "paymentMeans": [
        {
          "paymentMeansCode": "CREDIT_TRANSFER",
          "creditTransferInfo": {
            "payeeFinancialAccountId": "AE070331234567890123456"
          }
        }
      ]
    },
    "taxTotals": [
      {
        "taxAmount": 25,
        "taxSubtotals": [
          {
            "taxableAmount": 500,
            "taxAmount": 25,
            "taxCategory": "S",
            "percent": 5
          }
        ]
      }
    ],
    "totals": {
      "totalLineTaxableAmount": 500,
      "totalAmountExcludingTax": 500,
      "totalTaxAmount": 25,
      "totalAmountIncludingTax": 525,
      "amountDue": 525
    },
    "extensions": {
      "ae_seller_authorityName": "Dubai Economy and Tourism",
      "ae_buyer_authorityName": "Abu Dhabi Department of Economic Development",
      "peppol_seller_peppolIdScheme": "0235",
      "peppol_buyer_peppolIdScheme": "0235",
      "peppol_buyerAccountingReference": "PO-88213",
      "peppol_precedingInvoiceIssueDate": "2026-09-18",
      "ae_creditNoteReasonCode": "GOODS_OR_SERVICES_RETURNED"
    }
  }
}
```

This request passes Unify’s validation as written. Send it and follow it the same way as the invoice.

Source: https://docs.complyance.io/countries/ae/examples/
