Contents

SEPA Direct Debit

 

The requests outlined in this document will need to be processed manually using our Webservices API.

 

PAYMENT SEPADD
SEPA Direct Debit is a direct debit payment method that operates in the eurozone. After selecting goods or services, customers reach the merchant’s checkout. When selecting SEPA Direct Debit, customers enter their IBAN/BIC information, after which the amount will be automatically debited from the user’s bank account. Once the payment has been submitted, the merchant receives a URL notification and the purchase can be delivered.

 

Features

Supported customer countries AT, BE, CY, DE, EE, ES, FI, FR, GR, IE, IT, LT, LU, LV, MC, MT, NL, PT, SI, SK
Supported currencies
EUR
Protect Plus
Supported.
Refunds Only Payouts are supported (permitted for up to 365 days).
Chargebacks
Payments may be subject to chargebacks.

 


 

Configuration

To enable SEPA Direct Debit on your account, please get in touch with your account manager.
A test sandbox account will be provided, which you will need when testing your implementation.

 


 

Process overview

1
Initiate the customer

  • Customer agrees to a payment using SEPA Direct Debit on the merchant’s website.
  • Merchant submits AUTH request to initiate the session, including the successfulurlredirect and errorurlredirect.
  • Merchant receives AUTH response, including redirecturl.
2
Redirect to customer’s bank

  • Merchant redirects the customer’s browser to the redirecturl.
  • Customer follows instructions on their bank’s hosted pages to authorise the payment.
  • If successful, the browser is redirected to the successfulurlredirect, a page hosted by the merchant that displays confirmation of payment.
  • If there has been a problem with the payment, the browser is redirected to the errorurlredirect, a page hosted by the merchant that displays an error to the customer.
3
Payment completion

  • At a later time, the customer’s bank will contact Trust Payments with confirmation that funds have been settled.
  • Trust Payments will submit a URL notification to the merchant’s system to confirm funds have settled.
  • Merchant receives the notification and responds to inform Trust Payments the notification was received successfully.
Info
Our integration of SEPA Direct Debits only supports one-off payments

  • In accordance with PCI, you must not store the customer’s IBAN for future payments.
  • You must not process offline SEPA Direct Debits without the customer present.

 


 

1. Initiate the customer

When the customer chooses to pay with SEPA Direct Debit, your system will need to perform an AUTH request and, if successful, redirect the customer’s browser to the URL returned in the response.

 

AUTH request

The example request below is for a SEPA Direct Debit AUTH request:


#!/usr/bin/python
import securetrading

stconfig = securetrading.Config()
stconfig.username = "[email protected]"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)

auth = {
    "currencyiso3a": "EUR",
    "requesttypedescriptions": ["AUTH"],
    "accounttypedescription": "ECOM",
    "sitereference": "test_site12345",
    "baseamount": "1050",
    "paymenttypedescription": "SEPADD",
    "successfulurlredirect": "https://yourwebsite.com",
    "errorurlredirect": "https://yourwebsite.com",
    "billingemail": "[email protected]",
    "billingfirstname": "Joe",
    "billinglastname": "Bloggs",
    "billingcountryiso2a": "BE",
    "iban": "MT00000000000000000000000000"
}

strequest = securetrading.Request()
strequest.update(auth)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php

if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
  throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);

$configData = array(
    'username' => '[email protected]',
    'password' => 'Password1^'
);

$requestData = array(
    'currencyiso3a' => 'EUR',
    'requesttypedescriptions' => array('AUTH'),
    'accounttypedescription' => 'ECOM',
    'sitereference' => 'test_site12345',
    'baseamount' => '1050',
    'paymenttypedescription' => 'SEPADD',
    'successfulurlredirect' => 'https://yourwebsite.com',
    'errorurlredirect' => 'https://yourwebsite.com',
    'billingemail' => '[email protected]',
    'billingfirstname' => 'Joe',
    'billinglastname' => 'Bloggs',
    'billingcountryiso2a' => 'BE',
    'iban' => 'MT00000000000000000000000000'
);

$api = Securetradingapi($configData);
$response = $api->process($requestData);
var_dump($response->toArray());

