Process bank payouts in Europe
Learn how to transfer funds efficiently and securely to your customers in Europe.
You can send funds to customers’ bank accounts in Europe through bank payouts using the emerchantpay Payout API.
Supported countries | Austria, Belgium, Bulgaria, Croatia, Republic of Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, and United Kingdom |
---|---|
Currency | BGN, CZK, DKK, EUR, GBP, HUF, NOK, PLN, RON, SEK |
Upfront payment | No initial pay-in is required. |
Payment method | Your customers receive funds via a straightforward bank transfer to their bank accounts. |
Supported business models | B2C |
Payout flow
- Customer involvement: Customers provide their bank account details.
- Process overview: This flow is suitable for transactions involving standard bank account transfers. emerchantpay uses the Trustly platform to process bank payouts in Europe.
- Result: Funds are transferred to the specified bank account based on the provided details.
Prerequisites
To process bank payouts, you need to obtain the customer’s account_id
. The account_id
identifies the recipient. You can obtain the account_id
in one of the following ways:
- If the customer already has an
account_id
from a previous Trustly payment, it is returned to your notification URL during the initial transaction. - You can generate a new customer’s
account_id
by collecting the customer’s IBAN and verifying it at Trustly-register-account. - You can redirect the customer to a page where they go through specific steps on their own to obtain the
account_id
– Trustly-select-account.
Once you have obtained your customer’s account_id
, you can proceed to initiate the bank payout request.
Initiate a bank payout
To initiate a payout, use the parameters outlined in the table below.
Parameter | Required | Format | Description |
---|---|---|---|
transaction_type |
required | string(255) |
The type of transaction, specifying bank_payout .
|
transaction_id |
required | string(255) | A unique identifier for the transaction defined by you. |
remote_ip |
required | IPv4 or IPv6 address | The IPv4 or IPv6 address of the customer. |
amount |
required | integer > 0 | The amount (in minor currency units) that transfers to your bank account or debit card. See Currency and Amount Handling for more details. |
currency |
required | string(3) | The three-letter currency code following ISO 4217 standards associated with the transaction. |
notification_url |
required | URL | The URL for receiving the transaction outcome from the gateway. |
return_failure_url |
required | URL | The URL to which the customer is directed after an unsuccessful payment. |
return_success_url |
required | URL | The URL to which the customer is directed after a successful payment. |
bank_name |
required | string(255) | The name of the bank where the customer holds their account. |
bank_account_number |
required | string(255) | The unique numerical code associated with the customer’s bank account. |
customer_email |
required | e-mail address | A valid email address of the customer. |
account_id |
required | string(11) | A unique identifier assigned by Trustly, serving to distinguish individual customers within Trustly’s system. |
user_id |
required | string(11) | A unique identifier assigned by you, utilised to identify customers within your system. |
birth_date |
required | string(10) | The date of birth of the customer, specified in the format DD-MM-YYYY. |
billing_address |
required | object | A group of parameters describing the billing address provided by the customer. |
first_name |
required | string(255) | The first name of the customer. |
last_name |
required | string(255) | The last name of the customer. |
address1 |
optional | string(255) |
The primary address associated with the transaction. This parameter is part of the billing_address object. |
address2 |
optional | string(255) |
The secondary address associated with the transaction. This parameter is part of the billing_address object.
|
zip_code |
optional | string |
The ZIP code associated with the transaction. This parameter is part of the billing_address object. |
city |
required | string(255) | The name of the city in the address information associated with the transaction. |
state |
optional | string(2) |
The state code following ISO 3166-2 standards. This parameter is part of the billing_address object. |
country |
required | string(2) | The two-letter country code following ISO 3166 standards associated with the transaction. |
See the example API request below:
<payment_transaction>
<transaction_type>bank_payout</transaction_type>
<transaction_id>20311362</transaction_id>
<remote_ip>78.142.46.254</remote_ip>
<amount>36200</amount>
<currency>EUR</currency>
<notification_url>https://example.com/notifications</notification_url>
<return_success_url>https://example.com/succes</return_success_url>
<return_failure_url>https://example.com/failure</return_failure_url>
<bank_name>Metropolitan Commercial Bank</bank_name>
<bank_account_number/>
<customer_email>test@example.com</customer_email>
<account_id>4164479374</account_id>
<user_id>0000382435</user_id>
<birth_date>16-01-1972</birth_date>
<billing_address>
<first_name>Max</first_name>
<last_name>Mustermann </last_name>
<address1>Muster Str. 12</address1>
<address2/>
<zip_code>10178</zip_code>
<city>Berlin</city>
<country>DE</country>
</billing_address>
</payment_transaction>
Once you have prepared your request with the necessary parameters, you can proceed with the bank payout call to initiate the fund transfer to your customer’s bank account.
After initiating the bank payout, the process will be completed instantly with either an approved
or declined
status. Note that while a payout can initially be approved, the final status could change to declined. You will receive notifications promptly for every change in status.
See the example API response below:
<payment_response>
<transaction_type>bank_payout</transaction_type>
<status>approved</status>
<unique_id>a25184b69aea21bf268779cf32852417</unique_id>
<transaction_id>20311362</transaction_id>
<technical_message>TESTMODE: No real money will be transferred!</technical_message>
<message>TESTMODE: No real money will be transferred!</message>
<mode>test</mode>
<timestamp>2024-02-14T14:21:47Z</timestamp>
<descriptor>Shoes_Direct_Test</descriptor>
<amount>36200</amount>
<currency>EUR</currency>
</payment_response>