Respuesta comercial
Las cinco acciones — ACD, RCD, RFP, RFT y ERM — con sus endpoints, sus reglas duras y su confirmación.
Trampa
Todo lo de esta página ocurre dentro de la ventana de 8 días
Pasado el día 8, ninguna de estas llamadas funciona: devuelven
422 commercial_response_window_closed. Y el silencio no es neutro — acepta. Lee
La ventana de 8 días antes de implementar esto.
Las cinco acciones
Se mapean a los códigos de WSREGISTRORECLAMODTE del SII.
| Endpoint | reason | Código SII | Significado |
|---|---|---|---|
/accept | — | ACD | Acepta el contenido del documento |
/reject | content | RCD | Reclamo al contenido |
/reject | partial_missing | RFP | Reclamo por falta parcial de mercaderías |
/reject | total_missing | RFT | Reclamo por falta total de mercaderías |
/acknowledge_receipt | — | ERM | Otorga recibo de mercaderías o servicios |
Aceptar (ACD)
curl -X POST https://api.facturia.cl/v1/received_documents/rdoc_01K2R9M3D8V5QW7N/accept \
-H "Authorization: Bearer $FACTURIA_KEY" -H "Facturia-Empresa: $EMPRESA" \
-H "Idempotency-Key: $(uuidgen)"Aceptar explícitamente no cambia el resultado legal respecto de dejar pasar el plazo — cambia que queda un registro con fecha, en vez de un silencio.
Reclamar (RCD / RFP / RFT)
# Reclamo por contenido (RCD)
curl -X POST https://api.facturia.cl/v1/received_documents/rdoc_01K2R9M3D8V5QW7N/reject \
-H "Authorization: Bearer $FACTURIA_KEY" -H "Facturia-Empresa: $EMPRESA" \
-H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" \
-d '{"reason":"content","note":"Precio unitario no corresponde a la orden de compra 99213"}'# Reclamo por falta total de mercaderías (RFT)
curl -X POST https://api.facturia.cl/v1/received_documents/rdoc_01K2R9M3D8V5QW7N/reject \
-H "Authorization: Bearer $FACTURIA_KEY" -H "Facturia-Empresa: $EMPRESA" \
-H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" \
-d '{"reason":"total_missing"}'Trampa
Un reclamo es irreversible
No existe des-reclamar. Ni en Facturia ni en el SII. Si tu interfaz deja que una persona reclame con un clic, pon la confirmación antes de la llamada, no después — porque después no hay después.
Una segunda acción sobre el mismo documento devuelve 409 commercial_response_already_registered.
Acusar recibo de mercaderías (ERM)
curl -X POST https://api.facturia.cl/v1/received_documents/rdoc_01K2R9M3D8V5QW7N/acknowledge_receipt \
-H "Authorization: Bearer $FACTURIA_KEY" -H "Facturia-Empresa: $EMPRESA" \
-H "Idempotency-Key: $(uuidgen)"Es una declaración distinta de la aceptación del contenido: dice que las mercaderías o servicios llegaron, no que el documento esté correcto.
La respuesta
{
"object": "commercial_response",
"received_document_id": "rdoc_01K2R9M3D8V5QW7N",
"action": "reject",
"reason": "content",
"sii_code": "RCD",
"registered_at": "2026-08-14T14:02:10Z",
"sii": { "estado": "OK", "glosa": "Evento registrado" },
"state": "rejected"
}El bloque sii es la confirmación de que el evento quedó registrado en el SII, no solo en nosotros.
Si esa confirmación no llega, la llamada falla — no te decimos que reclamaste cuando el SII no se
enteró.
Las reglas duras, juntas
| Regla | Qué pasa si la rompes |
|---|---|
| Solo tipos 33, 34 y 43 | 422 commercial_response_not_applicable |
| Dentro de los 8 días corridos | 422 commercial_response_window_closed, con deadline_at en el error |
| Una sola acción por documento | 409 commercial_response_already_registered |
| Los reclamos no se deshacen | No hay endpoint. Punto |
Idempotencia
Todas estas llamadas aceptan Idempotency-Key, y conviene usarlo: un reintento por timeout de red
sobre una acción de un solo tiro es exactamente el caso donde la diferencia entre «ya lo hice» y «lo
hice dos veces» importa. Con la llave, el replay devuelve la respuesta original; sin ella, el segundo
intento se topa con 409 commercial_response_already_registered — que es correcto, pero es más ruido
del necesario.