CommetCommet
GitHubDiscordStatus
Create adjustment invoice POSTDownload invoice PDF POSTGet invoice GETList invoices GETSend invoice email POSTUpdate invoice status PATCH
DocumentationKnowledge BaseBuild with AIAPI ReferenceWebhooks

Update invoice status

Mark an outstanding invoice as "paid" or "void" and return the updated invoice. Cannot change the status of already paid or voided invoices.

PATCH
/invoices/{id}/status

Mark an outstanding invoice as "paid" or "void" and return the updated invoice. Cannot change the status of already paid or voided invoices.

Authorization

ApiKeyAuth
x-api-key<token>

In: header

Path Parameters

id*string

Header Parameters

Idempotency-Key?string

Unique key used to safely retry this write for 24 hours without applying it twice.

Length1 <= length <= 200

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/invoices/string/status" \  -H "Content-Type: application/json" \  -d '{    "status": "paid"  }'
{  "id": "inv_1a2b3c4d",  "customerId": "cus_1a2b3c4d",  "subscriptionId": "sub_1a2b3c4d",  "invoiceNumber": "INV-2026-0001",  "status": "paid",  "invoiceType": "recurring",  "currency": "usd",  "subtotal": 2000,  "discountAmount": 0,  "taxAmount": 0,  "total": 2000,  "periodStart": "2026-09-07T12:00:00.000Z",  "periodEnd": "2026-10-07T12:00:00.000Z",  "issueDate": "2026-09-07T12:00:00.000Z",  "dueDate": "2026-09-07T12:00:00.000Z",  "memo": null,  "metadata": {},  "createdAt": "2026-09-07T12:00:00.000Z",  "updatedAt": "2026-09-07T12:00:00.000Z",  "creditApplied": 0,  "planName": "Pro",  "poNumber": null,  "reference": null,  "lineItems": [    {      "lineType": "plan_base",      "featureName": null,      "description": "Pro — monthly subscription",      "quantity": 1,      "unitAmount": 2000,      "amount": 2000,      "includedAmount": null,      "usedAmount": null,      "overageAmount": null,      "discountType": null,      "discountValue": null,      "discountName": null,      "chargeType": "standard"    }  ],  "object": "invoice",  "livemode": false}
{  "error": {    "type": "validation_error",    "code": "validation_error",    "message": "The request contains an invalid parameter.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/validation_error.md"  }}
{  "error": {    "type": "authentication_error",    "code": "unauthorized",    "message": "A valid API key is required.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/unauthorized.md"  }}
{  "error": {    "type": "authentication_error",    "code": "forbidden",    "message": "You do not have permission to perform this operation.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/forbidden.md"  }}
{  "error": {    "type": "not_found_error",    "code": "not_found",    "message": "The requested resource was not found.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/not_found.md"  }}
{  "error": {    "type": "conflict_error",    "code": "idempotency_in_progress",    "message": "A request with this idempotency key is still being processed.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/idempotency_in_progress.md"  }}
{  "error": {    "type": "rate_limit_error",    "code": "rate_limited",    "message": "Too many requests. Retry after the interval specified in the Retry-After header.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/rate_limited.md"  }}
{  "error": {    "type": "internal_error",    "code": "internal_error",    "message": "An unexpected error occurred while processing the request.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/internal_error.md"  }}
{  "error": {    "type": "internal_error",    "code": "idempotency_unavailable",    "message": "Idempotency storage is temporarily unavailable. Retry with the same idempotency key.",    "doc_url": "https://commet.co/docs/api-reference/2026-08-27/errors/idempotency_unavailable.md"  }}

Send invoice email POST

Send the invoice to the customer via email.

Create market POST

Create a reusable market without attaching it to a plan or price. Countries can belong to only one active market.

status*string

Value in

  • "paid"
  • "void"