Refund types

A unique feature of GlobalPay is that it offers an API which allows you to refund any type of transaction, no matter of the payment method that was used.

The refunds can be full and/or partial depending if you have to return all the money to customer or not.

Full refund means you can only refund the entire paid amount for the initial transaction.

Partial refund means you have the possibility to refund a smaller amount than the one from the initial paid transaction. You can perform more than one refund for a transaction with the limitation that the sum of partial refunds to be smaller or equal than the initial paid amount.

Also for each payment method is specific one or more of the below refund types:

Refund Type ID Refund Type
1 Native
2 SEPA Bank Transfer
3 SWIFT Bank Transfer
4 Manual Support Work No Info
5 SEPA Bank Transfer No Info
6 SWIFT Bank Transfer No Info
7 Local Bank Transfer
8 Local Bank Transfer No Info
9 Manual Support Work Details Needed

Refund type/types per method:

Method ID Method Name Limitation Partial/Full Refund Refund type(s) supported Estimated processing time
1 Bank Transfer N/A Partial/Full 2, 3 and 7 1-5 business days
2 iDEAL Maximum refund period is 48 days. Partial/Full 5 1-2 business days
3 MrCash N/A Partial/Full 2 1-3 business days
4 GiroPay N/A Partial/Full 5 1-2 business days
5 EPS N/A Partial/Full 2 1-3 business days
9 SOFORT Banking N/A Partial/Full 5, 6 and 8 1-5 business days
12 Przelewy24 Maximum refund period is 6 months. Partial/Full 4 1-3 business days
13 OneCard The refund should be requested before the settlement day. Full 4 1-3 business days
14 CashU N/A Partial/Full 1 1-3 business days
18 POLi N/A Partial/Full 3 1-10 business days
19 DineroMail N/A Full 3 and 7 1-10 business days
20 SIBS (Multibanco) N/A Partial/Full 2 1-3 business days
22 Moneta Wallet N/A Partial/Full 4 1-3 business days
23 Paysera N/A Partial/Full 4 1-10 business days
24 Alipay Maximum refund period is 90 days. Partial/Full 1 and 3 1-2 business days
25 Abaqoos N/A Partial/Full 4 One business day
29 Trustly The initial payment needs to be settled first, process which takes 1-2 business days Partial/Full 1 1-2 business days
32 Debito Banco do Brasil N/A Partial/Full 7 1-5 business days
35 Paysbuy N/A Partial/Full 9 7-10 business days
36 Mazooma N/A Partial/Full 1 2-3 business days
37 eNETS Debit Maximum refund period is 6 months. Partial/Full 3 5-15 business days
40 PaySafeCard N/A Partial/Full 2, 3 and 7 1-5 business days
46 MercadoPago Maximum refund period is 90 days for Brazil and 60 days for Mexico. Partial/Full 1 The refund is processed in realtime however it takes 30 to 60 days to show up on the buyer’s bill, depending on the card brand and bank.
49 ToditoCash Native – The refund has to be made in the same day as the payment.Bank Transfer Swift – starting with next day. Partial/Full 1 and 3 Real-time processing for Native Refund; 1-5 business days for Bank Transfer Swift Refund.
58 PayWithMyBank N/A Partial/Full 4 1-10 business days
62 Tenpay Maximum refund period is 90 days. Partial/Full 1 1-5 business days
63 TrustPay N/A Partial/Full 2, 3 and  7 1-5 business days
64 MangirKart N/A Partial/Full 7 1-10 business days
65 Finnish Banks N/A Partial/Full 2 1-3 business days
66 MTCPay N/A Partial/Full 7 1-5 business days
67 DragonPay Maximum refund period is 30 days. Partial/Full 4 Refunds are processed every Friday
69 Cards N/A Partial/Full 1 depends on the acquirer
72 PagoEfectivo N/A Partial/Full 3 1-10 business days
73 MyBank N/A Partial/Full 2 1-3 business days
74 Yandex.Money N/A Partial/Full 1 One business day
75 Klarna Invoice N/A Partial/Full 1 One business day
77 VoguePay N/A Partial/Full 3 1-5 business days
81 WebMoney Transfer N/A Partial/Full 3 1-5 business days
83 UnionPay N/A Partial/Full 1 One business day
84 SEPA Direct Debit N/A Partial/Full 1 One business day
1000 Boleto Bancário N/A Partial/Full 7 1-5 business days
1002 Transferencia entre Contas Bradesco N/A Partial/Full 7 1-5 business days
1003 Qiwi Wallet Maximum refund period is 90 days. Partial/Full 1 Real-time processing
1004 Beeline Maximum refund period is 90 days. Partial/Full 4 One business day
1006 MTS Maximum refund period is 90 days. Partial/Full 4 One business day
1008 Yandex N/A Partial/Full 4 1-3 business days
1010 AmBank N/A Partial/Full 4 1-5 business days
1011 CIMB Clicks (formerly known as Channel-e) N/A Partial/Full 4 1-5 business days
1012 FPX N/A Partial/Full 4 1-5 business days
1013 Hong Leong Bank Transfer N/A Partial/Full 4 1-5 business days
1014 Maybank2U N/A Partial/Full 4 1-5 business days
1017 RHB N/A Partial/Full 4 1-5 business days
1018 Webcash N/A Partial/Full 4 1-5 business days
1019 Credit Cards Colombia N/A Partial/Full 4 1-10 business days
1020 PSE N/A Partial/Full 4 1-10 business days
1021 ACH Debit N/A Partial/Full 4 1-10 business days
1022 Via Baloto N/A Partial/Full 4 1-10 business days
1023 Referenced Payment N/A Partial/Full 4 1-10 business days
1024 Mandiri Clicks N/A Full 9 7-10 business days
1025 XL Tunai N/A Full 9 7-10 business days
1026 Bancomer Pago referenciado N/A Partial/Full 3 1-10 business days
1027 Santander Pago referenciado N/A Partial/Full 3 1-10 business days
1028 ScotiaBank Pago referenciado N/A Partial/Full 3 1-10 business days
1029 7-Eleven Pago en efectivo N/A Partial/Full 3 1-10 business days
1030 Oxxo Pago en efectivo N/A Partial/Full 3 1-10 business days
1031 IXE Pago referenciado N/A Partial/Full 3 1-10 business days
1032 Boleto Itaú N/A Full 4 1-10 business days
1036 Cash Options Thailand N/A Partial/Full 9 7-10 business days
1037 Online Banking Thailand N/A Partial/Full 9 7-10 business days
1038 PaysBuy Wallet N/A Partial/Full 4 7-10 business days
1040 Pagos en efectivo Argentina N/A Partial/Full 3 1-10 business days
1041 OP-Pohjola N/A Partial/Full 2 1-3 business days
1042 Nordea N/A Partial/Full 2 1-3 business days
1043 Danske N/A Partial/Full 2 1-3 business days
1046 Konbini N/A Partial/Full 4 1-5 business days
1047 Cards Japan N/A Partial/Full 4 1-5 business days
1048 Bank Transfer Japan N/A Partial/Full 4 1-5 business days
1049 PayEasy Japan N/A Partial/Full 4 1-5 business days
1050 WebMoney Japan N/A Partial/Full 4 1-3 business days
1051 Globe Gcash N/A Partial/Full 4 1-5 business days
1052 Klarna Checkout N/A Partial/Full 1 One business day
1053 Credit Card (Indonesia) N/A Partial/Full 4 1-5 business days
1054 BII VA N/A Partial/Full 9 7-10 business days
1055 Kartuku N/A Partial/Full 9 7-10 business days
1056 CIMB Clicks N/A Partial/Full 9 7-10 business days
1057 Mandiri e-Cash N/A Partial/Full 9 7-10 business days
1058 IB Muamalat N/A Partial/Full 9 7-10 business days
1059 T-Cash N/A Partial/Full 9 7-10 business days
1060 Indosat Dompetku N/A Partial/Full 9 7-10 business days
1061 Mandiri ATM Automatic N/A Partial/Full 9 7-10 business days
1063 Danamon Online Banking N/A Partial/Full 9 7-10 business days
1064 Sberbank N/A Partial/Full 3 1-10 business days
1066 Wechat N/A Partial/Full 1 One business day
1067 Public Bank Online N/A Partial/Full 4 1-5 business days
1070 Celcom AirCash N/A Partial/Full 4 1-5 business days
1071 Bank Rakyat Internet Banking N/A Partial/Full 4 1-5 business days
1072 AffinOnline N/A Partial/Full 4 1-5 business days
1073 Pay4Me Malaysia N/A Partial/Full 4 1-5 business days
1074 myBSN N/A Partial/Full 4 1-5 business days
1075 Bank Islam Online N/A Partial/Full 4 1-5 business days
1076 UOB Online N/A Partial/Full 4 1-5 business days
1077 Hong Leong Connect PEx+ N/A Partial/Full 4 1-5 business days