?>
curl --user [email protected]:Password1^ <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias": "[email protected]",
"version": "1.00",
"request": [{
    "currencyiso3a": "EUR",
    "requesttypedescriptions": ["AUTH"],
    "accounttypedescription": "ECOM",
    "sitereference": "test_site12345",
    "baseamount": "1050",
    "paymenttypedescription": "SEPADD",
    "successfulurlredirect": "https://www.example.com/success",
    "errorurlredirect": "https://www.example.com/error",
    "billingemail": "[email protected]",
    "billingfirstname": "Joe",
    "billinglastname": "Bloggs",
    "billingcountryiso2a": "BE",
    "iban": "MT00000000000000000000000000"
}]}'
{"alias":"[email protected]","version":"1.00","request":[{"currencyiso3a":"EUR","requesttypedescriptions":["AUTH"],"accounttypedescription":"ECOM","sitereference":"test_site12345","baseamount":"1050","paymenttypedescription":"SEPADD","successfulurlredirect":"https:\/\/www.example.com\/success","errorurlredirect":"https:\/\/www.example.com\/error","billingemail":"[email protected]","billingfirstname":"Joe","billinglastname":"Bloggs","billingcountryiso2a":"BE","iban":"MT00000000000000000000000000"}]}
<?xml version='1.0' encoding='utf-8'?>
<requestblock version="3.67">
  <alias>[email protected]</alias>
  <request type="AUTH">
    <merchant>
<successfulurlredirect>https://www.example.com/success</successfulurlredirect>
<errorurlredirect>https://www.example.com/error</errorurlredirect>
    </merchant>
    <billing>
      <email>[email protected]</email>
      <name>
        <first>Joe</first>
        <last>Bloggs</last>
      </name>
      <country>BE</country>
      <amount currencycode="EUR">1050</amount>
      <payment type="SEPADD">
        <iban>MT00000000000000000000000000</iban>
      </payment>
    </billing>
    <operation>
      <sitereference>test_site12345</sitereference>
      <accounttypedescription>ECOM</accounttypedescription>
    </operation>
  </request>
</requestblock>

Replace <DOMAIN> with a supported domain. Click here for a full list.

 

Field specification

Field Format Description
accounttypedescription
XPath: /operation/accounttypedescription
Alpha (20) Only “ECOM” (e-commerce) is supported.
baseamount
XPath: /billing/amount
Numeric (13) The amount of the transaction in base units, with no commas or decimal points, so €10 is submitted as 1000. This value must be greater than zero. (Max length may vary depending on your acquiring bank – Contact your bank for further info)
billingprefixname
XPath: /billing/name/prefix
Alphanumeric including
symbols (25)
The prefix of the customer’s billing name (e.g. Mr, Miss, Dr).
billingfirstname
XPath: /billing/name/first
Alphanumeric including
symbols (127)
The customer’s billing first name.
billingmiddlename
XPath: /billing/name/middle
Alphanumeric including
symbols (127)
The customer’s billing middle name(s).
billinglastname
XPath: /billing/name/last
Alphanumeric including
symbols (127)
The customer’s billing last name.
billingsuffixname
XPath: /billing/name/suffix
Alphanumeric including
symbols (25)
The suffix of the customer’s billing name (e.g. Bsc).
billingcountryiso2a
XPath: /billing/country
Alpha (2) The country for the customer’s billing address. This will need to be in ISO2A format.

For a list of country codes supported by SEPA Direct Debit, refer to the list found at the top of this page.

billingemail
XPath: /billing/email
Email (255) The customer’s billing email address. Maximum length of 255 (maximum of 64 characters before the ”@” symbol).
currencyiso3a
XPath: /billing/amount/@currencycode
Alpha (3) The currency that the transaction will be processed in (in ISO3A format).

For a list of currency codes supported by SEPA Direct Debit, refer to the list found at the top of this page.

errorurlredirect
XPath: /merchant/errorurlredirect
URL (2048) The URL that the customer will be returned to following an error on their bank’s hosted pages.
iban
XPath: /billing/payment/iban
Alphanumeric (255) The customer’s IBAN.
orderreference
XPath: /merchant/orderreference
Alphanumeric including
symbols (255)
Your unique order reference that can be stored on the Trust Payments system.
paymenttypedescription
XPath: /billing/payment/@type
Alpha (20) This value must be submitted as “SEPADD”.
requesttypedescription
XPath: /@type
Alpha (20) The value in the request must be “AUTH”.
sitereference
XPath: /operation/sitereference
Alphanumeric
& underscore (50)
The site reference relates to your individual account which you received on setup. If you do not know your site reference, please contact our Support team.
successfulurlredirect
XPath: /merchant/successfulurlredirect
URL (2048) The URL that the customer will be returned to following a successful authorisation by their bank.

 

