Record an off-platform payment for an invoice

Applies targeted and eligible Automatic credits, records cash equal to amountDueAfterCredits, and atomically marks the invoice PaidOffPlatform. Zero cash is accepted only when credits cover the remaining balance. Accepts Opened, Overdue and retryable Returned invoices after the earlier return is definitive; active or uncertain payment attempts return 409. Replays with identical payment details are idempotent; conflicting payment attempts return 409. Returns 409 EligibilityBlocked with detailCode payments.EngagementNotPaymentsEligible when the related engagement has incomplete payment eligibility requirements.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required
Body Params
double
required

A monetary amount as a JSON number in major units, with decimal places carrying the minor units defined for its currency (USD/EUR: 2, JPY: 0, BHD: 3, ...) — e.g. 100.00. Never a string and never minor-unit (cent) integers. The currency comes from the enclosing resource's currency field; amounts with more decimal places than the currency supports are rejected with 422 ValidationError. Wingspan converts to exact minor units at the service boundary, so callers never need sub-minor-unit precision.

string
required

Free text description of the off-platform method (e.g., "Check", "Wire", "Cash")

date
required
string
string
double

Gross amount received, when more than amount was received. Recorded for reconciliation only; Wingspan never held the difference. Returns 501 until the partial-payments service work ships (MS2).

string
length between 1 and 200
^[^\s\x00-\x1F\x7F](?:[^\x00-\x1F\x7F]*[^\s\x00-\x1F\x7F])?$

The recording party's reference for this payment, required on the dated partial-payments version. Unique per document and recording party, including entries that were removed, and never editable. Recording a value the same party already used returns 409 naming the entry or stating it was removed, so a retry after a lost response cannot record the payment twice. On this operation a 409 with ResourceConflict means only that reuse (a 412 means nothing was recorded). After that 409, re-read the document: an entry on your view with this externalId means it was recorded; none means it was removed. Returns 501 until the partial-payments service work ships (MS2).

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

Strong ETag from a prior GET or write response. Mismatch returns 412 Precondition Failed. Pass * to accept any current state.

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