Installment Plans
Learn how unpaid balances can be converted into installment plans
Overview
Lithic supports Installment Plans natively on our ledger. An installment plan takes a balance left unpaid and spreads it over a fixed number of installments. Each installment is billed in a future cycle and is due by that cycle's payment due date. An account can have several plans open at the same time.
Plan sources
An installment plan can be opened from one of two sources, recorded in the plan's source_type:
- A statement balance (
UNPAID_BALANCE). If a monthly statement isn't paid in full by its payment due date, the balance left unpaid is converted into a plan when the next statement closes.source_idis the token of the statement that wasn't paid in full, and an account can have at most one plan per statement. - An individual transaction (
TRANSACTION). A single purchase is converted into a plan, so the cardholder can pay for it over time. This supports Buy Now, Pay Later programs.
See Source types for the full reference.
For a program configured for installments, Lithic provides two sets of endpoints:
- The plan as it stands now. List Installment Plans and Get Installment Plan return the live plan, which changes as installments are billed and paid.
- The plan as it stood on each statement. List Installment Plan Statements and Get Installment Plan Statement return snapshots. When a statement is generated, Lithic records a snapshot of every plan that was open during that statement period. These snapshots don't change afterwards, so they show the plan exactly as it was when that statement was produced. Use them to render statements and to reconcile a statement with the plans behind it.
Lifecycle of a plan
- A statement closes, and the cardholder has until its payment due date to pay it in full. If they don't, the balance left unpaid is converted into a plan when the next statement closes. That balance (principal, interest, and fees) becomes the plan's
principal_amount. An enrollment fee is added on top asfee_amount, and the plan is split intonum_installmentsequal installments. The plan starts outACTIVE, andsource_idis the token of the statement that wasn't paid in full. - On each installment's
due_date, the installment is billed to the account anddate_assessedis set. It then appears in that cycle's statement and is owed by itspayment_due_date. - Payments to the account are applied to installments oldest first. Each payment is added to the installment's
payments, andamount_paidandamount_outstandingchange to match. - When every installment has been paid off, the plan moves to
FULLY_PAIDandclosed_atis set to the date of the last payment.
Installment plan object
Returned by the get and list plan endpoints.
| Attribute | Type | Meaning |
|---|---|---|
token | string | Unique identifier for the plan. |
financial_account_token | UUID | The account the plan belongs to. |
state | enum | See Plan states. |
source_type | enum | What the plan was opened from. See Source types. |
source_id | string | The record the plan was opened from. For UNPAID_BALANCE, this is the statement token. |
source_amounts | object | null | The opening balance by category. See Category breakdowns. null means no breakdown was recorded, which is different from a breakdown of all zeros. |
principal_amount | integer | The balance the plan was opened on, not including the fee. |
fee_amount | integer | The one-time enrollment fee charged when the plan was opened. |
installment_plan_total | integer | principal_amount + fee_amount, the full amount the plan is scheduled to collect. It doesn't change after the plan opens. |
total_paid | integer | Amount applied to the plan so far, including adjustment credits. Equal to the sum of the installments' amount_paid. |
installment_plan_adjustment | integer | Total credited to the plan by recalculations. This credit reduces what's owed without changing installment_plan_total. |
num_installments | integer | How many installments the plan is split into. |
installments_paid | integer | How many installments have amount_outstanding of 0. |
installments_outstanding | integer | num_installments - installments_paid. This includes installments that haven't been billed yet, not just past-due ones. |
start_date | date | The date the plan was opened. |
closed_at | date | null | The date the plan was paid off or cancelled. null while the plan is open. |
created / updated | timestamp | When the plan was created and last changed. |
installments | array | The plan's installments, in order. See below. |
Installment
| Attribute | Type | Meaning |
|---|---|---|
installment_num | integer | The installment's position in the plan, starting at 0. |
due_date | date | The statement cycle this installment is billed on. |
payment_due_date | date | The date the installment must be paid by. It's that cycle's payment due date, and the installment is past due after it. |
date_assessed | date | null | The date the installment was actually billed to the account. null until it's billed. |
amount_due | integer | The installment's scheduled amount. The installments' amount_due values add up to installment_plan_total. |
amount_paid | integer | Amount applied to this installment, including adjustment credits. |
amount_outstanding | integer | amount_due - amount_paid, the amount still owed on this installment. |
installment_adjustment | integer | The part of amount_paid that came from recalculation credits rather than money received. |
amount_due_details / amount_paid_details / amount_outstanding_details | object | The same three amounts split by category. See Category breakdowns. |
payments | array | Each amount applied to this installment, oldest first. |
Installment payment
| Attribute | Type | Meaning |
|---|---|---|
date | date | The date the amount was applied. |
amount | integer | The amount applied to this installment. A single account payment can be split across several installments, so this is only the part this installment received. |
amount_details | object | amount split by category. |
is_adjustment | boolean | true when the amount is a recalculation credit rather than money received. |
Plan states
| State | Meaning |
|---|---|
ACTIVE | Open, with installments still owed. |
REBUILD_IN_PROGRESS | Open, and the account's history is being recalculated. This state is temporary, and the plan returns to ACTIVE or closes when the recalculation finishes. When you list plans, ?state=ACTIVE also returns plans in this state. |
FULLY_PAID | Every installment has been paid off. closed_at is set. |
CANCELLED | The plan was closed without being paid off. closed_at is set. |
PENDING | Reserved. No plans are created in this state today. |
Source types
source_type | Meaning |
|---|---|
UNPAID_BALANCE | The plan was opened from a balance a statement left unpaid. source_id is that statement's token, and an account gets at most one plan per statement. |
TRANSACTION | The plan was opened from a single transaction, so the cardholder can pay for that purchase over time. This supports Buy Now, Pay Later programs. |
Category breakdowns
Every *_details field and source_amounts breaks an amount down in two ways. The first level is the kind of balance: purchases, cash_advances, or balance_transfers. Inside each kind, the amount is split into principal, interest, and fees. The values in a breakdown always add up to the amount it describes. For example, the values in amount_due_details add up to amount_due. This means a plan keeps the same category split as the balance it was opened from. The enrollment fee is counted under fees.
Sample responses
The samples below follow one plan from the day it opens to the day it's paid off. The program converts unpaid statement balances into 3-installment plans with a 2% enrollment fee, and each statement's payment is due 21 days after it closes.
On August 31, a statement closes with $500.00 in purchases and a $100.00 minimum payment, both due September 21. The cardholder pays the $100.00 minimum but not the full balance, so $400.00 is still unpaid after the due date. When the next statement closes on September 30, that $400.00 is converted into the plan and becomes its principal_amount. The plan's start_date is September 30, its source_id is the token of the August 31 statement, and its first installment is billed on that same September 30 statement. The cardholder makes no new purchases, and in this example the program charges no interest on the unpaid balance, so every payment after the minimum goes to the plan.
The 2% enrollment fee on $400.00 is $8.00 (fee_amount: 800), so the plan collects $408.00 in total, or $136.00 per installment. The principal and the fee are each split across the installments separately, so the cents can land differently in each installment even when the totals are equal. Here, $400.00 of principal doesn't divide evenly by 3, and neither does $8.00 of fees:
| Installment | Principal | Fee | Total |
|---|---|---|---|
| 0 | $133.34 | $2.66 | $136.00 |
| 1 | $133.33 | $2.67 | $136.00 |
| 2 | $133.33 | $2.67 | $136.00 |
Installment totals never differ by more than a cent. When they do differ, the larger installments are the last ones.
1. Plan opened
Retrieved on October 1. The plan is ACTIVE. The September 30 statement that opened it also billed installment 0, so installment 0's date_assessed is set. The $136.00 is included in that statement's minimum payment and is owed by its payment_due_date, October 21. Installments 1 and 2 haven't been billed yet, so their date_assessed is null.
{
"token": "2xL9QmVt7RkPz3NcW8YbH1sJfDa",
"financial_account_token": "a6d2b9f1-3c47-4e0a-9b5d-2f8e1c7a4d63",
"state": "ACTIVE",
"source_type": "UNPAID_BALANCE",
"source_id": "2xKfR4pLw9TnB6VhQ2ZsC8mJdYe",
"source_amounts": {
"purchases": { "principal": 40000, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"principal_amount": 40000,
"fee_amount": 800,
"installment_plan_total": 40800,
"total_paid": 0,
"installment_plan_adjustment": 0,
"num_installments": 3,
"installments_paid": 0,
"installments_outstanding": 3,
"start_date": "2026-09-30",
"closed_at": null,
"created": "2026-10-01T06:12:44Z",
"updated": "2026-10-01T06:12:44Z",
"installments": [
{
"installment_num": 0,
"due_date": "2026-09-30",
"payment_due_date": "2026-10-21",
"date_assessed": "2026-09-30",
"amount_due": 13600,
"amount_due_details": {
"purchases": { "principal": 13334, "interest": 0, "fees": 266 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_paid": 0,
"amount_paid_details": {
"purchases": { "principal": 0, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_outstanding": 13600,
"amount_outstanding_details": {
"purchases": { "principal": 13334, "interest": 0, "fees": 266 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"installment_adjustment": 0,
"payments": []
},
{
"installment_num": 1,
"due_date": "2026-10-31",
"payment_due_date": "2026-11-21",
"date_assessed": null,
"amount_due": 13600,
"amount_due_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_paid": 0,
"amount_paid_details": {
"purchases": { "principal": 0, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_outstanding": 13600,
"amount_outstanding_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"installment_adjustment": 0,
"payments": []
},
{
"installment_num": 2,
"due_date": "2026-11-30",
"payment_due_date": "2026-12-21",
"date_assessed": null,
"amount_due": 13600,
"amount_due_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_paid": 0,
"amount_paid_details": {
"purchases": { "principal": 0, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_outstanding": 13600,
"amount_outstanding_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"installment_adjustment": 0,
"payments": []
}
]
}2. First installment paid
Retrieved on October 16. The cardholder paid $136.00 on October 15, and the payment was applied to installment 0. Its amount_outstanding is now 0, and the payment is listed in its payments. On the plan, total_paid is 13600, installments_paid is 1, and installments_outstanding is 2. Only the fields that changed since step 1 are shown.
{
"token": "2xL9QmVt7RkPz3NcW8YbH1sJfDa",
"total_paid": 13600,
"installments_paid": 1,
"installments_outstanding": 2,
"updated": "2026-10-16T06:08:51Z",
"installments": [
{
"installment_num": 0,
"amount_paid": 13600,
"amount_paid_details": {
"purchases": { "principal": 13334, "interest": 0, "fees": 266 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_outstanding": 0,
"amount_outstanding_details": {
"purchases": { "principal": 0, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"payments": [
{
"date": "2026-10-15",
"amount": 13600,
"amount_details": {
"purchases": { "principal": 13334, "interest": 0, "fees": 266 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"is_adjustment": false
}
]
}
]
}3. Second installment billed
Retrieved on November 1. The October 31 statement billed installment 1, so its date_assessed is set, and it's owed by November 21. Only the fields that changed since step 2 are shown.
{
"token": "2xL9QmVt7RkPz3NcW8YbH1sJfDa",
"updated": "2026-11-01T06:09:17Z",
"installments": [
{
"installment_num": 1,
"date_assessed": "2026-10-31"
}
]
}4. Plan paid off
Retrieved on December 16. Installment 2 was billed on the November 30 statement. Installments 1 and 2 were paid on November 15 and December 15. Once the last installment was paid, the plan moved to FULLY_PAID, and closed_at is set to the date of that last payment.
{
"token": "2xL9QmVt7RkPz3NcW8YbH1sJfDa",
"financial_account_token": "a6d2b9f1-3c47-4e0a-9b5d-2f8e1c7a4d63",
"state": "FULLY_PAID",
"source_type": "UNPAID_BALANCE",
"source_id": "2xKfR4pLw9TnB6VhQ2ZsC8mJdYe",
"source_amounts": {
"purchases": { "principal": 40000, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"principal_amount": 40000,
"fee_amount": 800,
"installment_plan_total": 40800,
"total_paid": 40800,
"installment_plan_adjustment": 0,
"num_installments": 3,
"installments_paid": 3,
"installments_outstanding": 0,
"start_date": "2026-09-30",
"closed_at": "2026-12-15",
"created": "2026-10-01T06:12:44Z",
"updated": "2026-12-16T06:11:05Z",
"installments": [
{
"installment_num": 0,
"due_date": "2026-09-30",
"payment_due_date": "2026-10-21",
"date_assessed": "2026-09-30",
"amount_due": 13600,
"amount_due_details": {
"purchases": { "principal": 13334, "interest": 0, "fees": 266 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_paid": 13600,
"amount_paid_details": {
"purchases": { "principal": 13334, "interest": 0, "fees": 266 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_outstanding": 0,
"amount_outstanding_details": {
"purchases": { "principal": 0, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"installment_adjustment": 0,
"payments": [
{
"date": "2026-10-15",
"amount": 13600,
"amount_details": {
"purchases": { "principal": 13334, "interest": 0, "fees": 266 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"is_adjustment": false
}
]
},
{
"installment_num": 1,
"due_date": "2026-10-31",
"payment_due_date": "2026-11-21",
"date_assessed": "2026-10-31",
"amount_due": 13600,
"amount_due_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_paid": 13600,
"amount_paid_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_outstanding": 0,
"amount_outstanding_details": {
"purchases": { "principal": 0, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"installment_adjustment": 0,
"payments": [
{
"date": "2026-11-15",
"amount": 13600,
"amount_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"is_adjustment": false
}
]
},
{
"installment_num": 2,
"due_date": "2026-11-30",
"payment_due_date": "2026-12-21",
"date_assessed": "2026-11-30",
"amount_due": 13600,
"amount_due_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_paid": 13600,
"amount_paid_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_outstanding": 0,
"amount_outstanding_details": {
"purchases": { "principal": 0, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"installment_adjustment": 0,
"payments": [
{
"date": "2026-12-15",
"amount": 13600,
"amount_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"is_adjustment": false
}
]
}
]
}Installment plan statements
This is the same plan as it stood on the statement that closed October 31, retrieved on December 16 along with the live plan in step 4. Compare the two:
- The live plan is
FULLY_PAID, but the snapshot still showsACTIVEwithclosed_atset tonull, because the plan was still open when this statement was generated. - Installment 0 was paid on October 15, before the statement closed, so its payment appears here.
- Installment 1 was billed that day, so
date_assessedis set. It wasn't paid until November 15, so on this snapshot it still showsamount_outstanding: 13600and no payments. - Installment 2 hadn't been billed yet, so its
date_assessedisnull. total_paidis13600andinstallments_paidis1.updatedis the plan's last change before this statement was generated, the billing of installment 1, so it matches step 3.
token is the statement token, and installment_plan_token is the plan token.
{
"token": "2yQ7JdRt4XmVp9BcN2LsK6wHgFe",
"installment_plan_token": "2xL9QmVt7RkPz3NcW8YbH1sJfDa",
"state": "ACTIVE",
"source_type": "UNPAID_BALANCE",
"source_id": "2xKfR4pLw9TnB6VhQ2ZsC8mJdYe",
"source_amounts": {
"purchases": { "principal": 40000, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"principal_amount": 40000,
"fee_amount": 800,
"installment_plan_total": 40800,
"total_paid": 13600,
"installment_plan_adjustment": 0,
"num_installments": 3,
"installments_paid": 1,
"installments_outstanding": 2,
"start_date": "2026-09-30",
"closed_at": null,
"created": "2026-10-01T06:12:44Z",
"updated": "2026-11-01T06:09:17Z",
"installments": [
{
"installment_num": 0,
"due_date": "2026-09-30",
"payment_due_date": "2026-10-21",
"date_assessed": "2026-09-30",
"amount_due": 13600,
"amount_due_details": {
"purchases": { "principal": 13334, "interest": 0, "fees": 266 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_paid": 13600,
"amount_paid_details": {
"purchases": { "principal": 13334, "interest": 0, "fees": 266 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_outstanding": 0,
"amount_outstanding_details": {
"purchases": { "principal": 0, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"installment_adjustment": 0,
"payments": [
{
"date": "2026-10-15",
"amount": 13600,
"amount_details": {
"purchases": { "principal": 13334, "interest": 0, "fees": 266 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"is_adjustment": false
}
]
},
{
"installment_num": 1,
"due_date": "2026-10-31",
"payment_due_date": "2026-11-21",
"date_assessed": "2026-10-31",
"amount_due": 13600,
"amount_due_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_paid": 0,
"amount_paid_details": {
"purchases": { "principal": 0, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_outstanding": 13600,
"amount_outstanding_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"installment_adjustment": 0,
"payments": []
},
{
"installment_num": 2,
"due_date": "2026-11-30",
"payment_due_date": "2026-12-21",
"date_assessed": null,
"amount_due": 13600,
"amount_due_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_paid": 0,
"amount_paid_details": {
"purchases": { "principal": 0, "interest": 0, "fees": 0 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"amount_outstanding": 13600,
"amount_outstanding_details": {
"purchases": { "principal": 13333, "interest": 0, "fees": 267 },
"cash_advances": { "principal": 0, "interest": 0, "fees": 0 },
"balance_transfers": { "principal": 0, "interest": 0, "fees": 0 }
},
"installment_adjustment": 0,
"payments": []
}
]
}A statement snapshot is the plan as it stood when a given statement was generated. It has the same fields as the plan, with two differences:
tokenis the token of the statement the snapshot belongs to. A plan has at most one snapshot per statement, so the statement token identifies the snapshot. Use it as the{statement_token}path parameter and as the pagination cursor.installment_plan_tokenholds the plan's own token. There is nofinancial_account_token, because the account is already in the path.
All other fields mean the same thing as on the live plan, but their values are as of that statement. On a snapshot, total_paid, installments_paid, date_assessed, payments, closed_at, and state reflect only what had happened by the time that statement was generated.
Which statements carry a snapshot. A plan gets a snapshot on every statement whose period it was open for. That means the plan started on or before the period ended and wasn't closed before the period began. A plan that is paid off during a period gets one last snapshot showing it FULLY_PAID, and it doesn't appear on later statements.
List filters
GET .../installment_plans/{installment_plan_token}/statements returns snapshots oldest first and accepts these query parameters:
| Parameter | Meaning |
|---|---|
begin / end | Only snapshots whose statement starts on or after begin, or on or before end. |
state | Only snapshots in which the plan was in this state, such as FULLY_PAID to find the statement where the plan closed. |
starting_after / ending_before | Statement tokens to use as pagination cursors. |
page_size | 1 to 100. Default 50. |
GET .../installment_plans takes state and the same cursor and page_size parameters, and uses plan tokens as cursors.
Errors
| Situation | Status | Message |
|---|---|---|
installment_plan_token isn't a valid token | 400 | Incorrectly formatted installment_plan_token |
statement_token isn't a valid token | 400 | Incorrectly formatted statement_token |
| Cursor isn't within the requested range | 400 | starting_after or ending_before is not in range |
| Plan not found on this account | 404 | Installment plan not found |
| No snapshot of this plan exists on that statement | 404 | Installment plan statement not found |
Learn more
Installment plans appear on an account's statements alongside its other balances. To learn how statements are generated and what they contain, see Credit Statements.
Updated about 2 hours ago