AUTH response


{
  u'requestreference': u'An3ug1kap',
  u'version': u'1.00',
  u'response': [{
    u'transactionreference': u'23-86-113',
    u'merchantname': u'Test Merchant',
    u'paymenttypedescription': u'SEPADD',
    u'settleduedate': u'2017-03-16',
    u'baseamount': u'1050',
    u'transactionstartedtimestamp': u'2017-03-16 16:25:08',
    u'errormessage': u'Ok',
    u'settlestatus': u'10',
    u'accounttypedescription': u'ECOM',
    u'errorcode': u'0',
    u'redirecturl': u'https://example.com',
    u'acquirertransactionreference': u'12',
    u'acquirersecret': u'q9gy5ppgdyd5fh60kfe2j0f26peu2xww',
    u'requesttypedescription': u'AUTH',
    u'mandatereference': u'A-zZa1234567890/+*()/,.',
    u'acquirerresponsemessage': u'PENDING',
    u'operatorname': u'[email protected]',
    u'livestatus': u'0',
    u'currencyiso3a': u'EUR'
  }]
}
array(3) {
  ["requestreference"] => string(9) "A0345jmuw"
  ["version"] => string(4) "1.00"
  ["response"] => array(1) {
    [0] => array(19) {
      ["transactionreference"] => string(9) "23-86-113"
      ["merchantname"] => string(4) "Test Merchant"
      ["paymenttypedescription"] => string(6) "SEPADD"
      ["settleduedate"] => string(10) "2017-03-16"
      ["baseamount"] => string(4) "1050"
      ["transactionstartedtimestamp"] => string(19) "2017-03-16 16:25:08"
      ["errormessage"] => string(2) "Ok"
      ["settlestatus"] => string(2) "10"
      ["accounttypedescription"] => string(4) "ECOM"
      ["errorcode"] => string(1) "0"
      ["redirecturl"] => string(107) "https://example.com"
      ["acquirertransactionreference"] => string(2) "12"
      ["acquirersecret"] => string(32) "q9gy5ppgdyd5fh60kfe2j0f26peu2xww"
      ["requesttypedescription"] => string(4) "AUTH"
      ["mandatereference"] => string(23) "A-zZa1234567890/+*()/,."
      ["acquirerresponsemessage"] => string(7) "PENDING"
      ["operatorname"] => string(11) "[email protected]"
      ["livestatus"] => string(1) "0"
      ["currencyiso3a"] => string(3) "EUR"
    }
  }
}
{"requestreference":"W23-fjgvn3d9","version":"1.00","response":[{"transactionreference":"23-86-113","merchantname":"Test Merchant","paymenttypedescription":"SEPADD","settleduedate":"2017-03-16","baseamount":"1050","transactionstartedtimestamp":"2017-03-16 16:25:08","errormessage":"Ok","settlestatus":"10","accounttypedescription":"ECOM","errorcode":"0","redirecturl":"https:\/\/example.com","acquirertransactionreference":"12","acquirersecret":"q9gy5ppgdyd5fh60kfe2j0f26peu2xww","requesttypedescription":"AUTH","mandatereference":"A-zZa1234567890\/+*()\/,.","acquirerresponsemessage":"PENDING","operatorname":"[email protected]","livestatus":"0","currencyiso3a":"EUR"}]}
<?xml version='1.0' encoding='utf-8'?>
<responseblock version="3.67">
  <requestreference>Xd4nk260v</requestreference>
  <response type="AUTH">
    <merchant>
      <merchantname>Test Merchant</merchantname>
      <operatorname>[email protected]</operatorname>
    </merchant>
    <transactionreference>44-86-102</transactionreference>
    <timestamp>2017-03-16 17:34:16</timestamp>
    <acquirersecret>gfc8mx0p2fx26f1n5tpy6mtk21naap8c</acquirersecret>
    <operation>
      <accounttypedescription>ECOM</accounttypedescription>
    </operation>
    <settlement>
      <settleduedate>2017-03-16</settleduedate>
      <settlestatus>10</settlestatus>
    </settlement>
    <acquirerresponsemessage>PENDING</acquirerresponsemessage>
    <billing>
      <amount currencycode="EUR">1050</amount>
      <payment type="SEPADD">
        <mandatereference>A-zZa1234567890/+*()/,.</mandatereference>
      </payment>
    </billing>
    <live>0</live>
    <other>
      <redirecturl>https://example.com</redirecturl>
    </other>
    <acquirertransactionreference>4</acquirertransactionreference>
    <error>
      <message>Ok</message>
      <code>0</code>
    </error>
  </response>
  <secrand>Z1W</secrand>