Create a Refund

When you are initiating a refund you need to provide the Refund Amount and the Merchant Transaction ID, that is automatically generated. You can change this ID by introducing your ID value.

Definition: POST /v1/payments/{id}/refunds

Where:
  • {id} – GlobalPay Payment ID

A 201 HTTP response (Created) is returned if the refund was correctly initialized.

Request:

POST https://paytest.smart2pay.com/v1/payments/2429753/refunds
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Refund": {
    "MerchantTransactionID": "s2ptest_55",
    "Amount": 100
   }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
  "Refund": {
    "ID": 7094,
    "Created": "20160316095912",
    "MerchantTransactionID": "s2ptest_55",
    "InitialPaymentID": 2429753,
    "Amount": 100,
    "Currency": "EUR",
    "Description": null,
    "TypeID": 1,
    "SiteID": 30201,
    "Details": null,
    "Customer": null,
    "BillingAddress": null,
    "BankAddress": null,
    "Articles": null,
    "Status": {
      "ID": 1,
      "Info": "Open",
      "Reasons": null
    }
  }
}

For some payment methods to be processed correctly, depending on the type of refund, we require additional parameters, specific details, such as customer IBAN.

Please check Get information for a refund for more information on what parameters you need to send in order to initiate a specific refund.

A particular case is for Klarna Invoice payment method where in order to initiate a refund you will need to provide Merchant Article ID and Quantity parameters, like in the below example:

