Payouts
Send funds from your virtual account
A payout represents the flow of funds from a client's virtual account to an end user. A payout can be for an arbitrary amount if you have sufficient funds stored in your virtual account to cover the payout. Using Payouts requires integrating with virtual account API routes and receiving transaction webhooks.
Key Benefits of Payouts
- Instant: Payouts ensures that funds arrive in your users' accounts almost immediately.
- Easy to Integrate: A single, unified API for both Payment Initiation and Payouts streamlines the development process.
- Verified: In conjunction with Plaid's Auth and Identity products, users' bank details are securely and automatically populated. This pre-verification step ensures you are always sending funds to a valid and correct bank account, minimising payment failures and fraud risk.
- Low Cost: Move away from the expensive and variable fees associated with card payments. Payouts offers a low, fixed-fee structure, allowing you to significantly reduce costs.
Execute a Payout
Make sure your virtual account is set up before following these steps. For more information on setting up an account, see Managing virtual accounts.
Call
/wallet/getto check your virtual account balance (optional).- If you have insufficient funds to make your desired payout, make sure to fund your virtual account before proceeding. After funding your virtual account, another request to
/wallet/getwill show the updated balance.
- If you have insufficient funds to make your desired payout, make sure to fund your virtual account before proceeding. After funding your virtual account, another request to
Call
/user/createto get auser_idrepresenting the recipient of the payout.Provide a unique
client_user_idand anidentityobject containing the recipient'snameplus at least one ofemailsorphone_numbers. All other fields in the identity object are optional.Calling
/user/createagain with the sameclient_user_idreturns the sameuser_id, so you can re-use it for future payouts to the same recipient. For more information, see User APIs.
Call
/wallet/transaction/executewith theuser_idand store thetransaction_idand status from the response.Configure transaction webhooks to receive real-time status update webhooks for each payout transaction.
In addition to using webhooks, you can confirm the transaction has been executed by calling
/wallet/transaction/getwith thetransaction_id.
Verification of Payee
Verification of Payee is a regulatory requirement under the EU Instant Payments Regulation. It requires that PSPs check the recipient's name against the IBAN and return the result to the payer before execution, reducing fraud and user error. Plaid automatically performs this check for all Eurozone payouts.
Verification statuses
The payee verification check returns one of five statuses: Match, Partial Match, No Match, Error (indicating that an error occurred during payee verification), and Match not possible (indicating that the verification system is unavailable). By default, payments proceed for all statuses except No Match. You can also customise the product behaviour for the Partial Match and No Match statuses by contacting your account manager.
If the payment is blocked:
The
WALLET_TRANSACTION_STATUS_UPDATEwebhook will indicate a failed payment.Calling
/wallet/transaction/getwith thetransaction_idwill show theTRANSACTION_PAYEE_VERIFICATION_NO_MATCHerror.
Testing Payouts
You can begin testing Payouts in Sandbox by following the steps listed in the Add Virtual Accounts to your App guide. For Production access you will first need to submit a product access request support ticket.
