When a payee's address stops taking payouts
SET Direct Deposit API · Live since 2026-11-10
The problem
A payee's Cash-Out Address can stop taking payouts:
- the payee removes it in SET Wallet ("Stop using this address"), for example after changing banks; or
- SET's provider deactivates it.
A partner that saved the address keeps paying it. Before 10 November 2026, GET /api/partner/address could still answer acceptsPayouts: true for an address the payee had retired. That is fixed.
What SET does now
- The address is marked retired, with a
reason:payee_removedorprovider_deactivated. - Every partner SET told the address takes its payouts gets one
address.deactivatedevent. That covers an address check that answeredtrue, and a Payable Email answer ofdirect. GET /api/partner/addressanswersacceptsPayouts: false, active: false, withdeactivatedAtandreason.
{ "object": "address", "chain": "base", "address": "0x…", "kind": "cash_out_address", "active": false,
"reason": "payee_removed", "deactivatedAt": "…", "sandbox": false,
"action": "The payee removed this address in SET Wallet. Stop paying it, and ask the payee for their current address (GET /api/partner/address answers active: false for this one)." }The event carries the network and the address you already hold, never payee data.
What you should do
- Stop paying the address as soon as the event arrives.
- Ask the payee for their current address, or resolve their email again with
POST /api/partner/payees. - Check an address before each payout, not only once. Re-resolve Payable Email payees before every payment.
Timing
- A payee's removal is told at once.
- A deactivation by the provider is noticed at SET's next hourly check of that address, not the moment it happens: the provider sends SET no event for it.
When the payee asks for an address again
A payee who sets up a Cash-Out Address again on the same network, rail and bank may get the same address back. The provider allows one such address per bank account, network and currency. An address the provider deactivated is never brought back.
Try it in the sandbox
On staging, check an address with GET /api/partner/address, then:
POST /api/partner/sandbox/address_deactivated
{ "chain": "base", "address": "0x…", "reason": "payee_removed" }You get a simulated address.deactivated (simulated: true). The address itself is not changed.