Sandbox live at api.eftisandbox.app

One API for eCMR, ePOD and eFTI.

Cargofollow is the developer-first infrastructure for electronic freight documents in the EU. One POST /v1/shipments creates the e-consignment note, handles signatures and delivery, and produces the eFTI dataset in the shape Regulation (EU) 2020/1056 prescribes.

Create a shipment
$ curl https://api.eftisandbox.app/v1/shipments \
    -H "Authorization: Bearer sk_test_…" \
    -H "Content-Type: application/json" \
    -d '{
      "reference": "ORD-2026-0917",
      "consignor": { "name": "Van der Berg Logistiek B.V.",
                     "address": { "city": "Rotterdam", "country": "NL" } },
      "carrier":   { "name": "Transport Nowak Sp. z o.o.",
                     "address": { "city": "Poznań", "country": "PL" } },
      "consignee": { "name": "Müller Maschinenbau GmbH",
                     "address": { "city": "Stuttgart", "country": "DE" } },
      "goods": [{ "description": "CNC machine parts", "quantity": 12,
                  "package_type": "pallet", "gross_weight_kg": 8400 }]
      // … pickup, delivery, vehicle, driver
    }'

HTTP/1.1 201 Created
{
  "id": "shp_01K4ZQ4G8ZJ6T3N9R7W2XVB5CD",
  "status": "draft",
  "transport_type": "international",
  "warnings": []
}

Validated against the schema and the business rules (ADR, cabotage, international carriage). Errors come back as readable problem+json, in English or Dutch.

How it works

Three steps from TMS to signed consignment note.

Your software talks to one REST API. Cargofollow takes care of the documents, the signatures and the evidence.

  1. Create the shipment

    POST /v1/shipments with consignor, carrier, consignee and goods. Schema and business-rule errors come straight back, with the field and an explanation.

  2. Issue and sign

    Issuing renders the eCMR as a PDF, version 1. Consignor, driver and consignee sign on their own phone through a link or QR code. No app to install.

  3. Evidence and webhooks

    Every step is an event in a hash chain. Your TMS receives shipment.delivered and signature.completed as webhooks, with the ePOD, photos and remarks.

Features

Built the way you expect a payments API to work.

Test keys, a public OpenAPI specification, idempotent requests and webhooks with retries. So an integration takes an afternoon, not a quarter.

OpenAPI-first

The full specification lives at /openapi.json, with an interactive reference. SDKs for TypeScript and .NET are generated from it.

Sandbox with test keys

Build with sk_test_ keys against the same API as production. Sandbox shipments walk through pickup, transit and delivery on their own.

Business rules built in

ADR requires a UN number, cabotage a different carrier country, international carriage both countries. Errors block, warnings ride along.

Signatures with evidence

Draw on screen, click with an OTP, sign through the API or attach a photo of paper. Every signature binds the document hash, with time, IP and device.

Webhooks with retries

HMAC-signed, eight attempts over 24 hours, a full delivery log and replay per event.

eFTI dataset from the same shipment

The canonical model is projected onto the CMDS (consignment-common.xsd), with subsets for cabotage, combined transport and dangerous goods.

eCMR & eFTI

eCMR is not eFTI. We do both.

Two legal frameworks, one shipment model. Documents and the audit log stay in the EU.

eCMR: the commercial document

The electronic consignment note under the e-CMR Protocol: the contract between consignor, carrier and consignee, signed at pickup and delivery. The Netherlands, Germany, France, Poland and most other member states have ratified the protocol.

eFTI: the information for enforcement

Regulation (EU) 2020/1056 defines which transport information authorities must accept digitally: cabotage, combined transport, dangerous goods and waste shipments. It runs through certified eFTI platforms and national gates.

eFTI-ready, and what that does and does not mean

