Digitaldocu · Integración

API del DeCA

Para emitir documentos electrónicos de control administrativo desde tu propio sistema de gestión, sin teclear nada dos veces.

  1. Qué hace y qué no
  2. Cargador o transportista
  3. Tu clave
  4. Crear una expedición
  5. Adjuntar tu albarán
  6. Consultar el estado
  7. Que te avisemos al entregar
  8. Errores
  9. Límites

1Qué hace y qué no

Mandas los datos del transporte. Nosotros componemos el DeCA en PDF, le estampamos el código QR, le incrustamos los datos estructurados eFTI, lo firmamos digitalmente si tu suscripción tiene firma, lo archivamos en tu Digitaldocu y avisamos al conductor.

Te devolvemos su número de expedición y su identificador. A partir de ahí el documento vive en tu Digitaldocu como cualquier otro.

Solo si tu contrato lleva tope. Por defecto no hay tope: se mide el consumo, se avisa y el exceso se factura, pero se emite siempre. Si tu contrato sí lo lleva, agotar el volumen devuelve 402 volumen_agotado y no se emite hasta ampliarlo. Conviene que tu programa lo contemple: es el único error que no se arregla reintentando.

La API decide qué dice el DeCA. Tu suscripción decide cómo se emite. La firma digital, el aviso por SMS al conductor y la generación automática son ajustes de tu suscripción, no parámetros de la llamada. Se cambian desde el panel.

2Cargador o transportista

Un DeCA nombra siempre a las dos partes, así que la API pide los datos de las dos vengas de donde vengas. Lo que cambia es cuáles son tuyos:

Tus datos (los ponemos nosotros)Los de la otra parte (por envío)
Eres el cargador cargador, cargador_nif, cargador_domicilio transportista, transportista_nif
Eres el transportista transportista, transportista_nif cargador, cargador_nif, cargador_domicilio

Tus datos no hace falta que los mandes. Guárdalos una vez en el panel, en Los datos de tu empresa: dices de qué lado estás y los ponemos nosotros en cada DeCA. Si aun así los mandas en la petición, mandan los tuyos — lo guardado es solo el valor por defecto.

Merece la pena aunque tu programa pueda repetirlos: son los datos que no cambian nunca, y repetirlos mil veces son mil oportunidades de colar una errata. Un NIF mal escrito acaba impreso y firmado en un documento legal.

3Tu clave

Se crea desde el panel, en Claves para tu programa. Se enseña una sola vez: guárdala en cuanto la veas, porque ni nosotros podemos volver a mostrarla. Si se pierde, se revoca y se crea otra.

Authorization: Bearer deca_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

La clave identifica tu suscripción por sí sola: no hay que mandar ningún otro dato para decir quién eres. Solo sirve para lo que hay en este documento — no da acceso al resto de tus documentos de Digitaldocu.

4Crear una expedición

POST https://deca.digitaldocu.es/api/deca/v1/expediciones

Obligatorios

Son los que exige la norma (Orden FOM/2861/2012, art. 6). Si falta alguno no se emite nada y te decimos cuáles. Los de tu propia empresa puedes omitirlos si los has guardado en el panel (ver el punto 2).

CampoEjemplo
cargadorINDUSTRIAS EJEMPLO, S.L.Cargador contractual
cargador_nifB00000000
cargador_domicilioCalle Ejemplo 1, Valencia
transportistaTRANSPORTES EJEMPLO, S.L.Transportista efectivo
transportista_nifB11111111
origenValenciaLugar de carga
destinoMadridLugar de entrega
fecha2026-08-25aaaa-mm-dd
mercanciaPalés de mercancía general
peso17000 · 17,00 Tn · 1.500 kgCon unidad o sin ella
matricula1234BCDVehículo tractor

El peso admite la unidad que uses. Si mandas 17,00 Tn lo convertimos a 17.000 kg. Si mandas un número pelado lo tomamos por kilos. Y comprobamos que sea un peso razonable para un camión: por encima de 60 t avisamos, porque suele ser un error de unidad.

Opcionales

Campo
conductorNombre del conductor
movilSu móvil, para el aviso
remolqueMatrícula del remolque
bultosTexto libre: 15, 26 big-bags
clienteDestinatario, si no es el del destino

No emitas dos veces lo mismo

Manda tu propia referencia en la cabecera Idempotency-Key —tu número de expedición sirve—. Si repites la llamada porque se te cayó la red y no viste la respuesta, te devolvemos el mismo documento en vez de emitir otro.

curl -X POST https://deca.digitaldocu.es/api/deca/v1/expediciones \
  -H "Authorization: Bearer $DECA_KEY" \
  -H "Idempotency-Key: ALB-2026-000123" \
  -H "Content-Type: application/json" \
  -d '{
    "cargador": "INDUSTRIAS EJEMPLO, S.L.",
    "cargador_nif": "B00000000",
    "cargador_domicilio": "Calle Ejemplo 1, Valencia",
    "transportista": "TRANSPORTES EJEMPLO, S.L.",
    "transportista_nif": "B11111111",
    "origen": "Valencia",
    "destino": "Madrid",
    "fecha": "2026-08-25",
    "mercancia": "Palés de mercancía general",
    "peso": "17,00 Tn",
    "matricula": "1234BCD",
    "conductor": "Juan Ejemplo",
    "movil": "600000000"
  }'
