Changelog

What changed, when, and what you have to do about it.

Dated, newest first. Anything that would break a working integration appears here before it ships, with the migration step.

Additions are not breaking. We add fields to responses and optional fields to requests without notice, so parse defensively: ignore properties you do not recognise rather than rejecting the payload.

2026-10-10

Changed — InversePay sets fee_minor. Charges and payouts are now priced from your plan; see Fees. fee_minor on POST /charges and POST /payouts, and the fee_minor column of a bulk payout file, was documented as your own fee, but it was booked as InversePay's. A request that sets it to anything but 0 is now refused with 422 VALIDATION_FAILED.

Migration: stop sending fee_minor, or send 0. Read the fee from the response: net_minor on a charge is what you receive, and total_minor on a payout is what leaves your balance.

2026-08-23

Added — POST /charges, GET /charges, GET /charges/{id}. Taking a payment directly, without a payment link. See the quickstart.

Added — API keys work on the Business API. Endpoints that previously required a dashboard session now accept a sk_test_ or sk_live_ key with the matching scope. Governance actions — members, keys, approvals, KYB — remain session-only by design. See Authentication.

Changed — test and live idempotency keys no longer share a namespace. The same key in test and in live are now different keys. If you replayed sandbox order references against live you would previously have been handed the test charge back and told it succeeded; you now correctly get a new live charge. No action needed unless you were relying on the old behaviour, which you should not have been.

Before that

This changelog starts here. Earlier changes predate the public API and are not recorded — if you integrated before this date, the reference is the current truth.

On this page