Skip to main content
POST
Manually confirm the outcome of a pending cancellation
Manually confirms the outcome of a cancellation that required receptor approval (requiresApproval: true, cancellationStatus: "pendiente"). Timbrix cannot query the SAT in real time for the receptor’s response — call this endpoint once you’ve verified the actual outcome on the SAT portal. This is a flat route, same pattern as Cancel Invoice — no /organizations/{organizationId}/ prefix.

Authentication

Accepts either:
  • A Supabase Bearer session (Authorization: Bearer <token>) — the authenticated user must be an owner or admin of the invoice’s organization. Plain members can request a cancellation via Cancel Invoice, but cannot resolve one, mirroring the same restriction in the Timbrix dashboard, since resolving can flip a CFDI’s status to cancelado.
  • An API key (X-API-Key: sk_...) with the write:invoices scope — the key’s own organization must match the invoice’s organization. API keys are scoped by the write:invoices scope rather than per-member roles, so the owner/admin restriction only applies to session-authenticated callers.

Path Parameters

Request Body

What happens

  • outcome: "aceptada" — the invoice’s status transitions to cancelado. The cancellation is now final.
  • outcome: "rechazada" — the invoice stays vigente. A rejected attempt does not block retries — you can request a new cancellation for the same invoice via Cancel Invoice.

Example Request

cURL
TypeScript

Example Response

See Cancel Invoice for the full field reference on this InvoiceCancellationDto shape.

Common Errors

400 Bad Request

The cancellation was already resolved (cancellationStatus is not pendiente).

401 Unauthorized

Missing or invalid Bearer token / API key.

403 Forbidden

The authenticated user is not a member of the invoice’s organization, is a member but not an owner/admin, or the API key does not have the write:invoices scope / belongs to a different organization than the one that owns the invoice.

404 Not Found

uuid does not match any invoice, or cancellationId does not match a cancellation request for that invoice.

Authorizations

X-API-Key
string
header
required

API Key for authentication (format: sk_...)

Path Parameters

uuid
string
required

Folio fiscal UUID of the invoice

cancellationId
string
required

ID of the cancellation request to resolve

Body

application/json
outcome
enum<string>
required

Resultado confirmado manualmente por el usuario tras verificar el estatus real en el portal del SAT — Timbrix no puede consultarlo en tiempo real.

Available options:
aceptada,
rechazada
Example:

"aceptada"

Response

id
string
required
Example:

"6a1b2c3d-4e5f-4890-9abc-def012345678"

invoiceId
string
required

Timbrix invoice record ID

Example:

"0f2a1c3e-1a2b-4c3d-9e8f-1234567890ab"

motivo
enum<string>
required
Available options:
01,
02,
03,
04
Example:

"02"

requiresApproval
boolean
required
Example:

false

cancellationStatus
enum<string>
required
Available options:
pendiente,
aceptada,
rechazada
Example:

"aceptada"

createdAt
string<date-time>
required
Example:

"2026-08-09T15:50:03.412Z"

folioSustitucion
string | null
Example:

null

respondBy
string<date-time> | null
Example:

null

requestedBy
string | null
Example:

"9f8e7d6c-5b4a-3210-fedc-ba9876543210"

resolvedBy
string | null
Example:

null

resolvedAt
string<date-time> | null
Example:

null