201 Created

{ "ok": true,
  "documentId": 123456,
  "expedicion": "DECA-20260825-A1B2C3" }

Si repites con la misma Idempotency-Key:

{ "ok": true, "repetida": true,
  "documentId": 123456,
  "expedicion": "DECA-20260825-A1B2C3" }

5Adjuntar tu albarán

POST /api/deca/v1/expediciones/{expedicion}/adjuntos

Para colgar del DeCA el documento de origen: tu albarán, tu CMR, el tique de báscula. Queda enlazado al DeCA y no se lo enseñamos al destinatario salvo que alguien lo comparta a mano desde el panel — suele llevar datos del cargador que el receptor no tiene por qué ver.

curl -X POST \
  "https://deca.digitaldocu.es/api/deca/v1/expediciones/DECA-20260825-A1B2C3/adjuntos" \
  -H "Authorization: Bearer $DECA_KEY" \
  -F "tipo=albaran" \
  -F "file=@albaran-000123.pdf"

Valores de tipo: albaran, cmr, foto_carga, ticket_bascula, packing_list, otros.

Manda el fichero como multipart/form-data, no en base64 dentro de un JSON. Base64 infla el fichero un tercio, y con el tope de 4 MB por adjunto eso es justo lo que decide si tu albarán entra o no. Aceptamos JSON con fileBase64 si lo tienes más a mano, pero el multipart es mejor.

6Consultar el estado

GET /api/deca/v1/expediciones/{expedicion}
{ "ok": true,
  "expedicion": "DECA-20260825-A1B2C3",
  "documentId": 123456,
  "estado": "En tránsito",
  "entregado": false,
  "fechaFirma": null,
  "matricula": "1234BCD",
  "conductor": "Juan Ejemplo",
  "origen": "Valencia",
  "destino": "Madrid",
  "adjuntos": 1,
  "enlace": "https://backend.digitaldocu.com/api/Documents/Share/…" }

El enlace es el mismo al que apunta el QR del documento. Caduca, así que no lo guardes: pídelo cuando lo necesites.

7Que te avisemos al entregar

En vez de preguntar cada poco por cada expedición, dinos una dirección y te llamamos nosotros cuando el destinatario firma. Se configura en el panel, en Avisar a tu sistema.

POST https://erp.tuempresa.com/webhooks/deca
X-DeCA-Evento: entrega_firmada
X-DeCA-Firma:  sha256=a1b2c3…

{ "evento": "entrega_firmada",
  "documentId": 123456,
  "expedicion": "DECA-20260825-A1B2C3",
  "matricula": "1234BCD",
  "firmado_at": "2026-08-25 14:32",
  "firmante": "Ana Ejemplo",
  "firmante_nif": "00000000T",
  "incidencias": null,
  "observaciones": null }

Comprueba que el aviso es nuestro

La cabecera X-DeCA-Firma es el HMAC-SHA256 del cuerpo, con el secreto que verás en el panel al configurar la dirección. Compáralo antes de fiarte del mensaje:

# Python
import hmac, hashlib
esperado = "sha256=" + hmac.new(
    SECRETO.encode(), cuerpo_en_bruto, hashlib.sha256
).hexdigest()
if not hmac.compare_digest(esperado, cabecera_firma):
    return 401

8Errores

CódigoQué pasaQué hacer
401Clave ausente, mal escrita o revocadaRevisa la cabecera
400 campos_incompletosFaltan obligatoriosMira faltan
404 no_encontradaEsa expedición no existeRevisa el número
402 volumen_agotadoSe acabó el volumen de tu suscripciónEscríbenos para ampliarlo
409 entregadaYa está firmada y cerradaNo admite cambios
413 demasiado_grandeEl adjunto pasa de 4 MBComprímelo
503Servicio no disponibleReintenta

Cuando faltan datos te decimos exactamente cuáles, para que puedas programar contra ello:

400 Bad Request

{ "error": "faltan datos obligatorios del DeCA",
  "code": "campos_incompletos",
  "faltan": ["cargador_nif", "origen", "peso"],
  "avisos": [
    { "campo": "cargador_nif",
      "nivel": "falta",
      "motivo": "obligatorio: no viene en la petición" }
  ] }

9Límites

Adjunto4 MB por fichero
FormatosPDF e imágenes
Claves activas10 por suscripción
Peso admitidoHasta 60 t (por encima, avisamos)

Un DeCA entregado es registro legal y no se toca. Una vez que el destinatario ha firmado la recepción, esa expedición no admite documentos nuevos ni modificaciones. Si te equivocaste, emite otra.