</responseblock>

 

Field specification

Field Format Description
accounttypedescription
XPath: /operation/accounttypedescription
Alpha (20) The value returned is “ECOM”.
acquirerresponsemessage
XPath: /acquirerresponsemessage
Alphanumeric (255) Used by your acquirer to indicate the outcome of the request.
acquirersecret
XPath: /acquirersecret
Alphanumeric (64) Used by Trust Payments to verify the response from the acquirer. (Your system does not need to verify this)
acquirertransactionreference
XPath: /acquirertransactionreference
Alphanumeric including symbols (127) Unique transaction reference assigned by the customer’s bank.
baseamount
XPath: /billing/amount
Numeric (13) The amount of the transaction in base units, with no commas or decimal points, so €10 is returned as 1000.
currencyiso3a
XPath: /billing/amount/@currencycode
Alpha (3) The currency that the transaction was processed in (in ISO3A format).

For a list of currency codes supported by SEPA Direct Debit, refer to the list found at the top of this page.

errorcode
XPath: /error/code
Numeric (1-5) The error code should be used to determine if the request was successful or not.

  • If the error code is “0” then the transaction was successful.
  • If the error code is not “0” then the transaction was not successful.

Click here for a full list of errorcode and message values.

errordata
XPath: /error/data
Alphanumeric (255) Additional information to help troubleshoot the error.
errormessage
XPath: /error/message
Alphanumeric (255) This is the corresponding message to the above code.

Click here for a full list of errorcode and message values.

livestatus
XPath: /live
Numeric (1)
  • 0 – Transaction processed using a test account.
  • 1 – Transaction processed using a live account.
merchantname
XPath: /merchant/merchantname
Alphanumeric including
symbols (255)
These are details associated with the account used to process the transaction.

To amend these fields, please contact our Support Team.

operatorname
XPath: /merchant/operatorname
Alphanumeric (255) The value of this field contains the name of the user that processed the request.
mandatereference
XPath: /billing/payment/mandatereference
Alphanumeric (255) Unique reference that identifies each direct debit.
paymenttypedescription
XPath: /billing/payment/@type
Alpha (20) This value returned is “SEPADD”.
redirecturl
XPath: /other/redirecturl
URL (255) Redirect the customer’s browser to this URL to allow them to complete the payment on their bank’s hosted pages.
requesttypedescription
XPath: /@type
Alpha (20) The value returned is “AUTH”.
settleduedate
XPath: /settlement/settleduedate
Date YYYY-MM-DD The date on which the transaction will be settled.
settlestatus
XPath: /settlement/settlestatus
Numeric (3) This allows you to determine the status of the payment. Refer to the Handling the response section below for information on how to best interpret this field.
transactionreference
XPath: /transactionreference
Alphanumeric including
hyphens (25)
A unique reference for the transaction assigned by Trust Payments.
transactionstartedtimestamp
XPath: /timestamp
Date time YYYY-MM-DD hh:mm:ss The time the transaction was processed.

 

Handling the response

The settlestatus returned in the AUTH response is used to determine the status of the SEPA Direct Debit:

Settle status 10
If the settlestatus is “10”, the payment is pending settlement.

  • The funds have not yet been settled into your bank account.
  • The next step is to redirect the customer’s browser to the redirecturl to complete the payment.

Funds will not be settled into your account until the customer is redirected to their bank’s pages, in order to complete the payment. Read on for further information.

 

  • When there is an update to the settle status of the AUTH, you will receive a URL notification to inform you that the settlestatus has been updated to either “3” or “100”.
  • Further information on the notifications can be found below.
Settle status 3
If the settlestatus is “3”, the payment has been cancelled.

  • The payment has been declined, or has encountered an error.
  • To learn more about why the payment was unsuccessful, you will need to look at the errorcode. e.g. “70000” indicates that the payment was declined. Click here for a full list of error codes.

In addition to the above, we also recommend following our Best practices.

 


 

2. Redirect to customer’s bank

Your system will need to redirect the customer’s browser to the redirecturl, which is a page hosted by their bank, in order to process the payment. At a later time, the customer will be redirected back to either the successfulurlredirect or the errorurlredirect provided in the AUTH request.

