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.*

DeprecatedUse instead
payment.pending_approvalpayout.pending_approval
payment.approvedpayout.approved
payment.rejectedpayout.rejected
payment.cancelledpayout.cancelled
payment.processingpayout.processing
payment.settledpayout.settled
payment.failedpayout.failed
payment.reversedpayout.reversed

The payload is the same; only the event name changes.

  • Who still gets payment.*: only endpoints that subscribed to a payment.* name explicitly. An endpoint subscribed to "*", and every new subscription, gets payout.* only.
  • How to migrate:
    1. Add the payout.* names to your endpoint.
    2. Handle them. While both names are on, each payout event arrives twice, once under each name, with different ids. Dedupe by data.transactionId and data.status.
    3. Remove the payment.* names from the endpoint.

Scopes and team permissions: payment.* is now payout.*

DeprecatedUse instead
payment.viewpayout.view
payment.createpayout.create
payment.approvepayout.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 to payout.*.

Payouts

POST /payouts request

DeprecatedUse insteadWhy
amounttoAmountSame value: what the recipient gets. In responses, amount means what you sent, so one name meant two things.
currencytoCurrencySame value: the recipient's currency, not the wallet you pay from (that is fromCurrency).

Payout responses (POST /payouts, GET /payouts/{id}, GET /payouts)

DeprecatedUse instead
amountfromAmount
currencyfromCurrency
transactionFeesfee
metadata.toAmount, metadata.toCurrency, metadata.ratetoAmount, toCurrency, rate
history[].createdAthistory[].at
data.payments (GET /payouts)data.payouts

Transactions

GET /transactions and GET /transactions/{id}:

DeprecatedUse instead
amountfromAmount for payouts, grossAmount for collections
currencyfromCurrency (debits) or toCurrency (credits)
transactionFeesfee

Collections

GET /collections, GET /collections/{id} and the create response:

DeprecatedUse instead
netfromAmount
amountgrossAmount
currencyfromCurrency

Payout estimates

GET /payouts/estimate:

DeprecatedUse instead
feesfee
amountWithFeegrossAmount
payoutRate, payinRaterate

Recipients

DeprecatedUse instead
destination.accountOwnerType (request)ownerType at the top level

Webhook payloads

DeprecatedOnUse instead
amountevery eventfromAmount (payouts) or grossAmount (collections)
currencyevery eventfromCurrency
grosscollection.settled, collection.refundedgrossAmount
netcollection.settledfromAmount
amountReceivedcollection.settledgrossAmount

Checklist

  1. Subscribe your endpoints to payout.*, handle those events, then drop payment.*.
  2. Create keys and roles with payout.view / payout.create / payout.approve.
  3. Send toAmount / toCurrency (or fromAmount / fromCurrency) on POST /payouts, never amount / currency.
  4. Read money from fromAmount, fee, grossAmount, toAmount and rate; stop reading amount, currency, transactionFees, fees, amountWithFee, net, gross and amountReceived.
  5. Read data.payouts from GET /payouts and at from a payout's history.
  6. Send ownerType on recipients, not destination.accountOwnerType.