curl "https://api.capcells.com/v1/tenants/$TENANT_ID/clients/c-0001/payment-options?on=2026-04-13" \
-H "Authorization: $(capcells_sign "$CAPCELLS_API_KEY" GET "/v1/tenants/$TENANT_ID/clients/c-0001/payment-options?on=2026-04-13")"
{
"client_id": "c-0001",
"on": "2026-04-13",
"loans": [
{
"loan_id": "7771aef0-9e65-4a0a-a902-aab4e970d33f",
"reference": "loan-0001",
"overdue": { "total": { "minor_units": 0, "currency": "MXN" }, "charges": [] },
"instalment": {
"index": 2,
"scheduled_on": "2026-05-02",
"due_on": "2026-05-04",
"owed": { "total": { "minor_units": 90066, "currency": "MXN" }, "charges": [ … ] },
"actionable_from": "2026-05-04",
"requires_overdue_settled": false,
"settled_by": "instalment"
},
"payoff": {
"owed": {
"total": { "minor_units": 787367, "currency": "MXN" },
"charges": [
{ "charge": "fee", "amount": { "minor_units": 22917, "currency": "MXN" }, "tax": { "minor_units": 3667, "currency": "MXN" }, "total": { "minor_units": 26584, "currency": "MXN" } },
{ "charge": "interest", "amount": { "minor_units": 10409, "currency": "MXN" }, "tax": { "minor_units": 1665, "currency": "MXN" }, "total": { "minor_units": 12074, "currency": "MXN" } },
{ "charge": "principal", "amount": { "minor_units": 748709, "currency": "MXN" }, "tax": { "minor_units": 0, "currency": "MXN" }, "total": { "minor_units": 748709, "currency": "MXN" } }
]
},
"actionable_on": "2026-04-13",
"requires_payoff_intent": true,
"requires_designation": false
},
"any_other_amount": {
"treatment": "reduces_principal",
"description": "everything overdue is settled first; what remains is applied exclusively to outstanding principal under the statutory rule on early payment, which keeps the term and lowers the payments that follow"
},
"anomalies": []
}
]
}
{
"client_id": "c-0001",
"on": "2026-05-04",
"loans": [
{
"loan_id": "7771aef0-9e65-4a0a-a902-aab4e970d33f",
"reference": "loan-0001",
"overdue": { "total": { "minor_units": 90066, "currency": "MXN" }, "charges": [ … ] },
"instalment": {
"index": 2,
"scheduled_on": "2026-05-02",
"due_on": "2026-05-04",
"owed": { "total": { "minor_units": 90066, "currency": "MXN" }, "charges": [ … ] },
"actionable_from": "2026-05-04",
"requires_overdue_settled": false,
"settled_by": "overdue"
},
"payoff": { … },
"any_other_amount": { … },
"anomalies": []
}
]
}
{
"error": "loan: the question falls outside the loan: what a payment would do is quoted as of a date, and none was given -- there is no today the platform can supply",
"code": "outside_loan"
}
Clients
Read the payment options
What to collect on a date, per loan: what has fallen due, what is late, the next instalment, the payoff, and what an unnamed amount would do.
GET
/
v1
/
tenants
/
{tenant_id}
/
clients
/
{client_id}
/
payment-options
curl "https://api.capcells.com/v1/tenants/$TENANT_ID/clients/c-0001/payment-options?on=2026-04-13" \
-H "Authorization: $(capcells_sign "$CAPCELLS_API_KEY" GET "/v1/tenants/$TENANT_ID/clients/c-0001/payment-options?on=2026-04-13")"
{
"client_id": "c-0001",
"on": "2026-04-13",
"loans": [
{
"loan_id": "7771aef0-9e65-4a0a-a902-aab4e970d33f",
"reference": "loan-0001",
"overdue": { "total": { "minor_units": 0, "currency": "MXN" }, "charges": [] },
"instalment": {
"index": 2,
"scheduled_on": "2026-05-02",
"due_on": "2026-05-04",
"owed": { "total": { "minor_units": 90066, "currency": "MXN" }, "charges": [ … ] },
"actionable_from": "2026-05-04",
"requires_overdue_settled": false,
"settled_by": "instalment"
},
"payoff": {
"owed": {
"total": { "minor_units": 787367, "currency": "MXN" },
"charges": [
{ "charge": "fee", "amount": { "minor_units": 22917, "currency": "MXN" }, "tax": { "minor_units": 3667, "currency": "MXN" }, "total": { "minor_units": 26584, "currency": "MXN" } },
{ "charge": "interest", "amount": { "minor_units": 10409, "currency": "MXN" }, "tax": { "minor_units": 1665, "currency": "MXN" }, "total": { "minor_units": 12074, "currency": "MXN" } },
{ "charge": "principal", "amount": { "minor_units": 748709, "currency": "MXN" }, "tax": { "minor_units": 0, "currency": "MXN" }, "total": { "minor_units": 748709, "currency": "MXN" } }
]
},
"actionable_on": "2026-04-13",
"requires_payoff_intent": true,
"requires_designation": false
},
"any_other_amount": {
"treatment": "reduces_principal",
"description": "everything overdue is settled first; what remains is applied exclusively to outstanding principal under the statutory rule on early payment, which keeps the term and lowers the payments that follow"
},
"anomalies": []
}
]
}
{
"client_id": "c-0001",
"on": "2026-05-04",
"loans": [
{
"loan_id": "7771aef0-9e65-4a0a-a902-aab4e970d33f",
"reference": "loan-0001",
"overdue": { "total": { "minor_units": 90066, "currency": "MXN" }, "charges": [ … ] },
"instalment": {
"index": 2,
"scheduled_on": "2026-05-02",
"due_on": "2026-05-04",
"owed": { "total": { "minor_units": 90066, "currency": "MXN" }, "charges": [ … ] },
"actionable_from": "2026-05-04",
"requires_overdue_settled": false,
"settled_by": "overdue"
},
"payoff": { … },
"any_other_amount": { … },
"anomalies": []
}
]
}
{
"error": "loan: the question falls outside the loan: what a payment would do is quoted as of a date, and none was given -- there is no today the platform can supply",
"code": "outside_loan"
}
The collection question, answered per Loan for the date you name: what has fallen due, what among it is late, the next instalment, the payoff, and what an amount naming none of them would do. A figure the Platform could not produce is absent rather than zero — a quoted zero says the Loan owes nothing, which is a different fact from being unable to say — with the reason in
The figures are not additive.
anomalies. late is the one exception: its absence means the Loan is not late.
Is this Client late? Read
late, not overdue. overdue holds the instalment falling due on the date you name, so it is non-zero on every due date of every Loan. late is present only where a Period stands past its tolerance end unpaid.late is part of overdue; on an instalment’s due date overdue already holds that instalment; payoff is a complete answer of its own.
This read records nothing. It is the read to make on every visit to a screen. The payoff figure it answers is for the screen; the figure you relay to a borrower as the one to pay, record — it answers the same number, and the record, and the rule that it binds nothing, are on the Loan’s payoff quotes.
It carries a validator. The answer has an ETag; send it back in If-None-Match and, where nothing was recorded about the Client since and the date is the same, the answer is 304 with no body — decided from one statement, with no derivation run. Any receipt, reversal, act, retraction or issuance for the Client, or a release of the Platform, changes the tag. The book version answers whether anything moved without asking for anything else.
Path parameters
string
required
The Tenancy asking.
string
required
The Client whose Loans the answer walks.
Query parameters
string
required
The civil date the figures stand for. Required and never defaulted; absent is
422 — there is no today the Platform can supply.Response
array
required
One entry per Loan the Client holds.
Show loan
Show loan
object
Everything the Periods that have fallen due on the date still owe, its charges apart. A Period has fallen due when its due date is on or before the date — so the instalment falling due that day is in it, and so is a Period still inside its tolerance. The waterfall settles this first, whatever else the payment intends; paying it brings the Loan current. It does not say the Client is late.Stated on every Loan the Platform could describe — a zero where nothing has fallen due — and absent only where no figure could be produced, with the reason in
anomalies. On a Loan whose debt stands fixed — accelerated, or written off — it is everything the Loan owes and equals payoff.object
What among
Present exactly where the Loan is late, absent otherwise. On a Loan whose balance has been called,
overdue is late: the Periods past their tolerance end on the date and not yet settled — exactly the Periods the delinquency read reports still overdue.| Field | What it is |
|---|---|
owed | What the late Periods still owe, charges apart, penalty and late fee among them. Part of overdue, never beside it. |
worst_days_past_due | The largest day count among them. |
periods | How many Periods are late. |
owed is everything the Loan owes. Absent on a date a suspension stands over: a Loan whose clock is stopped is not late that day, and what it owes stays in overdue.object
The suspension in force on the date —
event_id, reference, from, to, and ended_on where it was ended early. Absent where the clock was running. It is what explains a matured debt with no late.array
The charges waivers by the date released —
reference, on, period, charge, amount. Every figure here already nets them: a waived charge reads settled by its waiver. Absent where none stands.object
The next instalment: its Period,
owed with charges apart, actionable_from, requires_overdue_settled — matured Periods are walked oldest first — and settled_by. Absent where every Period has matured, and on a Loan whose debt stands fixed: there is no instalment left to pay into.settled_by | When | What to collect |
|---|---|---|
overdue | The instalment’s own due date | The overdue figure. It already holds the instalment and everything older; adding owed to it collects the instalment twice. |
instalment | Any day before it | owed, once everything older is settled. |
object
What discharges the Loan on the date:
owed with charges apart, actionable_on, requires_payoff_intent — always true, a payoff is stated, never inferred — and requires_designation, true where the Client holds another Loan open in the same currency.object
required
The Configuration’s
early_money_treatment as the stable name beside a borrower-facing sentence — what silent money past everything matured does.array
required
Why an absent figure is absent, among everything else the derivation had to say.
curl "https://api.capcells.com/v1/tenants/$TENANT_ID/clients/c-0001/payment-options?on=2026-04-13" \
-H "Authorization: $(capcells_sign "$CAPCELLS_API_KEY" GET "/v1/tenants/$TENANT_ID/clients/c-0001/payment-options?on=2026-04-13")"
{
"client_id": "c-0001",
"on": "2026-04-13",
"loans": [
{
"loan_id": "7771aef0-9e65-4a0a-a902-aab4e970d33f",
"reference": "loan-0001",
"overdue": { "total": { "minor_units": 0, "currency": "MXN" }, "charges": [] },
"instalment": {
"index": 2,
"scheduled_on": "2026-05-02",
"due_on": "2026-05-04",
"owed": { "total": { "minor_units": 90066, "currency": "MXN" }, "charges": [ … ] },
"actionable_from": "2026-05-04",
"requires_overdue_settled": false,
"settled_by": "instalment"
},
"payoff": {
"owed": {
"total": { "minor_units": 787367, "currency": "MXN" },
"charges": [
{ "charge": "fee", "amount": { "minor_units": 22917, "currency": "MXN" }, "tax": { "minor_units": 3667, "currency": "MXN" }, "total": { "minor_units": 26584, "currency": "MXN" } },
{ "charge": "interest", "amount": { "minor_units": 10409, "currency": "MXN" }, "tax": { "minor_units": 1665, "currency": "MXN" }, "total": { "minor_units": 12074, "currency": "MXN" } },
{ "charge": "principal", "amount": { "minor_units": 748709, "currency": "MXN" }, "tax": { "minor_units": 0, "currency": "MXN" }, "total": { "minor_units": 748709, "currency": "MXN" } }
]
},
"actionable_on": "2026-04-13",
"requires_payoff_intent": true,
"requires_designation": false
},
"any_other_amount": {
"treatment": "reduces_principal",
"description": "everything overdue is settled first; what remains is applied exclusively to outstanding principal under the statutory rule on early payment, which keeps the term and lowers the payments that follow"
},
"anomalies": []
}
]
}
{
"client_id": "c-0001",
"on": "2026-05-04",
"loans": [
{
"loan_id": "7771aef0-9e65-4a0a-a902-aab4e970d33f",
"reference": "loan-0001",
"overdue": { "total": { "minor_units": 90066, "currency": "MXN" }, "charges": [ … ] },
"instalment": {
"index": 2,
"scheduled_on": "2026-05-02",
"due_on": "2026-05-04",
"owed": { "total": { "minor_units": 90066, "currency": "MXN" }, "charges": [ … ] },
"actionable_from": "2026-05-04",
"requires_overdue_settled": false,
"settled_by": "overdue"
},
"payoff": { … },
"any_other_amount": { … },
"anomalies": []
}
]
}
{
"error": "loan: the question falls outside the loan: what a payment would do is quoted as of a date, and none was given -- there is no today the platform can supply",
"code": "outside_loan"
}
⌘I