SoftSolzSoftSolz
HomeAPI GuideAPI ReferenceWidget Tester
Invoicing

Update a draft invoice. Only draft invoices can be edited.

Update a draft invoice. Only draft invoices can be edited.

PUThttps://app.softsolz.uk/api/v1/services/invoicing/invoices/{id}

Recent Requests

Kept only in this browser
TimeStatusTook
Send a request with Try it to see it here.

Path Params

idstringrequired

Headers

Authorizationstringrequired

Bearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.

Body Params

customer_idinteger

Active customer id in this workspace.

linesarray of objects

Line items (at least one).

issue_datestring

Issue date; defaults to today (UTC).

due_datestring

Due date; defaults to issue_date + customer terms.

currencystring

3-letter currency; defaults to the customer currency or USD.

discountnumber

Flat discount applied after tax (default 0).

shipping_amountnumber

Shipping added after tax+discount (default 0).

header_tax_rate_pctnumber | null

When set, total tax = subtotal * pct/100 and per-line tax is ignored.

po_numberstring | null

PO number; omit to auto-allocate per customer.

notesstring | null

Notes shown on the invoice.

termsstring | null

Payment terms text.

payment_methodstring | null

How the customer pays. "stripe" makes the invoice payable online and needs Stripe connected in Invoicing first. "bank_transfer" needs bank_details. When omitted, stripe is used if Stripe is connected, otherwise bank_transfer.

bank_detailsstring | null

Where the customer should send a bank transfer, printed on the invoice. Required for bank_transfer invoices unless show_bank_details is false.

show_bank_detailsboolean

Whether bank_details are printed on the invoice. Defaults to true.

Response

Response Body

idintegerInvoice id.
customer_idintegerCustomer id.
invoice_numberstringHuman invoice number.
issue_datestringIssue date (YYYY-MM-DD).
due_datestringDue date (YYYY-MM-DD).
currencystringISO 4217 currency code.
subtotalstringDecimal amount as a numeric string (NOT minor units).
tax_totalstringTotal tax, numeric string.
totalstringInvoice total, numeric string.
amount_paidstringAmount paid so far, numeric string.
statusstringInvoice status.
linesarray of objectsInvoice line items.
paymentsarray of objectsRecorded payments; payments[].id is the payment_id used when issuing a refund.
created_atstringCreation timestamp.
updated_atstringLast update timestamp.

Request

curl --request PUT \
--url https://app.softsolz.uk/api/v1/services/invoicing/invoices/{id} \
--header 'Authorization: Bearer sk_live_your_key' \
--header 'Content-Type: application/json' \
--data '{
"lines": [
{
"description": "Consulting, January",
"quantity": 10,
"unit_price": 10,
"tax_rate": 20
}
],
"issue_date": "2026-01-15",
"due_date": "2026-02-14",
"currency": "GBP",
"discount": 0,
"shipping_amount": 0,
"header_tax_rate_pct": 20,
"po_number": "PO-2026-001",
"notes": "Thank you for your business.",
"terms": "Net 30",
"payment_method": "bank_transfer",
"bank_details": "Acme Ltd, sort code 12-34-56, account 12345678",
"show_bank_details": true
}'

Credentials

Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser tab until you close it. Use an sk_test_ key to stay in your sandbox.

Response · 200

{
"data": {
"id": 1001,
"customer_id": 42,
"invoice_number": "INV-0007",
"issue_date": "2026-01-15",
"due_date": "2026-02-14",
"currency": "GBP",
"subtotal": "100.00",
"tax_total": "20.00",
"total": "120.00",
"amount_paid": "0.00",
"status": "sent",
"lines": [
{
"description": "Consulting, January",
"quantity": 10,
"unit_price": 10
}
],
"payments": [],
"created_at": "2026-01-15T09:55:00.000Z",
"updated_at": "2026-01-15T09:55:00.000Z"
}
}