Declaration actions
Once a declaration is created, there are a number of actions that can be executed on the declaration.
For example, in case the automatic submission is disabled in the customs flow step configuration, it is possible to trigger the submission of a declaration to customs by executing the Submit action using the following API call:
https://api-<env>.customs4trade.com/v1/declarations/<declarationId>/submit
The most efficient way to retrieve the declarationId, the unique internal ID for a declaration which is needed to invoke any declaration action through the API, is through a webhook event as described in Notifications.
However, it is also possible to search for a declaration based on a number of criteria (e.g. your own reference for the customs shipment externalReference) by using the Search declarations endpoint.
Not all actions are available for every declaration status. For example, Goods Arrived only applies to pre-lodge declarations.
More info can be found with the individual actions
| Action | Description |
|---|---|
| Goods Arrived | Trigger presentation notification upon goods arrival for pre-lodge declarations. Declaration type will move from D to A |
| Invalidate | Invalidate declaration from an allowed status by providing a reason for the invalidation. |
| Submit | Submit a declaration to customs (relevant when auto-submit is not configured, or after validation errors have been corrected) |
| Validate | Explicitly run the CAS validations |
| Generate SAD | Trigger the single administrative document (SAD) PDF creation |
| Receipt Report | Submit report of receipt for an excise movement |
| Complementary Explanation | Submit complementary explanations for a declaration |
| Change Destination | Trigger a change of destination for an EMCS excise declaration (splits the declaration and submits the change) |
| Reject or Alert EAD | Reject or alert the electronic administrative document (EAD) for excise movements |
| Delay for Delivery | Submit a delay for delivery notification for an EMCS excise movement |
All actions are invoked with POST /v1/declarations/{declarationId}/{action} and return 202 Accepted on success or 404 Not Found if the declaration does not exist. Actions that do not require a request body (Goods Arrived, Submit, Validate, Generate SAD) can be called with an empty body.
Scope: create:messages
Action request bodies
Some actions require a request body containing additional parameters. Below are the details for each.
Invalidate
Provide a reason for the invalidation:
{
"reason": "Incorrect commodity code submitted, declaration needs to be corrected and resubmitted"
}
Receipt Report
Submit a report of receipt for an inbound EMCS excise movement. The report includes a global conclusion at the shipment level and optionally item-level details:
{
"exciseGoodsShipment": {
"destinationOfficeCode": "GB000060",
"exciseMovement": {
"reportOfReceipt": {
"dateOfArrivalOfExciseProducts": "2026-03-20T10:30:00Z",
"globalConclusionOfReceipt": "1",
"complementaryInformation": "All goods received in good condition",
"complementaryInformationLanguage": "en"
}
}
},
"governmentAgencyGoodsItems": [
{
"casReference": "item-cas-ref-001",
"commodity": {
"itemId": "ITEM-001"
},
"exciseGoodsItem": {
"bodyReportOfReceipt": {
"indicatorOfShortageOrExcess": "S",
"observedShortageOrExcess": 2.5,
"exciseProductCode": "W200",
"refusedQuantity": 0,
"unsatisfactoryReasons": []
}
}
}
]
}
Global conclusion of receipt codes:
1-- Receipt accepted and satisfactory2-- Receipt accepted although unsatisfactory3-- Receipt refused4-- Receipt partially refused
Indicator of shortage or excess: S (shortage) or E (excess).
Complementary Explanation
Submit complementary explanations for a declaration, typically after a shortage or excess has been reported. A global explanation is required:
{
"exciseGoodsShipment": {
"analysis": {
"globalExplanation": "Discrepancy in declared quantities due to measurement conversion at dispatch",
"globalExplanationLanguage": "en"
}
},
"governmentAgencyGoodsItems": [
{
"casReference": "item-cas-ref-001",
"exciseGoodsItem": {
"bodyAnalysis": {
"explanation": "Quantity difference caused by temperature-related volume change during transport",
"explanationLanguage": "en",
"actualQuantity": 998.50
}
}
}
]
}
Change Destination
Trigger a change of destination for an EMCS excise movement. This action splits the declaration and submits the change to the relevant customs authority:
{
"invoice": {
"date": "2026-03-20",
"number": "INV-2026-0042"
},
"exciseGoodsShipment": {
"headerEadEsad": {
"destinationTypeCode": 1,
"journeyTime": "D02"
},
"transportMode": {
"transportModeCode": 3,
"complementaryInformation": "Road transport via highway",
"complementaryInformationLanguage": "en"
},
"consigneeTrader": {
"name": "New Consignee Ltd",
"address": {
"street": "456 New Street",
"city": "Brussels",
"zipCode": "1000",
"country": "BE"
},
"businessPartnerReferences": [
{
"type": "Eori",
"code": "BE0123456789"
}
]
},
"deliveryPlaceTrader": {
"name": "Warehouse Brussels",
"address": {
"street": "789 Warehouse Road",
"city": "Brussels",
"zipCode": "1000",
"country": "BE"
}
},
"transportDetails": [
{
"transportUnitCode": 1,
"identityOfTransportUnits": "ABC-123",
"commercialSealIdentification": "SEAL-98765"
}
],
"movementGuarantee": {
"guarantorTypeCode": 1,
"guarantorTraders": [
{
"name": "Guarantor Company NV",
"businessPartnerReferences": [
{
"type": "Eori",
"code": "BE9876543210"
}
]
}
]
}
}
}
Reject or Alert EAD
Reject or raise an alert on the electronic administrative document (e-AD) for an inbound excise movement:
{
"destinationOfficeCode": "GB000060",
"eadEsadRejectedFlag": true,
"alertOrRejectionOfMovementReasonCode": "2",
"complementaryInformation": "Received goods do not match the ordered product specification",
"complementaryInformationLanguage": "en"
}
Reason codes:
0-- Other1-- The e-AD/e-SAD does not concern the consignee/recipient2-- The products do not correspond with the order3-- The quantities do not correspond with the order
Set eadEsadRejectedFlag to true to reject, or false to only raise an alert.
Delay for Delivery
Submit a delay for delivery notification for an EMCS excise movement when goods cannot be delivered within the expected timeframe:
{
"explanationCode": "1",
"messageRole": "1",
"complementaryInformation": "Transport delayed due to adverse weather conditions on route",
"complementaryInformationLanguage": "en"
}
Explanation codes:
0-- Other1-- Commercial problems2-- Strike or other labour dispute3-- Severe weather conditions4-- Accident or incident on route5-- Inspection by customs or other authority
For HTTP status codes and error response formats, see Error handling.