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
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
required
string

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

string
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