Request:

POST https://paytest.smart2pay.com/v1/payments/2596144/refunds
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Refund": {
    "MerchantTransactionID": "s2ptest_f8",
    "Amount": 980,
    "Articles": [
      {
        "MerchantArticleID": "1231",
        "Quantity": 1
      }
    ]
  }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8

{
  "Refund": {
    "ID": 9088,
    "Created": "20160831083205",
    "MerchantTransactionID": "s2ptest_f8",
    "InitialPaymentID": 2596144,
    "Amount": 980,
    "Currency": "EUR",
    "Description": null,
    "TypeID": 1,
    "SiteID": 30201,
    "Details": null,
    "Customer": null,
    "BillingAddress": null,
    "BankAddress": null,
    "Articles": [
      {
        "MerchantArticleID": "1231",
        "Name": null,
        "Quantity": 1,
        "Price": "0",
        "VAT": "0",
        "Discount": "0",
        "Type": null
      }
    ],
    "Status": {
      "ID": 1,
      "Info": "Open",
      "Reasons": null
    }
  }
}

For Direct Card transactions you can initiate refunds only for those with a Captured payment status. When you are initiating a refund you need to provide the Refund Amount and the Merchant Transaction ID, that is automatically generated. You can change this ID by introducing your ID value.

Request:

POST https://securetest.smart2pay.com/v1/payments/202246/refunds
Authorization: Basic MTAxMDpnYWJp

{
 "Refund": {
   "MerchantTransactionID": "s2ptest_h19",
   "OriginatorTransactionID": "108_a",
   "Amount": 2000,   
   "Description": "refund reason"
  }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8



{
  "Refund": {
    "ID": 263,
    "SiteID": 1010,
    "Created": "20161205095348",
    "MerchantTransactionID": "s2ptest_h19",
    "OriginatorTransactionID": "108_a",
    "InitialPaymentID": 0,
    "Amount": 2000,
    "Currency": "EUR",
    "Description": "refund reason",
    "StatementDescriptor": null,
    "Customer": null,
    "BillingAddress": null,
    "BankAddress": null,
    "Articles": null,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": []
    }
  }
}

