Skip to content

Create a payment application

Finance module

POST/payment-applicationspaymentApplications.create

A payment applied to an invoice. Billed-to-date counts each payment once. Creates a payment application. Requires `Idempotency-Key`; a replay returns the original response. The organization is derived from the credential or the parent row, never from the body.

  • Requires the capability finance.payment.write.
  • OAuth scopes: finance.
  • Send an Idempotency-Key header. A replay with the same key returns the original response.
  • Error statuses: 400, 401, 409, 422, 429. Errors are RFC 9457 problem details.

Request body: PaymentApplicationCreate

paymentApplications.create: PaymentApplicationCreate
FieldTypeRequiredDescription
invoice_idstring (uuid)YesIdentifier of the invoice.
amount_minorinteger (int64)YesAmount applied. Integer minor units of the document currency.Constraints: range 1 to any
payment_idstring (uuid)YesIdentifier of the payment applied.
{
  "invoice_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "amount_minor": 108000,
  "payment_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"
}

Response 201: PaymentApplication

paymentApplications.create: PaymentApplication
FieldTypeRequiredDescription
idstring (uuid)YesIdentifier of the payment application.
org_idstring (uuid)YesIdentifier of the owning organization, derived from the parent row and never accepted from the caller.
created_atstring (date-time)YesWhen the row was created.
created_bystring (uuid) | nullYesIdentifier of the person who created the row; null when a seed, platform or system process created it.
updated_atstring (date-time)YesWhen the row was last updated.
updated_bystring (uuid) | nullYesIdentifier of the person who last updated the row; null when a seed, platform or system process updated it.
invoice_idstring (uuid)YesIdentifier of the invoice.
paid_onstring (date)YesPayment date.
amount_minorinteger (int64) | nullYesAmount applied. Integer minor units of the resource currency; null means unpriced, never zero.
currency_codestringYesISO 4217 currency code of every money field.Constraints: pattern ^[A-Z]{3}$
external_refstring | nullYesBank or card reference.Constraints: length 1 to 300
payment_idstring (uuid)YesIdentifier of the payment applied.
{
  "id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "org_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "created_at": "2026-10-08T14:30:00Z",
  "created_by": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "updated_at": "2026-10-08T14:30:00Z",
  "updated_by": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "invoice_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "paid_on": "2026-10-08",
  "amount_minor": 108000,
  "currency_code": "USD",
  "external_ref": "ACH-77812",
  "payment_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"
}

Code samples

curl -X POST "$XOS_BASE_URL/payment-applications" \
  -H "Authorization: Bearer $XOS_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"invoice_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f","amount_minor":108000,"payment_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"}'
const { data } = await xos.paymentApplications.create({
    "invoice_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
    "amount_minor": 108000,
    "payment_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"
  });
response = xos.payment_applications.create({"invoice_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f", "amount_minor": 108000, "payment_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"})
xos payment-applications create --data '{"invoice_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f","amount_minor":108000,"payment_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f"}'