Chapter 02 of 06 · UAE

Onboard your customer

Create your customer’s UAE company and first source in sandbox. You need the API key from the previous chapter and your customer’s ASP authorization.

Ask your customer to authorize Complyance

A UAE company can be onboarded only after it has named Complyance as its accredited service provider (ASP), the provider that exchanges its e-invoices. Your customer does this, not you:

  1. Your customer completes the ASP linkage with the Federal Tax Authority (FTA) for the environment you are testing in.
  2. They tell you the 10-digit tax identification number (TIN) and the administrator email they used. The TIN is not the 15-digit VAT number.

You send exactly that TIN and email in the next step. Complyance looks for the pending linkage that matches them. Prepare a UAE company for onboarding has the details.

Send the onboarding request

Create the customer and save the responsebash
curl --request POST 'https://prod.gets.complyance.io/v3/connect/companies' \
  --header "X-API-Key: ${COMPLYANCE_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
    "sourceName": "acme-dubai",
    "sourceVersion": "v1",
    "countryCode": "AE",
    "tin": "1234567890",
    "contactPersonEmail": "finance@example.com",
    "contactPersonName": "Alex Morgan",
    "branchName": "Dubai",
    "platformEnvironment": "sandbox"
  }' \
  --output company-response.json

Replace the sample tin and contactPersonEmail with your customer’s. Every field is explained in Onboard a UAE company through Connect.

You should see HTTP 201. company-response.json looks like this, with your own values:

company-response.jsonjson
{
  "success": true,
  "data": {
    "companyId": "66b9f0a1c2d3e4f567890123",
    "sourceId": "01JABCDEF1234567890SOURCE",
    "branchId": "66b9f0b2c2d3e4f567890456",
    "userGivenBranchId": "acme-dubai",
    "peppolParticipantId": "0235:1234567890",
    "legalName": "Acme Trading LLC",
    "tin": "1234567890",
    "sourceName": "acme-dubai",
    "sourceVersion": "v1",
    "countryCode": "AE",
    "branchName": "Dubai",
    "platformEnvironment": "sandbox",
    "readyForInvoicing": true,
    "mappingReadiness": {
      "status": "READY",
      "templateId": "example-default-mapping"
    }
  },
  "meta": {
    "requestId": "01JABCDEF1234567890REQUEST",
    "timestamp": "2026-10-01T09:00:00.000Z",
    "workspaceId": "66b9e000c2d3e4f567890000"
  }
}

The company’s Peppol ID is 0235: followed by its TIN.

Save the source

Set COMPLYANCE_SOURCE to the returned source name and version. Store the company and branch identifiers in your application too.

Keep the source for the next chapterbash
export COMPLYANCE_SOURCE="$(jq -er '.data | .sourceName + ":" + .sourceVersion' company-response.json)"

This uses jq, a command-line JSON tool. Keep the key and the saved response out of source control.

Confirm readiness

Check before preparing the invoicebash
jq -e '.success == true and .data.readyForInvoicing == true' company-response.json

The command must print true. If it prints false, read data.mappingReadiness.code:

If something goes wrong

ASP_LINKAGE_NOT_FOUND: no pending linkage matches the TIN and email you sent. Check both with your customer. If they have not completed the linkage for this environment yet, ask them to.

Anything else, or no response: see Onboard a UAE company through Connect. Do not send the request again before you have checked whether the company already exists.


03 Next: prepare an invoice Build the invoice payload for your UAE customer.