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
cancellationId
string
required

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 (ver docs/superpowers/specs/2026-08-10-cfdi-cancelacion-design.md).

Available options:
aceptada,
rechazada
Example:

"aceptada"

Response

id
string
required
invoiceId
string
required
motivo
enum<string>
required
Available options:
01,
02,
03,
04
requiresApproval
boolean
required
cancellationStatus
enum<string>
required
Available options:
pendiente,
aceptada,
rechazada
createdAt
string<date-time>
required
folioSustitucion
object
respondBy
object
requestedBy
object
resolvedBy
object
resolvedAt
object