POST /v2/user_credit_balances/{user_credit_balance_id}/user_credit_transactions and read it with GET /v2/user_credit_transactions/{id}.
status field. Corrections are reversals: new user credit transactions with their own IDs. See Reversals.
Fields
Types
Thetype sets the rules for the amounts and which blocks of the user credit balance move. “Sign” is the required sign of amount. Any type that carries details.rewards also moves rewards. See The details block.
How the dispute and charge-off blocks move
Thedispute and charge_off blocks track amounts that have left the outstanding balance but are not yet settled.
- A
dispute_provisionalfor $50 reducesamount_breakdownby5000and raisesdisputeby5000. - A
dispute_lostfor $50 raisesamount_breakdownby5000and reducesdisputeby5000. - A
dispute_wonfor $50 reducesdisputeby5000and leavesamount_breakdownalone, because the provisional credit already reduced it.
charge_off moves the amount from amount_breakdown into charge_off. A charge_off_recovery reduces charge_off only.
Send amount_breakdown on every type, including dispute_won and charge_off_recovery. Lead applies the split to the dispute or charge_off block.
The details block
details.card_network
details.rewards
Send both fields whenever you send
details.rewards.
Lead adds details.rewards.amount to the user credit balance’s rewards block on every type that carries it, not only the three rewards types. To report rewards your customer earned on a card purchase, send details.rewards on the card_network user credit transaction. You do not need a separate rewards_earned transaction. Use rewards_earned for rewards that are not tied to another user credit transaction, such as a sign-up bonus.
Reversals
POST /v2/user_credit_transactions/{id}/reverse undoes a user credit transaction. No request body is needed. Idempotency-Key is required.
Lead creates a new user credit transaction and returns it with a 200. The reversal:
- Has the same
typeas the original. - Negates
amount, everyamount_breakdownfield,details.rewards.amount, and thedetails.card_networkauthorization and settlement amounts. - Sets
details.reversal.original_transaction_idto the original. - Sets
effective_atto the time of the reversal.
- The user credit balance must be
active. Otherwise Lead returns a422withoperation_not_allowed. - You can reverse a user credit transaction once. A second reversal with a new
Idempotency-Keyreturns a409withoperation_not_allowedand the ID of the existing reversal. Retrying with the same key returns the original reversal. - You cannot reverse a reversal. To restore an amount, post a new user credit transaction.
- You cannot reverse a user credit transaction Lead posted, such as
funding.
Post and update
POST /v2/user_credit_balances/{user_credit_balance_id}/user_credit_transactions requires an Idempotency-Key header. Without one, a retried request posts a second user credit transaction and double-counts the amount on the user credit balance. See Idempotency.
The request body takes these fields from the object: type, description, currency_code, amount, amount_breakdown, details, effective_at, and metadata. Leave out everything else. Lead sets it, and rejects a request that sends it.
type,description,currency_code,amount, all threeamount_breakdownfields, andeffective_atare always required.amountmust equalamount_breakdown.principal + amount_breakdown.interest + amount_breakdown.fees, and must have the sign the type requires. See Types.- The user credit balance must be
active.card_networkuser credit transactions can also post toinactiveandcloseduser credit balances. Nothing posts toreporting_stopped. Otherwise Lead returns a422withoperation_not_allowed. - Reusing an
Idempotency-Keywith the same body returns the original user credit transaction. Reusing it with a different body returns a422withidempotency_request_inconsistent.
PATCH /v2/user_credit_transactions/{id} changes only the fields you send. You can change:
description.metadata. Send"metadata": nullto clear it.details.card_network.settlement_date, oncard_networkuser credit transactions only.
422 with immutable_field. To change amounts, type, or effective_at, reverse the user credit transaction and post a new one. If another request changed the user credit transaction after yours was received, Lead returns a 409 with object_modified_concurrently. Retrieve it and retry.
List user credit transactions
GET /v2/user_credit_transactions returns your user credit transactions with cursor pagination. Filter with these query parameters:
GET /v2/user_credit_transactions/{id} returns one user credit transaction. Lead returns a 404 if it does not exist.

