Developers API reference Get sandbox access
API reference

Payments

Each debit collected under an agreement is a payment. Cashwo creates them when an agreement becomes active and initiates each one on its due date.

The payment object

JSON
{
  "payment_id": 88213,
  "agreement_id": 4127,
  "reference": "3 Inst - INV-10482",
  "amount": 120.00,
  "currency": "AUD",
  "status": "SETTLED",
  "final": true,
  "due_date": "2027-01-01",
  "retry_count": 0,
  "archived": false,
  "created_at": "2026-10-24 08:12:03",
  "updated_at": "2027-01-01 09:00:41"
}

reference is Cashwo's label: Initial - INV-10482 for the initial amount, 3 Inst - INV-10482 for the third instalment.

Statuses

AWAITING→ INITIATED→ PENDING→ SETTLEDor FAILED
  • AWAITING: scheduled, not yet due.
  • CREATED, INITIATED, PENDING: sent to the customer's bank. Most settle within seconds over the New Payments Platform.
  • SETTLED: the money arrived.
  • FAILED: declined. A failed scheduled payment is retried automatically (final: false); a failed one-time payment is final, but the customer can try again from their link the same day.
  • RETURN_IN_PROGRESS, RETURN_COMPLETE: a settled payment being returned by the bank.

final is true once the payment can't change any more.

POSTget_payment

Send payment_id. Returns { "success": true, "payment": { … } }, or 404 not_found.

Request
{ "action": "get_payment", "payment_id": 88213 }

POSTlist_payments

Newest first, with pagination. All filters are optional.

FieldMeaning
agreement_idPayments under one agreement.
statuse.g. SETTLED, FAILED, AWAITING.
due_from, due_toYYYY-MM-DD, inclusive.
updated_sinceDate or ISO 8601 date-time. Only payments changed since then.
include_archivedtrue to include archived payments.
limit, starting_afterPage size (1–100, default 25) and cursor.
Request
{ "action": "list_payments", "agreement_id": 4127, "status": "FAILED" }

Reconciling

Webhooks tell you about changes as they happen. To be certain you've seen everything, run a scheduled job that calls list_payments with updated_since set to your last successful sync, pages until has_more is false, and stores the time it started.