A beneficiary and its payout destination are created once and reused.
See the Create Payout API reference for request parameters and examples.
↳ Funding source decides which balance pays and who may be paid: from a virtual account it is a payout, from the trading account a withdrawal. Third parties are paid from a virtual account. The trading account may only pay a beneficiary marked
self_owned. Mint the Idempotency-Key and store it with your payout record before calling.Youthe API callerHopautomaticBankpayee’s bank
- 1YouRecord who you are paying, with self_owned set correctlyPOST/accounts/{aid}/beneficiariesbene_
- 2YouAdd the bank account or wallet under the beneficiaryPOST/beneficiaries/{bid}/payout-destinationsdest_
- 3Hop
- 4YouCreate the payout, naming the funding source, with an Idempotency-KeyPOST/accounts/{aid}/payoutspo_
- 4aWithdrawal:
funding_source.typeistrading_account. The beneficiary must beself_owned. Omitmethod. - 4bPayout:
funding_source.typeisvirtual_account. Any active beneficiary. Include a top-levelmethodfor the selected payment rail.
- 4a
- 5Hop
- 6YouApprove in the Hop portal when your organization has an approval policyportal
- 7HopSubmits to the provider once review and approval have clearedstatus: processing
- 8BankCredits the fundssettlement
- 9HopReports the outcomepayout.completed · payout.failed
- 10BankMay return the funds days or weeks laterreturn
- 11YouRe-read completed payouts for returns; there is no eventGET/accounts/{aid}/payouts/{id}status: returned
- 12YouReconcile per virtual account and date windowGET/accounts/{aid}/payouts?virtual_account_id=va_…
Known gaps: there is no cancel endpoint, so a payout waiting for Hop review cannot be withdrawn through the API. No event fires on
processing or returned. pending covers both “awaiting Hop review” and “approved, queued”. A platform_fee is released on failed or cancelled and kept on returned.