Generate a payout link
Send a shareable link that lets someone claim a payout without a recipient record.
Goal
Generate a single-use link with a fixed amount that anyone can open, enter their bank details, and receive the funds — without needing to first exist as a recipient in your account. Useful for one-off contractor payments, referral payouts, customer refunds where you don't have the bank info, or any "we need to pay this person once" flow.
Prerequisites
- API key with Treasury enabled.
- A linked funding bank account with balance to cover the link amount.
Implementation
1. Generate the link
const { data: link } = await client.generatePayoutLink({
amount: 25_000, // $250.00, USD cents, integer > 0
currency: "USD", // only USD today
description: "Q3 referral bonus — order #4127", // ≤1000 chars
});
// link.url — the shareable URL
// link.token — the path token (also embedded in url)
// link.expires_at — ISO-8601 expiry
// link.status — "pending"Underlying endpoint: POST /treasury/payout-link/generate.
2. Share the link
Email it, drop it into Slack, embed it in your own UI — it's a regular HTTPS URL. The hosted page on the other end:
- Asks the claimant to identify themselves (name + email).
- Walks them through bank entry via Plaid Link.
- On submit (
POST /treasury/payout-link/{token}/submit), creates a recipient + payment method on your account and queues the payout.
3. Track redemption
const { data } = await client.getPayoutLink(link.token);
// data.status: "pending" | "claimed" | "completed" | "expired" | "cancelled"
// data.recipient_id — set once claimed
// data.transaction_id — set once the payout is initiatedOr list all your links to build a redemption dashboard:
const { data: links } = await client.listPayoutLinks();4. (Optional) React when the payout settles
The standard settlement.created webhook fires when the underlying payout
funds — same plumbing as a directly-sent payout. There is no separate
"link.claimed" webhook today; poll getPayoutLink if you need an earlier
signal.
Tradeoffs
- Single-use, fixed amount. A link is for one specific payment. If you want recurring payments to the same contractor, create a regular recipient and send payouts.
- Recipient is auto-created. When the link is claimed, a recipient record appears in your account. Two claims on two links by the same person create two recipients — dedupe on email server-side if that matters to you.
- No 2FA prompt at claim time. Link redemption funds from your default
source account and doesn't go through the operator-level approval flow
that
createPayoutdoes. Keep individual link amounts low and use direct payouts for high-value transfers.