Skip to main content
POST
Sync customer and loans from LMS

Overview

Perform a full sync of a single customer and all their loans from your company’s configured LMS. This endpoint can be used:
  • Manually by client engineers for testing
  • As a webhook target for automated syncs when your LMS detects updates (e.g., new loan application)
The sync includes:
  • Customer/contact information (name, phone, email, SSN, address, etc.)
  • All loans for the customer
  • For each loan: status, amounts, and schedule creation as appropriate

Request Body Format

Fields

  • customerId — Customer identifier in your LMS (required). Must be a non-empty string.

What Happens During Sync

  1. Finosu calls your company’s LMS to fetch the customer’s data
  2. Creates or updates the customer record in Finosu (name, phone, email, birthday, SSN, address, timezone)
  3. Fetches all loans for that customer from the LMS
  4. For each loan:
    • Creates or updates the loan record in Finosu
    • For pending/origination loans: creates the call schedule automatically
    • For active loans: creates the loan record for servicing
    • Terminal loans (closed, paid, etc.) are skipped

Response Format

Response Fields

Error Handling

Authentication

Requires X-API-Key header with a valid webhook API key. The key determines which company and LMS integration to use.

Syncing Multiple Customers

To sync multiple customers at once, use the LMS Customer Batch Sync endpoint instead. It accepts an array of customer IDs and processes them asynchronously.

Request naming

Use camelCase request fields. Existing snake_case aliases are also accepted by the API.

Retries and results

Idempotency-Key is logged for correlation only; it does not deduplicate requests or replay earlier results. A repeated request can run the sync again. HTTP 200 means a sync result was returned. Inspect success, error, and each entry in loans before treating the operation as successful. Missing or invalid authentication returns 401; request-body validation failures and invalid LMS identifiers return 422.

Validation-status migration

Invalid LMS identifiers and batch-job UUIDs return 422. Confirmed missing records return 404; malformed provider data and unexpected internal failures return 500. Unsupported LMS operations retain 400. Update status-based integrations and monitoring: some cases previously reported as 400, 404, or 422 now have a different classification. This does not make retrying a sync safe or enable request deduplication.

Authorizations

X-API-Key
string
header
required

Headers

Idempotency-Key
string

Optional correlation key, logged for observability only. Does not deduplicate requests or replay previous results.

Body

application/json

Customer identifier to sync

customerId
string
required

Customer identifier in the external LMS

Minimum string length: 1
Example:

"12345"

Response

Sync result returned. Inspect success, error, and per-loan results.

success
boolean
required

Whether the sync completed successfully

lmsType
string
required

The configured LMS type used

Example:

"example-lms"

customerId
string
required

External LMS customer identifier

Example:

"12345"

finosuCustomerId
string<uuid>
required

Finosu internal customer UUID

Example:

"550e8400-e29b-41d4-a716-446655440000"

loansSynced
integer
required

Number of loans synced

Example:

2

loans
object[]

Detailed results for each loan

error
string | null

Error message if sync failed