Skip to main content

Push API

You build

  • A signed HTTPS client (signing)
  • A job that pushes new/changed loans (real-time or batched)

We provide

  • Validation with per-row errors, dedupe, geocoding, assignment
  • case.received webhooks + the full event stream
  • Batch idempotency + Idempotency-Key replay safety

Endpoints

MethodPathPurpose
POST/api/v1/partner/casesPush a batch (≤1,000 rows). ?dryRun=1 validates without writing.
GET/api/v1/partner/cases/{sourceLoanNumber}Authoritative live snapshot of one case.
POST/api/v1/partner/cases/{sourceLoanNumber}/recallWithdraw a case (borrower paid you directly / restructured). Idempotent.

Full schemas in the API reference.

  1. New overdue loans — push as they cross your DPD threshold (or hourly).
  2. Changes — re-push the row when outstanding/contact/address changes; it updates in place.
  3. Daily reconciliation — one fullSnapshot: true push of your complete active book; anything we hold that's missing from it is flagged both sides.
  4. Recalls — call recall the moment a borrower settles with you directly, so no partner makes a wasted (and borrower-annoying) visit.

Response shape

{
"success": true,
"dryRun": false,
"batchId": "…",
"summary": { "totalRowsInCsv": 200, "validRows": 198, "created": 150, "updatedSnapshot": 40, "unchanged": 8, "errored": 2 },
"errors": [ { "index": 17, "sourceLoanNumber": "LN-…", "reason": "borrower.phone: invalid_mobile" } ]
}

Rows fail individually — one bad phone number never blocks the batch.