Webhooks
Event catalogue
Every v1 event type, grouped by what happened in the world.
enabled_events: ["*"] subscribes you to everything, including the types we add later. If you list
explicit types, you have to update the list whenever you want a new one.
The lifecycle of a document
| Event | Fires when |
|---|---|
document.created | Facturia accepted it; a folio — the pre-authorised sequential number a DTE must carry — is assigned |
document.sent | Transmitted to the SII (Chile's tax authority); track_id known |
document.accepted | DOK from the SII — the one most integrations use |
document.reparo | DNK from the SII, or RPR/RLV on boletas (the consumer-facing receipt) |
document.rejected | Envelope or document rejected |
document.failed | We could not build it, sign it or transmit it |
document.annulled | A credit note voided it |
document.cesion_submitted | A POST .../cede reached the SFG portal's "AEC generado exitosamente" page — AEC generated, registration pending (tickets #60, #69). The file exists; registration in the RTC is a separate act and this event does NOT prove it. Do not pay against it |
document.cesion_confirmed | The SII's own answer for the document (consultarDocDteCedible) CHANGED after the cesión — the assignment of the invoice to a third party — and that is the only evidence of registration this API has (ticket #69). This is the event you act on |
document.cesion_failed | A POST .../cede was rejected by the portal, is fenced (owner-gated at launch), landed on a page the driver does not recognise, or produced an AEC whose registration could never be confirmed |
Reception
| Event | Fires when |
|---|---|
received_document.created | A supplier DTE (documento tributario electrónico) arrived, by intercambio or by reconciliation against the RCV (the SII's purchase and sales register) |
received_document.deadline_approaching | 2 days left of the 8-day window and it is still pending |
received_document.accepted | An acceptance was registered (yours or an automation's) |
received_document.rejected | A claim was registered |
received_document.receipt_acknowledged | The goods receipt was granted |
`received_document.deadline_approaching` is the event that saves the most money
It is the warning that two days are left of the 8 days you have to dispute a supplier factura (a Chilean B2B invoice). After day 8, silence has already accepted. See The 8-day window.
Empresa and operations
| Event | Fires when |
|---|---|
empresa.onboarding.updated | Any transition of the onboarding |
empresa.onboarding.step.completed | One checklist step (step) just reached completed — so you don't have to diff steps[] between two reads |
empresa.onboarding.action_required | A human step is blocking |
empresa.onboarding.completed | The empresa reached emitting |
empresa.suspended | The certificate expired, or the mandato — the signed authority to act for the empresa — was revoked |
certificate.expiring | 30, 14 and 3 days before expiry |
certificate.expired | On expiry |
folios.low | Below the threshold for a type |
folios.exhausted | No folios left: emission is failing |
folios.replenished | A new CAF (código de autorización de folios, the SII-signed block of folios) arrived |
webhook_endpoint.disabled | Auto-disabled after 5 days of sustained failure |
connection.linked | The Fintoc feed went active |
connection.sync_succeeded | Transaction sync completed |
connection.sync_failed | Sync failed |
connection.requires_relink | The feed needs the person to reconnect |
api_key.created | A key was minted (carries the id of the minting key) |
api_key.rolled | A key was rolled |
api_key.revoked | A key was revoked |
Taxes
| Event | Fires when |
|---|---|
tax.rcv.synced | An RCV sync finished (with a changed flag) |
tax.f29.proposal.ready | A period's proposal is now computable |
tax.f29.proposal.updated | The proposal changed |
tax.f29.review_required | There are observations with severity: error; automatic filing is suppressed |
tax.f29.filing.submitted | The return was submitted to the SII |
tax.f29.filing.succeeded | The SII accepted it |
tax.f29.filing.rejected | The SII rejected it |
tax.f29.filing.failed | We could not complete the submission |
tax.suggestion.created | A suggestion appeared |
tax.suggestion.auto_confirmed | An automation acted on a suggestion |
tax.statement.imported | A bank-statement import finished; the job's result carries the counts |
What to listen for, by what you are building
| If you are building | Listen for |
|---|---|
| Billing for a SaaS | document.accepted, document.rejected, document.failed |
| Accounts payable | received_document.created, received_document.deadline_approaching |
| An onboarding assistant | empresa.onboarding.updated, empresa.onboarding.action_required |
| Unattended operations | folios.low, certificate.expiring, connection.requires_relink, webhook_endpoint.disabled |
| Tax close | tax.rcv.synced, tax.f29.proposal.ready, tax.f29.review_required |