Customer API
Connect your ERP system directly to Feronix — REST, JSON over HTTPS, tenant-bound, with idempotency and pre-validation.
Data submitted via the API is cleared by Feronix under its own EORI and own deferment accounts. You as a customer submit delivery and shipment data; Feronix handles the customs declaration as declarant and representative. Goods are delivered directly to the Feronix warehouse.
When to use the API
The Customer API is the path for automated transfer from ERP systems (SAP, Microsoft Dynamics, Odoo, Oracle) and for all integration scenarios in which you want to transfer deliveries, parcel manifests, shipment data and documents automatically. It replaces manual entry in the portal and enables end-to-end automation from ERP to customs. The submitted deliveries are destined for the Feronix warehouse; Feronix acts as declarant and representative in the customs procedure.
Supported input formats
- Structured REST payloads — JSON over HTTPS
- JSON — for individual data and smaller bundles
- CSV — for bulk data import
- NOVA-POSHTA delivery bundles — in the NOVA format, item lines are consolidated by parcel number into physical parcels and their underlying goods items
Conflicting parcel master data, duplicate or missing assignments, invalid amounts, weights, HS codes and address components are detected before creation.
Authentication
curl -H 'X-Api-Key:' \ -H 'Accept-Language: de' \ https://atlas.feronix.tech/customer/me
The key determines the tenant on the server side. A customer_id
in the body must never extend this scope. Supported languages:
de, en, fr, es, zh, ru, uk.
What you can control via the API
- Create delivery
- Transmit delivery and transport data
- Import parcel list or item-based manifest
- Consolidate parcels and goods items
- Upload and assign invoices, value evidence, T1 and other documents
- Retrieve validation
- Submit IMPOST declaration explicitly
- Query status, errors, messages and documents
- Correct erroneous data and resubmit with a new message number
Recommended sequence
- Define T1 case — if an existing transit procedure
exists, first
POST /warehouse/delivery-documents/t1. If a new T1 should be created, sett1_mode=createin the delivery. - Create delivery —
POST /warehouse/delivery-manifestsfor delivery including deadline and complete parcel list. - Upload value evidence —
POST /warehouse/value-evidencefor invoice/value evidence. - Pre-validation —
POST /customer/shipments/validatefor pre-checking. A successful validation sends nothing to customs yet. - Create shipment —
POST /customer/shipmentsto create/submit according to payload. - Track status —
GET /customer/shipments/{lrn}and customs process viaGET /customer/declarations/{lrn}. - Generate T1 — with
t1_mode=createafter complete entry, generate the T1 viaPOST /warehouse/deliveries/{delivery_number}/t1-xml.
Idempotency
Idempotency keys prevent duplicate creation on network or scanner retries. A logically identical retry must use the same external reference or idempotency identifier. A corrected resubmission receives a new ATLAS message number. Timeout is not the same as rejection — before retrying, check whether the request was accepted and only the response was lost.
Core endpoints
| Method | Endpoint | Purpose |
|---|---|---|
| POST | /warehouse/delivery-manifests | Create delivery and parcels atomically (delivery to Feronix warehouse) |
| POST | /warehouse/value-evidence | Upload value evidence |
| POST | /customer/shipments/validate | Pre-validation (sends nothing to customs) |
| POST | /customer/shipments | Create/submit shipment |
| GET | /customer/shipments/{lrn} | Shipment status |
| GET | /customer/shipments/{lrn}/impost-xml | Export IMPOST-XML (ICOMDA) |
| GET | /customer/shipments/{lrn}/standard-clearance/dossier.pdf | Customs dossier PDF |
| GET | /customer/shipments/{lrn}/standard-clearance/dossier.zip | Customs dossier ZIP |
| POST | /customer/shipments/{lrn}/standard-clearance/atlas-xml | Generate DECDFA-XML |
| GET | /customer/declarations/{lrn} | Customs process with messages and decision |
| POST | /customer/declarations/{lrn}/resubmit | Corrected resubmission |
| POST | /customer/suma/xml | Export SumA-XML |
| POST | /warehouse/transit-orders | Create transit order |
| POST | /warehouse/transit-orders/{id}/xml | Generate T1-XML (DETPDD) |
| POST | /customer/customs-xml/validate | Validate XML against original XSD |
| GET | /customer/me | Tenant profile |
| GET | /customer/me/identities | Customs identities (EORI/NL) — Feronix customs identities under which Feronix acts as declarant, not your own |
| GET | /customer/me/mandates | Representation mandates — Mandates under which Feronix acts as representative for you in customs proceedings |
| GET | /customer/reference/hs-search | HS code search |
Error codes
API errors contain HTTP status, a stable error code, localised text and, where possible, the affected field path.
| Status | Meaning | Action |
|---|---|---|
| 400 | Request technically unreadable | Check JSON, charset or file |
| 401 | API key missing or invalid | Send X-Api-Key of the correct tenant |
| 403 | Permission missing | Check user role or API approval |
| 404 | Object not found in tenant | Check LRN, delivery number, barcode and tenant |
| 409 | Logical conflict | Correct status, uniqueness or dependent data |
| 422 | Required field/dependency violated | Process field-specific hints completely |
| 500/502/503 | Technical error | Do not blindly resend — retry with the same idempotency key |