Deprecations
Fields, events and scopes that are being replaced, what to use instead, and how to migrate.
Everything on this page still works today, so nothing breaks yet. Each item is scheduled for removal, and the date will be announced on this page. Move to the replacement now.
Webhook events: payment.* is now payout.*
| Deprecated | Use instead |
|---|---|
payment.pending_approval | payout.pending_approval |
payment.approved | payout.approved |
payment.rejected | payout.rejected |
payment.cancelled | payout.cancelled |
payment.processing | payout.processing |
payment.settled | payout.settled |
payment.failed | payout.failed |
payment.reversed | payout.reversed |
The payload is the same; only the event name changes.
- Who still gets
payment.*: only endpoints that subscribed to apayment.*name explicitly. An endpoint subscribed to"*", and every new subscription, getspayout.*only. - How to migrate:
- Add the
payout.*names to your endpoint. - Handle them. While both names are on, each payout event arrives twice, once under each name, with different
ids. Dedupe bydata.transactionIdanddata.status. - Remove the
payment.*names from the endpoint.
- Add the
Scopes and team permissions: payment.* is now payout.*
| Deprecated | Use instead |
|---|---|
payment.view | payout.view |
payment.create | payout.create |
payment.approve | payout.approve (team roles only) |
- Converted for you: existing API keys and custom team roles were renamed automatically. They show the new names and nothing else changes.
- Old names still accepted: creating a key or a role with an old name still works, and it is stored under the new name.
- What to change: any code or infrastructure template that creates keys or roles with
payment.*. Update it topayout.*.
Payouts
POST /payouts request
| Deprecated | Use instead | Why |
|---|---|---|
amount | toAmount | Same value: what the recipient gets. In responses, amount means what you sent, so one name meant two things. |
currency | toCurrency | Same value: the recipient's currency, not the wallet you pay from (that is fromCurrency). |
Payout responses (POST /payouts, GET /payouts/{id}, GET /payouts)
| Deprecated | Use instead |
|---|---|
amount | fromAmount |
currency | fromCurrency |
transactionFees | fee |
metadata.toAmount, metadata.toCurrency, metadata.rate | toAmount, toCurrency, rate |
history[].createdAt | history[].at |
data.payments (GET /payouts) | data.payouts |
Transactions
GET /transactions and GET /transactions/{id}:
| Deprecated | Use instead |
|---|---|
amount | fromAmount for payouts, grossAmount for collections |
currency | fromCurrency (debits) or toCurrency (credits) |
transactionFees | fee |
Collections
GET /collections, GET /collections/{id} and the create response:
| Deprecated | Use instead |
|---|---|
net | fromAmount |
amount | grossAmount |
currency | fromCurrency |
Payout estimates
GET /payouts/estimate:
| Deprecated | Use instead |
|---|---|
fees | fee |
amountWithFee | grossAmount |
payoutRate, payinRate | rate |
Recipients
| Deprecated | Use instead |
|---|---|
destination.accountOwnerType (request) | ownerType at the top level |
Webhook payloads
| Deprecated | On | Use instead |
|---|---|---|
amount | every event | fromAmount (payouts) or grossAmount (collections) |
currency | every event | fromCurrency |
gross | collection.settled, collection.refunded | grossAmount |
net | collection.settled | fromAmount |
amountReceived | collection.settled | grossAmount |
Checklist
- Subscribe your endpoints to
payout.*, handle those events, then droppayment.*. - Create keys and roles with
payout.view/payout.create/payout.approve. - Send
toAmount/toCurrency(orfromAmount/fromCurrency) onPOST /payouts, neveramount/currency. - Read money from
fromAmount,fee,grossAmount,toAmountandrate; stop readingamount,currency,transactionFees,fees,amountWithFee,net,grossandamountReceived. - Read
data.payoutsfromGET /payoutsandatfrom a payout'shistory. - Send
ownerTypeon recipients, notdestination.accountOwnerType.