Invoices

Update an invoice

Updates an invoice. Every field is optional, and anything you leave out keeps its current value.

Only four things can change here: who the invoice is addressed to, its title, its currency and when it is due. The client company and the project are fixed once the invoice exists, and line items have their own endpoints.

An invoice that is paid or has a payment in progress cannot be edited at all, and returns 403.

patch/public-api/v1/invoices/{id}

Request

  • Base URL
    https://app.hellobonsai.com
  • URL
    https://app.hellobonsai.com/public-api/v1/invoices/{id}
  • Auth
    • OAuth 2
      Authorization code: https://app.hellobonsai.com/oauth/authorize
      Token URL: https://app.hellobonsai.com/oauth/token
    • or HTTP bearer

Path parameters

idinteger required

Id of the invoice to update.

Request body

Example request

{
  "invoice": {
    "contact_id": 7,
    "currency": "USD",
    "title": "Acme Corp Invoice",
    "due_date": "2026-04-28"
  }
}

Response

The invoice was updated.

Example response

{
  "data": {
    "id": 3310,
    "invoice_number": "INV-001",
    "title": "Acme Corp Invoice",
    "currency": "USD",
    "issued_date": "2026-04-14",
    "due_date": "2026-04-28",
    "sent_date": "2026-04-14T09:12:04.000Z",
    "project_id": 51,
    "client_email": "alex@example.com",
    "public_url_token": "x7f2a9c4b1e8d",
    "created_at": "2026-04-14T09:12:04.000Z",
    "total_amount": "200.0",
    "discount_amount": "25.0",
    "status": "outstanding",
    "due_date_option": "custom",
    "company_id": 42,
    "client_name": "Acme Corp",
    "subtotal": "200.0",
    "tax_amount": "0.0",
    "kind": "recurring",
    "repeat_interval": "monthly",
    "repeat_finish_date": "2027-04-14",
    "series_id": 3310,
    "recurrence_active": true,
    "url": "https://app.hellobonsai.com/invoices/3391",
    "invoice_items": [
      {
        "id": 4471,
        "name": "Design",
        "description": "Homepage and pricing page",
        "amount": "2.0",
        "rate": "100.0",
        "unit_type": "per_hour",
        "total": "200.0"
      }
    ]
  },
  "meta": {
    "request_id": "b1f0d2c4-7a9e-4c3b-8d5f-1e2a3b4c5d6e"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.