Create an invoice

Create a new Invoice in Created status. Idempotent via Idempotency-Key. Fires Invoice.Created on success. If externalId duplicates an existing invoice for the same payee Account, returns 409 ResourceConflict; create is not an upsert.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
boolean

Whether the payer may pay less than the remaining balance through pay. Omit to inherit the Payer default, then the payee's /payments/payee-settings default. Returns 501 until the partial-payments service work ships (MS2).

string
required

Payer relationship-record id; never an Account id. This may be a Wingspan id or one of the legacy composite relationship ids returned by the read/list APIs. Payments creates or reuses the relationship's default PayerEngagement.

string

Upstream PayerEngagement relationship-record id.

string

Existing V1-backed PayeeEngagement relationship-record id. Retained for compatibility with shipped invoice-create clients.

string

Customer's own invoice ID for reconciliation. Accepted on create and echoed on every read. Duplicate values under the same payee Account return 409 ResourceConflict; create is not an upsert.

string
enum
required

Currency codes currently accepted by V3 invoice/payable create.

Allowed:
lineItems
array of objects
required
lineItems*
splits
array of objects

Optional document-level collaborator splits. Mutually exclusive with lineItems[].splits.

splits
date

Optional. When omitted, the due date is today (UTC) plus the net terms from the PayerEngagement overrides.paymentTermsDays, then the Payer defaults.paymentTermsDays. Returns 422 when neither is set. The terms are captured at create. When the invoice first leaves Draft (is sent), the due date is recomputed from that day with the same terms; later default changes don't apply.

string

Optional payee-scoped invoice number. If omitted, Wingspan generates one. If supplied, it must be unique in the context of the payee.

string
string
length ≥ 1

The payer's project reference. Required before send when the payer's invoicing config requireProjectName is enabled. Stored as metadata.projectName; a different metadata.projectName in the same request returns 422.

string
length between 1 and 24

The payer's purchase-order number. Required before send when the payer's invoicing config requirePONumber is enabled.

acceptedPaymentMethods
array of objects
acceptedPaymentMethods
Allowed:
lateFeeHandling
object

Late-fee rule applied to overdue invoices — a percentage or a fixed amount, assessed on a cadence. For recurring invoices the cadence is re-phased to each generated invoice's due date. Supplying both mutually-exclusive members returns 422 ConflictingFields.

creditFeeHandling
object

Credit-card processing-fee split for an invoice — who bears the CC fee. Set payeeFeePercentage / payerFeePercentage (a split summing to 100), or payerFlatFeePercentage (the payer pays this flat %). Supplying both mutually-exclusive members returns 422 ConflictingFields.

notificationPreferences
object

Per-invoice email controls.

metadata
object

Free-form key-value pairs. Max 50 keys; key length at most 40 characters; value length at most 500 characters. Where a list endpoint declares metadata filtering, it uses the QueryQL namespace via filter[metadata.{key}][eq]=value or filter[metadata.{key}][in][]=value. Endpoints that do not declare the dynamic Metadata filter do not support Metadata filtering.

quickbooks
object

Link this invoice to a QBO Invoice/Payment created out-of-band, and/or suppress quickbooks-sender's own sync. Omit to leave unmanaged by the caller.

Headers
string
length between 1 and 255
^[\x21-\x7e]{1,255}$

Optional idempotency token for authenticated POST and PATCH requests. Reusing the same key and body returns the cached response for 24 hours, except credential operations that explicitly document a 409 because one-time secret material is never cached; reusing it with a different body returns 409 IdempotencyKeyConflict. Use 1-255 printable ASCII characters.

string
^(?:[A-Za-z0-9_.]{22}|[a-f0-9]{24})$

Select the Account for an Account-scoped operation. A direct ServiceAccount API key MUST supply this header, and the target must be within the ServiceAccount owner's or Authorization grant's Account boundary. A Person bearer may select an Account on which it has an active Stakeholder, and an Account session may select its bound Account (or a descendant only when the session explicitly includes descendants).

string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
application/problem+json