Record a repayment
Repayments
Record a repayment
Post a regular installment repayment.
POST
Record a repayment
Records a standard repayment against an active loan. The amount is
allocated to interest then principal according to the loan’s
processing rules.
Two equivalent forms — prefer the externalId form for partner integrations.
Path parameters
The loan’s externalId. On the
/v1/loans/{loan_id}/repayments form,
this is the numeric LMS id instead.Request body
Must be greater than 0.
Optional value date of the payment, in ISO
yyyy-MM-dd. Books the
repayment as of the day the money actually moved on your side rather
than the day you call this API — the reconciliation case where a
wallet debit succeeds but settling with us is delayed (a failure,
timeout, or a next-day retry).When the value date is on or before the loan’s due date (the
customer paid on time) and the loan is carrying an overdue penalty the
LMS raised while your settle call was in flight, the service
automatically cancels that penalty before posting the repayment, then
lets the LMS recompute it against whatever is genuinely still overdue.
See Reconciling delayed settlements
for the full behaviour.Defaults to the current date when omitted. Must be on or after the
loan’s disbursement date and not in the future. Backdating
across a later transaction already recorded on the loan may be
rejected by the ledger.Optional dedupe token — typically your wallet transaction reference
for this payment (max 100 characters). If a repayment carrying this key
has already been recorded on the loan, the original transaction is
returned unchanged: the retry neither double-posts nor re-runs penalty
reconciliation. Strongly recommended on every repayment so timeouts
and retries are safe to replay. Use a value unique per payment.
Examples
Response
200 OK returns the repayment object showing
how the amount was allocated.
Errors
| Code | When |
|---|---|
not_found | No loan with that id or externalId |
failed_precondition | Loan is not in an active state |
invalid_argument | Missing or non-positive transactionAmount; transactionDate not ISO yyyy-MM-dd, in the future, or before disbursement; idempotencyKey longer than 100 characters |

