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:
- Your customer completes the ASP linkage with the Federal Tax Authority (FTA) for the environment you are testing in.
- 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
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.jsonReplace 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:
{
"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.
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
jq -e '.success == true and .data.readyForInvoicing == true' company-response.jsonThe command must print true. If it prints false, read data.mappingReadiness.code:
CONNECT_MAPPING_INELIGIBLE: the default mapping’s required test cases have not passed yet. Run them in the Testbed step of Default GETS Mapping, then find the company to check its readiness again.- Any other code: see Use the default UAE mapping.
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.