Process Global Payouts

Send outbound transfers to approved payee bank accounts using API or Virtual Terminal.


Introduction

Global Payouts allow you to send funds to a payee’s bank account by bank transfer. This payment type is intended for outbound credit transfers. You submit the payout details through the API or from a Virtual Terminal. The payout is then reviewed and processed through the banking route.


Prerequisites and availability

Before you start, make sure you meet the following prerequisites:

  • Global Payouts require operational approval by emerchantpay Support.
  • Before you can make a Global Payout, onboard the beneficiary as a Payee and complete the required verification and compliance checks. You must also add the beneficiary’s bank account as a Payee Account and complete the bank account verification.
  • Your merchant-level Notification URL is configured if you want to receive asynchronous status updates.

You can send Global Payouts to bank accounts in the following countries and territories: European Economic Area (EU Member States plus Iceland, Liechtenstein and Norway), United Kingdom (Gibraltar is supported, but Crown dependencies such as the Isle of Man, Guernsey and Jersey are excluded), Switzerland, United States, Canada, Australia, New Zealand, Hong Kong, Singapore, Japan, China, India, Malaysia, South Korea and Thailand.

You can submit Global Payouts in GBP and EUR. Other currencies may be available for settlement, depending on the payout route.


Global Payout via API

To initiate a Global Payout using API, submit a transaction request with the transaction_type set to global_payout. You must submit the payout to an approved Payee account. The payee_account_id identifies the verified bank account that will receive the funds.

Global Payout requests must include the transaction details, payout amount, currency, payee account and billing address information needed to process the payout. See the Request parameters section for more details.

Global Payouts are asynchronous. A successful API validation response means that the payout has been accepted for processing; it does not always mean that the beneficiary has already received the funds. Use notifications or transaction status checks to confirm the final outcome.

Example request

The following is an example request:

<payment_transaction>
  <transaction_type>global_payout</transaction_type>
  <transaction_id>119643250547501c79d8295</transaction_id>
  <usage>Concert ticket refund</usage>
  <remote_ip>245.253.2.12</remote_ip>
  <amount>100</amount>
  <currency>GBP</currency>
  <payee_account_id>ea4e1dfa-80f1-47fd-96f5-f796c9864e50</payee_account_id>
  <billing_address>
    <first_name>John</first_name>
    <last_name>Smith</last_name>
    <address1>45 North Str</address1>
    <city>London</city>
    <zip_code>W1T 2QS</zip_code>
    <country>GB</country>
  </billing_address>
</payment_transaction>

The Global Payout request references the approved Payee Account using payee_account_id. Required fields can vary depending on the destination country, currency and clearing route.

Request parameters

The following table lists the parameters you can include when submitting a Global Payout request:

PARAMETER REQUIRED FORMAT DESCRIPTION
transaction_type Required String (255) The transaction type: set to global_payout.
transaction_id Required String (255) Unique transaction ID defined by you.
usage Optional String (255) Description of the transaction for later use.
remote_ip Required* IPv4 or IPv6 address IPv4 or IPv6 address of the customer.
amount Required Integer > 0 Amount of the transaction in minor currency units.
currency Required String (3) Currency code in ISO 4217 format.
payee_account_id Required String Unique Account ID of the Payee Account. For more details, see the Payee Accounts API.
billing_address Required Object Billing address object.
first_name Required* String (255) Payee first name.
last_name Required* String (255) Payee last name.
address1 Required* String (255) Primary address.
address2 Required* String (255) Secondary address.
zip_code Required* String (255) ZIP code.
city Required* String (255) City.
neighborhood Required* String (255) Neighbourhood.
state Required* String (2) State code in ISO 3166-2 format. Required for the USA and Canada.
country Required* String (2) Country code in ISO 3166 format.

An asterisk * indicates that the parameter is conditionally required.

Example response

The following is an example response:

<payment_response>
  <transaction_type>global_payout</transaction_type>
  <status>pending_async</status>
  <mode>live</mode>
  <transaction_id>119643250547501c79d8295</transaction_id>
  <unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
  <timestamp>2026-05-28T07:35:36Z</timestamp>
  <descriptor>Acme Co.</descriptor>
  <amount>100</amount>
  <currency>GBP</currency>
  <sent_to_acquirer>false</sent_to_acquirer>
</payment_response>

Do not treat pending_async as a final result. The final payout result is returned later through notifications sent to your Notification URL or through transaction status checks by unique_id or transaction_id.

Response parameters

The following table describes the parameters returned in a successful Global Payout response:

PARAMETER FORMAT DESCRIPTION
transaction_type String (255) The transaction type.
status String (255) The status of the transaction. See Transaction states for details.
mode String (4) Mode of the transaction’s terminal. Can be test or live.
transaction_id String (255) Unique transaction ID defined by you.
unique_id String (32) Unique ID defined by the gateway.
timestamp String (255) Time when the transaction was processed in ISO 8601 combined date and time format, for example 2007-08-30T17:46:11Z.
descriptor String (255) Static descriptor MID information as configured on the gateway.
amount Integer Amount of the transaction in minor currency units.
currency String (255) Currency code in ISO 4217 format.
sent_to_acquirer String (255) Indicates whether the transaction was sent to the acquirer. The possible values are true or false.

Error handling

If the Global Payout request fails validation or cannot be accepted for processing, you get an error response.

The error response includes the same transaction details as a successful response, with the following differences:

  • status is returned as error.
  • technical_message provides the technical error details. This value is intended for internal use and should not be displayed to customers.
  • message provides a human-readable error message that can be displayed to customers, where appropriate.

The following is an example error response:

<payment_response>
  <transaction_type>global_payout</transaction_type>
  <status>error</status>
  <technical_message>billing_address[zip_code] is invalid!</technical_message>
  <message>billing_address[zip_code] is invalid!</message>
  <mode>live</mode>
  <transaction_id>119643250547501c79d8295</transaction_id>
  <unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
  <timestamp>2026-05-28T07:35:36Z</timestamp>
  <descriptor>Descriptor one</descriptor>
  <amount>100</amount>
  <currency>GBP</currency>
  <sent_to_acquirer>false</sent_to_acquirer>
</payment_response>

Global Payout via Virtual Terminal

Use Virtual Terminal when you want to submit a Global Payout manually from the Gateway Console instead of integrating through the API.

To submit a Global Payout through a Virtual Terminal:

  1. Open the Gateway Console and select Virtual Terminal in the navigation menu.
  2. Select the Global Payout transaction type. You can use the Search to find it quickly.
  3. Choose the applicable Terminal to process the payout.
  4. Enter the Amount and make sure to select the correct currency.
  5. Enter the Payee Account Identifier and other beneficiary details such as the date of birth, email, phone, names, and address. The Payee Account Identifier must refer to an existing approved Payee account.
  6. Optionally, you can set a custom Transaction ID – a unique reference for the payout.
  7. The Usage field refers to a short description or reference for the payout to help identify the business purpose of the transaction.
  8. Enter the Notification URL where you want to receive asynchronous payout status updates.
  9. Enter the Return success URL where you want to redirect the user after a successful payout submission.
  10. Enter the Return failure URL is where you want to redirect the user after a failed payout submission.
  11. Click the Process button to submit the payout.

The payee later receives the funds in their bank account if the payout is successful.