Documents
Void a document
Cancels a sent invoice that has no payments. It keeps its number and is stamped VOID.
Voiding is destructive and needs confirm: true and a void_reason. A voided invoice keeps its number (so numbering stays complete), shows a VOID stamp on the PDF, pay page and portal, stops reminders and late fees, and revokes its open pay links. It is never deleted.
An invoice with recorded payments cannot be voided: the request is refused with document_has_payments. Issue a credit note instead. A draft has nothing to void; delete it with Delete a draft.
Every void writes an audit entry with the reason. When a store connector mirrors a cancelled order, the void runs automatically and is audited with the connector as actor. See Void and delete.
Needs confirmation
This action is destructive or moves money. Send "confirm": true in the body; without it you get 428 confirmation_required and a preview of what would happen. See Drafts and confirmations.
- Without
confirm: trueyou get the preview andconfirmation_required. Idempotency-Keyis required for API-key and MCP calls.
- Permission
documents.void- Type
- Destructive or money-moving. Needs "confirm": true (or a confirmation in the app).
- Auth
- API key, MCP token or signed-in session
- Capability
void_document- MCP tool
- void_document
- CLI
freeinvoiceautomation doc void- Available
- At launch, 1 January 2027
curl --request POST \
--url https://api.freeinvoiceautomation.com/v1/documents/<id>/void \
--header 'Authorization: Bearer <api-key>' \
--header 'Idempotency-Key: <unique-key>' \
--header 'Content-Type: application/json' \
--data '{
"void_reason": "Issued to the wrong client.",
"confirm": true
}'{
"data": {
"id": "0193f2b4-2d1e-7a6b-9c80-1f2e3d4c5b6a",
"business_id": "0193f29e-11aa-7c3b-8d2e-5a6b7c8d9e0f",
"client_id": "0193f2a0-5b3c-7d4e-8f50-6a7b8c9d0e1f",
"type": "invoice",
"status": "void",
"number": "INV-2027-0017",
"issue_date": "2027-02-01",
"due_date": "2027-02-15",
"expires_at": null,
"currency": "USD",
"fx_rate": "0.7900000000",
"fx_rate_source": "ecb:2027-02-01",
"subtotal_minor": "120000",
"discount_minor": "0",
"tax_minor": "0",
"total_minor": "120000",
"amount_paid_minor": "0",
"amount_credited_minor": "0",
"balance_minor": "120000",
"terms": "Payment due within 14 days.",
"notes": "Thank you for your business.",
"accepted_methods": [
"0193f29f-55aa-7b66-8c77-9d88e99f0a01",
"0193f29f-55aa-7b66-8c77-9d88e99f0a02"
],
"pdf_template_id": null,
"late_fees_enabled": false,
"reminder_sequence_id": null,
"promise_to_pay_date": null,
"recurring_schedule_id": null,
"current_version": 1,
"first_sent_at": "2027-02-01T10:15:00Z",
"last_sent_at": "2027-02-01T10:15:00Z",
"accepted_at": null,
"paid_at": null,
"overdue_at": null,
"voided_at": "2027-02-03T12:00:00Z",
"voided_by": "0193f29d-0f1e-7d2c-8b3a-49586a7b8c9d",
"void_reason": "Issued to the wrong client.",
"source": "api",
"external_ref": null,
"client_generated_id": null,
"lines": [
{
"id": "0193f2b4-2d20-7b11-8c01-0a1b2c3d4e01",
"position": 1,
"kind": "item",
"item_id": "0193f2a1-7c4e-7b9a-9f10-3c2d1e0a4b51",
"description": "Logo design",
"quantity": "1",
"unit": "piece",
"unit_price_minor": "45000",
"discount_type": null,
"discount_value": null,
"tax_rate_id": null,
"tax_name": null,
"tax_rate": null,
"tax_calculation": null,
"subtotal_minor": "45000",
"tax_minor": "0",
"total_minor": "45000",
"credited_line_id": null
},
{
"id": "0193f2b4-2d20-7b11-8c01-0a1b2c3d4e02",
"position": 2,
"kind": "item",
"item_id": null,
"description": "Brand guidelines, 12 pages",
"quantity": "1",
"unit": null,
"unit_price_minor": "75000",
"discount_type": null,
"discount_value": null,
"tax_rate_id": null,
"tax_name": null,
"tax_rate": null,
"tax_calculation": null,
"subtotal_minor": "75000",
"tax_minor": "0",
"total_minor": "75000",
"credited_line_id": null
}
],
"links": [],
"pay_url": null,
"created_at": "2027-02-01T09:12:44Z",
"updated_at": "2027-02-03T12:00:00Z"
}
}Authorizations
Bearer <api-key>. An API key from Settings > API keys, or an MCP token. See Authentication.Headers
Path Parameters
Body
application/jsontrue to void the document. Without it nothing changes: you get the preview and confirmation_required. See Drafts and confirmations.Response
200 - application/jsonAvailable options: invoice, estimate, credit_note, receipt
draft, sent, partially_paid, paid, overdue, void. Estimates: draft, sent, changes_requested, accepted, expired, converted, void. Credit notes: draft, issued, applied, refunded. Receipts: issued, void. See Document statuses.Available options: draft, sent, partially_paid, paid, overdue, void, changes_requested, accepted, expired, converted, issued, applied, refunded
INV-2027-0017. null until the document is first sent.YYYY-MM-DD.0 for a draft, 1 after the first send, then one more for each revision.Available options: app, api, mcp, cli, agent, shopify, woocommerce, generator_sync, recurring
Errors
Plus the common errors every call can return. See Errors.