Commercial response
The five actions — ACD, RCD, RFP, RFT and ERM — with their endpoints, their hard rules and their confirmation.
Trap
Everything on this page happens inside the 8-day window
Once the 8 days are up, none of these calls work: they return
422 commercial_response_window_closed. And silence is not neutral — it accepts. Read
The 8-day window before you implement any of this.
The five actions
They map to the WSREGISTRORECLAMODTE codes of the SII, Chile's tax authority.
| Endpoint | reason | SII code | Means |
|---|---|---|---|
/accept | — | ACD | Accepts the content of the document |
/reject | content | RCD | Claim against the content |
/reject | partial_missing | RFP | Claim for partially missing goods |
/reject | total_missing | RFT | Claim for totally missing goods |
/acknowledge_receipt | — | ERM | Grants receipt of goods or services |
Accept (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)"Accepting explicitly does not change the legal outcome compared with letting the deadline pass — what changes is that a dated record exists, instead of a silence.
Claim (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"}'Trap
A claim is irreversible
There is no un-claiming. Not at Facturia and not at the SII. If your interface lets a person claim with one click, put the confirmation before the call, not after — because after, there is no after.
A second action on the same document returns 409 commercial_response_already_registered.
Acknowledge receipt of goods (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)"It is a different statement from accepting the content: it says the goods or services arrived, not that the document is correct.
The response
{
"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"
}The sii block is the confirmation that the event was registered at the SII, not just with us. If
that confirmation does not arrive, the call fails — we do not tell you that you claimed when the SII
never heard about it.
The hard rules, together
| Rule | What happens if you break it |
|---|---|
| Types 33, 34 and 43 only | 422 commercial_response_not_applicable |
| Within the 8 calendar days | 422 commercial_response_window_closed, with deadline_at in the error |
| One action per document | 409 commercial_response_already_registered |
| Claims cannot be undone | There is no endpoint. Full stop |
Idempotency
All of these calls accept Idempotency-Key, and you should use it: a retry after a network timeout,
on a one-shot action, is exactly the case where the difference between "I already did it" and "I did
it twice" matters. With the key, the replay returns the original response; without it, the second
attempt runs into 409 commercial_response_already_registered — which is correct, but noisier than
it needs to be.