300

Trustly provides payments directly from bank accounts in Europe, and is a popular way to pay in the Nordic countries. With Trustly, you can offer customers who prefer not to pay with cards a way to pay online using their bank accounts.

Payment type Online banking
Payin countries Austria, Denmark, Estonia, Finland, Germany, Latvia, Lithuania, Netherlands, Norway, Spain, Sweden, United Kingdom
Payout countries Austria, Belgium, Bulgaria, Croatia, Cyprus, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, United Kingdom
Customer currencies BGN, CZK, DKK, EUR, GBP, HRK, HUF, NOK, PLN, RON, SEK
Processing currencies BGN, CZK, DKK, EUR, GBP, HRK, HUF, NOK, PLN, RON, SEK
Settlement currencies EUR, GBP, SEK, DKK, PLN
Refunds Yes

How to pay with Trustly

  • Customers are redirected to a Trustly-hosted payment page where they see a list of available banks in their country.
  • They select their bank and are prompted to provide their online banking log-in credentials and authenticate as they would when logging into their online bank account.
  • They select the account from where they want to make the payment and are prompted to provide a one-time code to confirm the payment.
  • After they complete the payment, they are redirected back to your website or app.

If you want to use Trustly logos in your marketing materials or on the checkout page, please use official guidelines from Trustly. Trustly’s design guidelines has different logo formats and designs which can be used in your materials.


Step 1. Make a transaction request

From your server, make a POST /payment_preauthorize request.

POST https://sandbox.payabl.com/pay/backoffice/payment_preauthorize

Include in request:

  • merchantid: The merchant identification number.
  • orderid: The field orderid is optional and exclusively for the merchants convenience.
  • amount: The amount field contains the transaction’s total amount. This is the amount that will be transmitted to the authorizing system.
  • currency: The currency field contains the alphanumeric currency code for the transaction, according to ISO 4217, e.g. EUR, USD, AUD, CAD, NOK, SEK, CHF.
  • payment_method: The payment method id - 116.
  • signature: The signature field contains a 40-figure hexadecimal value. This signature value is a checksum designed to protect the merchant account from unauthorized access.
  • language: This parameter determines the language in which Trustly pages will be shown
    valid values: da de en es et fi fr lt lv nl no pl ru sk sv.
  • country: Customer country in ISO Alpha-3 format. Supported countries: AUT, BEL, CZE, DEU, DNK, EST, ESP, FIN, GBR, LTU, LVA, NLD, NOR, POL, SWE, SVK.
  • email: The customer's email address.
  • url_success: Success transaction URL
  • url_failed: Failed transaction URL
    You can see a full list of parameters in Pre-Authorization.

📘

Redirection to url_return does not confirm that the transaction is successful. Always check the transaction via notification_url or use diagnose interface to get the final status of the transaction.

Request example

/payment_preauthorize&merchantid=8b22a30sdjkldsjfkldjsfk9e79e72ac2b875b14&orderid=fdfdfg7e3f35f0&
amount=1000.00&currency=EUR&payment_method=116&url_success=https%3A%2F%2Fgateway.merchant_url.com
%2Fbackdirect%2Fsuccess%2FCO-69ab-f0cc-a997-5a95-5d5c-c4ca%2F6eebd443fb407e3f35f0&
url_failed=https%3A%2F%2Fgateway.merchant_url.com%2Fba
ckdirect%2Ferror%2FCO-69ab-f0cc-a997-5a95-5d5c-c4ca%2F6eebd443fb407e3f35f0&
notification_url=https%3A%2F%2Fgateway.merchant_url.com%2Fpostback%2FCO-69ab-f0cc-a997-5a95-5d5c-c4ca%2F6eebd443fb407e3f35f0&url_return=https%3A%2F%2Fgateway.ixo
pay.com%2Fbackdirect%2Fsuccess%2FCO-69ab-f0cc-a997-5a95-5d5c-c4ca%2F6eebd443fb407e3f35f0&
language=en&firstname=muster&lastname=mann&country=LTU&email=some_email%40mail.ru&
customerid=16064844&custom1=17425882&signature=641fae105559d7cca133d7ace0bcf5ebb9c5cdcf