Status good
If the customer is redirected to the successfulurlredirect:
The customer successfully completed the required steps on their bank’s pages.
Recommended actions: Display confirmation that the payment was successful.
Status attention
If the customer is redirected to the errorurlredirect:
The customer encountered a problem that has prevented them from completing the payment.
Recommended actions: Inform the customer that there was a problem with the payment, displaying sufficient transaction details for the customer to query the payment attempt.
Info
When testing, you will be displayed a sandbox page. To complete a test transaction, you will need to follow the instructions displayed on screen. Please contact your account manager for test credentials to enter while on the sandbox.

 


 

3. Payment completion

Once the customer returns from the their bank’s hosted page to either the successfulurlredirect or errorurlredirect hosted on your site, you will need to display either a confirmation or error message respectively.

Info
Please check for any URL redirect rules that may be enabled in the MyST Rule manager on your site reference(s), as these may conflict and take precedence over the successfulurlredirect and errorurlredirect fields submitted in the AUTH request.

 

Once a payment has been authorised, funds will be settled at a later time, as determined by the customer’s bank.

PAYMENT
The settlement process for SEPA Direct Debit differs from the standard process followed with card-based payment methods.
Info
The settlement notification may not be sent immediately after processing the AUTH.

In the unlikely event that payment is still pending settlement after 7 days (settlestatus “10”), this will be scheduled for investigation and we will contact you with further information.

 

Before you begin testing, we recommend that you contact our Support team and request that rules are enabled on your account, which submit URL notifications to your system in the following scenarios:

 

Configuring the authorisation notification

We recommend including at least the following fields in your authorisation notification:

*Please choose your preferred format.

 

Configuring the settlement notification

We recommend including the following fields in your settlement notification:

 

Check the notification

You will need to check the contents of each notification received and respond accordingly by following the processes outlined in the “URL notifications” section of our Action types page. In particular, you will need to look at the updated settlestatus value:

Info
Cancelled transactions (settlestatus “3”) may be settled at a later time. In situations where the customer has completed the steps required to fulfil the payment, the settlestatus is updated to “100” to indicate the funds have been transferred to your account.

 

If you have contacted the Support Team to configure settlement notifications (as described above), you will be notified when this occurs.

 


 

Testing

You will need to test your solution before you can begin processing live payments. Test transactions are processed through your test Site Reference.

Info
Requirements

You will need to contact our Support team, providing your test account details. We will then configure your test site reference to connect directly to an external testing environment.

When performing test transactions, the redirect URL returned in the AUTH response will redirect your browser to the testing environment to simulate a payment. Other than this, the process will be exactly the same as processing live payments.

 


 

Payouts

It is possible to perform Payouts using SEPA Direct Debit. The request and response for SEPA Direct Debit Payouts follow the same field specification as outlined in our standard Payout documentation. Click here for further information.

 

Using parent transaction

The following is an example request for processing a Payout, where all the required payment credentials are inherited from the AUTH request that is referenced:


#!/usr/bin/python
import securetrading
  
stconfig = securetrading.Config()
stconfig.username = "[email protected]"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
  
payout= {
  "requesttypedescriptions": ["REFUND"],
  "sitereference": "test_site12345",
  "accounttypedescription": "CFT",
  "parenttransactionreference": "1-2-345678"
}
  
strequest = securetrading.Request()
strequest.update(payout)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php

if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
  throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);

$configData = array(
  'username' => '[email protected]',
  'password' => 'Password1^',
);

$requestData = array(
'requesttypedescriptions' => array('REFUND'),
'sitereference' => 'test_site12345',
'accounttypedescription' => 'CFT',
'parenttransactionreference' => '1-2-345678'
);

$api = Securetradingapi($configData);
$response = $api->process($requestData);
var_dump($response->toArray());

?>
curl --user [email protected]:Password1^ <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias": "[email protected]",
"version": "1.00",
"request": [{
  "requesttypedescriptions": ["REFUND"],
  "sitereference": "test_site12345",
  "accounttypedescription": "CFT",
  "parenttransactionreference": "1-2-345678"
}]}'
{"alias":"[email protected]","version":"1.00","request":[{"requesttypedescriptions":["REFUND"],"sitereference":"test_site12345","accounttypedescription":"CFT","parenttransactionreference":"1-2-345678"}]}
<?xml version="1.0" encoding="utf-8"?>
<requestblock version="3.67">
<alias>[email protected]</alias>
<request type="REFUND">
  <operation>
    <sitereference>test_site12345</sitereference>
    <parenttransactionreference>1-2-345</parenttransactionreference>
    <accounttypedescription>CFT</accounttypedescription>
  </operation>