In case of an API error, an HTTP 4xx (you did something wrong) or HTTP 5xx (we did something wrong) response is returned.

For more information about the reasons of a wrong request response see our section GlobalPay Return Codes.

Request: 

POST https://paytest.smart2pay.com/v1/payments/2427079/refunds
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Refund": {
    "MerchantTransactionID": "s2ptest_9",
    "Amount": 120
   }
}

Response:

HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8

{
  "Refund": {
    "ID": 0,
    "Created": null,
    "MerchantTransactionID": "s2ptest_9",
    "InitialPaymentID": 0,
    "Amount": 120,
    "Currency": null,
    "Description": null,
    "TypeID": 0,
    "SiteID": 30201,
    "Details": null,
    "Customer": null,
    "BillingAddress": null,
    "BankAddress": null,
    "Articles": null,
    "Status": {
      "ID": null,
      "Info": null,
      "Reasons": [
        {
          "Code": 118,
          "Info": "Amount invalid"
        }
      ]
    }
  }
}

Refund Notification

We will notify you when a refund changes its status to the Notification URL you setup in the Merchant Dashboard.

You need to respond with HTTP code 204 (No Content)!

Refund notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Refund": {
    "ID": 7094,
    "Created": "20160316095912",
    "MerchantTransactionID": "s2ptest_55",
    "InitialPaymentID": 2429753,
    "Amount": 100,
    "Currency": "EUR",
    "Description": "",
    "TypeID": 1,
    "SiteID": 30201,
    "Details": null,
    "Customer": null,
    "BillingAddress": null,
    "BankAddress": null,
    "Articles": null,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    }
  }
}

Response:

204 No Content

Get refund types for a certain payment

You can get more information on what parameters you need to send for a certain payment by using a few actions based on GET HTTP request.

Definition: GET /v1/payments/{id}/refunds/types

Where:
  • {id} – GlobalPay Payment ID

The parameters you need to send for a certain refund are the ones returned followed by regex characters. If there aren’t any, it means no additional parameteres are required.

For Native Refund type:

Request:

GET https://paytest.smart2pay.com/v1/payments/2427069/refunds/types
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "RefundTypes": [
    {
      "Name": "Native",
      "ID": 1,
      "AllowsPartialRefund": true,
      "Customer": null,
      "BillingAddress": null,
      "BankAddress": null,
      "Details": null
    }
  ]
}

Below there are the refund types that require additional parameters.

For Sepa Bank Transfer Refund type:

Request:

GET https://paytest.smart2pay.com/v1/payments/2427083/refunds/types
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "RefundTypes": [
    {
      "Name": "SEPABankTransfer",
      "ID": 2,
      "AllowsPartialRefund": true,
      "Customer": {
        "MerchantCustomerID": null,
        "Email": null,
        "FirstName": "^.{1,50}$",
        "LastName": "^.{1,50}$",
        "Gender": null,
        "SocialSecurityNumber": null,
        "Phone": null,
        "Company": null
      },
      "BillingAddress": null,
      "BankAddress": null,
      "Details": {
        "BankCode": "^[a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}[XXX0-9]{0,3}",
        "CustomerIBAN": "^[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}$"
      }
    }
  ]
}

For SWIFT Bank Transfer Refund type:

Request:

GET https://paytest.smart2pay.com/v1/payments/2427087/refunds/types
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "RefundTypes": [
    {
      "Name": "SWIFTBankTransfer",
      "ID": 3,
      "AllowsPartialRefund": true,
      "Customer": {
        "MerchantCustomerID": null,
        "Email": null,
        "FirstName": "^.{1,50}$",
        "LastName": "^.{1,50}$",
        "Gender": null,
        "SocialSecurityNumber": null,
        "Phone": null,
        "Company": null
      },
      "BillingAddress": null,
      "BankAddress": null,
      "Details": {
        "CustomerAccountNumber": "^\\w{1,35}$",
        "BankCode": "^[a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}[XXX0-9]{0,3}"
      }
    }
  ]
}

