- You set the amount, only from your server.
amountandcurrencycome fromPOST /v1/checkout-sessionswith your secret key. The browser can never change them. - The amount locks when the shopper starts paying. You can
PATCHamount,currencyandline_itemsuntil the first payment attempt; after that the API returnsamount_locked. Expire the session and create a new one if the order changes. - Line items must add up. When you send
line_items, the sum ofquantity * unit_amountmust equalamount(line_items_mismatchotherwise). - Every provider event is checked. If the provider ever reports a different amount,
Kalixo sets
amount_mismatch: true, sendspayment.amount_mismatch, and cancels or refunds the payment automatically. Never fulfil a payment withamount_mismatch: true. - Confirm on your server, from Kalixo’s records. Do not fulfil on browser events,
return_urlredirects, orcheckout_session.statusalone. Fulfil only afterpayment.captured(orpayment.authorizedfor manual capture) andamount_mismatchisfalseonGET /v1/payments/{id}. - Totals are enforced. Captures never exceed the authorised amount and refunds never exceed the captured amount, even under concurrent requests.
- Everything is echoed back. Payments and events carry
amount,currency,amount_authorized,amount_captured,amount_refunded,amount_disputed, yourreferenceand yourmetadata, unchanged.
Core concepts
Amount integrity
The amount you send is exactly the amount Kalixo charges.