Skip to main content

Overview

The old API used a single POST /v1/rent-reporting/report with all data in one flat request. The new API separates concerns:
Old ApproachNew Approach
All PII + payment in every requestConsumer created once
Flat structureTradeline (obligation) created once
Single endpointPayments reported monthly
No GET endpointsFull read access to all resources
No status trackingBureau submissions + webhooks

Field mapping

Old FieldNew EndpointNew FieldNotes
first_namePOST /consumersfirst_nameSame
last_namePOST /consumerslast_nameSame
middle_namePOST /consumersmiddle_nameSame
date_of_birthPOST /consumersdate_of_birthSame
phonePOST /consumersphoneNow E.164 format
emailPOST /consumersemailSame
address.*POST /consumersaddress.*Same structure
ecoa_codePOST /tradelinesecoa_codeSame values
lease_start_datePOST /tradelinesaccount_opened_dateRenamed
lease_end_datePOST /tradelinesaccount_closed_dateSet via PATCH or DELETE
rent_amountPOST /tradelinespayment_amountNow in cents! Multiply by 100
account_statusAuto-computedBased on payment_status
payment_history_profileAuto-computedBuilt from 24-month rolling records
date_of_first_delinquencyAuto-computedSet on first non-current payment
rent_paidPOST /paymentsamount_paidNow in cents!
current_balance_dueAuto-computedamount_due - amount_paid across periods
amount_past_dueAuto-computedSum of unpaid amounts

Key behavioral differences

  1. Consumer PII submitted once — not with every payment report.
  2. Payment type is explicit — use child_support instead of cramming into rent_amount.
  3. Amounts are in cents — $4,500.00 = 450000. Multiply existing dollar values by 100.
  4. Status is auto-computed — don’t set account_status or payment_history_profile manually. They’re derived from payment records.
  5. GET endpoints exist — check submission status anytime via GET /submissions.
  6. Webhooks provide push notifications for bureau responses.
  7. Tradeline represents the obligation — created once, not re-sent with every payment.

Step-by-step migration

1

Create consumers

For each unique person in your system, call POST /consumers once. Save the returned id.
2

Create tradelines

For each ongoing payment obligation, call POST /tradelines with the consumer’s id and the correct payment_type. Save the returned tradeline id.
3

Report payments monthly

Each month, call POST /payments with the tradeline id, amount due, amount paid, and payment status.
4

Set up webhooks

Configure your webhook_url to receive bureau submission status updates.
5

Monitor submissions

Use GET /submissions to track bureau processing status.
6

Switch to production

Once integration testing is complete with sk_test_* keys, switch to sk_live_* for production.