Webhook Event Types
Webhook Types
The UAE API currently uses these event types:
legal_entity.synchronized: a legal entity has been linked, re-verified, unlinked or its receiving capabilities have been synced to Peppol with a manual sync.document.received: an incoming invoice or credit note is available.document.delivered: an outgoing invoice or credit note has completed delivery.
Subscribe only to the events your application handles. The API Reference remains the source of truth for the supported event catalogue and payload contract.
Onboarding Events
The taxpayer starts the onboarding on EmaraTax and completes it on the A-Cube onboarding page, without an A-Cube login. A-Cube sends legal_entity.synchronized to the account that owns the legal entity, so you don't have to check the status by hand.
The event is sent once, when the whole action has completed and the central registry has been updated:
action | Status before | Status after | Meaning |
|---|---|---|---|
LINK | Reserved | Active | The taxpayer linked the TIN to A-Cube. |
REVERIFY | Active | Active | The taxpayer data has been refreshed. |
DELINK | Active | Inactive | The taxpayer removed the link to A-Cube. |
If a step fails, no event is sent. Events are sent only to the webhooks of the account that owns the legal entity.
The same event is also sent after POST /legal-entities/{legalEntityId}/sync. In this case action is SYNC.
{
"eventId": "019e91b7-f799-7df7-a469-4824b2656b0e",
"eventType": "legal_entity.synchronized",
"legalEntityId": "019e91b7-0a3c-7b1e-9f2d-5c8a1b4e6d70",
"tin": "1758250844",
"name": "Legal Entity Name",
"status": "Active",
"action": "LINK",
"timestamp": "2026-08-14T06:19:14+00:00"
}
| Field | Description |
|---|---|
legalEntityId | Identifier of the legal entity. |
tin | Tax Identification Number of the taxpayer. |
name | English name of the taxpayer, as registered in EmaraTax. |
status | Status of the legal entity after the action. |
action | LINK, REVERIFY or DELINK; SYNC when the event comes from a manual sync. |
timestamp | When the event was created, in ISO 8601 format. |
To read the full current state, call GET /legal-entities/{legalEntityId} and check its status, enabled capabilities, and synchronization timestamps.
The event tells you that something changed; the legal entity resource tells you the current state.
Invoice Lifecycle & Events
Document processing is asynchronous. A successful POST creates the resource first; validation, Peppol exchange, and tax reporting continue afterwards.
- For outgoing documents, use
document.deliveredand the document status to confirm delivery. - For incoming documents, use
document.receivedto retrieve and import the new resource. - If a webhook is delayed, use the collection and detail endpoints as a fallback.
Keep exchange and tax reporting as separate status concepts. A document may be delivered while tax reporting is still processing, or one of the two operations may fail independently.