</request>
</requestblock>

Replace <DOMAIN> with a supported domain. Click here for a full list.

 

Without parent

If performing a Payout without referencing a previously processed SEPA Direct Debit AUTH request, you will need to ensure the new request contains the following additional required fields:

 

Example:


#!/usr/bin/python
import securetrading

stconfig = securetrading.Config()
stconfig.username = "[email protected]"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)

payout = {
    "currencyiso3a": "EUR",
    "requesttypedescriptions": ["REFUND"],
    "accounttypedescription": "CFT",
    "sitereference": "test_site12345",
    "baseamount": "1050",
    "paymenttypedescription": "SEPADD",
    "billingemail": "[email protected]",
    "billingfirstname": "Joe",
    "billinglastname": "Bloggs",
    "billingcountryiso2a": "BE",
    "iban": "MT00000000000000000000000000"
}

strequest = securetrading.Request()
strequest.update(payout)
stresponse = st.process(strequest) #stresponse contains the transaction response
<?php

if (!($autoload = realpath(__DIR__ . '/../../../autoload.php')) && !($autoload = realpath(__DIR__ . '/../vendor/autoload.php'))) {
  throw new Exception('Composer autoloader file could not be found.');
}
require_once($autoload);

$configData = array(
    'username' => '[email protected]',
    'password' => 'Password1^'
);

$requestData = array(
    'currencyiso3a' => 'EUR',
    'requesttypedescriptions' => array('REFUND'),
    'accounttypedescription' => 'CFT',
    'sitereference' => 'test_site12345',
    'baseamount' => '1050',
    'paymenttypedescription' => 'SEPADD',
    'billingemail' => '[email protected]',
    'successfulurlredirect' => 'https://yourwebsite.com',
    'errorurlredirect' => 'https://yourwebsite.com',
    'billingfirstname' => 'Joe',
    'billinglastname' => 'Bloggs',
    'billingcountryiso2a' => 'BE',
    'iban' => 'MT00000000000000000000000000'
);

$api = Securetradingapi($configData);
$response = $api->process($requestData);
var_dump($response->toArray());

?>
curl --user [email protected]:Password1^ <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias": "[email protected]",
"version": "1.00",
"request": [{
    "currencyiso3a": "EUR",
    "requesttypedescriptions": ["REFUND"],
    "accounttypedescription": "CFT",
    "sitereference": "test_site12345",
    "baseamount": "1050",
    "paymenttypedescription": "SEPADD",
    "billingemail": "[email protected]",
    "successfulurlredirect": "https://www.example.com/success",
    "errorurlredirect": "https://www.example.com/error",
    "billingfirstname": "Joe",
    "billinglastname": "Bloggs",
    "billingcountryiso2a": "BE",
    "iban": "MT00000000000000000000000000"
}]}'
{"alias":"[email protected]","version":"1.00","request":[{"currencyiso3a":"EUR","requesttypedescriptions":["REFUND"],"accounttypedescription":"CFT","sitereference":"test_site12345","baseamount":"1050","paymenttypedescription":"SEPADD","billingemail":"[email protected]","successfulurlredirect":"https:\/\/www.example.com\/success","errorurlredirect":"https:\/\/www.example.com\/error","billingfirstname":"Joe","billinglastname":"Bloggs","billingcountryiso2a":"BE","iban":"MT00000000000000000000000000"}]}
<?xml version="1.0" encoding="utf-8"?>
<requestblock version="3.67">
<alias>[email protected]</alias>
<request type="REFUND">
  <billing>
    <email>[email protected]</email>
    <name>
      <first>Joe</first>
      <last>Bloggs</last>
    </name>
    <country>BE</country>
    <amount currencycode="EUR">1050</amount>
    <payment type="SEPADD">
      <iban>MT00000000000000000000000000</iban>
    </payment>
  </billing>
  <operation>
    <sitereference>test_site12345</sitereference>
    <accounttypedescription>CFT</accounttypedescription>
  </operation>
</request>
</requestblock>

Replace <DOMAIN> with a supported domain. Click here for a full list.