Step 2. Handle the redirect

To complete the payment, you need to redirect the customer to the correct URL in the response.

Response example

transactionid=116033311&transid=116033311&status=2000&errormessage=pending&errmsg=pending&
amount=49.61&price=49.61&currency=SEK&orderid=743222831&redirect_url=https%3A%2F%2Fpay4.powercash21.com%2Fpowercash21-3-2%2F010883ac66dc186c0245b5d9df202041b42943cb%2Fpayment%2Fredirect_to_bank&user_id=23281439

After the client completed payment on the Trustly side, he will be redirected back to your url_return.
Additionally, you will get a notification to provided notification_url, which should be used to update statuses in your system.

Notification example

"transactionid=116033311&type=capture&security=67cf6863d378sdfdsfdsaeb91dc5a9c072f7f1&
errormessage=&
errorcode=0&orderid=743222831" "https://www.notification_url"

When the customer finished or canceled the payment, he will be redirected back to url_return, provided by you in the initial request to payment_preauthorize. After that, you will receive a notification, posted to notification_url, with the final transaction status, which you suppose to use to update your system.

Notification URL can be configured by our tech support team in your account on our side,
or you can send it as a parameter notification_url in the initial request to payment_preauthorize.

📘

url_return and notification_url should be provided by you to payabl. technical team.

Notification example with additional account parameters.

"bank_number=70440&account_number=LTXXXXXXXXXXXXXX4024&payment_state=credited&bank_name=SEB&
errormessage=&type=capture&transactionid=116033311&account_holder=muster+mann&
bank_country=LITHUANIA&timestamp=1605788760&
security=19667fb6d9d2f3c8457e29d949f72319a9986b88b0be47050d9fc49f746d279b&orderid=6eebd443fb407e3f35f0&errorcode=0" "https://www.notification_url"

Refunds

Trustly supports refunds and can be initiated only on a successful captured transaction.
The request will send a credit note to the authorization system after the customer has already been charged. The refund amount will be credited to the customer and the merchant’s account will be charged.

The refund can be done in two ways:

  • Through API integration
  • Through payabl. dashboard

If you have API integration, you can check more in our documentation Refund.

Payouts

Trustly payout allows merchants to send funds to any bank account from listed countries via wire transfer. This can be done for customers who already have a deposit through the Trustly system or when the merchant has the bank details of the customer.

This is a server-to-server API request with no callbacks/webhooks.

POST https://sandbox.powercash21.com/pay/backoffice/payment_cft

The payout request through Trustly can be done in two ways:

  • Payout based on an existing transaction
  • New account details.

Based on an existing transaction

Merchant can choose an existing successful deposit or CFT transaction ID to automatically extract the account details for payouts.

Request example

merchantid=fazley_paymentid&amount=98&currency=USD&orderid=Inatec-Test&language=en&lastname=Mann&street=An+der+Welle+4&zip=60322&city=Frankfurt&country=DEU&firstname=Muster&state=HE&email=test%40inatec.com&custom1=&custom2=&custom3=&payment_method=116&transactionid=80974968&signature=960af707051bea67f6fc429288092bda8d1bc933

After you send a payout request, the system will validate your current balance. If your balance is sufficient then the transaction will be sent to Trustly for processing.

payabl. will send you a response letting you know if the payout was successful or not.

Response example

transactionid=80975442&transid=80975442&status=0&errormessage=&errmsg=&amount=98&price=98&currency=USD&orderid=PowerPay21-Test&payment_method=116

New account details

Merchant (non-gambling) can also send funds to accounts of customers that do not have an associated transaction id. For this, the account details need to be sent via API. Please pay attention to the country list table for information on the formatting of the account number field as it can contain IBANs.

  • accountnumber: IBAN or bank account number.
  • banknumber: This parameter is an option if IBAN is sent.
  • bankcountry: 2 digit ISO country code of the recipient’s bank. Please check the table below for support countries.
  • email: The customer's email.
  • birthday: The customer's date of birth.

Request example

