In het geval dat een klant defecte goederen retourneert of een betaalde dienst niet kan worden geleverd, kan het zijn dat je een verwerkte transactie geheel of gedeeltelijk moet terugbetalen. Op deze pagina wordt uitgelegd hoe je een restitutie kunt verwerken met Webservices API.
Procesoverzicht
Om een restitutie te verwerken, dient uw systeem een REFUND in bij Trust Payments. Zodra het verzoek is ontvangen, wordt de restitutie online of offline verwerkt, zoals hieronder samengevat:
Visa: Alle terugbetalingen worden online verwerkt.
Mastercard: Alle restituties worden online verwerkt vanaf 4 november 2025.
Online terugbetalingen
- Merchant dient een REFUND in.
- Trust Payments valideert het verzoek en verkrijgt autorisatie van de kaartuitgever om de terugbetaling te verwerken. Het antwoord van de kaartuitgever wordt vervolgens teruggestuurd naar de winkelier.
- Na autorisatie verwerkt Trust Payments de terugbetaling met uw acquirer.
- Je acquirer verwerkt de terugbetaling en de kaarthouder ontvangt het terugbetaalde bedrag.
Offline terugbetalingen
- Merchant dient een REFUND in.
- Trust Payments valideert het verzoek en stuurt een antwoordREFUND ACCEPTED" terug.
- Trust Payments verwerkt de terugbetaling met je acquirer.
- Je acquirer verwerkt de terugbetaling en de kaarthouder ontvangt het terugbetaalde bedrag.
Vereisten
- Je kunt alleen betalingen terugbetalen met Status betaling "100", wat aangeeft dat het geld succesvol is overgemaakt naar je bankrekening. Meer informatie over afwikkeling.
- U kunt niet een hoger bedrag terugbetalen dan oorspronkelijk was verrekend.
- Een verzoek om terugbetaling zal alleen succesvol zijn als de betalingsgegevens nog geldig zijn (het verzoek zal bijvoorbeeld niet succesvol zijn als de vervaldatum van de kaart is verstreken).
REFUND verzoek
Volledige terugbetaling
Het volgende voorbeeld REFUND request voert een volledige terugbetaling uit op de opgegeven AUTH:
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
refund= {
"requesttypedescriptions": ["REFUND"],
"sitereference": "test_site12345",
"parenttransactionreference": "1-2-345678"
}
strequest = securetrading.Request()
strequest.update(refund)
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' => 'webservices@example.com',
'password' => 'Password1^',
);
$requestData = array(
'requesttypedescriptions' => array('REFUND'),
'sitereference' => 'test_site12345',
'parenttransactionreference' => '1-2-345678'
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user webservices@example.com:Password1^ <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{
"alias": "webservices@example.com",
"version": "1.00",
"request": [{
"requesttypedescriptions": ["REFUND"],
"sitereference": "test_site12345",
"parenttransactionreference": "1-2-345678"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"requesttypedescriptions":["REFUND"],
"sitereference":"test_site12345",
"parenttransactionreference":"1-2-345678"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="REFUND">
<operation>
<sitereference>test_site12345</sitereference>
<parenttransactionreference>1-2-345678</parenttransactionreference>
</operation>
</request>
</requestblock>
Vervang <DOMAIN> met een ondersteund domein. Bekijk de volledige lijst met domeinen.
Volledige terugbetaling met bijgewerkte vervaldatum
Het volgende voorbeeld REFUND verzoek voert een volledige terugbetaling uit op de opgegeven AUTH, met een nieuwe vervaldatum van de kaart. De nieuwe vervaldatum wordt ingediend in het expirydate veld.
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
refund= {
"requesttypedescriptions": ["REFUND"],
"sitereference": "test_site12345",
"parenttransactionreference": "1-2-345678",
"expirydate": "05/2025"
}
strequest = securetrading.Request()
strequest.update(refund)
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' => 'webservices@example.com',
'password' => 'Password1^',
);
$requestData = array(
'requesttypedescriptions' => array('REFUND'),
'sitereference' => 'test_site12345',
'parenttransactionreference' => '1-2-345678',
'expirydate' => '05/2025'
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user webservices@example.com:Password1^ <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d ' {
"alias": "webservices@example.com",
"version": "1.00",
"request": [{
"requesttypedescriptions": ["REFUND"],
"sitereference": "test_site12345",
"parenttransactionreference": "1-2-345678",
"expirydate": "05/2025"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"requesttypedescriptions":["REFUND"],
"sitereference":"test_site12345",
"parenttransactionreference":"1-2-345678",
"expirydate":"05/2025"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="REFUND">
<billing>
<payment>
<expirydate>05/2025</expirydate>
</payment>
</billing>
<operation>
<sitereference>test_site12345</sitereference>
<parenttransactionreference>1-2-345678</parenttransactionreference>
</operation>
</request>
</requestblock>
Vervang <DOMAIN> met een ondersteund domein. Bekijk de volledige lijst met domeinen.
Gedeeltelijke terugbetaling
Het volgende voorbeeld REFUND request voert een gedeeltelijke terugbetaling uit op de opgegeven AUTH. U kunt het terug te betalen bedrag specificeren in het baseamount veld.
#!/usr/bin/python
import securetrading
stconfig = securetrading.Config()
stconfig.username = "webservices@example.com"
stconfig.password = "Password1^"
st = securetrading.Api(stconfig)
refund= {
"requesttypedescriptions": ["REFUND"],
"sitereference": "test_site12345",
"parenttransactionreference": "1-2-345678",
"baseamount": "2001"
}
strequest = securetrading.Request()
strequest.update(refund)
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' => 'webservices@example.com',
'password' => 'Password1^',
);
$requestData = array(
'requesttypedescriptions' => array('REFUND'),
'sitereference' => 'test_site12345',
'parenttransactionreference' => '1-2-345678',
'baseamount' => '2001'
);
$api = \Securetrading\api($configData);
$response = $api->process($requestData);
var_dump($response->toArray());
?>
curl --user webservices@example.com:Password1^ <DOMAIN>/json/ -H "Content-type: application/json" -H "Accept: application/json" -X POST -d '{"alias": "webservices@example.com",
"version": "1.00",
"request": [{
"requesttypedescriptions": ["REFUND"],
"sitereference": "test_site12345",
"parenttransactionreference": "1-2-345678",
"baseamount": "200"
}]
}'
{
"alias":"webservices@example.com",
"version":"1.00",
"request":[{
"requesttypedescriptions":["REFUND"],
"sitereference":"test_site12345",
"parenttransactionreference":"1-2-345678",
"baseamount":"200"
}]
}
<requestblock version="3.67">
<alias>webservices@example.com</alias>
<request type="REFUND">
<billing>
<amount>200</amount>
</billing>
<operation>
<sitereference>test_site12345</sitereference>
<parenttransactionreference>1-2-345678</parenttransactionreference>
</operation>
</request>
</requestblock>
Vervang <DOMAIN> met een ondersteund domein. Bekijk de volledige lijst met domeinen.
Specificatie veld
Bij het lezen van de volgende specificatie moet u ervoor zorgen dat u de relevante codevoorbeelden voor de door u gekozen taal raadpleegt.
| Veld | Formaat | Beschrijving | |
| Verplicht | parenttransactionreference XPath: /operation/parenttransactionreference |
Alfanumeriek en koppeltekens (25) |
Dit veld moet de Transactiereferentie bevatten van het AUTH verzoek dat u wilt terugbetalen. |
| Verplicht | requesttypedescriptions XPath: /@type |
Alpha (20) | De vereiste Verzoektype is "REFUND". |
| Verplicht | sitereference XPath: /operation/sitereference |
Alfanumeriek & underscore (50) |
Een unieke referentie die uw account identificeert. Deze ontvangt u wanneer u zich voor het eerst bij ons aanmeldt. De site referentie in het verzoek REFUND moet dezelfde zijn als de site referentie die is gebruikt voor de verwerking van het bovengeschikte AUTH verzoek. |
| Optioneel | baseamount XPath: /billing/amount |
Numeriek (13) |
Het restitutiebedrag in basiseenheden, zonder komma's of decimalen. B.v. €10,99 zou worden ingediend als "1099", maar ¥246 zou worden ingediend als "246". Dit bedrag kan niet hoger zijn dan het uiteindelijke bedrag dat op uw bankrekening wordt gestort. U kunt kiezen voor een gedeeltelijke terugbetaling door hier een lager bedrag op te geven. Als dit veld niet aanwezig is, wordt het volledige bedrag van de transactie terugbetaald. (De maximale lengte van het bedrag kan variëren afhankelijk van uw acquiring bank - Neem contact op met uw bank voor meer informatie) |
| Optioneel | chargedescription XPath: /merchant/chargedescription |
Alfanumeriek met inbegrip van symbolen (25)
Aanbevolen lengte 25 tekens of minder (exacte lengte afhankelijk van de wervende bank). Niet-naleving van deze eis kan ertoe leiden dat de tekst in de transactie wordt ingekort. |
Dit is een beschrijving van de betaling die op het bankafschrift van de klant verschijnt. Dit wordt ondersteund voor handelaren met een Trust Payments acquiring account. Als u een andere acquiring bank gebruikt, dient u contact op te nemen met ons Support Team om te controleren of deze functie wordt ondersteund voordat u verder gaat. De specificatie van dit veld is afhankelijk van uw acquiring bank. Neem voor meer informatie contact op met ons Support Team. Geldige tekens:
|
| Optioneel | expirydate XPath: /billing/payment/expirydate |
Datum MM/JJJJ | Als u een restitutie wilt verwerken met een bijgewerkte vervaldatum, wordt de nieuwe waarde in dit veld ingevoerd. |
| Optioneel | orderreference XPath: /merchant/orderreference |
Alfanumeriek met inbegrip van symbolen (25)
Aanbevolen lengte 25 tekens of minder (exacte lengte afhankelijk van de wervende bank). Niet-naleving van deze eis kan ertoe leiden dat de tekst in de transactie wordt ingekort. |
Uw unieke bestelreferentie die in het Trust Payments systeem kan worden opgeslagen. Als dit niet wordt ingediend, wordt het geërfd van het bovengeschikte AUTH verzoek. |
REFUND antwoord
Na het verwerken van een restitutie geeft Trust Payments het volgende antwoord terug:
De specificatie van het antwoord REFUND is hetzelfde als het standaardantwoord AUTH , behalve de requesttypedescription veld waarde "REFUND" heeft.
Online terugbetalingsreactie
Visa: Alle terugbetalingen worden online verwerkt.
Mastercard: Alle restituties worden online verwerkt vanaf 4 november 2025.
Als een restitutie is geweigerd, wordt errorcode geretourneerd in het antwoord. Als dit gebeurt, raden we aan direct contact op te nemen met de klant om de terugbetaling te regelen via een alternatieve betalingsmethode (bijv. bankoverschrijving).
{
'requestreference': 'A0bxh87wt',
'version': '1.00',
'responses': [{
'accounttypedescription': 'MOTO',
'acquirerresponsecode': '00',
'acquirerresponsemessage': 'Approved or completed Successfully',
'authcode': 'ABC123',
'baseamount': '1050',
'chargedescription': 'Test Merchant',
'cryptocurrencyindicator': '0',
'currencyiso3a': 'GBP',
'dccenabled': '0',
'debtrepayment': '0',
'errorcode': '0',
'errormessage': 'Ok',
'issuer': 'Test Issuer',
'issuercountryiso2a': 'ZZ',
'livestatus': '1',
'maskedpan': '411111######1111',
'merchantcategorycode': '5999',
'merchantcity': 'Test City',
'merchantcountryiso2a': 'GB',
'merchantname': 'Test Merchant',
'merchantnumber': '00000000',
'merchantzipcode': 'T45 6ST',
'operatorname': 'webservices@example.com',
'orderreference': 'MyOrder123',
'parenttransactionreference': '1-2-345678',
'paymenttypedescription': 'VISA',
'requesttypedescription': 'REFUND',
'retrievalreferencenumber': '333912345678',
'securityresponseaddress': '0',
'securityresponsepostcode': '0',
'securityresponsesecuritycode': '0',
'settleduedate': '2023-12-05',
'settlestatus': '100',
'stan': '123456',
'transactionreference': '1-2-345679',
'transactionstartedtimestamp': '2023-12-05 15:38:16'
}]
}
array(3) {
["requestreference"] => string(9) "A3579dkvx"
["version"] => string(4) "1.00"
["responses"] => array(1) {
[0] => array(36) {
["accounttypedescription"] => string(4) "MOTO"
["acquirerresponsecode"] => string(2) "00"
["acquirerresponsemessage"] => string(34) "Approved or completed Successfully"
["authcode"] => string(6) "ABC123"
["baseamount"] => string(4) "1050"
["chargedescription"] => string(13) "Test Merchant"
["cryptocurrencyindicator"] => string(1) "0"
["currencyiso3a"] => string(3) "GBP"
["dccenabled"] => string(1) "0"
["debtrepayment"] => string(1) "0"
["errorcode"] => string(1) "0"
["errormessage"] => string(2) "Ok"
["issuer"] => string(11) "Test Issuer"
["issuercountryiso2a"] => string(2) "ZZ"
["livestatus"] => string(1) "1"
["maskedpan"] => string(16) "411111######1111"
["merchantcategorycode"] => string(4) "5999"
["merchantcity"] => string(9) "Test City"
["merchantcountryiso2a"] => string(2) "GB"
["merchantname"] => string(13) "Test Merchant"
["merchantnumber"] => string(8) "00000000"
["merchantzipcode"] => string(8) "TR45 6ST"
["operatorname"] => string(23) "webservices@example.com"
["orderreference"] => string(10) "MyOrder123"
["parenttransactionreference"] => string(10) "1-2-345678"
["paymenttypedescription"] => string(4) "VISA"
["requesttypedescription"] => string(6) "REFUND"
["retrievalreferencenumber"] => string(12) "333912345678"
["securityresponseaddress"] => string(1) "0"
["securityresponsepostcode"] => string(1) "0"
["securityresponsesecuritycode"] => string(1) "0"
["settleduedate"] => string(10) "2023-12-05"
["settlestatus"] => string(3) "100"
["stan"] => string(6) "123456"
["transactionreference"] => string(10) "1-2-345679"
["transactionstartedtimestamp"] => string(19) "2023-12-05 15:38:16"
}
}
}
{
"requestreference": "W59-abcdeAbC",
"response": [
{
"accounttypedescription": "MOTO",
"acquirerresponsecode": "00",
"acquirerresponsemessage": "Approved or completed Successfully",
"authcode": "ABC123",
"baseamount": "1050",
"chargedescription": "Test Merchant",
"cryptocurrencyindicator": "0",
"currencyiso3a": "GBP",
"dccenabled": "0",
"debtrepayment": "0",
"errorcode": "0",
"errormessage": "Ok",
"issuer": "Test Issuer",
"issuercountryiso2a": "ZZ",
"livestatus": "1",
"maskedpan": "411111######1111",
"merchantcategorycode": "5999",
"merchantcity": "Test City",
"merchantcountryiso2a": "GB",
"merchantname": "Test Merchant",
"merchantnumber": "00000000",
"merchantzipcode": "T45 6ST",
"operatorname": "webservices@example.com",
"orderreference": "MyOrder123",
"parenttransactionreference": "1-2-345678",
"paymenttypedescription": "VISA",
"requesttypedescription": "REFUND",
"retrievalreferencenumber": "333912345678",
"securityresponseaddress": "0",
"securityresponsepostcode": "0",
"securityresponsesecuritycode": "0",
"settleduedate": "2023-12-05",
"settlestatus": "100",
"stan": "123456",
"transactionreference": "1-2-345679",
"transactionstartedtimestamp": "2023-12-05 15:38:16"
}
],
"secrand": "ui97",
"version": "1.00"
}
<responseblock version="3.67">
<requestreference>W59-abcdeAbC</requestreference>
<response type="REFUND">
<acquirerresponsecode>00</acquirerresponsecode>
<authcode>ABC123</authcode>
<billing>
<amount currencycode="GBP">1050</amount>
<dcc enabled="0"/>
<payment type="VISA">
<issuer>Test Issuer</issuer>
<issuercountry>ZZ</issuercountry>
<pan>411111######1111</pan>
</payment>
</billing>
<error>
<code>0</code>
<message>Ok</message>
</error>
<live>1</live>
<merchant>
<merchantcountryiso2a>GB</merchantcountryiso2a>
<merchantname>Test Merchant</merchantname>
<merchantnumber>00000000</merchantnumber>
<operatorname>webservices@example.com</operatorname>
<orderreference>MyOrder123</orderreference>
<tid>27882788</tid>
</merchant>
<operation>
<accounttypedescription>MOTO</accounttypedescription>
<splitfinalnumber>1</splitfinalnumber>
</operation>
<other>
<retrievalreferencenumber>333912345678</retrievalreferencenumber>
<stan>123456</stan>
</other>
<security>
<address>0</address>
<postcode>0</postcode>
<securitycode>0</securitycode>
</security>
<settlement>
<settleduedate>2023-12-05</settleduedate>
<settlestatus>100</settlestatus>
</settlement>
<timestamp>2023-12-05 15:38:16</timestamp>
<transactionreference>1-2-345679</transactionreference>
</response>
<secrand>ui97</secrand>
</responseblock>
Offline terugbetalingsreactie
{
'requestreference': 'Ak70u1ujh',
'version': '1.00',
'responses': [{
'accounttypedescription': 'ECOM',
'acquirerresponsecode': '00',
'authcode': 'TEST REFUND ACCEPTED',
'baseamount': '2001',
'currencyiso3a': 'GBP',
'dccenabled': '0',
'errorcode': '0',
'errormessage': 'Ok',
'issuer': 'SecureTrading Test Issuer1',
'issuercountryiso2a': 'US',
'livestatus': '0',
'maskedpan': '520000######1005',
'merchantcountryiso2a': 'GB',
'merchantname': 'Test Merchant',
'merchantnumber': '00000000',
'operatorname': 'webservices@example.com',
'orderreference': 'My_Order_123',
'parenttransactionreference': '1-2-345678',
'paymenttypedescription': 'MASTERCARD',
'requesttypedescription': 'REFUND',
'securityresponseaddress': '0',
'securityresponsepostcode': '0',
'securityresponsesecuritycode': '0',
'settleduedate': '2016-12-07',
'settlestatus': '0',
'tid': '27882788',
'transactionreference': '1-2-345679',
'transactionstartedtimestamp': '2016-12-07 15:14:00'
}]
}
array(3) {
["requestreference"] => string(9) "Acdefhwxy"
["version"] => string(4) "1.00"
["responses"] => array(1) {
[0] => array(28) {
["accounttypedescription"] => string(4) "ECOM"
["acquirerresponsecode"] => string(2) "00"
["authcode"] => string(20) "TEST REFUND ACCEPTED"
["baseamount"] => string(4) "2001"
["currencyiso3a"] => string(3) "GBP"
["dccenabled"] => string(1) "0"
["errorcode"] => string(1) "0"
["errormessage"] => string(2) "Ok"
["issuer"] => string(26) "SecureTrading Test Issuer1"
["issuercountryiso2a"] => string(2) "US"
["livestatus"] => string(1) "0"
["maskedpan"] => string(16) "520000######1005"
["merchantcountryiso2a"] => string(2) "GB"
["merchantname"] => string(13) "Test Merchant"
["merchantnumber"] => string(8) "00000000"
["operatorname"] => string(23) "webservices@example.com"
["orderreference"] => string(12) "My_Order_123"
["parenttransactionreference"] => string(10) "1-2-345678"
["paymenttypedescription"] => string(10) "MASTERCARD"
["requesttypedescription"] => string(6) "REFUND"
["securityresponseaddress"] => string(1) "0"
["securityresponsepostcode"] => string(1) "0"
["securityresponsesecuritycode"] => string(1) "0"
["settleduedate"] => string(10) "2016-12-09"
["settlestatus"] => string(1) "0"
["tid"] => string(8) "27882788"
["transactionreference"] => string(10) "1-2-345679"
["transactionstartedtimestamp"] => string(19) "2016-12-09 10:06:13"
}
}
}
{"requestreference":"W23-22rd4301",
"version":"1.00",
"response":[{
"accounttypedescription":"ECOM",
"acquirerresponsecode":"00",
"authcode":"TEST REFUND ACCEPTED",
"baseamount":"2001",
"currencyiso3a":"GBP",
"dccenabled":"0",
"errorcode":"0",
"errormessage":"Ok",
"issuer":"SecureTrading Test Issuer1",
"issuercountryiso2a":"US",
"livestatus":"0",
"maskedpan":"520000######1005",
"merchantcountryiso2a":"GB",
"merchantname":"Test Merchant",
"merchantnumber":"00000000",
"operatorname":"webservices@example.com",
"orderreference":"My_Order_123",
"parenttransactionreference":"1-2-345678",
"paymenttypedescription":"MASTERCARD",
"requesttypedescription":"REFUND",
"securityresponseaddress":"0",
"securityresponsepostcode":"0",
"securityresponsesecuritycode":"0",
"settleduedate":"2016-12-07",
"settlestatus":"0",
"tid":"27882788",
"transactionreference":"1-2-345679",
"transactionstartedtimestamp":"2016-12-07 15:31:48"
}],
"secrand":"SNQVg"}
<responseblock version="3.67">
<requestreference>Xk3mvyk5v</requestreference>
<response type="REFUND">
<authcode>TEST REFUND ACCEPTED</authcode>
<acquirerresponsecode>00</acquirerresponsecode>
<billing>
<amount currencycode="GBP">2001</amount>
<dcc enabled="0"/>
<payment type="MASTERCARD">
<issuer>SecureTrading Test Issuer1</issuer>
<issuercountry>US</issuercountry>
<pan>520000######1005</pan>
</payment>
</billing>
<error>
<code>0</code>
<message>Ok</message>
</error>
<live>0</live>
<merchant>
<merchantcountryiso2a>GB</merchantcountryiso2a>
<merchantname>Test Merchant</merchantname>
<merchantnumber>00000000</merchantnumber>
<operatorname>webservices@example.com</operatorname>
<orderreference>My_Order_123</orderreference>
<tid>27882788</tid>
</merchant>
<operation>
<accounttypedescription>ECOM</accounttypedescription>
<parenttransactionreference>1-2-345678</parenttransactionreference>
</operation>
<security>
<address>0</address>
<postcode>0</postcode>
<securitycode>0</securitycode>
</security>
<settlement>
<settleduedate>2012-10-08</settleduedate>
<settlestatus>0</settlestatus>
</settlement>
<timestamp>2012-10-08 12:46:11</timestamp>
<transactionreference>1-2-345679</transactionreference>
</response>
<secrand>f</secrand>
</responseblock>