Invoices

Creates a standalone invoice (not tied to a job) from explicit lines.

Requires ManageInvoices and an Idempotency-Key header. The subtotal is the sum of the lines; tax applies to all of it at taxRate (0 for a tax-exempt customer). Every omitted field defaults exactly as the New Invoice page does (next INV-SA-… number, today, the organization's default payment terms, tax rate and payment instructions). Like that page, the invoice is created already finalized (status Sent) — there is no draft step — so a payment can be recorded at once with POST /api/v1/invoices/{id}/payments. To bill a job instead, use POST /api/v1/invoices/from-job.

post/api/v1/invoices

Request

  • Base URL: https://app.flexonthejob.com
  • URL: https://app.flexonthejob.com/api/v1/invoices
  • Auth: HTTP bearer

Request body

customerIdinteger

Numeric id of the customer to bill (must be an active customer in your organization).

customerAddressIdinteger nullable

Optional site address id (a location belonging to the customer) to print on the invoice.

invoiceNumberstring nullable

Invoice number. Defaults to the next INV-SA-… number.

invoiceDatestring date-time nullable

Issue date (UTC, date part only). Defaults to today.

dueDatestring date-time nullable

Due date (UTC, date part only). Defaults from paymentTerms; must not precede invoiceDate.

descriptionstring nullable

Short description shown in lists.

taxRatenumber double nullable

Tax rate percentage. Defaults to the organization's default rate; always 0 for a tax-exempt customer.

paymentTerms'DueOnReceipt' | 'Net15' | 'Net30' | 'Net45' | 'Net60' | 'COD' | 'Prepaid'
notesstring nullable

Notes shown to the customer.

paymentInstructionsstring nullable

Payment instructions printed on the invoice. Defaults to the organization's default instructions.

applyStoreCreditboolean

Apply storeCreditToApply of the customer's store credit to the new invoice.

storeCreditToApplynumber double

Store credit amount to apply when applyStoreCredit is true (capped at the customer's balance and the invoice total). Ignored otherwise.

Response

The new invoice; Location points at it.

idinteger

Numeric id, usable in /api/v1/invoices/{id}.

syncIdstring uuid

Stable cross-device id; also the pagination cursor.

invoiceNumberstring

Human-readable invoice number, e.g. INV-1042.

status'Draft' | 'Sent' | 'Viewed' | 'PartiallyPaid' | 'Paid' | 'Overdue' | 'Cancelled' | 'Outstanding' | 'Consolidated'
customerIdinteger nullable

Billed customer id, if any.

customerNamestring nullable

Billed customer name, if any.

jobIdinteger nullable

Job the invoice bills, if any.

jobNumberstring nullable

Job number, if any.

salesOrderIdinteger nullable

Sales order the invoice bills, if any.

descriptionstring nullable

Optional description.

invoiceDatestring date-time

Issue date, ISO-8601 UTC at midnight, e.g. 2026-09-05T00:00:00Z.

dueDatestring date-time

Due date, ISO-8601 UTC at midnight, e.g. 2026-10-05T00:00:00Z.

subtotalnumber double

Sum of lines before tax.

taxAmountnumber double

Tax charged.

totalnumber double

Subtotal plus tax.

amountPaidnumber double

Payments applied.

storeCreditAppliednumber double

Store credit applied.

balanceDuenumber double

Total minus payments and store credit.

isConsolidatedboolean

True when this invoice consolidates other invoices.

consolidatedIntoInvoiceIdinteger nullable

Id of the consolidated invoice that absorbed this one, if any.

sentDatestring date-time nullable

When the invoice was first sent, ISO-8601 UTC (e.g. 2026-09-05T14:30:00Z); null if never sent.

paidDatestring date-time nullable

When the invoice was paid in full, ISO-8601 UTC; null until paid.

createdAtstring date-time

Creation time, ISO-8601 UTC.

updatedAtstring date-time nullable

Last modification time, ISO-8601 UTC; null when never edited. Use with the updatedSince filter to poll for changes.

Changes

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