Ir al contenido
Documentación

Negocio

Ejecutar un archivo de pruebas de certificación

POST
/v1/business/certification/test-runs
curl --request POST \
--url https://api.timbro.do/v1/business/certification/test-runs \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'idempotency-key: example' \
--data '{ "kind": "ecf", "testSetId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "confirmation": { "statementVersion": "2026-10-21", "language": "es" } }'

Timbro firma cada caso del archivo de pruebas guardado (kind ecf para el paso 2 de la DGII, acecf para el paso 3) con el certificado de firma del negocio que Timbro custodia, y lo envía a la DGII en el orden del archivo, hasta el primer rechazo. Llámala solo mientras la certificación del negocio incluya la acción run_test_set; si no, responde business_certification_unavailable. El representante debe confirmar la declaración, y la confirmación se registra con el actor, la hora y el hash de la declaración antes de consultar a Timbro. Solo una persona o una clave de administrador puede confirmar, no un agente. Debe existir un archivo guardado de ese tipo; si no, responde business_certification_test_set_required. Si otro archivo más reciente reemplazó al que indica testSetId, responde business_certification_test_set_changed y no ejecuta nada. Un reintento con la misma clave de idempotencia (Idempotency-Key) y el mismo cuerpo devuelve la misma ejecución; una ejecución nueva requiere una confirmación y una clave nuevas. Una ejecución es evidencia para el negocio y para el equipo, no una decisión de la DGII: nunca cambia el estado de un paso. Consulta el resultado con retrieveBusinessCertificationTestRun.

idempotency-key
obligatorio
string
>= 1 characters <= 255 characters /^[\x20-\x7e]+$/
Media typeapplication/json
object
kind
obligatorio
Cualquiera de:
string
Valor permitido: ecf
testSetId
obligatorio

El id del archivo guardado que vio el representante. Si un archivo más reciente de ese tipo lo reemplazó, la operación responde business_certification_test_set_changed y no ejecuta nada.

string format: uuid
confirmation
obligatorio

La declaración que el representante leyó y aceptó para este archivo. {business} es la razón social del negocio. Envía una clave de idempotencia (Idempotency-Key) nueva para cada confirmación. 2026-10-21, es: “Autorizo a Timbro a firmar con el certificado digital de {business} y a enviar a la DGII los casos de prueba de este archivo.” 2026-10-21, en: “I authorize Timbro to sign with {business}’s digital certificate and send the test cases in this file to DGII.”

object
statementVersion
obligatorio
Cualquiera de:
string
Valor permitido: 2026-10-21
language
obligatorio
Cualquiera de:
string
Valor permitido: es

Una ejecución de un archivo de pruebas de la DGII que Timbro guardó. Timbro firma cada caso con el certificado que custodia para el negocio y lo envía a la DGII en el orden del archivo, hasta el primer rechazo. refused significa que no se pudieron construir los documentos del archivo y no se envió nada; refusal indica la hoja, la fila y la columna, nunca el texto de la celda. consumerInvoices lista las facturas de consumo firmadas (E32) que subes en el cuadro del paso 2 del portal de la DGII, y queda vacía para acecf. Una ejecución es evidencia, no una decisión de la DGII: nunca cambia el estado de un paso.

Media typeapplication/json
Campos y códigos de la respuesta

Una ejecución de un archivo de pruebas de la DGII que Timbro guardó. Timbro firma cada caso con el certificado que custodia para el negocio y lo envía a la DGII en el orden del archivo, hasta el primer rechazo. refused significa que no se pudieron construir los documentos del archivo y no se envió nada; refusal indica la hoja, la fila y la columna, nunca el texto de la celda. consumerInvoices lista las facturas de consumo firmadas (E32) que subes en el cuadro del paso 2 del portal de la DGII, y queda vacía para acecf. Una ejecución es evidencia, no una decisión de la DGII: nunca cambia el estado de un paso.

object
object
obligatorio
string
Valor permitido: certification_test_run
id
obligatorio
string format: uuid
attemptReference
obligatorio
string
>= 1 characters
kind
obligatorio
Cualquiera de:
string
Valor permitido: ecf
testSetId
obligatorio
string format: uuid
status
obligatorio
Cualquiera de:
string
Valor permitido: running
failureMessage
obligatorio
Cualquiera de:
string
createdAt
obligatorio
string format: date-time
completedAt
obligatorio
Cualquiera de:
string format: date-time
counts
obligatorio
Array<object>
object
documentType
obligatorio

Un tipo de e-CF del 31 al 47, RFCE o ACECF.

string
total
obligatorio
integer
accepted
obligatorio
integer
rejected
obligatorio
integer
cases
obligatorio
Array<object>
object
sourceRow
obligatorio

La fila del archivo de la que salió el caso.

integer
>= 1
caseLabel
obligatorio
Cualquiera de:
string
documentType
obligatorio
string
eNcf
obligatorio
string
status
obligatorio
Cualquiera de:
string
Valor permitido: pending
dgiiMessage
obligatorio
Cualquiera de:
string
refusal
obligatorio
Cualquiera de:
object
code
obligatorio
string
sheet
obligatorio
Cualquiera de:
string
row
obligatorio
Cualquiera de:
integer
>= 1
column
obligatorio
Cualquiera de:
integer
>= 1
consumerInvoices
obligatorio
Array<object>
object
eNcf
obligatorio
string
sourceRow
obligatorio
integer
>= 1
request-id
obligatorio
string

Identifica esta solicitud. Indícalo cuando contactes a soporte.

Idempotent-Replayed
string
Valor permitido: true

true cuando esta respuesta repite el resultado guardado de una solicitud anterior con la misma clave de idempotencia (Idempotency-Key).