Skip to main content
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

string
required
The loan’s externalId. On the /v1/loans/{loan_id}/repayments form, this is the numeric LMS id instead.

Request body

number
required
Must be greater than 0.
string
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.
string
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