merchantid=fazley_paymentid&amount=10&currency=EUR&orderid=Inatec-Test&language=en&lastname=Mann&street=An+der+Welle+4&zip=60322&city=Frankfurt&country=DEU&firstname=Muster&state=HE&email=test%40inatec.com&custom1=&custom2=&custom3=&payment_method=116&bankcountry=FI&accountnumber=FI2618203060000015&birthday=08021990&signature=02796832625dbcb8dc9bad9d1833f9aafcbb5426

payabl. will send you a response.

Response example

transactionid=80975444&transid=80975444&status=0&errormessage=&errmsg=&amount=10&price=10¤cy=EUR&orderid=Inatec-Test&payment_method=116

Failed payouts

In case an error occurs when processing the payout, a notification will be sent to the provided Notification URL so that you can flag the payout as failed in your system. Note that the notification will be sent AFTER the synchronous response has been sent.

There are 2 main reasons why a payout can fail after the response has been sent:

  1. There are not enough funds on the merchant’s account. In this case, the notification will be sent immediately after the payout request has been received.
  2. The funds are sent to the end user’s bank account, but then later Trustly is notified by the bank that the transfer failed, for example, if the recipient’s bank account has been closed. This is usually very uncommon, but if it happens the notification can be sent several days after the payout request was sent.

Sample failed notification:

type=cft&security=48b2a585ef95beb5d07b0f752d61cb09ec8e1985&errormessage=MID+is+near+to+negative+balance&orderid=Inatec-Test&errorcode=-6209&captured_amount=0&transactionid=213532172

Some IBAN/Account numbers to test Payouts:

Finland, Nordea – FI2618203060000015
Sweden, Swedbank – 8327960000015
Denmark, Danske Bank- 50006000000003

Supported countries for payout

BANK COUNTRYBANKNUMBER [REGEX]ACCOUNTNUMBER [REGEX]
AUSTRIA^AT[0-9]{18}$
BELGIUM^BE[0-9]{14}$
BULGARIA^BG[0-9]{2}[A-Z]{4}[0-9]{4}[0-9]{2}[A-Z0-9]{8}$
CROATIA^HR[0-9]{2}[0-9]{7}[0-9]{10}$
CYPRUS^CY[0-9]{10}[0-9A-Z]{16}$
CZECH_REPUBLIC^[0-9]{4}$^[0-9]{16}$
DENMARK^[0-9]{4}$^[0-9]{4,10}$
ESTONIA^[0-9]{2}$^[0-9]{4,14}$
FINLAND^FI[0-9]{16}$
FRANCE^FR[0-9]{12}[0-9A-Z]{11}[0-9]{2}$
GERMANY^DE[0-9]{20}$
GREECE^GR[0-9]{25}$
HUNGARY^[0-9]{8}$^[0-9]{24}$
IRELAND^IE[0-9]{2}[A-Z]{4}[0-9]{14}$
ITALY^IT[0-9]{2}[A-Z][0-9]{10}[0-9A-Z]{12}$
LATVIA^LV[0-9]{2}[A-Z]{4}[0-9A-Z]{13}$
LITHUANIA^LT[0-9]{18}$
LUXEMBOURG^LU[0-9]{18}$
MALTA^MT[0-9]{2}[A-Z]{4}[0-9]{5}[0-9A-Z]{18}$
NETHERLANDS^NL[0-9]{2}[A-Z]{4}[0-9]{10}$
NORWAY^[0-9]{4}$^[0-9]{7}$
POLAND^PL[0-9]{26}$
PORTUGAL^[0-9]{8}$^[0-9]{13}$
ROMANIA^RO[0-9]{2}[A-Z]{4}[0-9A-Z]{16}$
SLOVAKIA^SK[0-9]{22}$
SLOVENIA^SI56[0-9]{15}$
SPAIN^ES[0-9]{22}$
SWEDEN^[0-9]{4,5}$^[0-9]{1,15}$
UNITED_KINGDOM^[0-9]{6}$^[0-9]{8}$

Our Technical Support team is there to help you:
Email: [email protected]
Available Monday – Friday between 09:00 and 17:00 CET/CEST