credit_union.v1 profile, an approved Client and Portfolio, and the required scopes.
Map the source records
Suppose Avery Example has a personal loan with EUR 4,000 outstanding, of which EUR 1,250 is authorized for collection.
Persist this mapping in your source integration. Do not use actual member or account numbers as URL IDs. The quickstart generates fresh IDs for each rehearsal; a real integration keeps each record’s ID stable across updates and each payment event’s ID stable across retries.
Place the arrears
- Create the Customer and Contacts. Always supply Contact IDs so you can update those Contacts later.
- Create the Receivable with the Customer’s ID, due date and required
creditUnionloan details. Exactly one responsible Customer must beprimary, and Customer IDs must be unique. - Read back the Receivable. Its
recoverableAmountshould be EUR 1,250.00. A suppliedbalanceBreakdownmust sum to this amount, not to the total loan balance.
{"amount":"4000.00","currency":"EUR"}.
Accepting these records does not activate production recovery. Follow the separate activation path.
Reconcile after a payment
The credit union receives EUR 250 by bank transfer. Submit a Payment observation for EUR 250.00 withresultingRecoverableAmount of EUR 1,000.00 and the Receivable’s ID.
If the Payment response is lost, repeat that observation with the same ID and payload. Do not replay the original EUR 1,250 Receivable PUT: it can restore that old amount. Serialize changes for each Receivable and reconcile before another balance write. See Errors and retries.
A mismatched resulting balance returns
409 balance_mismatch. Read the current Receivable and reconcile the source events before correcting the request; do not invent a payment from a balance difference. Refunds and reversals must reference the original Payment observation and reverse it in full; partial adjustments are unsupported.