Sender wallets and unknown senders
SET Direct Deposit API · Live since 2026-11-09 · Draft guide
SET credits a payout to a partner, counts it in the partner's statement and tax data, and sends the partner's Travel Rule details with it, only when it comes from a wallet registered to that partner. Partners register their own wallets with the wallet's signature. A payout from a wallet nobody has registered is never guessed at.
Register a wallet you pay from
GET /api/partner/senders/message?chain=base&address=0x…returns the exact text to sign and itsissuedAt. The text names your partner id, the wallet, the network and the mode (live or test), and is valid for one hour.- Sign it with the wallet:
- an ordinary wallet signs with
personal_sign(EIP-191); - a contract wallet such as a Safe is checked on chain with EIP-1271
isValidSignature.
- an ordinary wallet signs with
POST /api/partner/senderswith{chain, address, issuedAt, signature, label?}.
A wallet belongs to one partner (409 sender_taken). GET /api/partner/senders lists your wallets with how each was registered (source: operator or signature; proof: eoa or eip1271). DELETE /api/partner/senders/{chain}/{address} removes one; payouts already credited stay credited.
When a payout arrives from an unknown wallet
If you send a payout to an address SET has told you takes your payouts (GET /api/partner/address answered acceptsPayouts: true, or Payable Email answered direct) from a wallet nobody registered, SET:
- records it as
unknown_senderand keeps the sending wallet from the chain; - sends you
payout.unknown_senderwith the payout id, address, amount, deposit transaction and sending wallet. Nothing about the payee is disclosed: you already hold the address, and the transfer is public on chain.
Late attribution. Register that wallet within 30 days of the payout and SET credits the payout to you and sends its Travel Rule data at the next scheduled run. The registration answer reports it as lateAttribution: {credited, queued}.
Try it in the sandbox
On staging, POST /api/partner/sandbox/unknown_sender with {chain, address, amount, senderAddress} creates a payout from an unregistered wallet and sends payout.unknown_sender. Registering senderAddress afterwards credits it (payout.funds_received). No money moves.