For Manual Support Work Details Needed Refund type:

Request:

GET https://paytest.smart2pay.com/v1/payments/2547887/refunds/types
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "RefundTypes": [
    {
      "Name": "ManualSupportWorkDetailsNeeded",
      "ID": 9,
      "AllowsPartialRefund": true,
      "Customer": null,
      "BillingAddress": null,
      "BankAddress": null,
      "Details": {
        "BankName": "^.{1,50}$"
      }
    }
  ]
}

Get refund types (filtered)

You can specify various filters as parameters such as method ID, country code and currency in the query string in order to get the refund types available.

Definition: GET /v1/refunds/types/{idMethod}/{countryCode}/{currency}

Where:
  • {idMethod} – GlobalPay Payment Method ID

The parameters you need to send for a certain refund are be the ones returned followed by regex characters. If there aren’t any, it means no additional parameteres are required.

Request:

GET https://paytest.smart2pay.com/v1/refunds/types/3/BE/EUR
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "RefundTypes": [
    {
      "Name": "SEPABankTransfer",
      "ID": 2,
      "AllowPartialRefund": true,
      "Customer": {
        "MerchantCustomerID": null,
        "Email": null,
        "FirstName": "^.{1,50}$",
        "LastName": "^.{1,50}$",
        "Gender": null,
        "SocialSecurityNumber": null,
        "Phone": null,
        "Company": null
      },
      "BillingAddress": null,
      "BankAddress": null,
      "Details": {
        "BankCode": "^[a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}[XXX0-9]{0,3}",
        "CustomerIBAN": "^[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}$"
      }
    }
  ]
}

Get information on a specific refund

You can get information about a refund by using actions based on Get HTTP request.

Definition: GET /v1/payments/{id}/refunds/{id}

Where:
  • payments/{id} – GlobalPay Payment ID
  • and
  • refunds/{id} – GlobalPay Refund ID

Request:

GET https://paytest.smart2pay.com/v1/payments/2429753/refunds/7094
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "Refund": {
    "ID": 7094,
    "Created": "20160316095912",
    "MerchantTransactionID": "s2ptest_55",
    "InitialPaymentID": 2429753,
    "Amount": 100,
    "Currency": "EUR",
    "Description": null,
    "TypeID": 1,
    "SiteID": 30201,
    "Details": null,
    "Customer": null,
    "BillingAddress": null,
    "BankAddress": null,
    "Articles": null,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    }
  }
}

Get a list of refunds of a specific payment

You can get a list of refunds for a specific payment by using an action based on GET HTTP request. Please be aware that only a limited amount of details for each refund will be provided.

Definition: GET /v1/payments/{id}/refunds/

Where:
  • {id} – GlobalPay Payment ID

Request:

GET https://paytest.smart2pay.com/v1/payments/2427079/refunds/
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "Refunds": [
    {
      "ID": 7091,
      "Created": "20160314144502",
      "MerchantTransactionID": "s2ptest_44",
      "InitialPaymentID": 2427079,
      "Amount": 20,
      "Currency": "EUR",
      "Description": null,
      "TypeID": 5,
      "SiteID": 30201,
      "Details": null,
      "Customer": null,
      "BillingAddress": null,
      "BankAddress": null,
      "Articles": null,
      "Status": {
        "ID": 4,
        "Info": "Failed",
        "Reasons": null
      }
    },
    {
      "ID": 7083,
      "Created": "20160314100006",
      "MerchantTransactionID": "s2ptest_9",
      "InitialPaymentID": 2427079,
      "Amount": 20,
      "Currency": "EUR",
      "Description": null,
      "TypeID": 5,
      "SiteID": 30201,
      "Details": null,
      "Customer": null,
      "BillingAddress": null,
      "BankAddress": null,
      "Articles": null,
      "Status": {
        "ID": 1,
        "Info": "Open",
        "Reasons": null
      }
    }
  ]
}