Certification of eFTI platforms runs through an accredited conformity assessment body, and the rules for it have not been adopted yet — the European Commission expects them by December 2026. Nobody is a certified eFTI platform today, and neither are we. What we are:

  • The canonical shipment model is the EU common data set (DR 2024/2024), not an export bolted on afterwards.
  • Subsets are projected and validated against consignment-common.xsd: cabotage, combined transport, ADR and the national subsets.
  • The UIL and the data set lifecycle from Implementing Regulation (EU) 2025/2243 are implemented.
  • The coupling to a national gate is specified against the EFTI4EU reference implementation and is waiting on registration.

What is missing is stated just as plainly: no certification, no Access Point in production, and no eID login at eIDAS assurance level advanced. We track how far along we are requirement by requirement.

An indication, not an offer

A fixed amount per month and a price per consignment note.

The tiers below are a concept: they show the order of magnitude and the ratios we plan with, not a price you can sign today. The final rates are in the contract.

Sandbox

€0per month

€0per shipment (eCMR + ePOD)

  • Everything in test mode, with no time limit
  • Auto-mode shipments that sign themselves
  • A conformance checklist per organisation

Scale

€499 – €1,500per month

€0.60per shipment (eCMR + ePOD)

  • Every provider, routing per corridor
  • An availability SLA
  • 90 days of request logs
  • Support on the SDKs

Enterprise

On requestper month

Tieredper shipment (eCMR + ePOD)

  • A D1 shard of your own
  • Retention to measure
  • iSHARE/BDI and AdES/QES
  • Dedicated support

The price per shipment does not depend on which provider issues the consignment note in the end: provider costs sit in the margin or are charged per corridor, and the console shows which. For comparison, eCMR providers charge carriers roughly €1.33 to €2.00 per consignment note.

The questions everyone asks

eCMR, eFTI and what 2027 means.

Five answers up front. If your question is not among them, use the form below.

What is the difference between eCMR and eFTI?

An eCMR is the transport document itself: the electronic consignment note under the e-CMR protocol, carrying the signatures of consignor, carrier and consignee. eFTI is not about the document but about sharing it with the authorities — Regulation (EU) 2020/1056 sets out the format in which an authority may request data and which fields it contains. So you need both: the eCMR to arrange the transport, the eFTI dataset to be able to show that data to an inspector.

What changes on 9 July 2027?

From that date, authorities in the EU are required to accept electronic freight information when it is offered through a certified eFTI platform. It is not an obligation to go electronic — paper is still allowed — but it is the moment "we only accept paper" stops being an answer. For a TMS it means the eFTI projection has to exist before that date.

Are you a certified eFTI platform?

No, and nobody else is today either. Certification runs under Article 12 of Regulation (EU) 2020/1056 through a conformity assessment body accredited by a member state, and the scheme that body would assess against does not exist yet: the European Commission expects the remaining rules by December 2026. That is why we call Cargofollow eFTI-ready and not certified. The difference is not wordplay — the acceptance obligation of 9 July 2027 applies to data offered through a certified platform, so certification is the final piece. We track what is in place and what is still missing, requirement by requirement.

Which countries does this work in?

The eFTI regulation applies across the EU. For the eCMR it differs per country, because the e-CMR protocol is ratified country by country; Cargofollow keeps a register of what a lane requires and returns it from the requirements endpoint and in the validator. Countries with a national subset — waste transport, for instance — get that subset added automatically.

Do we have to give up our own eCMR provider?

No. Cargofollow writes to the provider you already use and keeps the eFTI dataset alongside it. Which provider issues a shipment changes nothing about the model you post and nothing about the price per shipment.

One form, one mailbox

Ask us anything.

We read everything ourselves. Tell us what you are building and what you expect from an integration, and we will know whether it fits before anyone spends time on a pilot.

Your message goes straight to our mailbox and is not stored anywhere. We use your address only to reply.

Start building against the sandbox today.

The API reference runs at api.eftisandbox.app. Test keys, example shipments and webhooks, without production risk.