Transport control document (DeCA) and transport weight
New transport_documents resource with 17 endpoints to issue, modify, share and keep the Spanish digital control document for road freight, mandatory from 5 October 2026; 15 MCP tools, 10 transport_document.* events, 24 error codes and gross transport weight on products, variants, presentations and delivery notes.
From 5 October 2026 the administrative control document of Spanish public road freight transport must be digital. The public API now issues it: a PDF per version, served from a permanent public URL whose QR code travels with the driver, with the history the inspection needs. Everything is additive; no existing field changes meaning. See the Transport control document guide.
New transport_documents resource
| Operation | Endpoint |
|---|---|
List, with cursor and the filters status, transport_date[gte|lte], company_role, carrier_tax_id, delivery_note_id and q | GET /v1/transport_documents |
| Status catalog | GET /v1/transport_documents/statuses |
| Retrieve | GET /v1/transport_documents/{id} |
| Create a draft, optionally pre-filled from 1 to 50 delivery notes | POST /v1/transport_documents |
| Update or delete a draft | PUT / DELETE /v1/transport_documents/{id} |
| Issue (irreversible) | POST /v1/transport_documents/{id}/issue |
| Modify during the service, same URL and QR (irreversible) | POST /v1/transport_documents/{id}/modify |
| Close and reopen | POST /v1/transport_documents/{id}/close, /reopen |
| Cancel or mark as superseded by the carrier's document (irreversible) | POST /v1/transport_documents/{id}/cancel, /supersede |
| Email the copy to the carrier (irreversible) | POST /v1/transport_documents/{id}/send |
PDF of a version, QR code and issuance evidence (each entry with its actor_name, automatic closes as auto_closed, and the first 100 public downloads, with meta.downloads_total and meta.downloads_listed) | GET /v1/transport_documents/{id}/pdf, /qr, /evidence |
| Proof of issuance in PDF | GET /v1/transport_documents/{id}/issuance_proof |
New scopes: transport_documents:read, transport_documents:write,
transport_documents:delete and transport_documents:transition, also grantable
through OAuth. The PDF of each version enforces pdfs:read; the proof of issuance,
transport_documents:read, because it contains the issuance evidence.
The transport_documents module requires delivery_notes.
MCP, events and errors
- 15 MCP tools, one per operation except the QR code and the proof of issuance,
which stay binary REST downloads.
search_transport_documentstakes the sameqandsortas the REST list, andcreate_transport_documentdoes not takeid. See the tool catalog. - 10 events:
transport_document.created,.updated,.issued,.modified,.closed(withclose_modemanual or automatic),.reopened,.cancelled,.superseded,.email_sentand.email_failed. While a document is a draft, its parties follow changes to the linked contact and to your company data, and each refresh that changes something publishes.updated. See Events. - 24 error codes: the 22 of the new «Transport Documents» category, from
transport_document_not_issuable(witherror.details.missing) totransport_document_version_limit_reached,transport_document_pdf_too_largeandtransport_document_version_not_found(404 for a?version=Nthe PDF does not have), plusinvalid_gross_weight(also on the goods lines of a document) andgross_weight_not_allowedin Products. See the error catalog.
Limits and identifiers
- A document holds at most 50 versions, the last one reserved for cancelling or
superseding it; once it has 49,
modifyreturns422 transport_document_version_limit_reached. - Each version is a PDF of up to 5 MB (5,000,000 bytes). Issuing, modifying,
cancelling and superseding return
422 transport_document_pdf_too_largewithout saving anything when the PDF would be larger. - The server generates the
idof a document.shipments[].idis optional: on create, one already in use returns422onshipments.N.id; on update and modify, it only identifies a shipment of that document. A concurrent write that collides on an identifier returns409 resource_conflictand can be retried. UUIDs are normalised to lower case. - On create, a shipment that omits
origintakes your default loading place or your registered address; an explicit"origin": nullleaves it without origin. - The public URL is limited per token and network prefix (60 per minute by default) and per token (600 per minute by default), never by IP alone; unknown tokens count per network prefix. The public PDF does not show who made each version.
Gross transport weight in the catalog and on delivery notes
- Products, variants and fixed presentations accept
gross_weight_kgon create and update and publish it on read: kg per base unit on products and variants and per commercial unit on presentations. Omitting it on update keeps the current value andnullclears it. Services, mass base units (KGM,GRM) andvariable_measurepresentations reject it withgross_weight_not_allowed. - Delivery note lines freeze their weight when created or edited in draft and publish
it as
gross_weight_kg; the delivery note addstotal_gross_weight_kgandlines_without_weight_count. - Series accept the new type
transport_document(default codeDC); its series is created on the first issue.GET /v1/series/statscounts it.