Facturiadocs
Reception

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.

EndpointreasonSII codeMeans
/accept—ACDAccepts the content of the document
/rejectcontentRCDClaim against the content
/rejectpartial_missingRFPClaim for partially missing goods
/rejecttotal_missingRFTClaim for totally missing goods
/acknowledge_receipt—ERMGrants 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

RuleWhat happens if you break it
Types 33, 34 and 43 only422 commercial_response_not_applicable
Within the 8 calendar days422 commercial_response_window_closed, with deadline_at in the error
One action per document409 commercial_response_already_registered
Claims cannot be undoneThere 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.

On this page