SSPAY Test Data

In order for you to test SSPAY payment method successfully, you don’t need any given test data. Be sure to use amount greater than 100 KRW.

SSPAY Payment Flow

  1. The customer will be redirected to the payment page where he enters his name, email address and phone number.

    1 Enter name, email and phone

  2. The customer receives a QR Code to use in order to complete the payment.

    1 Payment details

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

SSGPAY Test Data

In order for you to test SSGPAY payment method successfully, you don’t need any given test data. Be sure to use amount greater than 100 KRW.

SSGPAY Payment Flow

  1. The customer will be redirected to the payment page where he enters his name, email address and phone number.

    1 Enter name, email and phone

  2. The customer is redirected to a page where he enters the necessary payment details in order to complete the payment.
  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

KAKAO Test Data

In order for you to test KAKAO payment method successfully, you don’t need any given test data. Be sure to use amount greater than 100 KRW.

KAKAO Payment Flow

  1. The customer will be redirected to the payment page where he enters his name, email address and phone number.

    1 Enter name, email and phone

  2. The customer receives a QR Code to use in order to complete the payment.

    1 Qr code

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Bank Transfer Test Data

In order for you to test Bank Transfer payment method successfully, you don’t need any given test data.

Bank Transfer Payment Flow

  1. The customer will be redirected to the payment page where he enters his name and email address.

    1 Enter name

  2. The customer receives the details to make the payment of the transaction. He also has the possibility to print the payment details.

    1 Payment details

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Bank Transfer Test Data

In order for you to test Bank Transfer payment method successfully, you don’t need any given test data.

Bank Transfer Payment Flow

  1. The customer will be redirected to the payment page where he enters his name and email address.

    1 Enter name

  2. The customer receives the details to make the payment of the transaction. He also has the possibility to print the payment details.

    1 Payment details

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Nequi Test Data

In order for you to test Nequi payment method successfully, please use the test data provided below.

Nequi Payment Flow

Nequi Test Data
Data Value
Email Address: Enter any valid email address. Example: youre@email.com
Phone Number: Enter any 7 digit number following the prefix +507. Example: 8339956
  1. The customer enters his email address and phone number and clicks on the Push or Scan QR button.

    1 Select payment option

  2. The customer is redirected to Nequi page where he scans the QR code given on the page and completes the payment.

    1 Payment code and details

PagoCash Test Data

In order for you to test PagoCash payment method successfully, please use the test data provided.

Pagocash Payment Flow

PagoCash Test Data
Data Value
Email Address: Enter any valid email address. Example: youre@email.com
Phone Number: Enter any 7 digit number following the prefix +507. Example: 8339956
  1. The customer enters his email address and phone number and clicks on the Generate payment code button.

    1 Select payment option

  2. The customer is redirected to Pagocash page where he sees the reference number and the amount he has to pay. With the reference number received, the customer has 24 hours to complete the payment at any Punto Pago Kiosk by selecting Easy pay and entering the code.

    1 Payment code and details

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.1 Return page when the redirection status is processing

Nuvei Mobile SDK with 3DSecure Authentication

There are two phases, which replicate the web flow:
PHASE 1 – Check credit card – GenerateCreditCardToken in Mobile SDK;
PHASE 2 – Use CardToken obtained in PHASE 1, authenticate the customer and initiate the Authorization.

  • PHASE 1 – GOAL: Tokenize credit card using mobile app – without 3DSecure and CreditCardToken generated only on Nuvei side (no acquirer token generated):

  1. MerchantAPP – Request Temporary ApiKey from MerchantServer
  2. MerchantServer – AUTH_MOBILE – Request TemporaryApiKey from Smart2PayServer, using SiteID:ApiKey authentication
  3. Smart2PayServer – Response with TemporaryApiKey to MerchantServer
  4. MerchantServer – Response with TemporaryApiKey to MerchantAPP
  5. MerchantAPP – Request to tokenize CardDetails to Smart2PayMobileSDK, using TemporaryApiKey(SDK::TOKENIZE)
  6. Smart2PayMobileSDK – Request to tokenize using TemporaryApiKey to Smart2PayServer
  7. Smart2PayServer – Response to Smart2PayMobileSDK with CardToken
  8. Smart2PayMobileSDK – Response to MerchantAPP with CardToken
  9. MerchantAPP – Save CardToken to MerchantServer; MerchantServer must store the following values: CreditCardToken + CardScheme + Last four digits of PAN + IssuingBankCountry + CustomerID
  • PHASE 2 – GOAL: Authorize a payment using a stored card token + 3DSecure authentication using mobile APP :

  1. MerchantAPP – Request TemporaryApiKey and CardToken from MerchantServer
  2. MerchantServer – AUTH_MOBILE – Request TemporaryApiKey from Smart2PayServer, using SiteID:ApiKey authentication
  3. Smart2PayServer – Response with TemporaryApiKey to MerchantServer
  4. MerchantServer responds with TemporaryApiKey to MerchantAPP:
    • the response must include also CreditCardToken + CardScheme + Last four digits of PAN for the CustomerID (values stored in PHASE 1, step 9);
  5. MerchantAPP displays CardScheme + Last four digits of PAN to the Customer requests CVV
  6. MerchantAPP uses SDK::3DSecureAuthenticate to request authentication to Smart2PayMobileSDK. Request must contain:
    • CardToken + CVV + TemporaryApiKey
    • Currency – required for step 9
    • Amount – required for step 9
  7. Smart2PayMobileSDK request to Smart2PayServer to obtain CardDetails
  8. Smart2PayServer responds to Smart2PayMobileSDK with CardDetails:
    • CardNumber, CardHolderName, ExpirationDate (NO CVV)
  9. Smart2PayMobileSDK request via AcquirerMobileSDK for 3DSecureAuthentication. Parameters required:
    • CardDetails:
      • CardNumber (required)
      • CardHolderName (required)
      • ExpirationDate (required)
      • CVV (required)
    • Authenticate3DInput:
      • SessionToken – (required)
      • Acquirer MerchantID (required)
      • Acquirer MerchantSiteID (required)
      • Currency – (required)
      • Amount – (required)
      • Acquirer PaymentOption – (required)
      • ClientRequestID – (optional)
      • CustomData – (optional)
    1. Smart2PayMobileSDK requests to Smart2PayServer to obtain Acquirer SessionToken. Parameters required:
      • Acquirer MerchantID, Acquirer MerchantSiteID, ClientRequestID, TimeStamp, Checksum
    2. Smart2PayServer responds to Smart2PayMobileSDK with SessionToken
    3. AcquirerMobileSDK displays a webview to the customer for the 3DSecureAuthentication
    4. Customer enters 3DSecure secret for authentication (OTP, password etc.)
    5. AcquirerMobileSDK responds to Smart2PayMobileSDK with 3DSecure Authentication result
  10. Smart2PayMobileSDK responds to MerchantAPP with 3DSecureAuthentication result. Parameters provided:
    • ECI
    • CAVV
    • XID
    • dsTransID
    • Result
    • errorCode
    • errorDescription
  11. MerchantAPP sends a request to MerchantServer for a liability shift 3DSecure payment (Authorization):
    • CardToken
    • CVV
    • 3DSecureAuthentication result
    • Splits
  12. MerchantServer sends request to Smart2PayServer for a liability shift 3DSecure payment (Authorization):
    • CardToken
    • CVV
    • 3DSecureAuthentication result
    • Splits
  13. Smart2PayServer sends response to MerchantServer with the result of the Authorization
  14. MerchantServer sends result to MerchantAPP which displays result to Customer

Open Banking Test Data

In order for you to test the Open Banking payment method successfully, please use the test data provided. Please send in request any amount ending in xxx.30 and currency GBP in order to successfully perform an end to end test.

Open Banking Payment Flow

Open Banking Test Data
Data Value
First Name: Enter any name. Example: John
Last Name: Enter any name. Example: Doe
Email Address: Enter any valid email address. Example: person@test.com
Test Bank: Nuapay ASPSP
Street: Enter any value. Example: Rue. Mandatory parameter only for France.
Street number: Enter any value. Example: 12. Mandatory parameter only for France.
Zip-code: Enter any value. Example: 123456. Mandatory parameter only for France.
City: Enter any value. Example: Paris. Mandatory parameter only for France.
User Name: psu
Password: psu
  1. The customer enters his email address, name and chooses his bank from the provided list.

    1 Enter payment details

  2. The customer logs in to his Bank by entering his user name and password.

    1 Login to Bank

  3. The customer needs to prove his identity (Strong Customer Authentication).

    1 Strong Customer Authentication

  4. The customer selects his account from the provided list and completes the payment.

    1 Bank account

  5. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is pending

Nuvei JS – SDK Installation

Several JavaScript API implementations are available here https://github.com/Smart2Pay/js-sdk/tree/main/src to obtain the CreditCardToken. You can also checkout our implementation examples here: https://github.com/Smart2Pay/js-sdk/blob/main/src/example.html. See below the details for ES6 – fetch + Promise, ES6 – Promise + XMLHttpRequest or ES5 – XMLHttpRequest.

ES6 – fetch + Promise

Installation
Import the following script that will make available tokenizeCard_fetch():

<script src="https://..../tokenizeCard_fetch.js" type="text/javascript"></script>

Usage

Use tokenizeCard_fetch to send the required data and handle response / error:

tokenizeCard_fetch({
    apiKey: '<apikey string>',
    environment: '<environment string>',
    cardDetails: '<cardDetails object>',
})  
.then(CreditCardToken => console.log(CreditCardToken)) // use received 'CreditCardToken'
.catch(err => console.error(err)) // handle error
Parameter Type Possible Values Description
apiKey string API key previously obtained from S2P server
environment string ‘DEV’
‘TEST’
‘LIVE’
select the environment
DEV
http://localhost/v1/card/authenticate
TEST
https://securetest.smart2pay.com/v1/card/authenticate
LIVE
https://secure.smart2pay.com/v1/card/authenticate
cardDetails JSON object check sample bellow card authentication details in JSON format

Sample card details object:


{
    "CardAuthentication": {
        "Customer": {
            "FirstName": "John",
            "LastName": "Doe",
            "Email": "testing2@test.com",
            "SocialSecurityNumber": "00003456789"
        },
        "BillingAddress": {
            "Country": "BR"
        },
        "Card": {
            "HolderName": "John Doe",
            "Number": "4111111111111111",
            "ExpirationMonth": "02",
            "ExpirationYear": "2029",
            "SecurityCode": "312"
        }
    }
}

ES6 – Promise + XMLHttpRequest

Installation
Import the following script that will make available tokenizeCard_fetch():

<script src="https://..../tokenizeCard_promise.js" type="text/javascript"></script>

Usage

Use tokenizeCard_promise to send the required data and handle response / error:

tokenizeCard_promise({
    apiKey: '<apikey string>',
    environment: '<environment string>',
    cardDetails: '<cardDetails object>',
})
.then(function (CreditCardToken) {
    // use received 'CreditCardToken'
    console.log(CreditCardToken);
})
.catch(function (err) {
    // handle error
    console.error(err.status, err.statusText);
});
Parameter Type Possible Values Description
apiKey string API key previously obtained from S2P server
environment string ‘DEV’
‘TEST’
‘LIVE’
select the environment
DEV
http://localhost/v1/card/authenticate
TEST
https://securetest.smart2pay.com/v1/card/authenticate
LIVE
https://secure.smart2pay.com/v1/card/authenticate
cardDetails JSON object check sample bellow card authentication details in JSON format

Sample card details object:


{
    "CardAuthentication": {
        "Customer": {
            "FirstName": "John",
            "LastName": "Doe",
            "Email": "testing2@test.com",
            "SocialSecurityNumber": "00003456789"
        },
        "BillingAddress": {
            "Country": "BR"
        },
        "Card": {
            "HolderName": "John Doe",
            "Number": "4111111111111111",
            "ExpirationMonth": "02",
            "ExpirationYear": "2029",
            "SecurityCode": "312"
        }
    }
}

ES5 – XMLHttpRequest

Installation
Import the following script that will make available tokenizeCard():

<script src="https://..../tokenizeCard.js" type="text/javascript"></script>

ES5 – Usage

Create a function where you handle the received CreditCardToken:

function handleRequest(CreditCardToken) {
    // use received 'CreditCardToken'
    console.log(CreditCardToken);
}

Create a function to handle any received errors:

function handleError(HttpStatusCode, errorText) {
    // handle error
    console.error(HttpStatusCode, errorText);
}

Use tokenizeCard() to send the required data and handlers:

tokenizeCard({
    apiKey: '<𝘢𝘱𝘪𝘬𝘦𝘺 𝘴𝘵𝘳𝘪𝘯𝘨>', 
    environment: '<𝘦𝘯𝘷𝘪𝘳𝘰𝘯𝘮𝘦𝘯𝘵 𝘴𝘵𝘳𝘪𝘯𝘨>',
    cardDetails: '<𝘤𝘢𝘳𝘥𝘋𝘦𝘵𝘢𝘪𝘭𝘴 𝘰𝘣𝘫𝘦𝘤𝘵>',
    handleRequest: '<𝘩𝘢𝘯𝘥𝘭𝘦𝘙𝘦𝘲𝘶𝘦𝘴𝘵 𝘤𝘢𝘭𝘭𝘣𝘢𝘤𝘬>',
    handleError: '<𝘩𝘢𝘯𝘥𝘭𝘦𝘌𝘳𝘳𝘰𝘳 𝘤𝘢𝘭𝘭𝘣𝘢𝘤𝘬>'
});
Parameter Type Possible Values Description
apiKey string API key previously obtained from S2P server
environment string ‘DEV’
‘TEST’
‘LIVE’
select the environment
DEV
http://localhost/v1/card/authenticate
TEST
https://securetest.smart2pay.com/v1/card/authenticate
LIVE
https://secure.smart2pay.com/v1/card/authenticate
cardDetails JSON object check sample bellow card authentication details in JSON format
handleRequest callback function a Javascript function that will receive CreditCardToken as a parameter
handleError callback function a Javascript function that will receive an error code: HttpStatusCode and errorText parameters

Sample card details object:


{
    "CardAuthentication": {
        "Customer": {
            "FirstName": "John",
            "LastName": "Doe",
            "Email": "testing2@test.com",
            "SocialSecurityNumber": "00003456789"
        },
        "BillingAddress": {
            "Country": "BR"
        },
        "Card": {
            "HolderName": "John Doe",
            "Number": "4111111111111111",
            "ExpirationMonth": "02",
            "ExpirationYear": "2029",
            "SecurityCode": "312"
        }
    }
}

Nuvei JS – SDK Instructions

Nuvei JS – SDK is available here: https://github.com/Smart2Pay/js-sdk.

The interaction flow is described next:

  1. Upon order initiation from the customer
  2. Your server asks our server for a temporary API Key at entry point api/authorization/apikey:

    Request:

    POST https://securetest.smart2pay.com/v1/authorization/apikey
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
  3. Our server responds with a temporary API Key:

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "ApiKey": {
        "Value": "MzAwMDc6M2FkODVhYzctNjhlNS00MTA2LTliNjctNTg3MmM1ZmI2ZDNiLTYzMzA=",
        "Created": "20181206141407",
        "LifeTime": 30,
        "AccessCounterLimit": 10,
        "Status": {
          "ID": 2,
          "Info": "Success",
          "Reasons": []
        }
      }
    }
  4. The temporary API Key must be passed to the site.
  5. Collect from your site the credit card details from which you build a cardDetails object and pass it to our SDK together with the temporary API key obtained in the previous step. Any error will be available inside the promise’s catch method.
    tokenizeCard_fetch({
        apiKey: '<apikey string>',
        environment: '<environment string>',
        cardDetails: '<cardDetails object>',
    })
        .then(CreditCardToken => console.log(CreditCardToken))
        .catch(err => console.error(err))
    

  6. Our SDK sends these details to our server.
  7. The server responds with a token to our SDK.
  8. Our SDK makes the credit card token available inside the tokenizeCard_fetch promise’s response.
  9. The order can now be submitted from the site to your server together with the token.
  10. A credit card transaction using the token is now initiated from your server. For more details go to: Recurring Card Payments section. You can store the token on your server for subsequent purchases.
  11. Our server responds to your server with the Authorization result. Upon a successful result you can release the goods or services.
  12. You pass the payment result to your site.

SDK is now fully functional in your app!

Interac Instant Test Data

See how Interac Instant works with the payment flows for Interac e-Transfer. In order for you to test the Interac Instant payment method successfully, please use the test data provided. You will need a Canada VPN connection in order to successfully perform an end to end test.

Interac Instant – Interac e-Transfer Payment Flow

Interac Instant Test Data – Interac e-Transfer Option
Data Value
First Name: Larry
Last Name: Johnson
Email Address: Enter any valid email address. Example: person@test.com
Phone Number: Enter any 10 digit number. Example: 0745123456
  1. The customer enters his email address, name and phone number.

    1 Select payment option

  2. The customer is redirected to the Interac Instant app where he chooses his Bank.

    1 Select payment option

  3. The customer chooses to pay via Interac e-Transfer.

    1 Card details

  4. The customer is redirected to the payment info page where he can see all the information needed to make an Interac e-Transfer deposit. The customer needs to go to his bank’s mobile app or website to complete the transfer.

    1 PIN Number

Pay With Crypto Payment Flow – Production user experience EUR – BTC

To see how it works on Production environment please checkout the following payment flow from EUR to BTC.

Pay With Crypto Payment Flow

  1. Make a REST request using the below parameters:
    Customer Email is a required parameter (if sent in the initial request, a step in the flow will be skipped, as this parameter can also be collected on our side).

    Request:

    POST https://pay.smart2pay.com/v1/payments
    
    {
      "Payment": {
        "MerchantTransactionID": "cdrest312",
        "Amount": 3000,
        "Currency": "EUR",
        "MethodID": "97",
        "Description": "Pay with Crypto Test payment",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php", 
        "TokenLifetime": 10,
        "Customer": {
          "Email": "john@test.com"
         },
        "BillingAddress": {
          "Country": "DE"
          }
        }
      }
    

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 455100364,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20210402080607",
            "MerchantTransactionID": "cdrest312",
            "OriginatorTransactionID": null,
            "Amount": "3000",
            "Currency": "EUR",
            "CapturedAmount": null,
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": " Pay with Crypto Test payment",
            "MethodID": 97,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30025,
            "NotificationDateTime": null,
            "Customer": {
                "MerchantCustomerID": null,
                "Email": null,
                "FirstName": null,
                "LastName": null,
                "Gender": null,
                "SocialSecurityNumber": null,
                "Phone": null,
                "Company": null,
                "DateOfBirth": null
            },
            "BillingAddress": {
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "DE"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 1,
                "Info": "Open",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": 10,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": "https://globalapi.smart2pay.com/Home?PaymentToken=AC38A391BBCA8A3B594B144D92115BB5.455100364",
            "Splits": null
        }
    }
    
  2. The user is redirected to the Crypto processor page where they are prompted to choose the cryptocurrency in which the payment will be made1 Payment details
  3. After choosing the crypto currency, the customer can complete the payment by using the QR Code or by copying the crypto address and the exact amount displayed on page. The user has 3 hours to complete the payment.1 Account login
  4. The user goes to his crypto wallet to complete the payment by clicking on the Send button (from Send&Receive section). In this section it is required to add the crypto address that he previously saved and the Amount in BTC.
    1 Account login
  5. The user validates the transaction via a link sent to their linked email address of the Crypto Account (this might apply only to some Crypto Accounts).

    1 Account login

    1 Account login

  6. The user confirms the BTC transfer.

    1 Account login

    1 Account login

  7. The customer is redirected to a payment processing message page.
    1 Account login
  8. At the same time, as soon as the payment is completed the user receives this in their Crypto Wallet.
    1 Account login
  9. Upon completion of the payment flow, the customer is redirected to the Merchant Redirect URL (Merchant Website).
    1 Account login
  10. We will notify you about the new status of the payout to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

    Payment notification format:

    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
      "Payment": {
        "ID": 455100364,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20210402080607",
        "MerchantTransactionID": "cdrest312",
        "OriginatorTransactionID": null,
        "Amount": "3000",
        "Currency": "EUR",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": " Pay with Crypto Test payment",
        "MethodID": 97,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30025,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": 10,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://globalapi.smart2pay.com/Home?PaymentToken=AC38A391BBCA8A3B594B144D92115BB5.455100364",
        "Splits": null
      }
    }
    

    Response:

    204 No Content

Clave Test Data

In order for you to test Clave payment method successfully, please use the test data provided. You will need a Panama VPN connection in order to successfully perform an end to end test.

Clave Payment Flow

Clave Test Data
Data Value
Email Address: Enter any valid email address. Example: youre@email.com
Phone Number: Enter any 7 digit number following the prefix +507. Example: 8339956
Card Number: 5038460000000019
Security Code ((CVV2, CVC2): 475
Expiration Date: 04-21
PIN Number: 1234
  1. The customer enters his email address and phone number and clicks on the Generate payment button.

    1 Select payment option

  2. The customer is redirected to Clave option page where he needs to register his credit card and customer details by entering the correct information for: Card Number, CVV, Expiration Date, PIN number, Last Name, First Name, Phone Number and Email Address. He continues the payment by clicking on the Accept button.

    1 Card details

  3. The customer enters his PIN Number and clicks on the Confirm button.

    1 PIN Number

  4. The customer clicks on the Verify PIN button.

    1 Verify PIN

  5. The customer is redirected to the confirmation page where he sees the payment details and clicks on the Confirm button.

    1 confirmation page

    1 Processing

  6. Upon completion of the payment flow the customer is redirected back to your ReturnURL.1 Return page when the redirection status is a success

Pay With Crypto Test Data

For Pay With Crypto payment method there aren’t any test data available, but you can see how it works on the TEST environment with the payment flow given below. To see how it works on Production environment please checkout the following link: Production Payment Flow.

Pay With Crypto Payment Flow

  1. The customer enters his email address.1 Customer details
  2. The customer is redirected to the Pay With Crypto page where they are prompted to choose the cryptocurrency in which the payment will be made. For testing purposes, please choose Ethereum.1 Payment details
  3. After choosing the crypto currency, the customer can complete the payment by using the QR Code or by copying the crypto address and the exact amount displayed on page.1 Account login
  4. The customer goes to his crypto wallet to complete the payment by clicking on the Send button.1 Account login
  5. The customer adds the crypto address that he previously saved.1 Account login
  6. The customer adds the exact amount in the Amount field and clicks on the Next button.1 Account login
  7. The customer sees the payment details, including the amount and currency and confirms the payment.1 Account login
  8. The customer is redirected to a payment processing message page.1 Account login
  9. The customer is redirected to a payment confirmation page.1 Account login
  10. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.1 Return page when the redirection status is Success

Pay4Me Malaysia Test Data

For Pay4Me Malaysia payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Pay4Me Malaysia Payment Flow

  1. The customer enters his email address, name and phone number.1 Customer details
  2. The customer is shown the details of his payment and proceeds to pay with Pay4Me Malaysia by entering the payer email and contact number.1 Payment details
  3. The customer sees the payment details and the information regarding the completion of the payment.1 Account login
  4. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.1 Return page when the redirection status is Processing

Payouts Balances

Access the Payouts Balances tab in order to see and verify your payouts balances. Here you will find a complete list of all of your payouts balances. You have the possibility to search for a specific payout balance using different search filters.

32

Search filters

When you access the Payouts Balances tab, the Search Filters section is expanded. In order to collapse it just click the arrow on the right of the screen.

You can search payouts by Method, Currency and Site Alias.

32

Momo Test Data

In order for you to test the Momo payment method successfully, please use the below test data. You can also see how it works with the payment flows given below for Desktop and for Mobile devices. For testing purposes, you need to have installed the Momo application on your mobile device.

Momo Test Data
Data Value
Phone Number: 01228038440
Verification code: 000000
Payment password: 000000

Momo Desktop Payment Flow

  1. The customer enters his email address.

    1 Enter email

  2. The customer is redirected to the Momo payment page where he scans the QR Code using the Momo application already installed on his mobile phone. He has 10 minutes in order to successfully scan the QR Code.

    1 QR Code page

  3. After the customer confirms the payment via his mobile phone application, the payment is successful and the user is redirected to the Momo payment confirmation page.

    1 Payment confirmation page.

  4. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is a success

Momo Mobile Payment Flow

  1. The customer enters his email address.

    1 Enter email

  2. The customer is redirected to the Momo application already installed on his mobile phone where he logs into the Momo application using his phone number.

    1 Momo application

  3. The customer enters the verification code received via his mobile phone.

    1 Verification code

  4. The customer logs into Momo application by entering his password.

    1 Account password

  5. The customer is redirected to the payment details form where he confirms the payment by clicking on the Confirm button.

     1=

  6. The customer enters his account password in order to complete the payment.

    1 Payment confirmation page

  7. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is a success

AlipayHK Recurring Payment

Definition: POST /v1/payments/recurrent

A recurring payment is created in the same manner a one-off payment is created. In addition, you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the information specific to each payment method.

For AlipayHK (1145), you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the Amount to be captured.

Checkout the below example of a recurring payment request for AlipayHK (1145) that is based on the PreapprovalID. Please send in the payment request the Description parameter and Country parameter that should be the same with the one sent in the Preapproval request.

Request:

POST https://paytest.smart2pay.com/v1/payments/recurrent
Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
  "Payment": {
    "PreapprovalID": 28082,
    "MerchantTransactionID": "s2ptest_alipayhk2",
    "Amount": 100,
    "Currency": "HKD",
    "MethodID": 1145,
    "Description": "Recurring payment",
    "BillingAddress": {
    "Country": "HK"
    } 
  }
}

Response:

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

{
    "Payment": {
        "ID": 5879765,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20210202171203",
        "MerchantTransactionID": "s2ptest_alipayhk2",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "HKD",
        "CapturedAmount": null,
        "ReturnURL": null,
        "Description": "Recurring payment",
        "MethodID": 1145,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
            "ID": 986,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "HK"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 28082,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null,
        "Splits": null
    }
}

We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Payment notification format:

Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
  "Payment": {
    "ID": 5879765,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20210202171203",
    "MerchantTransactionID": "s2ptest_alipayhk2",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "HKD",
    "CapturedAmount": null,
    "ReturnURL": "",
    "Description": "Recurring payment",
    "MethodID": 1145,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30201,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": {
      "ID": 986,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "HK"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 28082,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null,
    "Splits": null
  }
}

AlipayHK Preapproval Notification

We will notify you about the new status of the preapproval to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Preapproval notification format:

Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=



{
  "Preapproval": {
    "ID": 28082,
    "Created": "20210202165209",
    "MethodID": 1145,
    "SiteID": 30201,
    "MerchantPreapprovalID": "s2ptest_alipayhk1",
    "RecurringPeriod": null,
    "PreapprovedMaximumAmount": null,
    "Currency": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "1 year subscription",
    "Customer": {
      "ID": 2625948,
      "MerchantCustomerID": null,
      "Email": "jdoe@gmail.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 986,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "HK"
    },
    "Status": {
      "ID": 2,
      "Info": null,
      "Reasons": null
    },
    "RedirectURL": null,
    "MethodOptionID": null,
    "PreapprovedFrequency": null,
    "MandateReference": null,
    "Details": null
  }
}

AlipayHK Preapproval Request

Definition: POST /v1/preapprovals

To initiate a preapproval, you must create a preapproval object. The parameters of the preapproval are sent in the message body as a JSON object. See below an example of a preapproval request for AlipayHK (1143).

Request:

POST https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
 "Preapproval": {
   "MerchantPreapprovalID": "s2ptest_alipayhk1",
   "Currency": "HKD",
   "Description": "1 year subscription",
   "ReturnURL": "http://demo.smart2pay.com/redirect.php",
   "MethodID": 1145,
   "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "jdoe@gmail.com"
     },
   "BillingAddress": {
      "Country": "HK"
      }
   }
}

Response:

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

{
    "Preapproval": {
        "ID": 28082,
        "Created": "20210202165209",
        "MethodID": 1145,
        "SiteID": 30201,
        "MerchantPreapprovalID": "s2ptest_alipayhk1",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": null,
        "Currency": "HKD",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
            "ID": 2625948,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 986,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "HK"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=23265&Hash=030CBF27F3759B369266CCBC5D84C98A",
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}

AlipayHK Preapproval Flow

AlipayHK Test Data
Data Value
Phone Number: Enter any 10 digit number. Example: 1234567812
Verification code: Enter any 6 digit number. Example: 123456
Payment password: Enter any 6 digit number. Example: 123456
  1. The customer is redirected to AlipayHK page. The customer needs to add their phone number attached to the AlipayHK wallet.
    1 Add phone number
  2. The customer enters the SMS verification code received via mobile phone.
    1 Verification Code
  3. The customer sees the preapproval details, agrees with the AlipayHK Terms and Conditions and confirms the auto-debit user agreement.
    1 Confirm agreement
  4. The customer enters the payment password. For testing purposes, enter any 6 digit number eg. 123456.
    1 Confirm agreement
  5. The customer is redirected to the AlipayHK confirmation page.
    1 Confirmation page
  6. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.1 Return page when the redirection status is processing

Touch’n Go eWallet Recurring Payment

Definition: POST /v1/payments/recurrent

A recurring payment is created in the same manner a one-off payment is created. In addition, you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the information specific to each payment method.

For Touch’n Go eWallet (1144), you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the Amount to be captured.

Checkout the below example of a recurring payment request for Touch’n Go eWallet (1144) that is based on the PreapprovalID. Please send in the payment request the Description parameter and Country parameter that should be the same with the ones sent in the Preapproval request.

Request:

POST https://paytest.smart2pay.com/v1/payments/recurrent
Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
  "Payment": {
    "PreapprovalID": 28080,
    "MerchantTransactionID": "s2ptest_tng2",
    "Amount": 100,
    "Currency": "MYR",
    "MethodID": 1144,
    "Description": "Recurring payment",
    "BillingAddress": {
    "Country": "MY"
    } 
  }
}

Response:

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

{
    "Payment": {
        "ID": 5879762,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20210202162904",
        "MerchantTransactionID": "s2ptest_tng2",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "MYR",
        "CapturedAmount": null,
        "ReturnURL": null,
        "Description": "Recurring payment",
        "MethodID": 1144,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
            "ID": 701,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "MY"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 28080,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null,
        "Splits": null
    }
}

We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Payment notification format:

Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
  "Payment": {
    "ID": 5879762,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20210202162904",
    "MerchantTransactionID": "s2ptest_tng2",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "MYR",
    "CapturedAmount": null,
    "ReturnURL": "",
    "Description": "Recurring payment",
    "MethodID": 1144,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30201,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": {
      "ID": 701,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "MY"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 28080,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null,
    "Splits": null
  }
}

Touch’n Go eWallet Preapproval Notification

We will notify you about the new status of the preapproval to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Preapproval notification format:

Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=



{
  "Preapproval": {
    "ID": 28080,
    "Created": "20210202161103",
    "MethodID": 1144,
    "SiteID": 30201,
    "MerchantPreapprovalID": "s2ptest_tng1",
    "RecurringPeriod": null,
    "PreapprovedMaximumAmount": null,
    "Currency": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "1 year subscription",
    "Customer": {
      "ID": 2625948,
      "MerchantCustomerID": null,
      "Email": "jdoe@gmail.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 701,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "MY"
    },
    "Status": {
      "ID": 2,
      "Info": null,
      "Reasons": null
    },
    "RedirectURL": null,
    "MethodOptionID": null,
    "PreapprovedFrequency": null,
    "MandateReference": null,
    "Details": null
  }
}

Touch’n Go eWallet Preapproval Request

Definition: POST /v1/preapprovals

To initiate a preapproval, you must create a preapproval object. The parameters of the preapproval are sent in the message body as a JSON object. See below an example of a preapproval request for Touch’n Go eWallet (1144).

Request:

POST https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
 "Preapproval": {
   "MerchantPreapprovalID": "s2ptest_tng1",
   "Currency": "MYR",
   "Description": "1 year subscription",
   "ReturnURL": "http://demo.smart2pay.com/redirect.php",
   "MethodID": 1144,
   "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "jdoe@gmail.com"
     },
   "BillingAddress": {
      "Country": "MY"
      }
   }
}

Response:

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

{
    "Preapproval": {
        "ID": 28080,
        "Created": "20210202161103",
        "MethodID": 1144,
        "SiteID": 30201,
        "MerchantPreapprovalID": "s2ptest_tng1",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": null,
        "Currency": "MYR",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
            "ID": 2625948,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 701,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "MY"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=23263&Hash=DE44DA5FA939A8B396DDE346A66835D6",
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}

Touch’n Go eWallet Preapproval Flow

Touch’n Go eWalle Test Data
Data Value
Phone Number: Enter any 10 digit number. Example: 1234567812
PIN Number: Enter any 6 digit number. Example: 123456
  1. The customer is redirected to Touch’n Go page. The customer needs to add their phone number attached to the Touch’n wallet and the 6 digit PIN. For testing purposes, please enter any 6 digit number eg. 123456.
    1 Add phone number
  2. The customer confirms the auto-debit user agreement.
    1 Confirm agreement
  3. The customer is redirected to the Touch’n Go confirmation page.
    1 Add phone number
  4. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.1 Return page when the redirection status is processing

Truemoney Recurring Payment

Definition: POST /v1/payments/recurrent

A recurring payment is created in the same manner a one-off payment is created. In addition, you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the information specific to each payment method.

For Truemoney (1143), you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the Amount to be captured.

Checkout the below example of a recurring payment request for Truemoney (1143) that is based on the PreapprovalID. Please send in the payment request the Description parameter and Country parameter that should be the same with the ones sent in the Preapproval request.

Request:

POST https://paytest.smart2pay.com/v1/payments/recurrent
Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
  "Payment": {
    "PreapprovalID": 28076,
    "MerchantTransactionID": "s2ptest_truemoney1",
    "Amount": 100,
    "Currency": "THB",
    "MethodID": 1143,
    "Description": "recurring payment",
    "BillingAddress": {
    "Country": "TH"
    } 
  }
}

Response:

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

{
    "Payment": {
        "ID": 5879743,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20210202154700",
        "MerchantTransactionID": "s2ptest_truemoney1",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "THB",
        "CapturedAmount": null,
        "ReturnURL": null,
        "Description": "recurring payment",
        "MethodID": 1143,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
            "ID": 1540,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "TH"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 28076,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null,
        "Splits": null
    }
}

We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Payment notification format:

Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
  "Payment": {
    "ID": 5879743,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20210202154700",
    "MerchantTransactionID": "s2ptest_truemoney1",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "THB",
    "CapturedAmount": null,
    "ReturnURL": "",
    "Description": "recurring payment",
    "MethodID": 1143,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30201,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": {
      "ID": 1540,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "TH"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 28076,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null,
    "Splits": null
  }
}

Truemoney Preapproval Notification

We will notify you about the new status of the preapproval to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Preapproval notification format:

Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=



{
  "Preapproval": {
    "ID": 28076,
    "Created": "20210202153841",
    "MethodID": 1143,
    "SiteID": 30201,
    "MerchantPreapprovalID": "s2ptest_truemoney3",
    "RecurringPeriod": null,
    "PreapprovedMaximumAmount": null,
    "Currency": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "1 year subscription",
    "Customer": {
      "ID": 2625948,
      "MerchantCustomerID": null,
      "Email": "jdoe@gmail.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 1540,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "TH"
    },
    "Status": {
      "ID": 2,
      "Info": null,
      "Reasons": null
    },
    "RedirectURL": null,
    "MethodOptionID": null,
    "PreapprovedFrequency": null,
    "MandateReference": null,
    "Details": null
  }
}

Truemoney Preapproval Request

Definition: POST /v1/preapprovals

To initiate a preapproval, you must create a preapproval object. The parameters of the preapproval are sent in the message body as a JSON object. See below an example of a preapproval request for Truemoney (1143).

Request:

POST https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
 "Preapproval": {
   "MerchantPreapprovalID": "s2ptest_truemoney3",
   "Currency": "THB",
   "Description": "1 year subscription",
   "ReturnURL": "http://demo.smart2pay.com/redirect.php",
   "MethodID": 1143,
   "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "jdoe@gmail.com"
     },
   "BillingAddress": {
      "Country": "TH"
      }
   }
}

Response:

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

{
    "Preapproval": {
        "ID": 28076,
        "Created": "20210202153841",
        "MethodID": 1143,
        "SiteID": 30201,
        "MerchantPreapprovalID": "s2ptest_truemoney3",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": null,
        "Currency": "THB",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
            "ID": 2625948,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 1540,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "TH"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=23259&Hash=50143980E584E7DEE54CBA48BA1EC543",
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}

Truemoney Preapproval Flow

Truemoney Test Data
Data Value
Phone Number: Enter any 10 digit number. Example: 1234567812
Password: Enter any 4 digit number. Example: 1234
  1. The customer is redirected to Truemoney page. The customer needs to add their phone number attached to the Truemoney wallet and the password.1 Add phone number
  2. The customer confirms the auto-debit user agreement1 Confirm agreement
  3. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.1 Return page when the redirection status is processing

Truemoney Test Data

For Truemoney payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Truemoney Payment Flow

  1. The customer is redirected to the Truemoney website where they are prompted to scan a QR code using the Truemoney app.

    1 Type of payment

  2. The user confirms the payment and it is redirected to the Result page.

    1 Payment confirmation

  3. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is a success

Touch’n Go eWallet Test Data

For Touch’n Go eWallet payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Touch’n Go eWallet Payment Flow

  1. The customer is redirected to the Touch’n Go website where they are prompted to scan a QR code using the Touch’n Go app.

    1 Type of payment

  2. The user confirms the payment and it is redirected to the Result page.

    1 Payment confirmation

  3. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is a success

AlipayHK Test Data

In order for you to test the AlipayHK payment method successfully, please use the below test data.

AlipayHK Test Data
Data Value
Phone Number: Enter any 10 digit number. Example: 1234567812
Authentication code: Enter any 6 digit number. Example: 123456
Payment password: Enter any 6 digit number. Example: 123456

AlipayHK Payment Flow

  1. The customer is redirected to the AlipayHK website where they are prompted to scan a QR code using the AlipayHK app.

    1 Enter phone

  2. The customer is redirected to AlipayHK page. The user needs to add their phone number attached to the AlipayHK wallet and request a verification code.

    1 Enter Authentication Code

  3. The customer needs to enter the verification code received via SMS on the phone number linked to the AlipayHK wallet.

    1 Account login

  4. The user confirms the payment and the Amount to be charged.

    1 Payment password

  5. The user needs to enter the payment password.

    1 Payment password

  6. The user is redirected to the payment confirmation page where he can see the payment amount details.

    1 Payment password

  7. The payment is successful and the user is redirected to the AlipayHK payment confirmation page.

    1 Payment password

  8. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is a success

KakaoPay Test Data

For KakaoPay payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Kakaopay Payment Flow

  1. The customer is redirected to the KakaoPay website where they are prompted to scan a QR code using the KakaoPay app. For testing purposes the minimum payment amount is 50 KRW.

    1 Type of payment

  2. The customer confirms the payment using biometric verification or their 6-digit PIN.

    1 Payment confirmation

  3. The customer sees the payment details and a message confirmation of the payment.

    1 Payment confirmation

  4. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is a success

Marketplace Split Payments API

Split Payments is a unique feature that allows you to split a payment to several SiteIDs previously linked to your merchant account.
You can initiate a payment with one or more Splits objects depending on the SiteID. The Split object must contain the following parameters: SiteID, Amount, MerchantTransactionID and the OriginatorTransactionID (optional).

Also MethodID is required to be sent for Payments with Splits.

The Authorization header of the request must contain the SiteID and APIKey of the Marketplace.

One-Step Split Payments

Definition: POST /v1/payments

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

Request:

POST https://paytest.smart2pay.com/v1/payments
Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_split1",
    "Amount": "100",
    "Currency": "EUR",      
    "MethodID": 9,
    "OriginatorTransactionID": "4324322",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",      
    "TokenLifetime": 10,
    "Customer": {    
      "Email": "youremail@email.com",
      "FirstName": "test",
      "LastName": "demo"      
    },    
    "BillingAddress":  {
    "Country": "RO"
    },
    "Splits": [
     {
      "SiteID": 33513,  
      "Amount": "60",
      "MerchantTransactionID": "s2p_test1ad", 
      "OriginatorTransactionID": "4324322-A"
   },
    {
      "SiteID":33512,  
      "Amount": "20",
      "MerchantTransactionID": "s2p_test1ad", 
      "OriginatorTransactionID": "4324322-B"
   },
    {
      "SiteID": 33511,  
      "Amount": "20",
      "MerchantTransactionID": "s2p_test1ad", 
      "OriginatorTransactionID": "4324322-C"
      }
    ]
  }
}

Response:

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

{
  "Payment": {
    "ID": 5581804,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20201202122951",
    "MerchantTransactionID": "s2ptest_split1",
    "OriginatorTransactionID": "4324322",
    "Amount": "100",
    "Currency": "EUR",
    "CapturedAmount": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "",
    "MethodID": 9,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 33513,
    "NotificationDateTime": null,
    "Customer": {
      "MerchantCustomerID": null,
      "Email": "youremail@email.com",
      "FirstName": "test",
      "LastName": "demo",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "RO"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": null,
    "Status": {
      "ID": 1,
      "Info": "Open",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": 10,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=17CBE5EE17ADF6C3A52EC29B3B1E26B8.5581804",
    "Splits": [
      {
        "ID": 488,
        "PaymentID": 5581804,
        "SiteID": 33513,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-A",
        "Created": "20201202122951",
        "Amount": "60",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 1,
          "Info": "Open",
          "Reasons": null
        }
      },
      {
        "ID": 489,
        "PaymentID": 5581804,
        "SiteID": 33512,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-B",
        "Created": "20201202122951",
        "Amount": "20",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 1,
          "Info": "Open",
          "Reasons": null
        }
      },
      {
        "ID": 490,
        "PaymentID": 5581804,
        "SiteID": 33511,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-C",
        "Created": "20201202122951",
        "Amount": "20",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 1,
          "Info": "Open",
          "Reasons": null
        }
      }
    ]
  }
}

When the main payment is updated to success, also all the Splits are updated to success (splits will always have the status of the main payment for One-Step Payments). We will notify you about the Success status to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Payment notification format:

Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
  "Payment": {
    "ID": 5581804,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20201202122951",
    "MerchantTransactionID": "test1606912191",
    "OriginatorTransactionID": "4324322",
    "Amount": "100",
    "Currency": "EUR",
    "CapturedAmount": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "",
    "MethodID": 9,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 33513,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Details": {
      "AccountNumber": null,
      "AccountHolder": "Max Mustermann",
      "IBAN": "DE06000000000023456789",
      "BIC": "SFRTDE20XXX",
      "PrepaidCard": null,
      "PrepaidCardPIN": null,
      "SerialNumbers": null,
      "Wallet": null,
      "ReferenceNumber": null,
      "PayerCountry": "DE",
      "PayerEmail": null,
      "PayerPhone": null,
      "BankCode": null,
      "BankName": null,
      "BankSortCode": null,
      "SocialSecurityNumber": null,
      "BillingCycleStart": null,
      "BillingCycleEnd": null,
      "UnsubscribeInstructions": null,
      "CustomerLoginID": null,
      "PaidAmount": null,
      "PaidCurrency": null,
      "ProviderExchangeRate": 0.0,
      "PayerBankAccountID": null,
      "PayerID": null
    },
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": null,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": 10,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=17CBE5EE17ADF6C3A52EC29B3B1E26B8.5581804",
    "Splits": [
      {
        "ID": 488,
        "PaymentID": 5581804,
        "SiteID": 33513,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-A",
        "Created": "20201202122951",
        "Amount": "60",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        }
      },
      {
        "ID": 489,
        "PaymentID": 5581804,
        "SiteID": 33512,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-B",
        "Created": "20201202122951",
        "Amount": "23",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        }
      },
      {
        "ID": 490,
        "PaymentID": 5581804,
        "SiteID": 33511,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-C",
        "Created": "20201202122951",
        "Amount": "20",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        }
      }
    ]
  }
}

Adding splits after transaction has received final status

A new call for Split Payments allows adding splits after the transaction is Success. This behavior is valid also for other statuses, like if the transaction is failed and we make the call for splits, the splits inserted will be set to failed, same as the transaction’s status. Refunds are only allowed for splits. If a refund is made for a transaction before the split call is made, the split call is rejected.
Checkout the below example for adding splits after the transaction is success.

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

Where:
  • {id} – GlobalPay Payment ID

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

Request:

POST https://paytest.smart2pay.com/v1/payments/5891650/splits
Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
"Splits":[
    {
      "SiteID":33513,  
      "Amount":"50",
      "MerchantTransactionID":"s2p_test1ad", 
      "OriginatorTransactionID":"4324322-A"
    },
    {
      "SiteID":33512,  
      "Amount":"20",
      "MerchantTransactionID":"s2p_test1ad", 
      "OriginatorTransactionID":"4324322-B"
    },
    {
      "SiteID":33511,  
      "Amount":"30",
      "MerchantTransactionID":"s2p_test1ad", 
      "OriginatorTransactionID":"4324322-C"
    }
  ]
}

Response:

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

{
  "Splits": [
    {
      "ID": 1161,
      "PaymentID": 5891650,
      "SiteID": 33513,
      "MerchantTransactionID": "s2p_test1ad",
      "OriginatorTransactionID": "4324322-A",
      "Created": "20210217063428",
      "Amount": "50",
      "Currency": "EUR",
      "CapturedAmount": "",
      "StateDetails": {
        "ID": 2,
        "Info": "Success",
        "Reasons": null
      }
    },
    {
      "ID": 1162,
      "PaymentID": 5891650,
      "SiteID": 33512,
      "MerchantTransactionID": "s2p_test1ad",
      "OriginatorTransactionID": "4324322-B",
      "Created": "20210217063428",
      "Amount": "20",
      "Currency": "EUR",
      "CapturedAmount": "",
      "StateDetails": {
        "ID": 2,
        "Info": "Success",
        "Reasons": null
      }
    },
    {
      "ID": 1163,
      "PaymentID": 5891650,
      "SiteID": 33511,
      "MerchantTransactionID": "s2p_test1ad",
      "OriginatorTransactionID": "4324322-C",
      "Created": "20210217063428",
      "Amount": "30",
      "Currency": "EUR",
      "CapturedAmount": "",
      "StateDetails": {
        "ID": 2,
        "Info": "Success",
        "Reasons": null
      }
    }
  ]
}

Two-Steps Split Payments

There are methods for which the successful state is done in 2 steps: Authorization + Capture.

  • Authorize a payment with Splits

    Request:

    POST https://paytest.smart2pay.com/v1/payments
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=
    
    {
      "Payment": {
        "MerchantTransactionID": "SplitPaymentsAuthorized1",
        "Amount": "30",
        "Currency": "EUR",      
        "MethodID": 40,
        "OriginatorTransactionID": "4324322",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",      
        "TokenLifetime": 10,
        "Customer": {    
          "Email": "youremail@email.com",
          "FirstName": "test",
          "LastName": "person"
              },
        "BillingAddress":
        {
        "Country": "RO"
        },  
        "Splits": [
         {
          "SiteID": 30025,  
          "Amount": "5",
          "MerchantTransactionID": "s2p_test1ad", 
          "OriginatorTransactionID": "4324322-A"
       },
        {
          "SiteID": 30122,  
          "Amount": "5",
          "MerchantTransactionID": "s2p_test1ad", 
          "OriginatorTransactionID": "4324322-B"
       },
        {
          "SiteID": 30126,  
          "Amount": "20",
          "MerchantTransactionID": "s2p_test1ad", 
          "OriginatorTransactionID": "4324322-C"
          }
        ]
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Payment": {
        "ID": 401946443,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20201217115710",
        "MerchantTransactionID": "SplitPaymentsAuthorized1",
        "OriginatorTransactionID": "4324322",
        "Amount": "30",
        "Currency": "EUR",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "",
        "MethodID": 40,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30025,
        "NotificationDateTime": null,
        "Customer": {
          "ID": 3173720,
          "MerchantCustomerID": null,
          "Email": "youremail@email.com",
          "FirstName": "test",
          "LastName": "carmen",
          "Gender": null,
          "SocialSecurityNumber": null,
          "Phone": null,
          "Company": null,
          "DateOfBirth": null
        },
        "BillingAddress": {
          "City": null,
          "ZipCode": null,
          "State": null,
          "Street": null,
          "StreetNumber": null,
          "HouseNumber": null,
          "HouseExtension": null,
          "Country": "RO"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
          "ID": 1,
          "Info": "Open",
          "Reasons": []
          },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": 10,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://globalapi.smart2pay.com/Home?PaymentToken=370526947BE17A8A1DBBF5FDB065B809.401946443",
        "Splits": [
          {
            "ID": 22,
            "PaymentID": 401946443,
            "SiteID": 30025,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-A",
            "Created": "20201217115710",
            "Amount": "5",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 1,
              "Info": "Open",
              "Reasons": []
            }
          },
          {
            "ID": 23,
            "PaymentID": 401946443,
            "SiteID": 30122,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-B",
            "Created": "20201217115710",
            "Amount": "5",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 1,
              "Info": "Open",
              "Reasons": []
            }
          },
          {
            "ID": 24,
            "PaymentID": 401946443,
            "SiteID": 30126,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-C",
            "Created": "20201217115710",
            "Amount": "20",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 1,
              "Info": "Open",
              "Reasons": []
            }
          }
        ]
      }
    }

We will notify you about the Authorize status to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Payment notification format:

Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
  "Payment": {
    "ID": 401946443,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20201217115710",
    "MerchantTransactionID": "SplitPaymentsAuthorized1",
    "OriginatorTransactionID": "4324322",
    "Amount": "30",
    "Currency": "EUR",
    "CapturedAmount": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "",
    "MethodID": 40,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30025,
    "NotificationDateTime": null,
    "Customer": {
      "ID": 3173720,
      "MerchantCustomerID": null,
      "Email": "youremail@email.com",
      "FirstName": "test",
      "LastName": "carmen",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "RO"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": null,
    "Status": {
      "ID": 9,
      "Info": "Authorized",
      "Reasons": []
      },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": 10,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": "https://globalapi.smart2pay.com/Home?PaymentToken=370526947BE17A8A1DBBF5FDB065B809.401946443",
    "Splits": [
      {
        "ID": 22,
        "PaymentID": 401946443,
        "SiteID": 30025,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-A",
        "Created": "20201217115710",
        "Amount": "5",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 9,
          "Info": "Authorized",
          "Reasons": []
        }
      },
      {
        "ID": 23,
        "PaymentID": 401946443,
        "SiteID": 30122,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-B",
        "Created": "20201217115710",
        "Amount": "5",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 9,
          "Info": "Authorized",
          "Reasons": []
        }
      },
      {
        "ID": 24,
        "PaymentID": 401946443,
        "SiteID": 30126,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-C",
        "Created": "20201217115710",
        "Amount": "20",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 9,
          "Info": "Authorized",
          "Reasons": []
        }
      }
    ]
  }
}

    • Capture a Split Payment

      Definition: Full Capture – POST /v1/payments/{id}/capture
      Partial Capture – POST /v1/payments/{id}/splits/{id}/capture?{amount}

      Where:
      • payments {id} – GlobalPay Payment ID
      • {amount} – The amount to be captured smaller or equal than the initial authorized amount
      • splits {id} – GlobalPay Split ID

      Once the payment has an Authorized status, you can capture either the full amount or a partial amount of the initial authorized amount for the transaction depending on the Split ID provided and the amount.

      Keep in mind that at the moment GlobalPay accepts only one capture per payment!

    • For a Full Capture of a payment the statuses of splits are the same as of the main payment. Checkout the below example of a full captured split payment:
      POST https://paytest.smart2pay.com/v1/payments/5577675/capture
      Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

      Response:

      HTTP/1.1 200 OK
      Content-Type: application/json; charset=utf-8
      
      {
        "Payment": {
          "ID": 5577675,
          "SkinID": null,
          "ClientIP": null,
          "Created": "20201126114150",
          "MerchantTransactionID": "carmen1606390911",
          "OriginatorTransactionID": "4324322",
          "Amount": "100",
          "Currency": "EUR",
          "CapturedAmount": "100",
          "ReturnURL": "http://demo.smart2pay.com/redirect.php",
          "Description": null,
          "MethodID": 94,
          "MethodOptionID": null,
          "IncludeMethodIDs": null,
          "ExcludeMethodIDs": null,
          "PrioritizeMethodIDs": null,
          "SiteID": 33513,
          "NotificationDateTime": "20201126114316",
          "Customer": null,
          "BillingAddress": null,
          "ShippingAddress": null,
          "Articles": null,
          "Details": null,
          "ReferenceDetails": null,
          "CustomParameters": null,
          "PreapprovalID": null,
          "Status": {
            "ID": 2,
            "Info": "Success",
            "Reasons": null
          },
          "Fraud": null,
          "MethodTransactionID": null,
          "TokenLifetime": 10,
          "Capture": null,
          "PreapprovalDetails": null,
          "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=BBCA1F4A583A3AE6639E97C0589B1FF3.5577675",
          "Splits": [
            {
              "ID": 367,
              "PaymentID": 5577675,
              "SiteID": 33513,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-A",
              "Created": "20201126114150",
              "Amount": "60",
              "Currency": "EUR",
              "CapturedAmount": "",
              "StateDetails": {
                "ID": 2,
                "Info": "Success",
                "Reasons": null
              }
            },
            {
              "ID": 368,
              "PaymentID": 5577675,
              "SiteID": 33512,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-B",
              "Created": "20201126114150",
              "Amount": "20",
              "Currency": "EUR",
              "CapturedAmount": "",
              "StateDetails": {
                "ID": 2,
                "Info": "Success",
                "Reasons": null
              }
            },
            {
              "ID": 369,
              "PaymentID": 5577675,
              "SiteID": 33511,
              "MerchantTransactionID": "s2p_test1ad",
              "OriginatorTransactionID": "4324322-C",
              "Created": "20201126114150",
              "Amount": "20",
              "Currency": "EUR",
              "CapturedAmount": "",
              "StateDetails": {
                "ID": 2,
                "Info": "Success",
                "Reasons": null
              }
            }
          ]
        }
      }
      

We will notify you about the Success status to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request. There are methods, such as Post Finance, for which you will receive in the response an intermediate CaptureRequested status (ID = 13), followed by the notification containing the final Success status (ID = 2).

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

Payment notification format:

Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

{
  "Payment": {
    "ID": 5577639,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20201126093222",
    "MerchantTransactionID": "carmen1606383142",
    "OriginatorTransactionID": "4324322",
    "Amount": "100",
    "Currency": "EUR",
    "CapturedAmount": "100",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "",
    "MethodID": 1130,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 33513,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": null,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": 10,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=8C8518387DAC0D71DC7AB9E3909AD21D.5577639",
    "Splits": [
      {
        "ID": 337,
        "PaymentID": 5577639,
        "SiteID": 33513,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-A",
        "Created": "20201126093222",
        "Amount": "60",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        }
      },
      {
        "ID": 338,
        "PaymentID": 5577639,
        "SiteID": 33512,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-B",
        "Created": "20201126093222",
        "Amount": "20",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        }
      },
      {
        "ID": 339,
        "PaymentID": 5577639,
        "SiteID": 33511,
        "MerchantTransactionID": "s2p_test1ad",
        "OriginatorTransactionID": "4324322-C",
        "Created": "20201126093222",
        "Amount": "20",
        "Currency": "EUR",
        "CapturedAmount": "",
        "StateDetails": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        }
      }
    ]
  }
}

  • Partial Capture with Splits: each split has CapturedAmount sent in the request, the main payment has CapturedAmount = Sum of CapturedAmount of all the splits sent in request:

    Request:

    POST https://paytest.smart2pay.com/v1/payments/5845686/capture
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ={
        "Payment": {
            "Splits": [
            {
                "ID": 797,
                "Amount": 10
            },
            {
                "ID": 798,
                "Amount": 10
            },
            
            {
                "ID": 799,
                "Amount": 20
            }
          ]
        }
    }
    

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
      "Payment": {
        "ID": 5845686,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20201214142216",
        "MerchantTransactionID": "carmen1607955727",
        "OriginatorTransactionID": "4324322",
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": "40",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": null,
        "MethodID": 94,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 33513,
        "NotificationDateTime": "20201214142459",
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
          "ID": 35,
          "Info": "PartiallyCaptured",
          "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": 10,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=082F51365E403515CE1A77CB6668F954.5845686",
        "Splits": [
          {
            "ID": 797,
            "PaymentID": 5845686,
            "SiteID": 33513,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-A",
            "Created": "20201214142218",
            "Amount": "30",
            "Currency": "EUR",
            "CapturedAmount": "10",
            "StateDetails": {
              "ID": 35,
              "Info": "PartiallyCaptured",
              "Reasons": null
            }
          },
          {
            "ID": 798,
            "PaymentID": 5845686,
            "SiteID": 33512,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-B",
            "Created": "20201214142218",
            "Amount": "30",
            "Currency": "EUR",
            "CapturedAmount": "10",
            "StateDetails": {
              "ID": 35,
              "Info": "PartiallyCaptured",
              "Reasons": null
            }
          },
          {
            "ID": 799,
            "PaymentID": 5845686,
            "SiteID": 33511,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-C",
            "Created": "20201214142218",
            "Amount": "40",
            "Currency": "EUR",
            "CapturedAmount": "20",
            "StateDetails": {
              "ID": 35,
              "Info": "PartiallyCaptured",
              "Reasons": null
            }
          }
        ]
      }
    }
    

  • Partial Capture per Splits: the captured Split is set to status PartiallyCaptured but the other Splits remain with status Authorized:
    POST https://paytest.smart2pay.com/v1/payments/5581839/splits/504/capture?amount=10
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
      "Payment": {
        "ID": 5581839,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20201202132638",
        "MerchantTransactionID": "carmen1606915598",
        "OriginatorTransactionID": "4324322-A",
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": "10",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": null,
        "MethodID": 94,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 33513,
        "NotificationDateTime": "20201202132859",
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
          "ID": 35,
          "Info": "PartiallyCaptured",
          "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": 10,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=0ABF968F50818372857AEDC9031BF437.5581839",
        "Splits": [
          {
            "ID": 504,
            "PaymentID": 5581839,
            "SiteID": 33512,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-A",
            "Created": "20201202132638",
            "Amount": "30",
            "Currency": "EUR",
            "CapturedAmount": "10",
            "StateDetails": {
              "ID": 35,
              "Info": "PartiallyCaptured",
              "Reasons": null
            }
          }
        ]
      }
    }
    

  • Cancel a full payment

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

    Where:
    • {id} – GlobalPay Payment ID

    A payment can be cancelled if it has an Authorized or an Open status. Only the full payment with an Authorized status will support cancellation. If one of its splits payments has been previously captured, the payment changed its status in PartiallyCaptured so it will no longer support cancellation.

    A 200 HTTP response (OK) is returned if the request was completed successfully.

    POST https://paytest.smart2pay.com/v1/payments/5583382/cancel
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
      "Payment": {
        "ID": 5583382,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20201204132034",
        "MerchantTransactionID": "carmen1607088034",
        "OriginatorTransactionID": "4324322",
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": null,
        "MethodID": 94,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 33513,
        "NotificationDateTime": "20201204132126",
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
          "ID": 3,
          "Info": "Cancelled",
          "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null,
        "Splits": [
          {
            "ID": 524,
            "PaymentID": 5583382,
            "SiteID": 33513,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-A",
            "Created": "20201204132034",
            "Amount": "60",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 3,
              "Info": "Cancelled",
              "Reasons": null
            }
          },
          {
            "ID": 525,
            "PaymentID": 5583382,
            "SiteID": 33512,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-B",
            "Created": "20201204132034",
            "Amount": "20",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 3,
              "Info": "Cancelled",
              "Reasons": null
            }
          },
          {
            "ID": 526,
            "PaymentID": 5583382,
            "SiteID": 33511,
            "MerchantTransactionID": "s2p_test1ad",
            "OriginatorTransactionID": "4324322-C",
            "Created": "20201204132034",
            "Amount": "20",
            "Currency": "EUR",
            "CapturedAmount": "",
            "StateDetails": {
              "ID": 3,
              "Info": "Cancelled",
              "Reasons": null
            }
          }
        ]
      }
    }
    

  • Refund a Split

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

    Where:
    • payments/{id} – GlobalPay Payment ID
    • splits/{id} – The ID of the split payment

    At the moment only refunds per splits are allowed. 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.

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

    Request:

    POST https://paytest.smart2pay.com/v1/payments/5611633/splits/737/refunds
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ={
      "Refund": {
          "MerchantTransactionID": "carmen1607607300",
          "Amount": 60,   
          "Description": "test refund" 
      }
    }
    

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Refund": {
        "ID": 55745,
        "Created": "20201210133500",
        "MerchantTransactionID": "carmen1607607300",
        "OriginatorTransactionID": "4324322-A-refund1",
        "InitialPaymentID": 5611633,
        "Amount": "60",
        "Currency": "EUR",
        "Description": "test refund",
        "TypeID": 1,
        "SiteID": 33513,
        "Details": null,
        "Customer": null,
        "BillingAddress": null,
        "BankAddress": null,
        "Articles": null,
        "Status": {
          "ID": 1,
          "Info": "Open",
          "Reasons": null
        },
        "SplitID": 737
      }
    }
    

Alfa-Click Test Data

For Alfa-Click payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Alfa-Click Payment Flow

  1. The Customer enters his email address.

    1 Enter email

  2. The Customer reviews the payment details and logins to his Alfa-Click account in order to complete the transaction.

    1 Payment instructions

  3. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is Processing

Cash-in CIS Test Data

For Cash-in CIS payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Cash-in CISPayment Flow

  1. The Customer enters his email address.

    1 Enter email

  2. The Customer receives the payment details and the order number with which he can complete the payment at any ATM or office and clicks Pay in order to complete the transaction.

    1 Payment instructions

  3. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is Processing

Boleto Bancario Brazil Test Data

For Boleto Bancario Brazil payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Boleto Bancario Brazil Payment Flow

  1. The customer enters his Email Address, Name and CPF/CNPJ.
    Please note that for Brazil the Customer Social Security Number parameter consists of CPF/CNPJ. For more information about the CPF/CNPJ please click here.

    1 Enter customer details

  2. The customer verifies the transaction details and confirms the payment. He also has the possibility to change the payment method if needed.1 Print Boleto
  3. The customer is redirected to the payment confirmation page where he can choose to complete the payment by using the payment code received (payment through internet banking) or by printing the Boleto (payment at any bank agency).1 Print Boleto
  4. The customer receives the Boleto with all the necessary payment details. In order to complete the payment, he needs to print the Boleto and go to a physical bank branch in his area and pay. 1 Print Boleto

Get information on Payouts Balance

You can get information about your merchant balance by using a few actions based on GET HTTP request. You can specify various filters as parameters in the query string in order to get a customized list of your available balances per MethodID and/or CurrencyCode.

Definition: GET /v1/payoutsbalance/methodID/currencyCode

Where:
  • {methodID} – The ID of the payment method: SEPA Payouts (MethodID = 1), Trustly (MethodID = 29).
  • {currencyCode} – The currency in which you sell the services or products. Format is according to ISO 4217, a three-letter code.
  • The below request allows you to get all the balances that are active per SiteID without specifying any parameter.

    Request:

    GET https://paytest.smart2pay.com/v1/payoutsbalance/
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
      "Balances": [
        {
          "MerchantID": 1045,
          "SiteID": 30201,
          "MethodID": 1,
          "CurrencyCode": "EUR",
          "AvailableAmount": 10000.00,
          "LastBalanceUpdateDateTime": "2020-10-29T15:36:10.807"
        },
        {
          "MerchantID": 1045,
          "SiteID": 30201,
          "MethodID": 1,
          "CurrencyCode": "RON",
          "AvailableAmount": 500000.00,
          "LastBalanceUpdateDateTime": "2020-10-29T15:36:34.733"
        },
        {
          "MerchantID": 1045,
          "SiteID": 30201,
          "MethodID": 29,
          "CurrencyCode": "EUR",
          "AvailableAmount": 20000.00,
          "LastBalanceUpdateDateTime": "2020-10-29T15:36:21.047"
        }
      ]
    }

  • The below request allows you to get all the balances that are active for your SiteID for a specific payment method.

    Request:

    GET https://paytest.smart2pay.com/v1/payoutsbalance/1
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
      "Balances": [
        {
          "MerchantID": 1045,
          "SiteID": 30201,
          "MethodID": 1,
          "CurrencyCode": "EUR",
          "AvailableAmount": 10000.00,
          "LastBalanceUpdateDateTime": "2020-10-29T15:36:10.807"
        },
        {
          "MerchantID": 1045,
          "SiteID": 30201,
          "MethodID": 1,
          "CurrencyCode": "RON",
          "AvailableAmount": 500000.00,
          "LastBalanceUpdateDateTime": "2020-10-29T15:36:34.733"
        }
      ]
    }

  • The below request allows you to get all the balances that are active for your SiteID for a specific currency.

    Request:

    GET https://paytest.smart2pay.com/v1/payoutsbalance/EUR
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    
    
    {
      "Balances": [
        {
          "MerchantID": 1045,
          "SiteID": 30201,
          "MethodID": 1,
          "CurrencyCode": "EUR",
          "AvailableAmount": 10000.00,
          "LastBalanceUpdateDateTime": "2020-10-29T15:36:10.807"
        },
        {
          "MerchantID": 1045,
          "SiteID": 30201,
          "MethodID": 29,
          "CurrencyCode": "EUR",
          "AvailableAmount": 20000.00,
          "LastBalanceUpdateDateTime": "2020-10-29T15:36:21.047"
        }
      ]
    }

  • The below request allows you to get all the balances that are active for your SiteID for a specific payment method and currency.

    Request:

    GET https://paytest.smart2pay.com/v1/payoutsbalance/1/EUR
    Authorization: Basic MzAyMDE6KzlLZUd6S0Y3VzhTLzc5YTVSMzNZSlVnN0U3V0ZOY1piakdmekxWM2JYU25GQ095RnQ=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
      "Balances": [
        {
          "MerchantID": 1045,
          "SiteID": 30201,
          "MethodID": 1,
          "CurrencyCode": "EUR",
          "AvailableAmount": 10000.00,
          "LastBalanceUpdateDateTime": "2020-10-29T15:36:10.807"
        }
      ]
    }

Touch’n Go Test Data

For Touch’n Go payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Touch’n Go Payment Flow

  1. The customer enters his Email Address, Name and Phone Number.

    1 Enter customer details

  2. The customer confirms the payment after reviewing all the details of the payment.

    1 Print Boleto

  3. The customer can pay now with his Touch’n Go Wallet. Download and register for the Touch ‘n Go eWallet app, tap on the “Scan” icon and scan the QR code here to complete the payment.

    1 Print Boleto

Fawry Wallet Test Data

For Fawry Wallet payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Fawry Payment Flow

  1. The customer enters his Email Address and his Social Security Number (SSN).

    1 Enter customer details

  2. The customer receives the necessary information to make the payment, including a reference number. The customer will use the reference number to pay through Fawry channels and outlets within the specified time.

    1 Print Boleto

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Loterica Test Data

For Loterica payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Loterica Payment Flow

  1. The customer enters his Email Address, Name and CPF/CNPJ.
    Please note that for Brazil the Customer Social Security Number parameter consists of CPF/CNPJ. For more information about the CPF/CNPJ please click here.

    1 Enter customer details

  2. The customer confirms the payment after reviewing all the details of the payment.

    1 Print Boleto

  3. The customer receives the code necessary to make the payment. He will also receive via email all the payment data. In order to complete the payment, he needs to go to a physical bank branch in his area in 3 days time. The payment will be approved in less than one hour..

    1 Print Boleto

  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Marketplace Split Card Payments API – (preview)

  1. Authorize a payment with Splits

    Definition: POST /v1/payments

    Split Card Payments is a unique feature that allows you to split a payment to several SiteIDs previously linked to your merchant account. Initiate a payment with one or more Splits objects depending on the SiteID. The Split object must contain the following parameters: SiteID, Amount, MerchantTransactionID and the OriginatorTransactionID.

    Please keep in mind that the Authorization header of the request must use the SiteID of the Marketplace.

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

    Request:

    POST https://securetest.smart2pay.com/v1/payments
    Authorization: Basic MTAxMDpnYWJp
    
    { 
      "Payment": {  
      "MerchantTransactionID": "s2p_test1a",
      "Amount": "100",
      "Currency": "EUR",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "Split Payment test",
        "StatementDescriptor": "card payment",
        "OriginatorTransactionID":"34991440",
        "ClientIP": "82.208.151.136",
        "BillingAddress": {
          "City": "Iasi",
          "ZipCode": "7000-49",
          "State": "Iasi",
          "Street": "Sf Lazar",
          "StreetNumber": "37",
          "HouseNumber1": "5A",
          "HouseExtension1": "-",
          "Country": "BR"
        },
        "ShippingAddress": {
          "City": "Iasi",
          "ZipCode": "700049",
          "State": "Iasi",
          "Street": "Sf Lazar",
          "StreetNumber": "37",
          "HouseNumber": "-",
          "HouseExtension": "-",
          "Country": "BR"
        },
        "Customer" : {
          "FirstName":"John",
          "LastName":"Dow",
          "Email": "challenge@challenge.com",
          "SocialSecurityNumber": "00003456789"
        },
       "Card": {
          "HolderName": "Johnn Snow",
          "Number": "4000023104662535", 
          "ExpirationMonth": "12",
          "ExpirationYear": "2023",
          "SecurityCode": "554",
          "RequireSecurityCode1": false
        },
    
        "Capture": false,
        "Retry": false,
        "GenerateCreditCardToken": false,
        "3DSecure": false,
    
         "Splits": [
          {
          "SiteID": 1000,
          "Amount": "60",
          "MerchantTransactionID" : "s2p_test1ad", 
          "OriginatorTransactionID": "34991440-A"
        },
        {
          "SiteID": 1061,
          "Amount": "40",
          "MerchantTransactionID" : "s2p_test1233", 
          "OriginatorTransactionID": "34991440-B"
        }
      ]
      }
    }
    

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 428473,
            "ClientIP": "82.208.151.136",
            "SkinID": null,
            "Created": "20200702132836",
            "MerchantTransactionID": "s2p_test1a",
            "OriginatorTransactionID": "34991440",
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": "0",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "Split Payment test",
            "StatementDescriptor": "card payment",
            "MethodID": 6,
            "MethodOptionID": null,
            "SiteID": 66789,
            "NotificationDateTime": null,
            "Customer": {
                "ID": 2766,
                "MerchantCustomerID": null,
                "Email": "challenge@challenge.com",
                "FirstName": "John",
                "LastName": "Dow",
                "Gender": null,
                "SocialSecurityNumber": "00003456789",
                "Phone": null,
                "Company": null
            },
            "BillingAddress": {
                "ID": 2963,
                "City": "Iasi",
                "ZipCode": "7000-49",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "37",
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "BR"
            },
            "ShippingAddress": {
                "ID": 2614,
                "City": "Iasi",
                "ZipCode": "700049",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "37",
                "HouseNumber": "-",
                "HouseExtension": "-",
                "Country": "BR"
            },
            "Articles": null,
            "Card": {
                "HolderName": "Johnn Snow",
                "Number": "Visa-2535",
                "ExpirationMonth": "12",
                "ExpirationYear": "2023"
            },
            "CreditCardToken": null,
            "Status": {
                "ID": 9,
                "Info": "Authorized",
                "Reasons": []
            },
            "MethodTransactionID": "111067",
            "AuthorizationCode": "111067",
            "PaymentTokenLifetime": 10,
            "Capture": false,
            "CaptureDetails": null,
            "Retry": false,
            "RedirectURL": null,
            "3DSecure": false,
            "3DSecureData": null,
            "DeviceInfo": null,
            "ScaExemption": null,
            "CardOnFile": null,
            "Fraud": {
                "Status": "Accept",
                "Score": 31,
                "Reason": "No decision provided"
            },
            "AddressVerification": null,
            "Splits": [
                {
                    "ID": 446,
                    "PaymentID": 428473,
                    "SiteID": 1000,
                    "MerchantTransactionID": "s2p_test1ad",
                    "OriginatorTransactionID": "34991440-A",
                    "Created": "20200702132840",
                    "Amount": "60",
                    "Currency": "EUR",
                    "CapturedAmount": "0",
                    "StateDetails": {
                        "ID": 9,
                        "Info": "Authorized",
                        "Reasons": []
                    }
                },
                {
                    "ID": 447,
                    "PaymentID": 428473,
                    "SiteID": 1061,
                    "MerchantTransactionID": "s2p_test1233",
                    "OriginatorTransactionID": "34991440-B",
                    "Created": "20200702132840",
                    "Amount": "40",
                    "Currency": "EUR",
                    "CapturedAmount": "0",
                    "StateDetails": {
                        "ID": 9,
                        "Info": "Authorized",
                        "Reasons": []
                    }
                }
            ]
        }
    }

  2. Capture a Split

    Definition: Full Capture – POST /v1/payments/{id}/capture

    Where:
    • {id} – GlobalPay Payment ID

    Once the payment has an Authorized status, you can capture either the full amount or a partial amount of the initial authorized amount for the transaction depending on the Split ID provided and the amount. You only need to sent in the Request the Split ID and the amount desired to be captured. Checkout the below example of a captured split payment.

    Request:

    POST https://securetest.smart2pay.com/v1/payments/428473/capture
    Authorization: Basic MTAxMDpnYWJp
    
    {
        "Payment": {
            "Split": {
                "ID": 446,
                "Amount": 60,
                "OriginatorTransactionID": "34991440-A"
            }
        }
    }

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 428473,
            "ClientIP": "82.208.151.136",
            "SkinID": null,
            "Created": "20200702132836",
            "MerchantTransactionID": "s2p_test1a",
            "OriginatorTransactionID": "34991440-A",
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": "60",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "Split Payment test",
            "StatementDescriptor": "card payment",
            "MethodID": 6,
            "MethodOptionID": null,
            "SiteID": 66789,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Card": {
                "HolderName": "Johnn Snow",
                "Number": "Visa-2535",
                "ExpirationMonth": "12",
                "ExpirationYear": "2023"
            },
            "CreditCardToken": null,
            "Status": {
                "ID": 35,
                "Info": "PartiallyCaptured",
                "Reasons": []
            },
            "MethodTransactionID": null,
            "AuthorizationCode": "111067",
            "PaymentTokenLifetime": null,
            "Capture": false,
            "CaptureDetails": null,
            "Retry": false,
            "RedirectURL": null,
            "3DSecure": false,
            "3DSecureData": null,
            "DeviceInfo": null,
            "ScaExemption": null,
            "CardOnFile": null,
            "Fraud": null,
            "AddressVerification": null,
            "Split": {
                "ID": 446,
                "PaymentID": 428473,
                "SiteID": 1000,
                "MerchantTransactionID": "s2p_test1ad",
                "OriginatorTransactionID": "34991440-A",
                "Created": "20200702132840",
                "Amount": "60",
                "Currency": "EUR",
                "CapturedAmount": "60",
                "StateDetails": {
                    "ID": 11,
                    "Info": "Captured",
                    "Reasons": []
                },
                "CaptureDetails": {
                    "ID": 29035,
                    "PaymentID": 428473,
                    "SiteID": 66789,
                    "Created": "20200702141826",
                    "MerchantTransactionID": "s2p_test1a",
                    "OriginatorTransactionID": "34991440-A",
                    "Amount": "60",
                    "Currency": "EUR",
                    "Status": {
                        "ID": 2,
                        "Info": "Success",
                        "Reasons": []
                    }
                }
            }
        }
    }

  3. Refund a Split

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

    Where:
    • payments/{id} – GlobalPay Payment ID
    • splits/{id} – The ID of the split payment
    • captures/{id} – The ID of the captured payment

    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.

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

    Request:

    POST https://securetest.smart2pay.com/v1/payments/428473/splits/446/captures/29035/refunds
    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Refund": {
          "MerchantTransactionID": "s2p_test_refund1",
          "Amount": 60,
          "Description": "refund for x",
          "StatementDescriptor": "refund for product X",
          "OriginatorTransactionID": "34991440-A"
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Refund": {
            "ID": 23742,
            "SiteID": 66789,
            "Created": "20200702143342",
            "MerchantTransactionID": "s2p_test_refund1",
            "OriginatorTransactionID": "34991440-A",
            "InitialPaymentID": 428473,
            "SplitID": 446,
            "Amount": "60",
            "Currency": "EUR",
            "Description": "refund for x",
            "StatementDescriptor": "refund for product X",
            "Customer": null,
            "BillingAddress": null,
            "BankAddress": null,
            "Articles": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": []
            },
            "MethodTransactionID": "196244198"
        }
    }

  4. Cancel a full payment

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

    Where:
    • {id} – GlobalPay Payment ID

    A payment can be cancelled if it has an Authorized or an Open status. Only the full payment with an Authorized status will support cancellation. If one of its splits payments has been previously captured, the payment changed its status in PartiallyCaptured so it will no longer support cancellation.

    A 200 HTTP response (OK) is returned if the request was completed successfully.

    POST https://securetest.smart2pay.com/v1/payments/428480/cancel
    Authorization: Basic MTAxMDpnYWJp

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 428480,
            "ClientIP": "82.208.151.136",
            "SkinID": null,
            "Created": "20200702145229",
            "MerchantTransactionID": "s2p_test1c",
            "OriginatorTransactionID": "34991440",
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": "0",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "Split Payment test",
            "StatementDescriptor": "card payment",
            "MethodID": 6,
            "MethodOptionID": null,
            "SiteID": 66789,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Card": {
                "HolderName": "Johnn Snow",
                "Number": "Visa-2535",
                "ExpirationMonth": "12",
                "ExpirationYear": "2023"
            },
            "CreditCardToken": null,
            "Status": {
                "ID": 3,
                "Info": "Cancelled",
                "Reasons": []
            },
            "MethodTransactionID": null,
            "AuthorizationCode": "111738",
            "PaymentTokenLifetime": null,
            "Capture": false,
            "CaptureDetails": null,
            "Retry": false,
            "RedirectURL": null,
            "3DSecure": false,
            "3DSecureData": null,
            "DeviceInfo": null,
            "ScaExemption": null,
            "CardOnFile": null,
            "Fraud": null,
            "AddressVerification": null,
            "Splits": [
                {
                    "ID": 449,
                    "PaymentID": 428480,
                    "SiteID": 1000,
                    "MerchantTransactionID": "s2p_test1123",
                    "OriginatorTransactionID": "34991440-A",
                    "Created": "20200702145229",
                    "Amount": "60",
                    "Currency": "EUR",
                    "CapturedAmount": "0",
                    "StateDetails": {
                        "ID": 3,
                        "Info": "Cancelled",
                        "Reasons": []
                    }
                },
                {
                    "ID": 450,
                    "PaymentID": 428480,
                    "SiteID": 1061,
                    "MerchantTransactionID": "s2p_test1244",
                    "OriginatorTransactionID": "34991440-B",
                    "Created": "20200702145229",
                    "Amount": "40",
                    "Currency": "EUR",
                    "CapturedAmount": "0",
                    "StateDetails": {
                        "ID": 3,
                        "Info": "Cancelled",
                        "Reasons": []
                    }
                }
            ]
        }
    }

Dana Recurring Payment

Definition: POST /v1/payments/recurrent

A recurring payment is created in the same manner a one-off payment is created. In addition, you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the information specific to each payment method.

For Dana (1136), you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the Amount to be captured.

Checkout the below example of a recurring payment request for Dana (1136) that is based on the PreapprovalID. Please send in the payment request the Description parameter and Country parameter that should be the same with the ones sent in the Preapproval request.

Request:

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

{
  "Payment": {
    "PreapprovalID": 22265,
    "MerchantTransactionID": "reccuringPayin-DanaRecurrent",
    "Amount": 100,
    "Currency": "IDR",
    "MethodID": 1136,
    "Description": "recurring payment",
    "BillingAddress": {
      "Country": "ID"
    }
  }
}

Response:

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

{
    "Payment": {
        "ID": 4937474,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20200330142936",
        "MerchantTransactionID": "reccuringPayin-DanaRecurrent",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "IDR",
        "CapturedAmount": null,
        "ReturnURL": null,
        "Description": "recurring payment",
        "MethodID": 1136,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30597,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
            "ID": 657,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "ID"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 22265,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
    }
}

We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Payment notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "ID": 4937474,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20200330142936",
    "MerchantTransactionID": "reccuringPayin-DanaRecurrent",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "IDR",
    "CapturedAmount": null,
    "ReturnURL": "",
    "Description": "recurring payment",
    "MethodID": 1136,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30597,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": {
      "ID": 657,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "ID"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 22265,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null
  }
}

Dana Preapproval Notification

We will notify you about the new status of the preapproval to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Preapproval notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Preapproval": {
    "ID": 22265,
    "Created": "20200330142046",
    "MethodID": 1136,
    "SiteID": 30597,
    "MerchantPreapprovalID": "s2ptest_Dana_Preapproval",
    "RecurringPeriod": 0,
    "PreapprovedMaximumAmount": null,
    "Currency": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "1 year subscription",
    "Customer": {
      "ID": 2622497,
      "MerchantCustomerID": null,
      "Email": "jdoe@gmail.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 657,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "ID"
    },
    "Status": {
      "ID": 2,
      "Info": null,
      "Reasons": null
    },
    "RedirectURL": null,
    "MethodOptionID": 0,
    "PreapprovedFrequency": null,
    "MandateReference": null,
    "Details": null
  }
}

Dana Preapproval Request

Definition: POST /v1/preapprovals

To initiate a preapproval, you must create a preapproval object. The parameters of the preapproval are sent in the message body as a JSON object. See below an example of a preapproval request for Dana (1136).

Request:

POST https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
 "Preapproval": {
   "MerchantPreapprovalID": "s2ptest_Dana_Preapproval",
   "Currency": "IDR",
   "Description": "1 year subscription",
   "ReturnURL": "http://demo.smart2pay.com/redirect.php",
   "MethodID": 1136,
   "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "jdoe@gmail.com"
     },
   "BillingAddress": {
      "Country": "ID"
      }
   }
}

Response:

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

{
    "Preapproval": {
        "ID": 22265,
        "Created": "20200330142046",
        "MethodID": 1136,
        "SiteID": 30597,
        "MerchantPreapprovalID": "s2ptest_Dana_Preapproval",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": null,
        "Currency": "IDR",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
            "ID": 2622497,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 657,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "ID"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=17588&Hash=E16F327FAA01E8292C6B90C650BDC4FD",
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}

Dana Preapproval Flow

Dana Test Data
Data Value
Phone Number: Enter any 11 digit number. Example: 12345678123
Verification Code: Enter any 6 digit number. Example: 123456
PIN number: Enter any 6 digit number. Example: 123456
  1. The customer is redirected to Dana page. The customer needs to add their phone number attached to the Dana wallet.1 Add phone number
  2. The customer fills in the 5-digit code received via SMS.1 SMS digit code
  3. The customer enters the PIN number.1 SMS 6 digit code
  4. The customer confirms the auto-debit user agreement1 Confirm agreement

KakaoPay Recurring Payment

Definition: POST /v1/payments/recurrent

A recurring payment is created in the same manner a one-off payment is created. In addition, you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the information specific to each payment method.

For KakaoPay (1135), you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the Amount to be captured.

Checkout the below example of a recurring payment request for KakaoPay (1135) that is based on the PreapprovalID. Please send in the payment request the Description parameter and Country parameter that should be the same with the ones sent in the Preapproval request.

Request:

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

{
  "Payment": {
    "PreapprovalID": 22276,
    "MerchantTransactionID": "reccuringPayin-GCashRecurrent526",
    "Amount": 100,
    "Currency": "KRW",
    "MethodID": 1135,
    "Description": "recurring payment",
    "BillingAddress": {
      "Country": "KR"
    } 
  }
}

Response:

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

{
    "Payment": {
        "ID": 4938078,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20200331072856",
        "MerchantTransactionID": "reccuringPayin-GCashRecurrent526",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "KRW",
        "CapturedAmount": null,
        "ReturnURL": null,
        "Description": "recurring payment",
        "MethodID": 1135,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30597,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
            "ID": 653,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "KR"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 22276,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
    }
}

We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Payment notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "ID": 4938078,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20200331072856",
    "MerchantTransactionID": "reccuringPayin-GCashRecurrent526",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "KRW",
    "CapturedAmount": null,
    "ReturnURL": "",
    "Description": "recurring payment",
    "MethodID": 1135,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30597,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": {
      "ID": 653,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "KR"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 22276,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null
  }
}

KakaoPay Preapproval Notification

We will notify you about the new status of the preapproval to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Preapproval notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Preapproval": {
    "ID": 22276,
    "Created": "20200331063928",
    "MethodID": 1135,
    "SiteID": 30597,
    "MerchantPreapprovalID": "s2ptest_kAKAOPAY_PreapprovalS1",
    "RecurringPeriod": 0,
    "PreapprovedMaximumAmount": null,
    "Currency": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "1 year subscription",
    "Customer": {
      "ID": 2622497,
      "MerchantCustomerID": null,
      "Email": "jdoe@gmail.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 657,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "ID"
    },
    "Status": {
      "ID": 2,
      "Info": null,
      "Reasons": null
    },
    "RedirectURL": null,
    "MethodOptionID": 0,
    "PreapprovedFrequency": null,
    "MandateReference": null,
    "Details": null
  }
}

KakaoPay Preapproval Request

Definition: POST /v1/preapprovals

To initiate a preapproval, you must create a preapproval object. The parameters of the preapproval are sent in the message body as a JSON object. See below an example of a preapproval request for KakaoPay (1135).

Request:

POST https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
 "Preapproval": {
   "MerchantPreapprovalID": "s2ptest_kAKAOPAY_PreapprovalS1",
   "Currency": "KRW",
   "Description": "1 year subscription",
   "ReturnURL": "http://demo.smart2pay.com/redirect.php",
   "MethodID": 1135,
   "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "jdoe@gmail.com"
     },
   "BillingAddress": {
      "Country": "KR"
      }
   }
}

Response:

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

{
    "Preapproval": {
        "ID": 22276,
        "Created": "20200331063928",
        "MethodID": 1135,
        "SiteID": 30597,
        "MerchantPreapprovalID": "s2ptest_kAKAOPAY_PreapprovalS1",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": null,
        "Currency": "KRW",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
            "ID": 2622497,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 657,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "KR"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=17598&Hash=64B81EAA7FE00CB58E187BE0615CC7BD",
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}

Kakaopay Preapproval Flow

  1. The customer is redirected to KakaoPay page where the user needs to confirm the terms of the payment.1 Confirm payment
  2. The Customer fills in the 6-digit code received via SMS. For testing purposes, enter any 6 digit number.1 SMS 6 digit code
  3. The customer confirms the auto-debit user agreement1 Confirm agreement

GCash Recurring Payment

Definition: POST /v1/payments/recurrent

A recurring payment is created in the same manner a one-off payment is created. In addition, you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the information specific to each payment method.

For GCash (1134), you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the Amount to be captured.

Checkout the below example of a recurring payment request for GCash (1134) that is based on the PreapprovalID. Please send in the payment request the Description parameter and Country parameter that should be the same with the ones sent in the Preapproval request.

Request:

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

{
  "Payment": {
    "PreapprovalID": 22256,
    "MerchantTransactionID": "reccuringPayina-AlipayOSP666",
    "Amount": 100,
    "Currency": "PHP",
    "MethodID": 1134,
    "Description": "recurring payment",
    "BillingAddress": {
    "Country": "PH"
    } 
  }
}

Response:

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

{
    "Payment": {
        "ID": 4936892,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20200330102706",
        "MerchantTransactionID": "reccuringPayina-AlipayOSP666",
        "OriginatorTransactionID": null,
        "Amount": 100,
        "Currency": "PHP",
        "CapturedAmount": null,
        "ReturnURL": null,
        "Description": "recurring payment",
        "MethodID": 1134,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30597,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
            "ID": 644,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "PH"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 22256,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
    }
}

We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Payment notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "ID": 4936892,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20200330102706",
    "MerchantTransactionID": "reccuringPayina-AlipayOSP666",
    "OriginatorTransactionID": null,
    "Amount": 100,
    "Currency": "PHP",
    "CapturedAmount": null,
    "ReturnURL": "",
    "Description": "recurring payment",
    "MethodID": 1134,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30597,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": {
      "ID": 644,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "PH"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 22256,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "Fraud": null,
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null
  }
}

GCash Preapproval Notification

We will notify you about the new status of the preapproval to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Preapproval notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Preapproval": {
    "ID": 22256,
    "Created": "20200330101451",
    "MethodID": 1134,
    "SiteID": 30597,
    "MerchantPreapprovalID": "s2ptest_h-1test52",
    "RecurringPeriod": 0,
    "PreapprovedMaximumAmount": null,
    "Currency": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "1 year subscription",
    "Customer": {
      "ID": 2622497,
      "MerchantCustomerID": null,
      "Email": "jdoe@gmail.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 644,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "PH"
    },
    "Status": {
      "ID": 2,
      "Info": null,
      "Reasons": null
    },
    "RedirectURL": null,
    "MethodOptionID": 0,
    "PreapprovedFrequency": null,
    "MandateReference": null,
    "Details": null
  }
}

GCash Preapproval Request

Definition: POST /v1/preapprovals

To initiate a preapproval, you must create a preapproval object. The parameters of the preapproval are sent in the message body as a JSON object. See below an example of a preapproval request for GCash (1134).

With GCash, you can create preapprovals that can allow you to form subsequent recurrent payments. This is the most flexible type and allows the merchant to fully control when to initiate the money transfer(s) between the end user’s account and the merchant’s account (credits or debits). The Preapproval call basically creates a transaction representing the end user’s authorization to use their account for payments on the terms set in the request.

A transaction ID is returned to the merchant within the return URL in the Preapproval response/notification. The merchant must store this transaction ID in the end user’s payment profile to allow future recurrent requests.
This ID is active for 2 years and then the token that allows subsequent recurrent payments will be automatically refreshed after this time period.

Request:

POST https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
 "Preapproval": {
   "MerchantPreapprovalID": "s2ptest_h-1test52",
   "Currency": "PHP",
   "Description": "1 year subscription",
   "ReturnURL": "http://demo.smart2pay.com/redirect.php",
   "MethodID": 1134,
   "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "jdoe@gmail.com"
     },
   "BillingAddress": {
      "Country": "PH"
      }
   }
}

Response:

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

{
    "Preapproval": {
        "ID": 22256,
        "Created": "20200330101451",
        "MethodID": 1134,
        "SiteID": 30597,
        "MerchantPreapprovalID": "s2ptest_h-1test52",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": null,
        "Currency": "PHP",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
            "ID": 2622497,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 644,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "PH"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/AlipayOSP/Preapproval/PreapprovalLanding.aspx?ID=17580&Hash=FC11CEC58D39D2966F2B71603EBA8726",
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}

GCash Preapproval Flow

GCash Test Data
Data Value
Phone Number: Enter any 10 digit number. Example: 1234567812
Authentication Code: Enter any 6 digit number. Example: 123456
PIN Number: Enter any 4 digit number. Example: 1234
  1. The Customer enters his mobile phone number.1 Enter phone
  2. The Customer enters the authentication code that was send to his mobile phone number.1 Enter Authentication Code
  3. The customer logs in to his GCash account by entering his PIN number.1 Account login
  4. The customer reviews the details and confirms the preapproval.1 Payment password
  5. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.1 Return page when the redirection status is processing

Dana Test Data

In order for you to test the Dana payment method successfully, please use the below test data.

Dana Test Data
Data Value
Phone Number: Enter any 11 digit number. Example: 12345678123
PIN number: Enter any 6 digit number. Example: 123456

Dana Payment Flow

  1. The customer is redirected to Dana page where he needs to add his phone number.

    1 Phone number

  2. The customer needs to enter the PIN number.

    1 PIN number confirmation

  3. The customer sees the payment details and confirms the payment.

    1 Payment confirmation

  4. The customer receives a message confirmation of the payment.

    1 Payment confirmation

  5. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is a success

GCash Test Data

In order for you to test the GCash payment method successfully, please use the below test data.

GCash Test Data
Data Value
Phone Number: Enter any 10 digit number. Example: 1234567812
Authentication code: Enter any 6 digit number. Example: 123456
PIN number: Enter any 4 digit number. Example: 1234

GCash Payment Flow

  1. The Customer enters his mobile phone number.

    1 Enter phone

  2. The Customer enters the authentication code that was send to his mobile phone number.

    1 Enter Authentication Code

  3. The customer logs in to his GCash account by entering his PIN number.

    1 Account login

  4. The customer reviews the payment details and confirms the payment.

    1 Payment password

  5. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.

    1 Return page when the redirection status is processing

Servipag Pago Flujo

Para el método de pago de Servipag no hay datos de prueba disponibles, pero puede ver cómo funciona con el flujo de pago que figura a continuación.

Servipag Pago Flujo

  1. El cliente ingresa su dirección de correo electrónico, nombre y RUT. Tenga en cuenta que para Chile el parámetro Número de seguridad social del cliente consiste en RUT. Para obtener más información sobre el RUT, haga clic aquí.

    1 Enter customer details

  2. El cliente recibe los detalles de pago imprimibles. Necesita pagar la cantidad exacta en cualquier sucursal de Servipag en su área.

    ¡Tenga en cuenta la fecha de vencimiento impresa en el boleto para completar el pago antes de que expire el boleto!

    1 Payment details

  3. Al completar el flujo de pago, el cliente es redirigido de nuevo a su ReturnURL.

    1 Return page when the redirection status is Processing

Reporting process for Mirakl Marketplace

  1. Nuvei generates a daily transactional report file for Mirakl. The transactional report file contains the following information:
    ID
    ID
    Definition
    The ID of the transaction in Smart2Pay system
    Type
    int
    : The ID of the transaction in Nuvei system;
    MerchantTransactionID
    MerchantTransactionID
    Definition
    Merchant Transaction ID, a number that uniquely identifies a transaction in your system.
    Type
    string
    : Merchant Transaction ID, a number that uniquely identifies a transaction in your system;
    OriginatorTransactionID
    OriginatorTransactionID
    Definition
    The ID of the transaction/refund in The Marketplace system
    Type
    string
    : The ID of the transaction/refund in The Marketplace system;

    InputDateTime
    InputDateTime
    Definition
    The date and time of inserting the transaction in Smart2Pay system
    Type
    datetime
    : The date and time of inserting the transaction in Nuvei system;

    PaymentStateDefID
    PaymentStateDefID
    Definition
    The ID of the payment status in Smart2Pay system. It can have the following values: 1 - Open, 2 - Success, 3 - Cancelled, 4 - Failed, 5 - Expired, 9 - Authorized, 11 - Captured.
    : The status id of the transaction in Nuvei system;

    Status
    Status
    Definition
    The description of the transaction status in the Smart2Pay system: Open (Pending), Success (not used for card payments), Cancelled, Failed, Expired, Authorized, Captured.
    : The description of the transaction status in the Nuvei system;

    MerchantAmount
    MerchantAmount
    Definition
    The amount of the transaction.
    Type
    float
    : The amount of the transaction;

    MerchantCurrency
    MerchantCurrency
    Definition
    The currency of the transaction. ISO 4217 format (e.g. EUR)
    : The currency of the transaction;

    CapturedAmount
    CapturedAmount
    Definition
    The amount that has been captured. Float with 2 decimals (e.g. 33.99)
    Type
    float
    : The amount that has been captured;

    MethodID
    MethodID
    Definition
    The ID of the payment methods used. For credit cards payments the ID is 6.
    Type
    int
    : The ID of the payment methods used. For credit cards payments this is 6.;

    MethodName
    MethodName
    Definition
    The name of the payment method used: SmartCards.
    : The name of the payment method used.;

    ReportedByBOTOperatorDate
    ReportedByBOTOperatorDate
    Definition
    The date when the transaction was exported to CSV file.
    Type
    datetime
    : The date when the transaction was exported to csv file;

    SpecificDetails
    SpecificDetails
    Definition
    Specific Details
    : Not used;

    ReconciliationProviderID
    ReconciliationProviderID
    Definition
    The ID that appears on the bank statement of the customer (usually same as RootProviderTransactionID).
    Type
    string
    : ID appearing on the bank statement of the customer (usually same as RootProviderTransactionID);

    ProviderTransactionID
    ProviderTransactionID
    Definition
    Provider Transaction ID
    : Not used for card payments;

    MerchantAlias
    MerchantAlias
    Definition
    The name of the Shop.
    Type
    string
    : Shop Name;

    RootProviderTransactionID
    RootProviderTransactionID
    Definition
    The ID of the payment in acquiring system.
    Type
    string
    : ID of the payment in acquiring system;

    Country
    Country
    Definition
    The country of the payer if available. ISO_3166-1_alpha-2 format. (e.g. IT).
    : The country of the payer if available.
  2.  

  3. Nuvei will generate a Settlement invoice report containing information at transaction level for each shop. The Settlement invoice report contains the following information:1 Settlement invoice report per shop
    GPaymentId
    GPaymentId
    Definition
    GPaymentId
    : Not used;
    PaymentId
    PaymentId
    Definition
    The ID of the payment in Smart2Pay system.
    Type
    int
    : PaymentID in Nuvei system;

    Type
    Type
    Definition
    Transaction Type. It can be type: Payment, Refund, Inquiry or Chargeback.
    Type
    string
    : Transaction Type. Can be Payment, Refund, Inquiry or Chargeback;

    PaymentMethodName
    PaymentMethodName
    Definition
    The name of the payment method used. E.g. SmartCards
    Type
    string
    : Name of the payment method used;

    CustomerName
    CustomerName
    Definition
    The name of the customer, if available.
    Type
    string
    : The name of the customer, if available;

    MerchantName
    MerchantName
    Definition
    The name of the merchant account.
    Type
    string
    : The name of the merchant account;

    MerchantID
    MerchantID
    Definition
    The ID of the transaction/refund in your system.
    Type
    string
    : The transaction/refund id in your system;

    GtId
    GtId
    Definition
    GtId
    : Not used;

    IssuerName
    IssuerName
    Definition
    Issuer Name
    : Not used;

    IdealTrxId
    IdealTrxId
    Definition
    IdealTrxId
    : Not used;

    Country
    Country
    Definition
    The country of the payer, if available. ISO_3166-1_alpha-2 format. (e.g. IT).
    : The country of the payer, if available;

    InputDateTime
    InputDateTime
    Definition
    The date and time of inserting the transaction in Smart2Pay system.
    Type
    datetime
    : The date and time of inserting the transaction in Nuvei system;

    Amount
    Amount
    Definition
    The amount of the transaction.
    Type
    float
    : The amount of the transaction;

    Currency
    Currency
    Definition
    The currency of the transaction. ISO 4217 format (e.g. EUR).
    : The currency of the transaction;

    Status
    Status
    Definition
    The description of the transaction status in the Smart2Pay system: Open (Pending), Success (not used for card payments), Cancelled, Failed, Authorized, Captured
    : The description of the transaction status in the Nuvei system;

    ExchangeRate
    ExchangeRate
    Definition
    The exchange rate if the transaction needs to be converted from transaction currency to the settlement currency.
    Type
    float
    : The exchange rate if the transaction needs to be converted from transaction currency to the settlement currency;

    CalculatedAmount
    CalculatedAmount
    Definition
    The transaction amount converted to the settlement currency.
    Type
    float
    : The transaction amount converted to the settlement currency;

    ReferenceCurrency
    ReferenceCurrency
    Definition
    The settlement currency.
    Type
    float
    : The settlement currency;

    TransactionFee
    TransactionFee
    Definition
    Gateway fee (if applies).
    Type
    float
    : Gateway fee (if applies);

    GeneralFee
    GeneralFee
    Definition
    Gateway fee (if applies)
    Type
    float
    : Gateway fee (if applies);

    AttemptFee
    AttemptFee
    Definition
    Gateway fee (per attempt, if applies).
    Type
    float
    : Gateway fee (per attempt, if applies);

    IssuedFee
    IssuedFee
    Definition
    Gateway fee (per acquiring bank/payment method provider attempt fee if applies).
    Type
    float
    : Gateway fee (per acquiring bank/payment method provider attempt fee if applies);

    LocalVatFee
    LocalVatFee
    Definition
    Local payment method VAT (if applies).
    Type
    float
    : Local payment method VAT (if applies);

    VAT
    VAT
    Definition
    Value added tax (if applies).
    Type
    float
    : Value added tax (if applies);

    Comission
    Comission
    Definition
    Commission of the marketplace/agent (if applies).
    Type
    float
    : Commission of the marketplace/agent (if applies);

    SiteID
    SiteID
    Definition
    The ID of the shop.
    Type
    int
    : ID of the shop;

    SiteAlias
    SiteAlias
    Definition
    Shop Alias.
    Type
    string
    : Shop Alias;

    OriginatorTransactionID
    OriginatorTransactionID
    Definition
    The ID of the transaction/refund in The Marketplace system.
    Type
    string
    : The ID of the transaction/refund in The Marketplace system.
  4.  

  5. Nuvei will also generate an aggregated Settlement invoice report containing information at transaction level for the Marketplace. Settlement of the commission will be based on this settlement invoice. Format is the same as in the Settlement invoice report above.

Below there are examples of Settlement invoice reports in all supported formats:

Settlement Flow for Mirakl Marketplace

Settlement cycles are defined in Nuvei system. Based on this, Nuvei generates settlement invoices for each shop. Also, Nuvei generates a commission settlement invoice for Mirakl Marketplace.

The acquiring banks and alternative payment method providers settle to Nuvei the Gross amount – Acquiring/Processing Fees:

  • Nuvei settles gross amount – operator commission – acquiring fees to each shop. Settlement frequency: weekly. If a different settlement frequency is needed, please contact your Nuvei account manager.
  • Nuvei settles commission to Mirakl Marketplace based on Transaction Log API exposed by the Mirakl. Settlement frequency: weekly. If a different settlement frequency is needed, please contact your Nuvei account manager.

Optional functionalities:

  • Subscription fee can be collected by Nuvei from the shops on behalf of the marketplace operator.
  • Manual credits / debits can be issued towards the shops by the Marketplace operator using Mirakl backoffice and will be performed by Smart2Pay.
  • Mirakl Marketplace can withhold the payment of certain transactions towards the shop (e.g. only the transactions with PaymentStatus marked as PAID will be settled).

Reconciliation process for Mirakl Marketplace

Nuvei reconciles at transaction level with the acquiring banks and alternative method providers.

The SiteID / APIKEY will be used to initiate the transactions towards Smart2Pay. The Mirakl Marketplace Transaction ID needs to be submitted by Nuvei REST API in the OriginatorTransactionID field for reporting and reconciliation purposes towards the shops / Mirakl Marketplace.

Transactional Flow for Mirakl Marketplace

Orders containing items from multiple shops will be sent for authorization in multiple transactions, each transaction containing items for a single shop.

Credit card transactions are authorized and their status is communicated on the following route: Acquirer -> Nuvei -> Mirakl Marketplace.

Transactions should be captured within 7 days from authorization. For more information regarding capturing payments, please go to our section: Capture a Payment.

Tokenization, 3D and fraud prevention solutions are available upon request. For more information visit: Credit Card Payments.

Alternative payment methods are authorized and captured in one step and their status is communicated on the following route: Payment method provider -> Nuvei -> Mirakl Marketplace.

You need to integrate our REST API described here: https://docs-apm.nuvei.com.

Mirakl’s Pre-Settlement Transaction API

Mirakl Marketplace exposes a Transaction Log API based on which Nuvei settles commissions for. Information about all the transactions created or updated within a certain interval can be retrieved by using an action based on GET HTTP request. The response will contain a transaction list in JSON format that returns all the transactions that were created or updated in the interval start_date – end_date.

Only a limited amount of details for each transaction will be provided.

Definition: GET /api/transactions_logs?shop_id=…&start_date=…&end_date=…&start_transaction_date=…&e
nd_transaction_date=…&updated_since=…&payment_voucher=…&payment_states=…&transactio
n_types=…&paginate=…&accounting_document_number=…&order_ids=…&order_line_ids=…

Where:
  • shop_id – [optional] shop id for filtering;
  • start_date – [optional] creation date for filtering. Format: “yyyy-MM-dd’T’HH:mm:ss”;
  • end_date – [optional] creation date for filtering. Format: “yyyy-MM-dd’T’HH:mm:ss”;
  • start_transaction_date – [optional] transaction date for filtering. Format: “yyyy-MM-dd’T’HH:mm:ss”;
  • end_transaction_date – [optional] transaction date for filtering. Format: “yyyy-MM-dd’T’HH:mm:ss”;
  • updated_since – [optional] last updated date for filtering. Format: “yyyy-MM-dd’T’HH:mm:ss”;
  • payment_voucher – [optional] payment voucher number for filtering;
  • payment_states – [optional] payment states separated by comma for filtering;
  • transaction_types – [optional] transaction types separated by comma for filtering;
  • paginate – [optional] Control the pagination usage. Default: true;
  • accounting_document_number – [optional] an accounting document number for filtering (invoice or credit note number);
  • order_ids – [optional] order id list for filtering, using comma (,) as a separator;
  • order_line_ids – [optional] order line id list for filtering, using comma (,) as a separator.

Request Model:

GET /v1/transactions?{start_date}&{end_date}
Authorization: Basic Pre-shared-APIKEY

The transaction_type field contains the following information:

  • COMMISSION_VAT
  • COMMISSION_FEE
  • ORDER_SHIPPING_AMOUNT
  • ORDER_AMOUNT
  • MANUAL_CREDIT
  • MANUAL_CREDIT_VAT
  • ORDER_AMOUNT_TAX
  • ORDER_SHIPPING_AMOUNT_TAX
  • REFUND_ORDER_AMOUNT
  • REFUND_ORDER_SHIPPING_AMOUNT
  • REFUND_COMMISSION_FEE
  • REFUND_COMMISSION_VAT
  • REFUND_ORDER_AMOUNT_TAX
  • REFUND_ORDER_SHIPPING_AMOUNT_TAX
  • SUBSCRIPTION_FEE
  • SUBSCRIPTION_VAT

Only the transactions with payment_state = “PAID” will be settled in the current settlement cycle.

Mirakl Notification for Shop Approval

Whenever a shop is approved in Nuvei onboarding system, a notification is sent from Nuvei to Mirakl Marketplace where the following info is send, and whether it was successful or not.

Mirakl Marketplace needs to respond with HTTP return code 204 (No Content) otherwise the approval will be resubmitted!

Definition: POST /api/shop/{ID}/notification

Where:
  • {ID} – ID of the shop

Shop Approval Notification Format:

{
    "merchant_site": {
        "shop_id": Int,
        "site_id": Int (eg. 31261),
        "api_key": "SmasdsPx6n2KJU9MNKcBdlqdLJZOXSl9IA/kdksjSsdDWD",
        "created": "Date (yyyy-mm-dd hh:mm:ss, eg. 2018-12-31 23:59:59)",
        "url": "http://www.johnshop.it",
    }
}

Response:

204 No Content

We recommend you to always verify the Notification content we sent and not just simply/automatically respond to our notifications.

In exceptional cases it is possible to receive duplicate notifications and your system should be able to handle such situations.

If you do not respond to the notifications of type Approval or our system will keep sending the notifications until it receives a response!

Get the List of Documents from Mirakl Marketplace

Information about the required documents can be retrieved by using an action based on GET HTTP request. The response will contain a list of documents provided for each Shop ID in JSON format.

Definition: GET /api/shops/documents?shop_ids=…

Where:
  • shop_ids – [required] A list of shop identifiers.

Request Model:

GET /api/shops/{shop_id}/documents
Authorization: Basic Pre-shared-APIKEY

The following documents are required by Nuvei KYC platform:

  1. Bank statement (Not older than 6 months, with account holder and IBAN code visible);
  2. Company certificate / Incorporation certificate (Not older than 6 months);
  3. Register of directors (or any other document showing the company’s legal representatives) (Not older than 6 months);
  4. Passport copy of company’s legal representatives and UBO (Ultimate Beneficial Owners – all natural persons that own or control, directly or indirectly more than 25% of the Company): Legible ID copy in color within validity period;
  5. Take into consideration that for each of the company UBOs that own or control more than 25% of the company you must also provide proper identity documents (Legible ID copy in color within validity period)!

  6. Utility bill that can be used as proof of address for company’s legal representatives (Not older than 6 months).

Get the List of Shops from Mirakl Marketplace

Mirakl Marketplace Platform exposes an API which Nuvei can call to pull the list of newly created shops, using an action based on GET HTTP request. The response will contain a shop list in JSON format that returns all the shops that were created or updated after last_updated_date

Only a limited amount of details for each shop will be provided.

Definition: GET /api/shops?shop_ids=…&premium=…&state=…&updated_since=…&paginate=…

Where:
  • shop_ids – List of shop ids separated with comma. Limited to 100 values;
  • premium – Boolean : “ALL” (default), “FALSE” or “TRUE”. If TRUE (FALSE) returns only offers of premium (not premium) shop;
  • state – State of the shop;
  • updated_since – Filter all the shop that have been modified since the value of this parameter;
  • paginate – [optional] Control the pagination usage. Default : true.

Request Model:

GET /api/shops/{last_updated_date}
Authorization: Basic Pre-shared-APIKEY

Not all fields are mandatory in the above request! If Mirakl Marketplace does not provide all the necessary data, the shop representative will fill the missing fields in Nuvei platform. Another method of providing missing or incomplete data is by adding it in the additional fields and document fields in your Mirakl back office, if the initial configuration allows you to.

Once Nuvei identifies a newly created shop, it creates an account in Nuvei KYC platform for the shop representative and sends an email asking to finalize the application (e.g. fill missing info, upload documents, sign the online contract).

Company Documents

After you have completed all the necessary details for the company profile, you need to wait for Smart2pay approval of the company. After our team will review and approve your company details and documents, you will receive a confirmation message. Your company will be activated and you may start in completing the technical integration, that will get you closer to a full integration of your site with our platform.

Go to Company documents tab where you will see all the required documents that you need to provide us in order for us to generate your merchant agreement.

The documents that you necessarily need to provide us are the following: Bank statement, Company Certificate of Registration, Company extract showing who the company directors and legal representative(s) are, Utility bill that can be used as proof of address of the company and Passport copy of the UBOs> 25% and of the Legal Representative(s) signing the Merchant Agreement and the Merchant Form(s). In case there are any other documents not covered by the above document requirements, you may upload them at point 6 in the form.

Once you uploaded the documents, you can click on the Submit Documents button and wait for our team to review and approve the documents that you have sent.

If our team, while reviewing your documents, has agreed that you need to provide more information or the information is incomplete or outdated (like: expired passports or proof of address) they will reject your document. The reason will be stated in the form.

You will also receive a rejection message in your Inbox message stating the reason of rejection.

After resolving the issues involved in the rejection of the document, you will have to delete first the document from the Company Documents tab and then you will have to upload the newly modified document.

You will also receive a message in your Inbox message stating which document has been deleted and the person who has deleted the document.

After our team will review and approve the documents that you have sent, the Merchant agreement document is generated, in order to complete this step, all involved parties should accept it. The company representative that has the right to sign all company contracts will be notified via email in order to review and accept the merchant agreement.

You will also receive a message in your Inbox message stating that the company representative that has the right to sign company contracts has been notified via email.

 

Now that the company and all the documents have been approved and the merchant agreement has been accepted by all parties involved your company, your company will be approved. You will also receive your dashboard credentials and relevant API keys.

Once your company is activated, you may start in completing the technical integration, that will get you closer to a full integration of your site with our platform.

Messages

In the Messages tab from the main menu you can see all your messages received or sent by you and you can send messages to our team concerning the different problems that you encounter.

Through the Messages tab we offer our own messaging framework from within the program, to improve and facilitate the communication between us and our business partners. It is very useful because it displays all your notifications, keeps a track of your messages and you can always see the history of conversations between certain users and our team. Its a simple system to use and understand, it saves time with automated responses but it also manages all the conversations in the Inbox tab.

When you access the Inbox tab, the search Filters section is collapsed. In order to expand it, just click on the Show filters. You can search messages depending on the sender and receiver. Once you enter the desired filters just click on the Filter button.

Capture scenarios for Paypal

Capture Scenarios Response Status Description Notification Status Description
The transaction has been fully captured.

Only payments with “Authorized” status (9) can be captured.
Final Status: 2 Success Final Notification Status: 2 Success
The payment has been partially captured.

Only payments with “Authorized” status can be partially captured. The payment has been sent out to be partially captured, but the payment gateway has not yet confirmed that the payment is successful.
Final Status: 35 Partially Captured Final Notification Status: 35 Partially Captured
Capture Failed Scenarios Return Code Description
The transaction could not be captured.

The transaction is not in an Authorized status (it has already been fully Captured or Partially Captured).
Return Code: 17 Payment is invalid

For a complete list of all the possible Return Code IDs go to our section GlobalPay Return Codes.

See the request – response examples for the above possible scenarios:

  • Success Status

    A payment can only be captured if it has an Authorized status. Once the payment has an Authorized status (9), you can capture either the full amount or a partial amount of the initial authorized amount for the transaction.

    A 200 HTTP response (OK) is returned if the request was completed successfully.

    Full capture means you capture the entire authorized amount for the initial transaction.

    Request:

    POST https://paytest.smart2pay.com/v1/payments/4813936/capture
    Authorization: Basic MzAxNTE6V05ydTJ5WnJpR2RtNVVMZWt4dFM4cHprUXNRSmdYYTZBZnlnT3FXZXcvNlRBYzNYK1A=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 4813936,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20191121152453",
            "MerchantTransactionID": "s2ptest_p1",
            "OriginatorTransactionID": null,
            "Amount": 100,
            "Currency": "EUR",
            "CapturedAmount": "100",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 94,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": "20191121152731",
            "Customer": null,
            "BillingAddress": {
                "ID": 452,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "ES"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": 10,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=917D36F62AAA2BE344A324E612A0B5CC.4813936"
        }
    }

    We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

    Payment notification format:

    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
        "Payment": {
            "ID": 4813936,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20191121152453",
            "MerchantTransactionID": "s2ptest_p1",
            "OriginatorTransactionID": null,
            "Amount": 100,
            "Currency": "EUR",
            "CapturedAmount": "100",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 94,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": "20191121152731",
            "Customer": null,
            "BillingAddress": {
                "ID": 452,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "ES"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": 10,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=917D36F62AAA2BE344A324E612A0B5CC.4813936"
        }
    }

  • Partially Captured Status

    Partial capture means you have the possibility to capture a smaller amount than the one from the initial authorized transaction. Partial capture is used when you have sent at least part of the order to the consumer and want to capture the amount for the item(s) that have been shipped.

    You can perform only one partial capture for an authorized transaction with the limitation that the amount of the partial capture to be smaller or equal than the initial authorized amount.

    Specify only the captured amount parameter in the query string, in order to partially capture the payment, like in the below example:

    Request:

    POST https://paytest.smart2pay.com/v1/payments/4813937/capture?amount=50
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 4813937,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20191121153210",
            "MerchantTransactionID": "s2ptest_p2",
            "OriginatorTransactionID": null,
            "Amount": 100,
            "Currency": "EUR",
            "CapturedAmount": "50",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 94,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": "20191121153324",
            "Customer": null,
            "BillingAddress": {
                "ID": 452,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "ES"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 35,
                "Info": "PartiallyCaptured",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": 10,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=387EE786392FE554A86CA9E3F3EF1E09.4813937"
        }
    }

    We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

    Payment notification format:

    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk={
        "Payment": {
            "ID": 4813937,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20191121153210",
            "MerchantTransactionID": "s2ptest_p2",
            "OriginatorTransactionID": null,
            "Amount": 100,
            "Currency": "EUR",
            "CapturedAmount": "50",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 94,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": "20191121153324",
            "Customer": null,
            "BillingAddress": {
                "ID": 452,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "ES"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 35,
                "Info": "PartiallyCaptured",
                "Reasons": null
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": 10,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=387EE786392FE554A86CA9E3F3EF1E09.4813937"
        }
    }

  • Return Code: 17 – Payment is invalid

    The transaction could not be captured. The transaction is not in an Authorized status. You can receive this response when the payment you want to Capture is not Authorized or when the payment has already been Captured.

    Request:

    POST https://paytest.smart2pay.com/v1/payments/4813935/capture
    Authorization: Basic MzAxNTE6V05ydTJ5WnJpR2RtNVVMZWt4dFM4cHprUXNRSmdYYTZBZnlnT3FXZXcvNlRBYzNYK1A=

    Response:

    HTTP/1.1 400 Bad Request
    Content-Type: application/json; charset=utf-8{
        "Payment": {
            "ID": 4813935,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20191121151256",
            "MerchantTransactionID": "s2ptest_paypal2",
            "OriginatorTransactionID": null,
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": null,
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 94,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30201,
            "NotificationDateTime": "20191121151441",
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": [
                    {
                        "Code": "17",
                        "Info": "Payment is invalid - 4813935"
                    }
                ]
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "TokenLifetime": null,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": null
        }
    }

PayPal Test Data

For PayPal payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

PayPal Payment Flow

  1. The Customer selects his preferred currency from the list and enters his email address.1 Enter email
  2. The customer logs in to his PayPal account by entering his email address and password.1 Account login
  3. The Customer reviews the payment information and confirms the payment.1 Payment details
  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.1 Return page when the redirection status is a success

Company details

The first part that needs to be covered for a successful onboarding at Nuvei is signing up your company! This section provides insights on how to successfully complete the Company Details form. Please keeep in mind, that all the fields are mandatory and we encourage you to give us the necessary information with utmost consideration!

Access the OnBoarding platform by clicking on the Go button from the Company Details form in the Welcome Page.

On the OnBoarding platform you will need to provide us with documentation requirements for customer and company, upload necessary company documents, accept the merchant agreement and request the company activation in order for your company to be approved and be ready to takle the live transactions.

We’ll take step by step in filling all the necessary forms and you have the possibility to always check your boarding status in the Overview tab. Start by filling in the Company details form and provide as many details. Don’t forget to save the changes.

In the Company tab you will need to provide us with documentation requirements for customer and company, like: Company details and address, Company contacts, Company bank details and also Stakeholders information.

In the case that your business isn’t registered for VAT, in the EEC VAT Number filed you will click on the Not Applicable sign.

In order for us to understand and to know more about your business and services, please provide as much information about your products or services in the Business Model field.

If you have more than one website where you want to implement our services, you need to add each one of them by using the ADD ANOTHER SITE 26 button.

In order to complete the Contact Details form, you will have to choose from one of the roles provided in the form: Financial Contact, Technical Contact or Support Contact, according to your role within the company. Click on the appropriate button and add the desired contact type.

After choosing the specific role within the company, please provide the necessary details by which a person can contact you: first and last name and email address. For a more accurate and efective communication, you can give us more than one company contact.

You will also need to provide the current headquarters address for your company, like: Street number, Postcode / Zipcode, City /State, Phone / Fax, and Country of establishment.

In the Company Bank Details you will have to provide information related to your Bank, like: Bank Name, Account Holder, Account Currency, IBAN, Account Number and SWIFT. In case you dont’t have the complete information, please contact your Bank for a complete answer.

The Stakeholders form must contain details of each Company Representative with signing rights or/and Ultimate Beneficial Owner that owns or controls, directly or indirectly more than 25% of the Company.

Add a Company representative and fill in the necessary information, like: their signing right (click only if the person has the right to sign all company contracts), Legal Name, Email, Date of Birth, and their complete address. In order to add a new company representative just use the ADD button.

Add an Ultimate Beneficial Owner / Share Holder and fill in the necessary information, like: Legal Name, Email, Percentage of ownership of the company, Date of Birth, and their address. In order to add a new Beneficial Owner / Share Holder just use the ADD button.

After you have completed all the necessary fields, just click on the Save Changes button and request the company activation. You may place a request to activate the company every 24 hours.

The Request Activation button will only appear if the Company representative form is completed with the necessary information!

You will now have access to the Company documents where you will have to provide us the relevant official documents.

Reset Password

In case you forgot your password or you want to reset it, click on the Forgot your password link form the Sign In form.

Enter your email address and click on the Send Verification Code.

Enter the verification code sent to your email address in the correct field in order to verify it.

After the email address is successfully verified click on the Continue button.

You need to enter a new password and to confirm it. Click on the Continue button in order to complete the sign in process.

You are redirected to the Sign In page, where you enter your email address and the newly updated password.

Company Onboarding

Onboarding is the tool that you need in order that the onboarding process to be quick and accurate and to ensure a long-term and successful business partnership. We have developed an intuitive and secure online system that it will allow merchants for an automated and quick onboarding process.

It will only take a little time for you to manage the onboarding process. We have strive to minimize the long and tiresome process during merchant boarding and the ongoing challenges of completing forms and fields while building the merchant’s and company’s profile.

Get a list of Captures of a specific card payment

You can get a list of all partial captures for a specific direct card payment by using an action based on GET HTTP request. Please be aware that only a limited amount of details for each capture will be provided.

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

Where:
  • {id} – GlobalPay Payment ID

Request:

GET https://securetest.smart2pay.com/v1/payments/202247/captures
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Captures": [
  {
    "ID": 266,
    "SiteID": 1010,
    "Created": "20161205095522",
    "MerchantTransactionID": "s2ptest_h22",
    "OriginatorTransactionID": null,
    "PaymentID": 202247,
    "Amount": 500,
    "Currency": "EUR",
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": []
      }
    },
    {
    "ID": 267,
    "SiteID": 1010,
    "Created": "20161205095522",
    "MerchantTransactionID": "s2ptest_h23",
    "OriginatorTransactionID": null,
    "PaymentID": 202247,
    "Amount": 2000,
    "Currency": "EUR",
    "Status": {
      "ID": 4,
      "Info": "Failed",
      "Reasons": [
        {
          "Code": "2209",
          "Info": "Capture.Amount exceeds authorization amount"
          }
        ]
      }
    }
  ]
}

You can also get information for a specific capture of a direct card payment by using an action based on GET HTTP request.

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

Where:
  • payments/{id} – GlobalPay Payment ID
  • capture/{id} – The ID of the specific capture

Request:

GET https://securetest.smart2pay.com/v1/payments/202247/captures/266
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
    "Capture": {
        "ID": 266,
        "SiteID": 1010,
        "Created": "20161205095522",
        "MerchantTransactionID": "s2ptest_h22",
        "OriginatorTransactionID": null,
        "PaymentID": 202247,
        "Amount": 500,
        "Currency": "EUR",
        "Status": {
            "ID": 2,
            "Info": "Success",
            "Reasons": []
        }
    }
}

Nuvei Mirakl Plugin for Marketplaces

Looking for one marketplace-focused solution, which is also fully compliant with the PSD2 regulatory requirements?

You’re in the right place!

Our solution for marketplace platforms has been designed to seamlessly integrate with Mirakl’s e-marketplace products and allows for fully customizable marketplace onboarding and split payments processes.

Mirakl Marketplace Platform is one of the most modern, flexible, and feature-rich Marketplace solution available, with years of best practices built in and also offering clients unparalleled expertise from their team of 30+ business, technical, and operational marketplace experts.

Not using Mirakl? No problem: we also offer Marketplace APIs to help you manage marketplace payments. More info here: https://docs-apm.nuvei.com/category/marketplace-api/.

The solution provides access to credit card payments and alternative payment methods for a Marketplace in a simple yet reliable legal and technical setup.

We are committed to help marketplaces run their business without worrying about the associated regulatory requirements from the new PSD2 directive which have come into force beginning 2018.

Nuvei solution ensures that all of the participating shops as well as the marketplace will benefit of a seamlessly onboarding process, reliable and secure transaction processing, reconciliation to the penny and prompt settlements.

The Mirakl plugin features:

  • automated import of all the the newly created shops and required documents from Mirakl to Smart2pay platform – leading to a fully customizable and seamless onboarding process.
  • automated shop approval notification which contains all info you need to start processing right away. More info here: Mirakl Notification for Shop Approval.
  • automated import of all payment instructions to marketplace participants and handling all the commission fees for the marketplace operator. Please discuss with our technical support the setup of your Mirakl voucher generation process.
  • supporting a wide range of payment methods from credit card payment to alternative payment methods with an all-in-one unified API and settlement flow. 

Here is how it works:

1 Marketplace - Processes and Systems

The technical process (KYC Flow) with all the necessary steps is described next:

    All KYC processes related to marketplace onboarding of the participating shops take place in Mirakl KYC system. All KYC processes related to payments take place in Nuvei KYC system.

  • Mirakl Marketplace accepts a new shop on its platform and creates an entry in its database.
  • Mirakl Marketplace exposes an API which Nuvei KYC platform calls several times per day to pull information about the newly created shops.
  • Nuvei KYC platform pulls all available information about the shop (ShopID, Alias, shop representative e-mail, documents etc.). If all the required information is not available, the merchant representative will have to fill it in on Nuvei KYC platform.
  • Nuvei will create an account for the shop in the Nuvei KYC platform and send an e-mail to the shop representative with the login details.
  • The shop representative will fill in any missing company related data and upload KYC/UBO specific documentation.
  • The shop representative signs online the Merchant agreement for Payment processing.
  • Nuvei Risk team reviews the company.
  • In case of approval, a siteID is generated in the Nuvei platform.
  • Nuvei will do a push notification to a page designated by Mirakl with the following info ShopID, SiteID, APIKEY. The last two parameters need to be used when calling Nuvei REST API when processing the payments. Mirakl Marketplace needs to respond with HTTP return code 204 (No content) to the POST notification.

Please contact our support team at technicalsupport-s2p@nuvei.com to schedule a more in depth demo on how we help your marketplace to process payments and perform split settlements.

Exemptions to Strong Customer Authentication (SCA)

With the Second Payment Services Directive (PSD2), the new set of laws and regulations for payment services in the European Union (EU) and the European Economic Area (EEA), Strong Customer Authentication (SCA) will be the requirement for all online transactions. However, there are still some exemptions from this rule where specific types of low-risk payments may be still exempted from Strong Customer Authentication (SCA).

Please keep in mind that banks can choose not to honor these exemptions and you need to be prepared to handle a SCA challenge even if the transactions has been submitted under one of the below exemptions.

The most relevant SCA exemptions are:

  • MIT
  • Low Risk / TRA
  • Low Value
  • Secure Corporate payments
  • Trusted Beneficiaries

1. Merchant Initiated Transaction (MIT)

MITs are payment transactions that are not initiated by the payer but by the payee only and are not subject to strong customer authentication (SCA) to the extent that these transactions are initiated without any interaction or involvement of the payer. MIT transactions are subjected to SCA except when a mandate is signed by the client. For example, SEPA Direct Debits are initiated by the merchant but have a direct debit mandate signed by the end customer. Thus, SCA is not applicable in this case and there are no restrictions to the frequency or the amount (obtained scheme transaction identifier needs to be provided for use in the subsequent transactions).

Adjustment of initial Authorisation allows merchants to increase or decrease the authorised amount after the initial authorisation has taken place is also MIT. This enables tipping.

2. TRA – Transactional Risk Analysis

SCA can be deactivated for online payments between €30 and €500, depending on the payment providers fraud rates (see table below). There are no low-risk exemptions for transactions over €500. Merchants have to rely on a payment service provider (e.g. an acquirer) to act upon their request. In addition, the test to trigger the exemption rests with whether the PSP satisfies the prescribed conditions, not the merchants themselves. Nuvei keeps a very low fraud rate by using state of the art anti-fraud solutions such as RedShield, Machine Learning algorithms and by working with low risk acquiring banks which have very good fraud scores.

Adding additional information in the payment request will maximize the probability of getting the exemption by Issuers. The chargeback liability shifts to the issuer as well.

Regulatory Technical Standards (RTS), that payment providers need to take into account through real-time risk analysis, covers the following:

  • abnormal spending or behavioral pattern of the payer;
  • unusual information about the payer’s device/software access;
  • malware infection in any session of the authentication procedure;
  • known fraud scenario in the provision of payment services;
  • abnormal location of the payer;
  • high-risk location of the payee.

The fraud rate limits for payment providers are being applied as follows:

Fraud rate and amount limits
Fraud transaction rate Amount limits
Up to 0.01% Up to €500
Up to 0.06% Up to €250
Up to 0.13% Up to €100

3. Low value: Small amounts less than 30 EUR

For a transaction of less than 30 EUR and up to 100 EUR accumulated or up to 5 transactions since the last SCA. Beyond 100 EUR or beyond 5 unauthenticated transactions, a new SCA is required. Keep in mind that since the information needed to validate these stipulations is only available to the issuing bank, you will still need to confirm if SCA is required on all transactions that might fall into this exemption category.

4. Payment to a trusted beneficiary

Customers can add their preferred online sellers to a list of trusted beneficiaries held by the issuing bank, so that they don’t required to authenticate for each new payment. Please instruct your customers if possible to add your business to the white-list at their bank.

5. Secure Corporate payments

SCA can de deactivated for corporate card payments made through secure processes and protocols initiated by businesses and not available for consumers. Payments that are included in this category are those made through central travel accounts, lodged cards, virtual cards, and secure corporate cards, like the ones used in a corporate travel management system.

See below an example of a MerchantInitiatedTransaction (MIT) transaction type:

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_m10",
    "Amount": 1000,
    "Currency": "EUR",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",   
    "Card": {
      "HolderName": "John Doe",
      "Number": "4548812049400004",
      "ExpirationMonth": "05",
      "ExpirationYear": "2021",
      "SecurityCode": "123"     
      },
     "3DSecure": true,
     "DeviceInfo": {
      "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
      "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
      "BrowserJavaEnabled": false,
      "BrowserJavaScriptEnabled": true,
      "BrowserLanguage": "ro-RO",
      "BrowserColorDepth": "24",
      "BrowserScreenHeight": "1080",
      "BrowserScreenWidth": "1920",
      "BrowserTimeZone": "-180"
    },         
    "ScaExemption": "MerchantInitiatedTransaction"
  }
}

There are 2 possible response scenarios:

  • Exemption is approved: The cardholder’s bank receives the request, assesses the risk level of the transaction, and approves the exemption and the SCA is no more necessary. The payment has status Authorized / Captured in the response.

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Payment": {
        "ID": 172498,
        "ClientIP": null,
        "SkinID": 200,
        "Created": "20190913075654",
        "MerchantTransactionID": "s2ptest_m10",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
       "Description": "silviu test",
        "StatementDescriptor": "Static Description",
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Card": {
          "HolderName": "Test Person",
          "Number": "VISA-0004",
          "ExpirationMonth": "05",
          "ExpirationYear": "2021",
          "IssuingBankCountry": null
        },
        "CreditCardToken": null,
        "Status": {
          "ID": 9,
          "Info": "Authorized",
          "Reasons": []
        },
        "MethodTransactionID": null,
        "AuthorizationCode": "971896",
        "PaymentTokenLifetime": 10,
        "Capture": false,
        "RedirectURL": null,
        "3DSecure": true,
        "3DSecureData": null,   
        "ScaExemption": "MerchantInitiatedTransaction",
        "CardOnFile": null,
        "Fraud": null
      }
    }

  • Exemption is rejected: The cardholder’s bank receives the request, assesses the risk level of the transaction, and rejectes the exemption and the SCA is mandatory. The payment has status Open in the response. The customer accesses the RedirectURL form the response and is redirected to the 3D Secure page to authenticate the transaction.

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8{
      "Payment": {
        "ID": 172498,
        "ClientIP": null,
        "SkinID": 200,
        "Created": "20190913075654",
        "MerchantTransactionID": "s2ptest_m10",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "silviu test",
        "StatementDescriptor": "Static Description",
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Card": {
          "HolderName": "Test Person",
          "Number": "VISA-6852",
          "ExpirationMonth": "05",
          "ExpirationYear": "2021",
          "IssuingBankCountry": null
        },
        "CreditCardToken": null,
        "Status": {
          "ID": 1,
          "Info": "Open",
          "Reasons": []
        },
        "MethodTransactionID": null,
        "AuthorizationCode": null,
        "PaymentTokenLifetime": 10,
        "Capture": false,
        "RedirectURL": "http://85.186.26.139:58938/v1/Payments/FillCardDetails?PaymentToken=172500.1006.5CD50C1B1707FB83EAA7655F9B21D42E9&SkipLandingPage=true",
        "3DSecure": true,
        "3DSecureData": null,   
        "ScaExemption": "MerchantInitiatedTransaction",
        "CardOnFile": null,
        "Fraud": null
      }
    }

Card on file transactions (COF)

A card-on-file transaction is a transaction where a cardholder authorizes a merchant to store the cardholder’s payment details, and also authorizes that same merchant to bill the cardholder’s stored account.

Transactions are either initiated by a consumer, or by a merchant based on the instructions given to them by the consumer. It is possible for a merchant to initiate a transaction without consumer action.

Consumer-Initiated Transactions (CIT): where the consumer is present and provides their payment credentials. This can be through a terminal in-store, or online through a checkout experience. A consumer-initiated transaction contains proof (such as track data, chip data with cryptograms, cardholder verification methods, and online through the presence of Card Verification Value 2 (CVV2) or Verified by Visa (VBV) authentication data) that the cardholder was involved in the transaction.

Merchant-Initiated Transactions (MIT): a transaction that depends to a previous consumer-initiated transaction, but it is conducted without the consumer being present and without any additional cardholder validation performed. It’s a transaction based on a previous agreement between the consumer and the merchant for a recurring product or service or an automated billing or unscheduled transactions etc.

Don’t miss out the below examples with CardOnFile object used for the initial transaction and also for a subsequent one.

Card On File (COF) Transaction Types
Type Description
Installments Deferred payment. Always referring to an INDIVIDUAL purchase, the amount of the several transactions is fixed, and with a definite time interval.
Recurring Recurring payment. The amount of transactions can be fixed or variable, and with a defined time interval.
Reauthorization Normally before partial shipments. Also, when the client extends the stay in hotel / rental of the vehicle or when, having an estimated authorization, the final amount is requested (“settlement”).
Resubmission Original denied because of “balance”; only for certain sectors of activity (for more details check the regulations of the brands) and with a maximum number of days from the purchase. Relevant example:”Transport”.
Delayed Those that happen after the transaction for services rendered / used unknown at the beginning. (Minibar, vehicle damage, fines ….)
Incremental When additional services are incurred during the contract period.
No Show When the merchant charges services to which the owner committed, but then failed to comply with the agreed terms. Relevant example: unattended reservations at hotels without cancellation.
Other The rest of COF transactions that do not fit with any of the previous ones.
  • For an initial transaction from a subsequent payments chain the IsInitial parameter from CardOnFile object needs to be set to true.

    Request:

    POST https://securetest.smart2pay.com/v1/payments
    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Payment": {
      "MerchantTransactionID": "s2ptest_11a",
      "Amount": "100",
      "Currency": "EUR",
      "ReturnURL": "http://demo.smart2pay.com/redirect.php",
      "Description": "Test Description",
      "StatementDescriptor1": "Dynamic Test Description",
      "Card": {
        "HolderName": "Test Person",
        "Number": "4012005162084369",
        "ExpirationMonth": "05",
        "ExpirationYear": "2021",
        "SecurityCode": "123",
        "RequireSecurityCode": true
        },
      "Capture": false,
      "GenerateCreditCardToken": false,
      "PaymentTokenLifetime": 10,
      "3DSecure": true,
      "DeviceInfo": {
        "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
        "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
        "BrowserJavaEnabled": false,
        "BrowserJavaScriptEnabled": true,
        "BrowserLanguage": "ro-RO",
        "BrowserColorDepth": "24",
        "BrowserScreenHeight": "1080",
        "BrowserScreenWidth": "1920",
        "BrowserTimeZone": "-180"
        },
      "CardOnFile":{
             "IsInitial": true,
             "TransactionType": "Recurring"
          },
      "Language": "ro-RO",
      "SkinID": 200
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 1234,
            "ClientIP": null,
            "SkinID": 200,
            "Created": "20190828091954",
            "MerchantTransactionID": "s2ptest_11a",
            "OriginatorTransactionID": null,
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": "0",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "Test Description",
            "StatementDescriptor": "Static Description",
            "MethodID": 6,
            "MethodOptionID": null,
            "SiteID": 1010,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Card": {
                "HolderName": "Test Person",
                "Number": "VISA-4369",
                "ExpirationMonth": "05",
                "ExpirationYear": "2021",
                "IssuingBankCountry": null
            },
            "CreditCardToken": null,
            "Status": {
                "ID": 9,
                "Info": "Authorized",
                "Reasons": []
            },
            "MethodTransactionID": null,
            "AuthorizationCode": "591659",
            "PaymentTokenLifetime": 10,
            "Capture": false,
            "RedirectURL": null,
            "3DSecure": true,
            "DeviceInfo": {
                "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
                "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
                "BrowserJavaEnabled": false,
                "BrowserJavaScriptEnabled": true,
                "BrowserLanguage": "ro-RO",
                "BrowserColorDepth": "24",
                "BrowserScreenHeight": "1080",
                "BrowserScreenWidth": "19200",
                "BrowserTimeZone": "-180"
            },
            "ScaExemption": null,
            "CardOnFile": {
              "IsInitial": false,
              "TransactionType": "Recurring"
            },
            "Fraud": {
                "Status": "Accept",
                "Score": 31,
                "Reason": "No decision provided"
            }
        }
    }

  • Transaction that depends to the previous consumer-initiated transaction. For a transaction from a subsequent payments chain the IsInitial parameter from CardOnFile object needs to be set to false.For subsequent payments always send in the request the InitialPaymentID parameter in the CardOnFile object.

    Request:

    POST https://securetest.smart2pay.com/v1/payments
    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Payment": {
      "MerchantTransactionID": "s2ptest_12a",
      "Amount": "100",
      "Currency": "EUR",
      "ReturnURL": "http://demo.smart2pay.com/redirect.php",
      "Description": "Test Description",
      "StatementDescriptor1": "Dynamic Test Description",
      "Card": {
        "HolderName": "Test Person",
        "Number": "4012005162084369",
        "ExpirationMonth": "05",
        "ExpirationYear": "2021",
        "SecurityCode": "123",
        "RequireSecurityCode": true
        },
      "Capture": false,
      "GenerateCreditCardToken": false,
      "PaymentTokenLifetime": 10,
      "3DSecure": false,
      "DeviceInfo": {
        "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
        "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
        "BrowserJavaEnabled": false,
        "BrowserJavaScriptEnabled": true,
        "BrowserLanguage": "ro-RO",
        "BrowserColorDepth": "24",
        "BrowserScreenHeight": "1080",
        "BrowserScreenWidth": "1920",
        "BrowserTimeZone": "-180"
        },
      "ScaExemption": "MerchantInitiatedTransaction",
      "CardOnFile":{
        "IsInitial": false,
        "TransactionType": "Recurring",
        "InitialPaymentID": 1234        
        },
      "Language": "ro-RO",
      "SkinID": 200
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 12345,
            "ClientIP": null,
            "SkinID": 200,
            "Created": "20190828091954",
            "MerchantTransactionID": "s2ptest_12a",
            "OriginatorTransactionID": null,
            "Amount": "100",
            "Currency": "EUR",
            "CapturedAmount": "0",
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "Test Description",
            "StatementDescriptor": "Static Description",
            "MethodID": 6,
            "MethodOptionID": null,
            "SiteID": 1010,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Card": {
                "HolderName": "Test Person",
                "Number": "VISA-4369",
                "ExpirationMonth": "05",
                "ExpirationYear": "2021",
                "IssuingBankCountry": null
            },
            "CreditCardToken": null,
            "Status": {
                "ID": 9,
                "Info": "Authorized",
                "Reasons": []
            },
            "MethodTransactionID": null,
            "AuthorizationCode": "591659",
            "PaymentTokenLifetime": 10,
            "Capture": false,
            "RedirectURL": null,
            "3DSecure": false,
            "DeviceInfo": {
                "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
                "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
                "BrowserJavaEnabled": false,
                "BrowserJavaScriptEnabled": true,
                "BrowserLanguage": "ro-RO",
                "BrowserColorDepth": "24",
                "BrowserScreenHeight": "1080",
                "BrowserScreenWidth": "19200",
                "BrowserTimeZone": "-180"
            },
            "ScaExemption": "MerchantInitiatedTransaction",
            "CardOnFile": {
              "IsInitial": false,
              "TransactionType": "Recurring",
              "InitialPaymentID": 1234
              },
            "Fraud": {
                "Status": "Accept",
                "Score": 31,
                "Reason": "No decision provided"
            }
        }
    }

3D Secure 2.0 Pass-Through Payments

You can submit a request to authorize payments using authentication data from your own 3D Secure MPI provider, by sending the necessary 3D Secure parameters listed below in the object 3DSecureData.

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_3a",
    "Amount": "100",
    "Currency": "EUR",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "Test Description",
    "StatementDescriptor": "Dynamic Test Description",
    "Card": {
      "HolderName": "Test Person",
      "Number": "4548812049400004",
      "ExpirationMonth": "11",
      "ExpirationYear": "2025",
      "SecurityCode": "123",
      "RequireSecurityCode": true
    },
    "Capture": false,
    "GenerateCreditCardToken": false,
    "PaymentTokenLifetime": 10,
    "3DSecure": true,
    "3DSecureData": { 
      "AuthenticationStatus": "Y",
      "ECI": "05",
      "CAVV": "MDA5ODYyNjQxMzEyNzQxMTQ4NzA=",
      "DSID": "c272b04f-6e7b-43a2-bb78-90f4fb94aa25",
      "3DSecureVersion": "2.1.0"
      },
    "ScaExemption": "LowValueTransaction",
    "Language": "ro-RO",
    "SkinID": 200
  }
}

Response:

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

{
    "Payment": {
        "ID": 208158,
        "ClientIP": null,
        "SkinID": 200,
        "Created": "20190828082527",
        "MerchantTransactionID": "s2ptest_3a",
        "OriginatorTransactionID": null,
        "Amount": 100,
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "Test Description",
        "StatementDescriptor": "Dynamic Test Description",
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Card": {
            "HolderName": "Test Person",
            "Number": "VISA-0004",
            "ExpirationMonth": "11",
            "ExpirationYear": "2025",
            "IssuingBankCountry": null
        },
        "CreditCardToken": null,
        "Status": {
            "ID": 9,
            "Info": "Authorized",
            "Reasons": []
        },
        "MethodTransactionID": null,
        "AuthorizationCode": "143383",
        "PaymentTokenLifetime": 10,
        "Capture": false,
        "RedirectURL": null,
        "3DSecure": true,
        "3DSecureData": {
            "AuthenticationStatus": "Y",
            "ECI": "05",
            "CAVV": "MDA5ODYyNjQxMzEyNzQxMTQ4NzA=",
            "DSID": "c272b04f-6e7b-43a2-bb78-90f4fb94aa25",
            "3DSecureVersion": "2.1.0"
        },
        "DeviceInfo": null,
        "ScaExemption": "LowValueTransaction",
        "Fraud": {
            "Status": "Accept",
            "Score": 31,
            "Reason": "No decision provided"
        }
    }
}

3D Secure 2.0 Payments

3D Secure 2.0 is the new authentication protocol that provides an additional layer of verification for card transactions. Strong Customer Authentication (SCA) requires merchants to integrate into the checkout flow a two-factor authentication, requiring their customers to use two out of three elements: something only the user knows like a password, something only the user possesses like the phone and something only the user possesses like a fingerprint.

Checkout the below example of a payment using the 3D Secure 2.0 protocol.

Although 3D Secure 2.0 protocol requires sending much more additional details, it increases the chances for a smooth and frictionless payment flow.

Request:

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

{
  "Payment": {
  "MerchantTransactionID": "s2ptest_6a",
  "Amount": "100",
  "Currency": "EUR",
  "ReturnURL": "http://demo.smart2pay.com/redirect.php",
  "Description": "Test Description",
  "StatementDescriptor1": "Dynamic Test Description",
  "BillingAddress": {
    "City": "Iasi",
    "ZipCode": "7000-49",
    "State": "Iasi",
    "Street": "Sf Lazar",
    "StreetNumber": "37",
    "HouseNumber": "5A",
    "HouseExtension": "-",
    "Country": "RO"
    },
  "ShippingAddress": {
    "City": "Iasi",
    "ZipCode": "700049",
    "State": "Iasi",
    "Street": "Sf Lazar",
    "StreetNumber": "37",
    "HouseNumber": "-",
    "HouseExtension": "-",
    "Country": "RO" 
    },
  "Customer": {
    "MerchantCustomerID": "3452342354232",
    "Email": "accept@accept.com",
    "Firstname": "Test",
    "Lastname": "Person",   
    "SocialSecurityNumber": "45908-28324",
    "Phone": "0744-783322",
    "Company": "S2P",
    "Gender": "1"
    },
  "Card": {
    "HolderName": "Test Person",
    "Number": "4548812049400004",
    "ExpirationMonth": "11",
    "ExpirationYear": "2025",
    "SecurityCode": "123",
    "RequireSecurityCode": true
    },
  "Capture": false,
  "GenerateCreditCardToken": false,
  "PaymentTokenLifetime": 10,
  "3DSecure": true,
  "DeviceInfo": {
    "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
    "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
    "BrowserJavaEnabled": false,
    "BrowserJavaScriptEnabled": true,
    "BrowserLanguage": "ro-RO",
    "BrowserColorDepth": "24",
    "BrowserScreenHeight": "1080",
    "BrowserScreenWidth": "1920",
    "BrowserTimeZone": "-180"
    },
  "ScaExemption": "LowValueTransaction",
  "Language": "ro-RO",
  "SkinID": 200
  }
}

Response:

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

{
    "Payment": {
        "ID": 208161,
        "ClientIP": null,
        "SkinID": 200,
        "Created": "20190828091954",
        "MerchantTransactionID": "s2ptest_6a",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "Test Description",
        "StatementDescriptor": "Static Description",
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": {
            "ID": 647,
            "MerchantCustomerID": "3452342354232",
            "Email": "accept@accept.com",
            "FirstName": "Test",
            "LastName": "Person",
            "Gender": "1",
            "SocialSecurityNumber": "45908-28324",
            "Phone": "0744-783322",
            "Company": "S2P"
        },
        "BillingAddress": {
            "ID": 253,
            "City": "Iasi",
            "ZipCode": "7000-49",
            "State": "Iasi",
            "Street": "Sf Lazar",
            "StreetNumber": "37",
            "HouseNumber": "5A",
            "HouseExtension": "-",
            "Country": "RO"
        },
        "ShippingAddress": {
            "ID": 87,
            "City": "Iasi",
            "ZipCode": "700049",
            "State": "Iasi",
            "Street": "Sf Lazar",
            "StreetNumber": "37",
            "HouseNumber": "-",
            "HouseExtension": "-",
            "Country": "RO"
        },
        "Articles": null,
        "Card": {
            "HolderName": "Test Person",
            "Number": "VISA-0004",
            "ExpirationMonth": "11",
            "ExpirationYear": "2025",
            "IssuingBankCountry": null
        },
        "CreditCardToken": null,
        "Status": {
            "ID": 9,
            "Info": "Authorized",
            "Reasons": []
        },
        "MethodTransactionID": null,
        "AuthorizationCode": "591659",
        "PaymentTokenLifetime": 10,
        "Capture": false,
        "RedirectURL": null,
        "3DSecure": true,
        "DeviceInfo": {
            "BrowserAcceptHeader": "application/json, text/javascript, */*; q=0.01",
            "BrowserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
            "BrowserJavaEnabled": false,
            "BrowserJavaScriptEnabled": true,
            "BrowserLanguage": "ro-RO",
            "BrowserColorDepth": "24",
            "BrowserScreenHeight": "1080",
            "BrowserScreenWidth": "19200",
            "BrowserTimeZone": "-180"
        },
        "ScaExemption": null,
        "Fraud": {
            "Status": "Accept",
            "Score": 31,
            "Reason": "No decision provided"
        }
    }
}

PayWithMyBank Recurring Payment

Definition: POST /v1/payments/recurrent

A recurring payment is created in the same manner a one-off payment is created. In addition, you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the information specific to each payment method.

For PayWithMyBank (58), you need to send the PreapprovalID (the PreapprovalID received when you created/opened a preapproval) and the Amount to be captured:

Request:

POST https://paytest.smart2pay.com/v1/payments/recurrent
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk={
 "Payment": {
   "PreapprovalID": 19800,
   "MerchantTransactionID": "s2ptest_h-1",
   "Amount": 20,
   "Currency": "USD",
   "MethodID": 58
  }
}

Response:

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

{
    "Payment": {
        "ID": 4722746,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20190729142257",
        "MerchantTransactionID": "s2ptest_h-1",
        "OriginatorTransactionID": null,
        "Amount": "20",
        "Currency": "USD",
        "CapturedAmount": null,
        "ReturnURL": null,
        "Description": "",
        "MethodID": 58,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 19800,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
    }
}

Please be aware that the final status of the payment can be received in up to 3 business days depending on the customer’s Bank used!

PayWithMyBank Close a Preapproval

Definition: DELETE /v1/preapprovals/{id}

Where:
  • {id} – GlobalPay Preapproval ID

To close a preapproval, you must send a DELETE action for an existing preapproval object.

Checkout the below example to close a preapproval for PayWithMyBank (58):

Request:

DELETE https://paytest.smart2pay.com/v1/preapprovals/19800
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

Response:

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

{
    "Preapproval": {
        "ID": 19800,
        "Created": "20190729134913",
        "MethodID": 58,
        "SiteID": 30201,
        "MerchantPreapprovalID": "s2ptest_h-1",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": "20",
        "Currency": "USD",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "Update: 1 year subscription",
        "Customer": {
            "ID": 2625948,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 520,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "US"
        },
        "Status": {
            "ID": 4,
            "Info": "ClosedByCustomer",
            "Reasons": null
        },
        "RedirectURL": null,
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}

PayWithMyBank Change a Preapproval

Definition: PATCH /v1/preapprovals/{id}

Where:
  • {id} – GlobalPay Preapproval ID

You can change the attributes of an already created preapproval by applying a PATCH.

Checkout the below example to change a preapproval for PayWithMyBank (58):

Request:

PATCH https://paytest.smart2pay.com/v1/preapprovals/19800
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
 "Preapproval": {
   "MerchantPreapprovalID": "s2ptest_h-1",
   "PreapprovedMaximumAmount": 20,
   "Currency": "USD",
   "Description": "Update: 1 year subscription",
   "ReturnURL": "http://demo.smart2pay.com/redirect.php",
   "MethodID": 58,
   "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "jdoe@gmail.com"
     },
   "BillingAddress": {
      "Country": "US"
      }
   }
}

Response:

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

{
    "Preapproval": {
        "ID": 19800,
        "Created": "20190729134913",
        "MethodID": 58,
        "SiteID": 30201,
        "MerchantPreapprovalID": "s2ptest_h-1",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": "20",
        "Currency": "USD",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "Update: 1 year subscription",
        "Customer": {
            "ID": 2625948,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 520,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "US"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/PWMB/Landing/PreapprovalLanding.aspx?ID=15352&Hash=8FCF71570B0E7CE025C33B27E34F4493",
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}

PayWithMyBank Preapproval Notification

Upon successful approval, we will notify you about the new status of the preapproval to the URL you setup in the Merchant Dashboard.

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

Preapproval notification format for PayWithMyBank:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
"Preapproval": {
  "ID": 19800,
  "Created": "20190729134913",
  "MethodID": 58,
  "SiteID": 30201,
  "MerchantPreapprovalID": "s2ptest_h-1",
  "RecurringPeriod": 0,
  "PreapprovedMaximumAmount": "20",
  "Currency": null,
  "ReturnURL": "http://demo.smart2pay.com/redirect.php",
  "Description": "1 year subscription",
  "Customer": {
    "ID": 2625948,
    "MerchantCustomerID": null,
    "Email": "jdoe@gmail.com",
    "FirstName": "John",
    "LastName": "Doe",
    "Gender": null,
    "SocialSecurityNumber": null,
    "Phone": null,
    "Company": null,
    "DateOfBirth": null
  },
  "BillingAddress": {
    "ID": 520,
    "City": null,
    "ZipCode": null,
    "State": null,
    "Street": null,
    "StreetNumber": null,
    "HouseNumber": null,
    "HouseExtension": null,
    "Country": "US"
  },
  "Status": {
    "ID": 2,
    "Info": null,
    "Reasons": null
  },
  "RedirectURL": null,
  "MethodOptionID": 0,
  "PreapprovedFrequency": null,
  "MandateReference": null,
  "Details": null
  }
}

Response:

204 No Content

The message contains a Preapproval object with an updated Status, which can have the following meanings:

PREAPPROVAL STATUS
ID Info Description
1 Pending The customer needs to confirm the preapproval
2 Open The customer confirmed and you can use the preapproval to initiate recurring payments
4 ClosedByCustomer The preapproval is closed and can no longer be used to initiate recurring payments

PayWithMyBank Preapproval Request

Definition: POST /v1/preapprovals

To initiate a preapproval, you must create a preapproval object. The parameters of the preapproval are sent in the message body as a JSON object. See below an example of a preapproval request for PayWithMyBank (58).

With PayWithMyBank, you can create preapprovals that can allow you to form subsequent recurrent payments. This is the most flexible type and allows the merchant to fully control when to initiate the money transfer(s) between the end user’s account and the merchant’s account (credits or debits). The Preapproval call basically creates a transaction representing the end user’s authorization to use their account for payments on the terms set in the request.

A transaction ID is returned to the merchant within the return URL in the Preapproval response/notification. The merchant must store this transaction ID in the end user’s payment profile to allow future recurrent requests. The amount sent on the initial call defines the maximum aggregate amount that can be captured from the end user’s account across all recurrent calls. A zero-amount value on the Preapproval call removes this upper bound limit. With that setting, the merchant can enable open-ended recurrent scenarios.

For PayWithMyBank preapproval requests CustomerName and CustomerEmail parameters are mandatory in the initial payment request.

Request:

POST https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
 "Preapproval": {
   "MerchantPreapprovalID": "s2ptest_h-1",
   "PreapprovedMaximumAmount": 20,
   "Currency": "USD",
   "Description": "1 year subscription",
   "ReturnURL": "http://demo.smart2pay.com/redirect.php",
   "MethodID": 58,
   "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "jdoe@gmail.com"
     },
   "BillingAddress": {
      "Country": "US"
      }
   }
}

Response:

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

{
    "Preapproval": {
        "ID": 19800,
        "Created": "20190729134913",
        "MethodID": 58,
        "SiteID": 30201,
        "MerchantPreapprovalID": "s2ptest_h-1",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": "20",
        "Currency": "USD",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "1 year subscription",
        "Customer": {
            "ID": 2625948,
            "MerchantCustomerID": null,
            "Email": "jdoe@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 520,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "US"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/PWMB/Landing/PreapprovalLanding.aspx?ID=15351&Hash=CD3F91C3DF49E901E91240FA42D89A64",
        "MethodOptionID": 0,
        "PreapprovedFrequency": null,
        "MandateReference": null,
        "Details": null
    }
}

GlobalPay Status Codes

List of transaction status IDs
Status ID Name Description *Final Status Applicable for
1 Open The transaction is initiated in our system. No Payments / Refunds / Payouts
2 Success The transaction is successful. Yes Payments / Refunds / Payouts
3 Cancelled The payment was cancelled. The payments that can be cancelled are the payments with “Authorized” status or the payments that are cancelled by the customer on the form. Yes Payments
4 Failed The transaction has failed. Yes Payments / Refunds / Payouts
5 Expired The time period the customer had for completing the payment has expired. Yes Payments
6 PendingOnCustomer The payment is awaiting approval from the customer. No Payments
7 PendingOnProvider The payment is awaiting approval from the downstream partners/acquirers. No Payments
8 Submitted The payment has been submitted. No Payments
9 Authorized The payment was successfully authorized. In the initial request the Capture parameter is sent to false so the responsibility of the capturing the payment is on the merchants side.
The goods can be delivered.
No Payments
10 AuthorizeRequested The payment has been submitted for authorization. No Payments
11 Captured The transaction has been captured. Only payments with “Authorized” status can be captured.
The goods can be delivered.
Yes Payments
12 Rejected The transaction has been rejected. Yes Payments
13 CaptureRequested The payment was successfully authorized and the capture request was also sent to the provider.
The goods can be delivered.
No Payments
14 Exception The transaction needs manual review from Smart2Pay. No Payments / Payouts
15 CancelRequested The cancel request has been sent. No Payments
16 Reversed The authorization has been reversed (the money were credited back to the customer account). Yes Payments / Payouts
17 Completed The transaction has been completed by the customer. No Payments
18 Processing The transaction is being processed. No Payments
19 Disputed The payment is disputed by the customer. No Payments
21 PartiallyRefunded The payment has been partially refunded with a smaller amount than the one from the initial paid transaction. Yes Payments
22 Refunded The payment has been refunded with an equal amount as the one from the initial paid transaction. Yes Payments
23 DisputeWon The cardholder has lost the dispute and the money will return to the merchant. Yes Chargebacks
24 DisputeLost The cardholder has won the dispute and has received the money back. Yes Chargebacks
25 Paid The transaction has been paid. Yes Payments
26 Chargedback The cardholder has won the dispute and has received the money back. Yes Payments
27 SecondDisputeWon The cardholder has lost the second dispute and the money will return to the merchant. Yes Chargebacks
28 SecondDisputeLost The cardholder has won the second dispute and has received the money back. Yes Chargebacks
30 PendingChallengeConfirmation The fraud provider has challenged the payment. Payment is authorized. You can reject or accept the challenge. No Payments
33 QueuedForCapturing The payment will be sent automatically for capturing. No further action from you is required.
The goods can be delivered.
No Payments
34 QueuedForCanceling The payment will be sent automatically for canceling. No further action from you is required. No Payments
35 PartiallyCaptured The payment is partially captured. Yes Payments
36 SuccessWaitForFraud No Payments
37 ExceptionWaitForFraud No Payments
38 Retrieval Retrieval request indicates that the customer wants more information about a transaction and inquires their issuing bank and asks for additional information on the charge, but hasn’t yet initiated a chargeback. Yes Chargebacks
39 SoftDeclined A soft decline may occur when the issuing bank will not proceed with a transaction that require SCA and doesn’t meet these requirements. For more information see our dedicated section about: Strong Customer Authentication (SCA). Yes Payments

* In exceptional cases it is possible to receive different notifications and your system should be able to handle such situations. If an additional notification is received with Success Status, it overwrites any previous notification.

PSD2 and Strong Customer Authentication (SCA)

The Second Payment Services Directive (PSD2), a set of laws and regulations for payment services in the European Union (EU) and the European Economic Area (EEA), has come with a lot of implications for marketplace business models already, and it will expand further more on all companies in Europe that deal with payments, ranging from how to regulate the emergence of Third Party Providers (TPPs) to the need for strong customer authentication (SCA).

Strong Customer Authentication (SCA) has come into force starting with 14 September 2019 and all the transactions that did not comply with the new authentication guidelines have been declined by the banks.

Strong Customer Authentication (SCA) has to be applied when all of the conditions below are met:

  • The business is based in the European Economic Area (EEA);
  • The customers are from EEA area;
  • The payment is initiated online by the customer.

SCA requires merchants to integrate into the checkout flow a two-factor authentication that is based on the use of two or more elements categorized as:

  • knowledge (something only the user knows, i.e password);
  • possession (something only the user possesses: i.e, phone, token, certificate tec.);
  • inherence (something the user is: i.e. fingerprint, Face ID).

For an authentication to meet the criteria of the PSD2, it must combine at least 2 of these 3 factors. To strongly authenticate an online payment, for example, consumers will be required to use their phone (something you own) and authenticate via fingerprint (something you are).

As of September 14, only the credit card number alone was no longer considered as a valid authentication method and additional factors that meet the requirements of PSD2, such as biometric data, had to be added in the authentication process.

The 3D Secure version 1.0 authentication method used for credit card payments is being updated to version 2.0, which is the best measure to meet the above compliance criteria.

Apart from these cases there are a few exemptions to SCA, but keep in mind that banks can choose to not honor these exemptions and you need to be prepared to handle a SCA challenge even if the transactions has been submitted under one of the exemptions.

Below is the list with the most relevant ones. For more detailed information, check out our dedicated section Exemptions to Strong Customer Authentication (SCA).

Exemptions to Strong Customer Authentication (SCA)
Exemption Description
Low Value Small amounts less than 30 EUR: For a transaction of less than 30 EUR and up to 100 EUR accumulated or up to 5 transactions since the last SCA. Beyond 100 EUR or beyond 5 unauthenticated transactions, a new SCA is required. Keep in mind that since the information needed to validate these stipulations is only available to the issuing bank, you will still need to confirm if SCA is required on all transactions that might fall into this exemption category.
Low Risk / TRA Transactional Risk Analysis: SCA can be deactivated for online payments between €30 and €500, depending on the payment providers fraud rates (see table below). There are no low-risk exemptions for transactions over €500. Merchants have to rely on a payment service provider (e.g. an acquirer) to act upon their request. In addition, the test to trigger the exemption rests with whether the PSP satisfies the prescribed conditions, not the merchants themselves. Nuvei keeps a very low fraud rate by using state of the art anti-fraud solutions such as RedShield, Machine Learning algorithms and by working with low risk acquiring banks which have very good fraud scores.
MIT Merchant Initiated Transaction (MIT): are payment transactions that are not initiated by the payer but by the payee only and are not subject to strong customer authentication (SCA) to the extent that these transactions are initiated without any interaction or involvement of the payer. MIT transactions are subjected to SCA except when a mandate is signed by the client. For example, SEPA Direct Debits are initiated by the merchant but have a direct debit mandate signed by the end customer. Thus, SCA is not applicable in this case and there are no restrictions to the frequency or the amount (obtained scheme transaction identifier needs to be provided for use in the subsequent transactions).
Trusted Beneficiaries Payment to a trusted beneficiary: Customers can add their preferred online sellers to a list of trusted beneficiaries held by the issuing bank, so that they don’t required to authenticate for each new payment. Please instruct your customers if possible to add your business to the white-list at their bank.
Secure Corporate payments SCA can de deactivated for corporate card payments made through secure processes and protocols initiated by businesses and not available for consumers. Payments that are included in this category are those made through central travel accounts, lodged cards, virtual cards, and secure corporate cards, like the ones used in a corporate travel management system.

Payout Notification

We will notify you about the new status of the payout to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Payout notification format:

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payout": {
    "ID": 4390,
    "Created": "20201216060630",
    "MerchantTransactionID": "s2ptest_a12",
    "Amount": "3",
    "Currency": "PLN",
    "MethodID": 12,
    "Description": "Test Payout",
    "SiteID": 30199,
    "Details": null,
    "Customer": {
      "ID": 2677591,
      "MerchantCustomerID": null,
      "Email": "test@test.com",
      "FirstName": "John",
      "LastName": "Smith",
      "Gender": null,
      "SocialSecurityNumber": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 13966,
      "City": "City",
      "ZipCode": "700000",
      "State": null,
      "Street": "Street",
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "PL"
    },
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    }
  }
}

Response:

204 No Content
  • Pay With Crypto Payouts / Withdrawals (97) are processed almost instantly (within less than 2-3 minutes for most times) and the Amounts reaches the user Crypto Account within 10-15 minutes.

    Payout notification format:

    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
      "Payout": {
        "ID": 4989,
        "Created": "20210312154614",
        "MerchantTransactionID": "s2p_test_restcd156463",
        "Amount": "3000",
        "Currency": "EUR",
        "MethodID": 97,
        "Description": "Test Payout",
        "SiteID": 30201,
        "Details": null,
        "Customer": null,
        "BillingAddress": null,
        "Status": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        },
        "MethodTransactionID": ""
      }
    }

    Response:

    204 No Content

Get information on a specific Payout

You can get information about a payout by using GET HTTP request.

Definition: GET /v1/payouts/{id}

Where:
  • {id} – GlobalPay Payout ID

Request:

GET https://paytest.smart2pay.com/v1/payouts/376
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

Response:

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

{
    "Payout": {
        "ID": 376,
        "Created": "20190507131247",
        "MerchantTransactionID": "s2ptest_j1",
        "Amount": "1000",
        "Currency": "EUR",
        "MethodID": 1,
        "Description": null,
        "SiteID": 30201,
        "Details": null,
        "Customer": {
            "ID": 335,
            "MerchantCustomerID": "0125",
            "Email": "youremail@email.com",
            "FirstName": "Example",
            "LastName": "Test",
            "Gender": "F",
            "SocialSecurityNumber": "ABCDE1234F",
            "Phone": "0765260000",
            "Company": "S2P",
            "DateOfBirth": "19800519"
        },
        "BillingAddress": null,
        "Status": {
            "ID": 2,
            "Info": "Success",
            "Reasons": null
        }
    }
}

Create a Payout

Definition: POST /v1/payouts

The payment methods that support payouts are: SEPA Payouts (MethodID = 1), Trustly (MethodID = 29), P24 (MethodID = 12), Pay With Crypto (MethodID = 97), Interac Instant (MethodID = 100),Giropay (MethodID = 4),PayU (MethodID = 19),PayPal (MethodID = 94),Secure Bank Transfer (MethodID = 98),Open Banking (MethodID = 101),Qiwi Wallet (MethodID = 1003). Please keep in mind that is always mandatory to send the MethodID parameter in the payout request, otherwise the payout request will fail.

To initiate a payout, you must create a payout object. The parameters of the payout are sent in the message body as a JSON object.

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

    • For SEPA Payouts (1) you need to send in the request the below parameters, including the Customer’s first and last name and Customer IBAN parameter.

      Request:

      POST https://paytest.smart2pay.com/v1/payouts
      Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
      
      {
        "Payout": {
          "MerchantTransactionID": "s2ptest_j1",
          "Amount": 2000,
          "Currency": "EUR",
          "MethodID": 1,
          "Customer": {
            "Email": "test@test.com",
            "FirstName": "John",
            "LastName": "Smith"
           },
          "BillingAddress": {
          "Country": "NL"
          },
          "Details": {
            "CustomerIBAN": "NL611904300234573201"
          }
        }
      }

      Response:

      HTTP/1.1 201 Created
      Content-Type: application/json; charset=utf-8
      
      {
        "Payout": {
          "ID": 376,
          "Created": "20200821131247",
          "MerchantTransactionID": "s2ptest_j1",
          "Amount": 2000,
          "Currency": "EUR",
          "MethodID": 1,
          "Description": null,
          "SiteID": 30201,
          "Customer": {
            "ID": 335,
            "MerchantCustomerID": null,
            "Email": "test@test.com",
            "FirstName": "John",
            "LastName": "Smith",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
           },
          "BillingAddress": {
            "ID": 170,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "NL"
            },
           "Status": {
             "ID": 1,
             "Info": "Open",
             "Reasons": null
          }
        }
      }

    • For P24 Payouts (12) you need to send in the request the following parameters: Customer’s details first name, last name, email address and Customer IBAN parameter. Also, please send the Billing address parameters: Country, City, Street and ZipCode. These parameters will appear on the bank statement.

      Request:

      POST https://paytest.smart2pay.com/v1/payouts
      Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
      
      {
        "Payout": {
          "MerchantTransactionID": "s2ptest_a12",
          "Amount": 3,
          "Currency": "PLN",
          "Description": "Test Payout",
          "MethodID": "12",
          "Customer": {
            "Email": "test@test.com",
            "FirstName": "John",
            "LastName": "Smith"
           },
          "BillingAddress": {
            "City": "City",
            "ZipCode": "700000",
            "Street": "Street",
            "Country": "PL"
          },
          "Details": {
            "CustomerIBAN": "PL24109024027163352166834377"
            }
          }
        } 

      Response:

      HTTP/1.1 201 Created
      Content-Type: application/json; charset=utf-8
      
      {
          "Payout": {
              "ID": 4390,
              "Created": "20201216060630",
              "MerchantTransactionID": "s2ptest_a12",
              "Amount": "3",
              "Currency": "PLN",
              "MethodID": 12,
              "Description": "Test Payout",
              "SiteID": 30199,
              "Details": {
                  "CustomerIBAN": "PL24109024027163352166834377"
              },
              "Customer": {
                  "ID": 2677591,
                  "MerchantCustomerID": null,
                  "Email": "test@test.com",
                  "FirstName": "John",
                  "LastName": "Smith",
                  "Gender": null,
                  "SocialSecurityNumber": null,
                  "Phone": null,
                  "Company": null,
                  "DateOfBirth": null
              },
              "BillingAddress": {
                  "ID": 13966,
                  "City": "City",
                  "ZipCode": "700000",
                  "State": null,
                  "Street": "Street",
                  "StreetNumber": null,
                  "HouseNumber": null,
                  "HouseExtension": null,
                  "Country": "PL"
              },
              "Status": {
                  "ID": 1,
                  "Info": "Open",
                  "Reasons": null
              }
          }
      }

For B2B payouts you can send in the request the Company parameter instead of FirstName and LastName parameters.

Request:

POST https://paytest.smart2pay.com/v1/payouts
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payout": {
    "MerchantTransactionID": "s2ptest_j1",
    "Amount": 2000,
    "Currency": "EUR",
    "MethodID": 1,
    "Customer": {
      "Email": "test@test.com",
      "Company": "Test Company SRL"
     },
    "BillingAddress": {
    "Country": "NL"
    },
    "Details": {
      "CustomerIBAN": "NL611904300234573201"
    }
  }
}

Also, you can avoid sending each time the Customer and Country details by sending the CustomerID and BillingAddressID – the ones you receive in the initial Response.

Request:

POST https://paytest.smart2pay.com/v1/payouts
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payout": {
    "MerchantTransactionID": "s2ptest_j1",
    "Amount": 2000,
    "Currency": "EUR",
    "MethodID": 1,
    "Customer": {
      "ID": 335
     },
    "BillingAddress": {
    "ID": 170
    },
    "Details": {
      "CustomerIBAN": "NL611904300234573201"
    }
  }
}

  • For Trustly Payouts(29) you need to send in the request the Customer Bank Account ID parameter.

    Request:

    POST https://paytest.smart2pay.com/v1/payouts
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
      "Payout": {
        "MerchantTransactionID": "s2ptest_j1",
        "Amount": 1000,
        "Currency": "EUR",      
        "MethodID": 29,
        "Customer": {    
          "Email": "youremail@email.com"   
        },
        "Details":{
          "CustomerBankAccountID": "3541977722"}
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payout": {
            "ID": 376,
            "Created": "20190507131247",
            "MerchantTransactionID": "s2ptest_j1",
            "Amount": "1000",
            "Currency": "EUR",           
            "MethodID": 29,
            "Description": null,
            "SiteID": 30201,
            "Details": {
                "CustomerBankAccountID": "3541977722"
            },
            "Customer": {
                "ID": 335,
                "MerchantCustomerID": null,
                "Email": "youremail@email.com",
                "FirstName": null,
                "LastName": null,
                "Gender": null,
                "SocialSecurityNumber": null,
                "Phone": null,
                "Company": null,
                "DateOfBirth": null
            },
            "BillingAddress": null,
            "Status": {
                "ID": 1,
                "Info": "Open",
                "Reasons": null
            }
        }
    }

  • For Pay With Crypto Payouts (97) you need to send in the request the mandatory parameters Crypto Address and Crypto Currency.

    Request:

    POST https://paytest.smart2pay.com/v1/payouts
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
      "Payout": {
        "MerchantTransactionID": "s2p_test_restcd156462",
        "Amount": 3000,
        "Currency": "EUR",
        "Description": "Test Payout",
        "MethodID": "97",
        "Details": {
          "CryptoAddress": "0x9006203f86D7381a3d227fe54310C9fD4e2d1552",
          "CryptoCurrency": "ETH"
          }
        }
      }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payout": {
            "ID": 4989,
            "Created": "20210312154614",
            "MerchantTransactionID": "s2p_test_restcd156462",
            "Amount": "3000",
            "Currency": "EUR",
            "MethodID": 97,
            "Description": "Test Payout",
            "SiteID": 30201,
            "Details": {
                "CryptoAddress": "0x9006203f86D7381a3d227fe54310C9fD4e2d1552",
                "CryptoCurrency": "ETH"
            },
            "Customer": null,
            "BillingAddress": null,
            "Status": {
                "ID": 1,
                "Info": "Open",
                "Reasons": null
            },
            "MethodTransactionID": null
        }
    }

  • For Interac Instant Payouts (100) you also need to send in the request the mandatory parameters SecurityQuestion and SecurityAnswer together with the email address, name and phone number. We recommend that the MerchantCustomerID and the IPAddress to be sent although they are optional parameters. See below the full request of a payout with all the mandatory and optional parameters.

    Request:

    POST https://paytest.smart2pay.com/v1/payouts
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
      "Payout": {
        "MerchantTransactionID": "s2p_test_214rtt5431645",
        "Amount": 100,
        "Currency": "CAD",
        "MethodID": 100,
        "Description": "from REST",
        "Customer": {
          "Email": "john@test.com", 
          "FirstName": "John", 
          "LastName": "Doe", 
          "Phone": "6135550104",
          "MerchantCustomerID": "test5"
        },
        "Details": {
          "SecurityQuestion": "What is your favorite city", 
          "SecurityAnswer": "Toronto", 
          "IPAddress": "1.2.3.4" 
        }
      }
    }
    

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
        "Payout": {
            "ID": 5569,
            "Created": "20210511082638",
            "MerchantTransactionID": "s2p_test_214rtt5431645",
            "Amount": "100",
            "Currency": "CAD",
            "MethodID": 100,
            "Description": "from REST",
            "SiteID": 30199,
            "Details": {
                "SecurityQuestion": "What is your favorite city",
                "SecurityAnswer": "Toronto",
                "IPAddress": "1.2.3.4"
            },
            "Customer": {
                "ID": 2721756,
                "MerchantCustomerID": "test5",
                "Email": "john@test.com",
                "FirstName": "John",
                "LastName": "Doe",
                "Gender": null,
                "SocialSecurityNumber": null,
                "Phone": "6135550104",
                "Company": null,
                "DateOfBirth": null
            },
            "BillingAddress": null,
            "Status": {
                "ID": 1,
                "Info": "Open",
                "Reasons": null
            },
            "MethodTransactionID": null
        }
    }

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/payouts
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payout": {
    "MerchantTransactionID": "s2ptest_j2",
    "Amount": 1000,
    "Currency": "EUR",      
    "Customer": {    
      "Email": "youremail@email.com"   
    },
    "Details":{
      "CustomerBankAccountID": "3541977722"
    }
  }
}

Response:

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

{
    "Payout": {
        "ID": 0,
        "Created": null,
        "MerchantTransactionID": "s2ptest_j2",
        "Amount": "1000",
        "Currency": null,
        "Description": null,
        "SiteID": 30201,
        "Details": {
            "CustomerBankAccountID": "3541977722"
        },
        "Customer": {
            "MerchantCustomerID": null,
            "Email": "youremail@email.com",
            "FirstName": null,
            "LastName": null,
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": null,
        "Status": {
            "ID": null,
            "Info": null,
            "Reasons": [
                {
                    "Code": "1",
                    "Info": "Missing parameter - MethodID"
                }
            ]
        }
    }
}

Disputes Details

Go to Disputes tab from the dashboard and use the search filters to find a specific dispute. After you have found the transaction you have been looking for, using the search filters, just double click on it to see specific details of that dispute.

A new window will open containing the general details for that Dispute ID and also providing details about specific sections, like: Reporting, Reason Codes and Initial Payment.

The dashboard Dispute Details allows the user to always find specific information in order to be informed and keep track of his day-to-day operations and disputes.

General provides detailed information for the following fields: ID of the dispute, Initial Payment ID, Input Date Time, Merchant ID, Merchant Site ID, Method ID, Merchant Alias, Merchant Site Alias, Method Name, Amount, Currency and Status.

32

Reporting provides detailed information for the following fields: Notification Date Time and Last Notified Status.

32

Reason Codes provides detailed information for the following fields: Reason Code and Reason.

32

Initial payment provides detailed information for the following fields: ID, Merchant Transaction ID, Originator Transaction ID, Input Date Time, Amount, Currency, Status, Available Amount, Method ID, Method Name and Country.

32

Disputes List

Access the Disputes tab in order to see and verify your disputes. Here you will find a complete list of all of your payments that are disputed by the customer. You have the possibility to search for a specific dispute using different search filters, to see the details of the disputes, and to export your disputes into an Excel file.

32

Search filters

When you access the Disputes tab, the Search Filters section is expanded. In order to collapse it just click the arrow on the right of the screen.

You can search disputes by ID (the dispute id in the GlobalPay system), Initial Payment ID, Method, Amount, Currency, Status, Interval (from – to) and Site Alias.

32

Disputes Details

After you have found the transaction you’ve been looking for, using the search filters, just click on it to see the specific details of that dispute.

A new window will open containing the general details for that disputes ID and also providing details about specific sections, like: Reporting, Reason Codes, Initial Payment.

66

Export transactions

The list of disputes can be exported (filtered or not) to an .xls file. Click on the Export to EXCEL button at the end of the list of payments.

32

The downloaded file contains the following information: ID, Input Date/Time, Payment ID, Originator Transaction ID, Amount, Currency, Status, Status ID, Method, Method ID, Site ID, Site Alias, Reason Code and Reason.

32

Preapprovals Details

Go to Preapprovals tab from the dashboard and use the search filters to find a specific preapproval. After you have found the transaction you have been looking for, using the search filters, just double click on it to see specific details of that preapproval.

A new window will open containing the general details for that Preapproval ID and also providing details about all the payments associated with that preapproval.

The dashboard Preapprovals Details allows the user to always find specific information in order to be informed and keep track of his day-to-day operations and preapprovals.

General provides detailed information for the following fields: ID of the preapproval, Merchant Preapproval ID, Status, Method ID,Site ID, Site Alias, Merchant Alias, Merchant ID, Input Date Time, Description, Details, Maximum Amount, Currency, Method Option ID, Frequency, Mandate Reference.

32

Payments contains a list of all the payments associated with that preapproval and provides detailed information for the payment’s following fields: Payment ID, Merchant Transaction ID, Amount, Currency, Status, Method, Root Provider Transaction ID, Site, Country.

32

Preapprovals List

Access the Preapprovals tab in order to see and verify your preapprovals. Here you will find a complete list of all of your preapprovals. You have the possibility to search for a specific preapproval using different search filters, to see the details of the preapproval and all the payments associated with the preapproval.

32

Search filters

When you access the Preapprovals tab, the Search Filters section is expanded. In order to collapse it just click the arrow on the right of the screen.

You can search preapprovals by ID (the preapproval id in the GlobalPay system, a unique number that identifies the preapproval in the GlobalPay system; you will need to store this id in order to initiate recurring payments.), Merchant Preapproval ID (the preapproval id in your system), Status, Method, Site Alias and Interval (from – to).

32

Preapprovals Details

After you have found the transaction you’ve been looking for, using the search filters, just click on it to see the specific details of that preapproval.

A new window will open containing the general details for that Preapproval ID and also providing details about all the payments associated with that preapproval.

32

Capture scenarios for PostFinance Card

 

Capture Scenarios Response Status Description Notification Status Description

The transaction has been fully captured.

Only payments with “Authorized” status (9) can be captured.
Intermediary Status: 13 Capture Requested Final Notification Status: 2 Success

The payment has been partially captured.

Only payments with “Authorized” status can be partially captured. The payment has been sent out to be partially captured, but the payment gateway has not yet confirmed that the payment is successful.
Intermediary Status: 13 Capture Requested Final Notification Status: 35 Partially Captured
Capture Failed Scenarios Return Code Description

Retry Capture

This happens when the request timeouts at Provider; a new capture request has to be initiated.
Return Code: 157 Unable to capture transaction

The transaction could not be captured.

The transaction is not in an Authorized status (it has already been fully Captured or Partially Captured).
Return Code: 17 Payment is invalid

For a complete list of all the possible Return Code IDs go to our section GlobalPay Return Codes.

See the request – response examples for the above possible scenarios:

  • Success Status

    A payment can only be captured if it has an Authorized status. Once the payment has an Authorized status (9), you can capture either the full amount or a partial amount of the initial authorized amount for the transaction.

    A 200 HTTP response (OK) is returned if the request was completed successfully.

    Full capture means you capture the entire authorized amount for the initial transaction.

    Request:

    POST https://paytest.smart2pay.com/v1/payments/4424180/capture
    Authorization: Basic MzAxNTE6V05ydTJ5WnJpR2RtNVVMZWt4dFM4cHprUXNRSmdYYTZBZnlnT3FXZXcvNlRBYzNYK1A=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 4424180,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20190320121124",
            "MerchantTransactionID": "PostFinance_55EMI",
            "OriginatorTransactionID": null,
            "Amount": "1000",
            "Currency": "CHF",
            "CapturedAmount": null,
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 1129,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30151,
            "NotificationDateTime": "20190320121338",
            "Customer": null,
            "BillingAddress": {
                "ID": 7808,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "CH"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 13,
                "Info": "CaptureRequested",
                "Reasons": null
            },
            "MethodTransactionID": null,
            "TokenLifetime": 10,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=FFABC0234D73F9D23DAC72E1DFC52E61.4424180"
        }
    }
    

    We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

    Payment notification format:

    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
      "Payment": {
        "ID": 4424180,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20190320121124",
        "MerchantTransactionID": "PostFinance_55EMI",
        "OriginatorTransactionID": null,
        "Amount": "1000",
        "Currency": "CHF",
        "CapturedAmount": "1000",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "",
        "MethodID": 1129,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30151,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
          "ID": 7808,
          "City": null,
          "ZipCode": null,
          "State": null,
          "Street": null,
          "StreetNumber": null,
          "HouseNumber": null,
          "HouseExtension": null,
          "Country": "CH"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
          "ID": 2,
          "Info": "Success",
          "Reasons": null
        },
        "MethodTransactionID": null,
        "TokenLifetime": 10,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=FFABC0234D73F9D23DAC72E1DFC52E61.4424180"
      }
    }
    

  • Partially Captured Status

    Partial capture means you have the possibility to capture a smaller amount than the one from the initial authorized transaction. Partial capture is used when you have sent at least part of the order to the consumer and want to capture the amount for the item(s) that have been shipped.

    You can perform only one partial capture for an authorized transaction with the limitation that the amount of the partial capture to be smaller or equal than the initial authorized amount.

    Specify only the captured amount parameter in the query string, in order to partially capture the payment, like in the below example:

    Request:

    POST https://paytest.smart2pay.com/v1/payments/4424180/capture?amount=500
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

    Response:

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 4424180,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20190320121124",
            "MerchantTransactionID": "PostFinance_55EMI",
            "OriginatorTransactionID": null,
            "Amount": "1000",
            "Currency": "CHF",
            "CapturedAmount": null,
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": null,
            "MethodID": 1129,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30151,
            "NotificationDateTime": "20190320121338",
            "Customer": null,
            "BillingAddress": {
                "ID": 7808,
                "City": null,
                "ZipCode": null,
                "State": null,
                "Street": null,
                "StreetNumber": null,
                "HouseNumber": null,
                "HouseExtension": null,
                "Country": "CH"
            },
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 13,
                "Info": "CaptureRequested",
                "Reasons": null
            },
            "MethodTransactionID": null,
            "TokenLifetime": 10,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=FFABC0234D73F9D23DAC72E1DFC52E61.4424180"
        }
    }
    

    We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

    Payment notification format:

    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk={
      "Payment": {
        "ID": 4424180,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20190320121124",
        "MerchantTransactionID": "PostFinance_55EMI",
        "OriginatorTransactionID": null,
        "Amount": "1000",
        "Currency": "CHF",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "",
        "MethodID": 1129,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30151,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
          "ID": 7808,
          "City": null,
          "ZipCode": null,
          "State": null,
          "Street": null,
          "StreetNumber": null,
          "HouseNumber": null,
          "HouseExtension": null,
          "Country": "CH"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
          "ID": 35,
          "Info": "PartiallyCaptured",
          "Reasons": null
        },
        "MethodTransactionID": null,
        "TokenLifetime": 10,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=FFABC0234D73F9D23DAC72E1DFC52E61.4424180"
      }
    }
    

  • Return Code: 157 – Unable to capture transaction

    The transaction could not be captured. Retry Capture. This happens when the request timeouts at Provider.

    Request:

    POST https://paytest.smart2pay.com/v1/payments/4426277/capture
    Authorization: Basic MzAxNTE6V05ydTJ5WnJpR2RtNVVMZWt4dFM4cHprUXNRSmdYYTZBZnlnT3FXZXcvNlRBYzNYK1A=

    Response:

    HTTP/1.1 400 Bad Request
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 4426277,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20190322135942",
            "MerchantTransactionID": "s2ptest_a3",
            "OriginatorTransactionID": null,
            "Amount": "1000",
            "Currency": "CHF",
            "CapturedAmount": null,
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "test test",
            "MethodID": 1129,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30151,
            "NotificationDateTime": "20190322140025",
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 9,
                "Info": "Authorized",
                "Reasons": [
                    {
                        "Code": "157",
                        "Info": "Unable to capture transaction"
                    }
                ]
            },
            "MethodTransactionID": null,
            "TokenLifetime": null,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": null
        }
    }

  • Return Code: 17 – Payment is invalid

    The transaction could not be captured. The transaction is not in an Authorized status. You can receive this response when the payment you want to Capture is not Authorized or when the payment has already been Captured.

    Request:

    POST https://paytest.smart2pay.com/v1/payments/4426219/capture
    Authorization: Basic MzAxNTE6V05ydTJ5WnJpR2RtNVVMZWt4dFM4cHprUXNRSmdYYTZBZnlnT3FXZXcvNlRBYzNYK1A=

    Response:

    HTTP/1.1 400 Bad Request
    Content-Type: application/json; charset=utf-8{
        "Payment": {
            "ID": 4426219,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20190322125640",
            "MerchantTransactionID": null,
            "OriginatorTransactionID": null,
            "Amount": null,
            "Currency": null,
            "CapturedAmount": null,
            "ReturnURL": null,
            "Description": null,
            "MethodID": 1129,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30151,
            "NotificationDateTime": null,
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 13,
                "Info": "CaptureRequested",
                "Reasons": [
                    {
                        "Code": "17",
                        "Info": "Payment is invalid - 4426219"
                    }
                ]
            },
            "MethodTransactionID": null,
            "TokenLifetime": null,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": null
        }
    }

PayTM Test Data

For PayTM payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

PayTM – Test Payment Flow

  1. The customer enters his Email Address, Name and Permanent account number (PAN).
    Please note that for India the CustomerSocialSecurityNumber parameter consists of PAN. For more information about the PAN please click here.

    1 Enter customer details

  2. The customer is redirected to the PayTM Wallet where he needs to add the mobile number registered for the wallet account.1 Login
  3. The Customer checks the payment resume and confirms the payment by clicking on the Pay now button.1 Confirm payment
  4. Payment is processed. Once confirmed, the customer is routed back to order confirmation. The customer receives a message that the payment has been completed correctly.1 Process payment
  5. Upon completion of the payment flow the customer is redirected back to your ReturnURL.1 Return page when the redirection status is a success

PostFinance e-finance Test Data

For PostFinance e-finance payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

PostFinance e-finance Payment Flow

  1. The customer enters his e-finance number or usernames and password. For customers with several users (e.g. partner account): they need to enter their user ID as well. He confirms by using Next button.

    1 Login details

  2. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

PostFinance Card Test Data

For PostFinance Card payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

PostFinance Card Payment Flow

  1. The customer has the possibility to pay via PostFinance App or via his PostFinance Card.

    1 ID Number

  2. If the customer chooses to pay with the PostFinance App, he uses the QR code for registration with the PostFinance App. He starts the PostFinance and selects “Pay in online shops” via the menu in the top left.

    1 ID Number

  3. If the customer chooses to pay with his PostFinance Card, he enters his ID number and continues the payment.

    1 ID Number

  4. The customer enters his Card Number. He finalizes the payment by using the Pay button.

    1 Card number

  5. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Reporting

  1. Nuvei generates a daily transactional report file for the Marketplace. The transactional report file contains the following information:

    ID
    ID
    Definition
    The ID of the transaction in Smart2Pay system
    Type
    int
    : The ID of the transaction in Nuvei system;

    MerchantTransactionID
    MerchantTransactionID
    Definition
    Merchant Transaction ID, a number that uniquely identifies a transaction in your system.
    Type
    string
    : Merchant Transaction ID, a number that uniquely identifies a transaction in your system;

    OriginatorTransactionID
    OriginatorTransactionID
    Definition
    The ID of the transaction/refund in The Marketplace system
    Type
    string
    : The ID of the transaction/refund in The Marketplace system;

    InputDateTime
    InputDateTime
    Definition
    The date and time of inserting the transaction in Smart2Pay system
    Type
    datetime
    : The date and time of inserting the transaction in Nuvei system;

    PaymentStateDefID
    PaymentStateDefID
    Definition
    The ID of the payment status in Smart2Pay system. It can have the following values: 1 - Open, 2 - Success, 3 - Cancelled, 4 - Failed, 5 - Expired, 9 - Authorized, 11 - Captured.
    : The status id of the transaction in Nuvei system;

    Status
    Status
    Definition
    The description of the transaction status in the Smart2Pay system: Open (Pending), Success (not used for card payments), Cancelled, Failed, Expired, Authorized, Captured.
    : The description of the transaction status in the Nuvei system;

    MerchantAmount
    MerchantAmount
    Definition
    The amount of the transaction.
    Type
    float
    : The amount of the transaction;

    MerchantCurrency
    MerchantCurrency
    Definition
    The currency of the transaction. ISO 4217 format (e.g. EUR)
    : The currency of the transaction;

    CapturedAmount
    CapturedAmount
    Definition
    The amount that has been captured. Float with 2 decimals (e.g. 33.99)
    Type
    float
    : The amount that has been captured;

    MethodID
    MethodID
    Definition
    The ID of the payment methods used. For credit cards payments the ID is 6.
    Type
    int
    : The ID of the payment methods used. For credit cards payments this is 6.;

    MethodName
    MethodName
    Definition
    The name of the payment method used: SmartCards.
    : The name of the payment method used.;

    ReportedByBOTOperatorDate
    ReportedByBOTOperatorDate
    Definition
    The date when the transaction was exported to CSV file.
    Type
    datetime
    : The date when the transaction was exported to csv file;

    SpecificDetails
    SpecificDetails
    Definition
    Specific Details
    : Not used;

    ReconciliationProviderID
    ReconciliationProviderID
    Definition
    The ID that appears on the bank statement of the customer (usually same as RootProviderTransactionID).
    Type
    string
    : ID appearing on the bank statement of the customer (usually same as RootProviderTransactionID);

    ProviderTransactionID
    ProviderTransactionID
    Definition
    Provider Transaction ID
    : Not used for card payments;

    MerchantAlias
    MerchantAlias
    Definition
    The name of the Shop.
    Type
    string
    : Shop Name;

    RootProviderTransactionID
    RootProviderTransactionID
    Definition
    The ID of the payment in acquiring system.
    Type
    string
    : ID of the payment in acquiring system;

    Country
    Country
    Definition
    The country of the payer if available. ISO_3166-1_alpha-2 format. (e.g. IT).
    : The country of the payer if available.

  2.  

  3. Nuvei will generate a Settlement invoice report containing information at transaction level for each shop. The Settlement invoice report contains the following information:

    1 Settlement invoice report per shop

    GPaymentId
    GPaymentId
    Definition
    GPaymentId
    : Not used;

    PaymentId
    PaymentId
    Definition
    The ID of the payment in Smart2Pay system.
    Type
    int
    : PaymentID in Nuvei system;

    Type
    Type
    Definition
    Transaction Type. It can be type: Payment, Refund, Inquiry or Chargeback.
    Type
    string
    : Transaction Type. Can be Payment, Refund, Inquiry or Chargeback;

    PaymentMethodName
    PaymentMethodName
    Definition
    The name of the payment method used. E.g. SmartCards
    Type
    string
    : Name of the payment method used;

    CustomerName
    CustomerName
    Definition
    The name of the customer, if available.
    Type
    string
    : The name of the customer, if available;

    MerchantName
    MerchantName
    Definition
    The name of the merchant account.
    Type
    string
    : The name of the merchant account;

    MerchantID
    MerchantID
    Definition
    The ID of the transaction/refund in your system.
    Type
    string
    : The transaction/refund id in your system;

    GtId
    GtId
    Definition
    GtId
    : Not used;

    IssuerName
    IssuerName
    Definition
    Issuer Name
    : Not used;

    IdealTrxId
    IdealTrxId
    Definition
    IdealTrxId
    : Not used;

    Country
    Country
    Definition
    The country of the payer, if available. ISO_3166-1_alpha-2 format. (e.g. IT).
    : The country of the payer, if available;

    InputDateTime
    InputDateTime
    Definition
    The date and time of inserting the transaction in Smart2Pay system.
    Type
    datetime
    : The date and time of inserting the transaction in Nuvei system;

    Amount
    Amount
    Definition
    The amount of the transaction.
    Type
    float
    : The amount of the transaction;

    Currency
    Currency
    Definition
    The currency of the transaction. ISO 4217 format (e.g. EUR).
    : The currency of the transaction;

    Status
    Status
    Definition
    The description of the transaction status in the Smart2Pay system: Open (Pending), Success (not used for card payments), Cancelled, Failed, Authorized, Captured
    : The description of the transaction status in the Nuvei system;

    ExchangeRate
    ExchangeRate
    Definition
    The exchange rate if the transaction needs to be converted from transaction currency to the settlement currency.
    Type
    float
    : The exchange rate if the transaction needs to be converted from transaction currency to the settlement currency;

    CalculatedAmount
    CalculatedAmount
    Definition
    The transaction amount converted to the settlement currency.
    Type
    float
    : The transaction amount converted to the settlement currency;

    ReferenceCurrency
    ReferenceCurrency
    Definition
    The settlement currency.
    Type
    float
    : The settlement currency;

    TransactionFee
    TransactionFee
    Definition
    Gateway fee (if applies).
    Type
    float
    : Gateway fee (if applies);

    GeneralFee
    GeneralFee
    Definition
    Gateway fee (if applies)
    Type
    float
    : Gateway fee (if applies);

    AttemptFee
    AttemptFee
    Definition
    Gateway fee (per attempt, if applies).
    Type
    float
    : Gateway fee (per attempt, if applies);

    IssuedFee
    IssuedFee
    Definition
    Gateway fee (per acquiring bank/payment method provider attempt fee if applies).
    Type
    float
    : Gateway fee (per acquiring bank/payment method provider attempt fee if applies);

    LocalVatFee
    LocalVatFee
    Definition
    Local payment method VAT (if applies).
    Type
    float
    : Local payment method VAT (if applies);

    VAT
    VAT
    Definition
    Value added tax (if applies).
    Type
    float
    : Value added tax (if applies);

    Comission
    Comission
    Definition
    Commission of the marketplace/agent (if applies).
    Type
    float
    : Commission of the marketplace/agent (if applies);

    SiteID
    SiteID
    Definition
    The ID of the shop.
    Type
    int
    : ID of the shop;

    SiteAlias
    SiteAlias
    Definition
    Shop Alias.
    Type
    string
    : Shop Alias;

    OriginatorTransactionID
    OriginatorTransactionID
    Definition
    The ID of the transaction/refund in The Marketplace system.
    Type
    string
    : The ID of the transaction/refund in The Marketplace system.
  4.  

  5. Nuvei will also generate an aggregated Settlement invoice report containing information at transaction level for the Marketplace. Settlement of the commission will be based on this settlement invoice. Format is the same as in the Settlement invoice report above.

Below there are examples of Settlement invoice reports in all supported formats:

Marketplace Operator Invoice

The total payout amount to the marketplace operator is computed using the below algorithm.

Algorithm: TPM (total payout marketplace) = CO – D2

Where:
  • CO (commission amount) = B + C – A2 – A3
  • OR (Operator Remitted fees) = E – A4
  • B, C, A2, A3 – as defined in Shop Settlement Invoices section
  • D2 (Acquiring Fees) = TBD_FIXED_FEE + TBD_%_FEE * CO

Shop Settlement Invoices

The total payout amount to be paid to the shop is computed using the below algorithm.

Algorithm: TPS (total payout shop) = TA – D2

Where:
  • TA (transfer_amount) = A – B – R – C – D1
  • A (order/taxes/fees) = A1 + A2 + A3
  • A1 = ORDER_AMOUNT + ORDER_SHIPPING_AMOUNT + ORDER_AMOUNT_TAX + ORDER_SHIPPING_AMOUNT_TAX
  • A2 = REFUND_COMMISSION_FEE (return the commission back to shop in case of a refund) + REFUND_COMMISSION_VAT
  • A3 = MANUAL_CREDIT + MANUAL_CREDIT_VAT
  • A4 = OPERATOR_REMITTED_REFUND_ORDER_AMOUNT_TAX + OPERATOR_REMITTED_REFUND_ORDER_SHIPPING_AMOUNT_TAX
  • B (operator commission) = COMMISION_FEE + COMMISION_VAT
  • R(refunds) = REFUND_ORDER_AMOUNT + REFUND_ORDER_SHIPPING_AMOUNT + REFUND_ORDER_AMOUNT_TAX + REFUND_ORDER_SHIPPING_AMOUNT_TAX
  • C (non transactional fees) = SUBSCRIPTION_FEE + SUBSCRIPTION_VAT + MANUAL_INVOICE + MANUAL_INVOICE_VAT
  • D1 (Acquiring Fees) = FIXED_FEE + %_FEE * A1
  • D2 (Settlement Fees) = FIXED_FEE + %_FEE * TA
  • E (Operator Remitted fees) = OPERATOR_REMITTED_ORDER_AMOUNT_TAX + OPERATOR_REMITTED_REFUND_ORDER_SHIPPING_AMOUNT_TAX

Pre-Settlement Transaction API

Information about all the transactions created or updated within a certain interval can be retrieved by using an action based on GET HTTP request. The response will contain a transaction list in JSON format that returns all the transactions that were created or updated in the interval start_date – end_date.

Only a limited amount of details for each transaction will be provided.

Definition: GET /v1/transactions?{start_date}&{end_date}

Where:
  • {start_date} – format: {Year(4)}-{month(2)}-{day(2)}T{Hour(2)}:{Minute(2)}:{Second(2)}Z)
  • {end_date} – format: {Year(4)}-{month(2)}-{day(2)}T{Hour(2)}:{Minute(2)}:{Second(2)}Z)

Request Model:

GET /v1/transactions?{start_date}&{end_date}
Authorization: Basic Pre-shared-APIKEY

Response Model:

{
    "transactions": [
        {
            "amount": 0.80,
            "currency": "EUR",
            "date_created": "2018-09-17T12:55:08Z",
            "last_updated": "2018-10-12T00:00:30Z",
            "cart_id": 1234,
            "order_id": "34991440-A",
            "order_line_id" : "34991440-A-1",
            "payment_state": "PAID",
            "payment_batch_number": "000068",
            "refund_id": null,
            "seller_id": 6221,
            "seller_name": "Best Shop",
            "transaction_type": "COMMISSION_VAT"
        },
        {
            "amount": 3.33,
            "currency": "EUR",
            "date_created": "2018-09-17T12:55:08Z",
            "last_updated": "2018-10-12T00:00:30Z",
            "cart_id": 1235,
            "order_id": "34991440-A",
            "order_line_id" : "34991440-A-1",
            "payment_state": "PAID",
            "payment_batch_number": "000068",
            "refund_id": null,
            "seller_id": 6221,
            "seller_name": "Best Shop",
            "transaction_type": "COMMISSION_FEE"
        },
        {
            "amount": 0,
            "currency": "EUR",
            "date_created": "2018-09-17T12:55:08Z",
            "last_updated": "2018-10-12T00:00:30Z",
            "cart_id": 1236,
            "order_id": "34991440-A",
            "order_line_id" : "34991440-A-1",
            "payment_state": "PAID",
            "payment_batch_number": "000068",
            "refund_id": null,
            "seller_id": 6221,
            "seller_name": "Best Shop",
            "transaction_type": "ORDER_SHIPPING_AMOUNT"
        },
        {
            "amount": 10.00,
            "currency": "EUR",
            "date_created": "2018-09-17T12:55:08Z",
            "last_updated": "2018-10-12T00:00:30Z",
            "cart_id": 1237,
            "order_id": "34991440-A",
            "order_line_id": "34991440-A-1",
            "payment_state": "PAID",
            "payment_batch_number": "000068",
            "refund_id": null,
            "seller_id": 6221,
            "seller_name": "Best Shop",
            "transaction_type": "ORDER_AMOUNT"
        },
        {
            "amount": 1.60,
            "currency": "EUR",
            "date_created": "2018-09-17T12:55:08Z",
            "last_updated": "2018-10-12T00:00:30Z",
            "cart_id": 1238,
            "order_id": "34991440-A",
            "order_line_id" : "34991440-A-2",
            "payment_state": "PAID",
            "payment_batch_number": "000068",
            "refund_id": null,
            "seller_id": 6221,
            "seller_name": "Best Shop",
            "transaction_type": "COMMISSION_VAT"
        },
        {
            "amount": 6.66,
            "currency": "EUR",
            "date_created": "2018-09-17T12:55:08Z",
            "last_updated": "2018-10-12T00:00:30Z",
            "cart_id": 1239,
            "order_id": "34991440-A",
            "order_line_id" : "34991440-A-2",
            "payment_state": "PAID",
            "payment_batch_number": "000068",
            "refund_id": null,
            "seller_id": 6221,
            "seller_name": "Best Shop",
            "transaction_type": "COMMISSION_FEE"
        },
        {
            "amount": 0,
            "currency": "EUR",
            "date_created": "2018-09-17T12:55:08Z",
            "last_updated": "2018-10-12T00:00:30Z",
            "cart_id": 1240,
            "order_id": "34991440-A",
            "order_line_id" : "34991440-A-2",
            "payment_state": "PAID",
            "payment_batch_number": "000068",
            "refund_id": null,
            "seller_id": 6221,
            "seller_name": "Best Shop",
            "transaction_type": "ORDER_SHIPPING_AMOUNT"
        },
        {
            "amount": 10.00,
            "currency": "EUR",
            "date_created": "2018-09-17T12:55:08Z",
            "last_updated": "2018-10-12T00:00:30Z",
            "cart_id": 1241,
            "order_id": "34991440-A",
            "order_line_id" : "34991440-A-2",
            "payment_state": "PAID",
            "payment_batch_number": "000068",
            "refund_id": null,
            "seller_id": 6221,
            "seller_name": "Best Shop",
            "transaction_type": "ORDER_AMOUNT"
        }
    ],
    "total_count": 8
}

The transaction_type field contains the following information:

  • COMMISSION_VAT
  • COMMISSION_FEE
  • ORDER_SHIPPING_AMOUNT
  • ORDER_AMOUNT
  • MANUAL_CREDIT
  • MANUAL_CREDIT_VAT
  • ORDER_AMOUNT_TAX
  • ORDER_SHIPPING_AMOUNT_TAX
  • REFUND_ORDER_AMOUNT
  • REFUND_ORDER_SHIPPING_AMOUNT
  • REFUND_COMMISSION_FEE
  • REFUND_COMMISSION_VAT
  • REFUND_ORDER_AMOUNT_TAX
  • REFUND_ORDER_SHIPPING_AMOUNT_TAX
  • SUBSCRIPTION_FEE
  • SUBSCRIPTION_VAT
  • CHARGE_ALL_FEES_INSTRUCTIONS

Only the transactions with payment_state = “PAID” will be settled in the current settlement cycle.

Settlement Flow

Settlement cycles are defined in Nuvei system. Based on this, Nuvei generates settlement invoices for each shop. Also, Nuvei generates a commission settlement invoice for The Marketplace.

The acquiring banks and alternative payment method providers settle to Nuvei the (Gross amount – Acquiring/Processing Fees).

  • Nuvei settles gross amount – operator commission – acquiring fees to each shop. Settlement frequency: weekly.
  • Nuvei settles commission to The Marketplace based on Transaction Log API exposed by the Marketplace. Settlement frequency: weekly.

Optional functionalities:

  • Subscription fee can be collected by Nuvei from the shops on behalf of the marketplace operator.
  • Manual credits / debits will be issued by The Marketplace towards the shops and performed by Smart2Pay.
  • The Marketplace can withhold the payment of certain transactions towards the shop (e.g. only the transactions with PaymentStatus marked as PAID will be settled).

Reconciliation

Nuvei reconciles at transaction level with the acquiring banks and alternative method providers.

The SiteID / APIKEY will be used to initiate the transactions towards Smart2Pay. The Marketplace Transaction ID needs to be submitted by Nuvei REST API in the OriginatorTransactionID field for reporting and reconciliation purposes towards the shops / Marketplace.

Transactional Flow

Orders containing items from multiple shops will be sent for authorization in multiple transactions, each transaction containing items for a single shop.

Credit card transactions are authorized and their status is communicated on the following route: Acquirer -> Nuvei -> Marketplace.

Transactions are manually captured within 7 days from authorization.

Tokenization, 3D and fraud prevention solutions are available upon request. For more information visit: Credit Card Payments.

Alternative payment methods are authorized and captured in one step and their status is communicated on the following route: Payment method provider -> Nuvei -> Marketplace.

You need to integrate our REST API described here: https://docs-apm.nuvei.com.

Nuvei Android SDK Instructions for Credit Cards (Java)

The interaction flow is described next:

  1. Upon order initiation form the customer
  2. Your server asks our server for a temporary API Key at entry point api/authorization/apikey:

    Request:

    POST https://securetest.smart2pay.com/v1/authorization/apikey
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
  3. Our server responds with a temporary API Key:

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "ApiKey": {
        "Value": "MzAwMDc6M2FkODVhYzctNjhlNS00MTA2LTliNjctNTg3MmM1ZmI2ZDNiLTYzMzA=",
        "Created": "20181206141407",
        "LifeTime": 30,
        "AccessCounterLimit": 10,
        "Status": {
          "ID": 2,
          "Info": "Success",
          "Reasons": []
        }
      }
    }

  4. The temporary API Key must be passed to the app.
  5. From the app you collect the credit cards details from which you build a CardAuthenticationRequest object, together with the temporary API key obtained in the previous step. Set callback functions to handle Success and Failure cases.
    CardAuthenticationRequest cardAuthenticationRequest = new CardAuthenticationRequest("Basic " + apiKey, true);
    
    HashMap card = new HashMap();
    card.put("HolderName", ((EditText)findViewById(R.id.e_cardholder_name)).getText().toString());
    card.put("Number", ((EditText)findViewById(R.id.e_cc_number)).getText().toString());
    card.put("ExpirationMonth", ((EditText)findViewById(R.id.e_exp_month)).getText().toString());
    card.put("ExpirationYear", ((EditText)findViewById(R.id.e_exp_year)).getText().toString());
    card.put("SecurityCode", ((EditText)findViewById(R.id.e_cvv)).getText().toString());
    
    cardAuthenticationRequest.setRequestBody(CCAuthenticateRequestBodyBuilder.getBody(card));
    cardAuthenticationRequest.setCallback((new CardAuthenticationRequest.Callback() {
        public void onSuccess(@NonNull final String creditCardToken) {
            // Authorization was successful!
            // Send it to your server and initiate a transactions via REST API: https://docs-apm.nuvei.com/category/direct-card-processing/one-click-payment/
            Log.d("TokenForCreditCard", creditCardToken);
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    displayDebugInfo("Credit Card Token:" + creditCardToken);
                }
            });
        }
    
        public void onFailure() {
            Log.w(TAG,"Card Authentication request failed.");
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    displayDebugInfo("Card Authentication request failed.");
                }
            });
        }
    }));
    cardAuthenticationRequest.enqueue();
    
  6. Our SDK calls our server with these details.
  7. The server responds with a token to our SDK.
  8. Our SDK passed the token back to your APP via the callback function setup in step 5.
  9. The order can now be submitted from the app to your server together with the token
  10. A credit card transaction using token is now initiated from your server. For more details go to: Recurring Card Payments section. You can store the token on your server for subsequent purchases.
  11. Our server responds to your server with the Authorization result. Upon a successful result you can release the goods or services.
  12. You pass the payment result to the app.

SDK is now fully functional in your app!

Nuvei iOS SDK Instructions (Swift)

Now that you have imported the Smart2Pay.SDK package into your app, you need to follow the below steps in order to set up the Mobile SDK for iOS in Swift language.

  1. To get back to the app after doing a payment we need to set an URL Scheme.

    Select the Project icon again in your file hierarchy – make sure you are in the Info tab – URL Types.

    Fold it open and click the + button. You only need to set URL Schemes field. For example, you can use your bundle identifier. This ensures that there’s no other app that uses this URL Scheme.

    We’re all set to make a payment now!

  2. Create a payment from the data you’ve attained from the API.

    
    ```
    Let payment = Payment(id: id)
    payment.amount = 100 // This is in cents
    payment.currency = "CNY" // Use the three letter abbreviation
    payment.type = .ALIPAY // or .WECHAT 
    payment.delegate = this // The current view controller with PaymentManagerDelegate implementation
    let paymentManager = PaymentManager("urlscheme from step 4")
    paymentManager.pay(payment)
    ```
    
  3. Make sure the view controller uses the delegate implementation:

    PaymentManager.PaymentManagerDelegate

    For example, your view controller could look like this:

    
    `
    class ViewController: UIViewController, PaymentManagerDelegate {
    `
    

    To get the callbacks from the Payment Manager you need to add these two functions:

    
    ```
    func onPaymentSuccess(_ payment: Payment, _ body: [String: Any]) {
    }
        
    func onPaymentFailure(_ payment: Payment) {
    }
    ```
    

    The information needed is inside the payment. This is the structure of a Payment:

    
    ```
    class Payment {
       enum PaymentProvider: Int {
            case NONE = 0
            case ALIPAY = 24
            case WECHAT = 1066
        }
        var id: Int = 0
        var type = PaymentProvider.NONE
        var amount: Int = 0
        var currency: String = ""
        var instructions: String = "" 
        var delegate: PaymentManagerDelegate?
    }
    ```
    

SDK is now fully functional in your app!

Nuvei iOS SDK Installation

You need to follow the below steps to build an in-app payment flow fully functional using Nuvei SDK in your iOS app using Swift.

  1. Download the Smart2Pay.framework.
  2. Import the framework into your project by either dragging it into the project or go to File | Add files to “project name”.
  3. Add the framework to the Embedded Binaries. Select the Project icon in your file hierarchy – make sure you are in the General tabEmbedded Binaries.

    There are three scenarios possible do the one that applies to you:

    • If you don’t see it in “Embedded Binaries” and don’t see it in the “Linked Frameworks and Libraries”, just click the + on “Embedded Binaries” and select the Smart2Pay.framework.
    • If you see it in “Linked Frameworks and Libraries” but not in “Embedded Binaries”, you should first remove it from “Linked Frameworks and Libraries” and click the + on “Embedded Binaries” and select the Smart2Pay.framework. This will automatically add it to both.
    • If you see it in both “Embedded Binaries” and “Linked Frameworks and Libraries”, you don’t need to do anything.

Now that the SDK is in the app we can actually use it in the code. Continue with setting up the SDK: Nuvei iOS SDK Instructions (Swift).

Shop Approval Notification

Whenever a shop is approved in Nuvei onboarding system, a notification is sent from Nuvei to the Marketplace to a page where the following info is send, and whether it was successful or not.

The Marketplace needs to respond with HTTP return code 204 (No Content) otherwise the approval will be resubmitted!

Definition: POST /api/shop/{ID}/notification

Where:
  • {ID} – ID of the shop

Shop Approval Notification Format:

{
    "merchant_site": {
        "shop_id": Int,
        "site_id": Int (eg. 31261),
        "api_key": "SmasdsPx6n2KJU9MNKcBdlqdLJZOXSl9IA/kdksjSsdDWD",
        "created": "Date (yyyy-mm-dd hh:mm:ss, eg. 2018-12-31 23:59:59)",
        "url": "http://www.johnshop.it",
    }
}

Response:

204 No Content

We recommend you to always verify the Notification content we sent and not just simply/automatically respond to our notifications.

In exceptional cases it is possible to receive duplicate notifications and your system should be able to handle such situations.

If you do not respond to the notifications of type Approval or our system will keep sending the notifications until it receives a response. At first you will be notified more often. Once the time passes the notifications from our system will be rare and they will eventually stop (after a period of time defined in our system, currently set to 7 days).

Get a List of Documents

Information about the required documents can be retrieved by using an action based on GET HTTP request. The response will contain a list of documents provided for each Shop ID in JSON format.

The resource exposed for GET requests at the download_link location will be the actual file in binary format.

Definition: GET /api/shops/{shop_id}/documents

Where:
  • {shop_id} – The ID of the shop, a unique number that identifies the shop in the GlobalPay system.

Request Model:

GET /api/shops/{shop_id}/documents
Authorization: Basic Pre-shared-APIKEY

Response Model:

{
    "shop_documents": [
        {
            "id": Int (Document id),
            "shop_id": Int,
            "date_uploaded": "Date (yyyy-mm-dd hh:mm:ss, eg. 2018-12-31 23:59:59)",
            "file_name": "String (Original file name if available)",
            "file_type": "doc" | "docx" | "pdf" | "jpg" | "jpeg" | "gif" | "png" | "bmp" | "tiff" | "tif",
            "file_size": Int (size in bytes expected to be downloaded),
            "type": "company_certificate" | "register_of_directors" | "bank_statement" | "passport" | "bill" | "other",
            "contact_email": "Email of contact for which this document was uploaded - applies ONLY for passport or bill (should match contact email)",
            "download_link": "Link to download the file (if available), if file is not exposed through web server, provide entry point where we can download the file"
        },
        ...
    ],
    "total_count": Int
}

The following documents are required by Nuvei KYC platform:

  1. Bank statement (Not older than 6 months, with account holder and IBAN code visible);
  2. Company certificate / Incorporation certificate (Not older than 6 months);
  3. Register of directors (or any other document showing the company’s legal representatives) (Not older than 6 months);
  4. Passport copy of company’s legal representatives: (Legible ID copy in color within validity period);
  5. Utility bill that can be used as proof of address for company’s legal representatives (Not older than 6 months).

Get a List of Shops

In order to import a list of newly created shops you will need to expose an API which Nuvei can call using an action based on GET HTTP request. The response will contain a shop list in JSON format that returns all the shops that were created or updated after last_updated_date.

Only a limited amount of details for each shop will be provided.

Definition: GET /api/shops?last_updated_date={last_updated_date}

Where:
  • {last_updated_date} – format: {Year(4)}-{month(2)}-{day(2)}T{Hour(2)}:{Minute(2)}:{Second(2)}Z)
    eg. 2021-01-01T20:11:01Z

Request Model:

GET /api/shops?last_updated_date=2021-01-01T20:11:01Z
Authorization: Basic Pre-shared-APIKEY 
Where:
  • Pre-shared-APIKEY – consists of the user name and password previously requested in the Shop Integration step

Response Model:

{
"shops": [
  {
    "shop_id": Int,
    "shop_name": String,
    "shop_state": "OPEN" | "CLOSED" | "SUSPENDED",
    "company_legal_name" : String,
    "company_number": String,
    "vat": String,
    "country": "String (ISO 3166-1 alpha-2-chars)",
    "company_type": String ("S.A.S." | "S.S." | "S.N.C." | "S.P.A." | "S.A.P.A" | "S.R.L" | "LLC" | "LLP" | "Corporation" | "Non-Profit" | "Parnership" | "Other")
    "company_type_text": String (In case company_type="Other")
    "business_sector": String ("Advisory services" | "Digital games" | "Education" | "Entertainment" | "Finance" | "Forex" | "Gambling" | "Mass media" | "Money transfer" | "Retail - fashion" | "Retail - other" | "Social networks" | "Software" | "Telecommunication" | "Transportation" | "Travel")
    "business_model": "String (information about products or services)",
    "main_activity": "String (what is merchant selling - will appear in agreement)",
    "date_of_establishment": "Date (yyyy-mm-dd hh:mm:ss, eg. 2018-12-31 23:59:59)",
    "company_website": String,
    "mcc": Int (https://en.wikipedia.org/wiki/Merchant_category_code),
    "ecommerce_sites": [ "http://www.site1.com", "http://www.site2.com", "http://www.site3.com" ] (max 3),
    "top_3_markets": [ "String (ISO 3166-1 alpha-2)", "String (ISO 3166-1 alpha-2)", "String (ISO 3166-1 alpha-2)" ] (max 3),
    "annual_volume": Int (in EUR),
    "atv": Int (Average transaction value in EUR),
    "headquarters_address": {
        "street": String,
        "zip_code": String,
        "city": String,
        "state": String,
        "phone": String,
        "fax": String,
        "country": "String (ISO 3166-1 alpha-2-chars)"
    },
    "banking_details": {
        "bank_name": String,
        "account_holder": String,
        "account_currency": "String (ISO 3 chars currency)",
        "iban": String,
        "account_number": String,
        "swift": String
    },
    "contact_informations": { (MANDATORY)
        "title": String ("Mr."|"Ms."|"Mrs."),        
        "firstname": String,
        "lastname": String,
        "email": "String MANDATORY",
        "country": "String (ISO 3166-1 alpha-2-chars)"
    },
    "ubos": [
        {
            "percentage": Int,
            "title": String ("Mr."|"Ms."|"Mrs."),
            "firstname": String,
            "lastname": String,
            "street": String,
            "zip_code": String
            "city": String,
            "state": String,
            "country": "String (ISO 3166-1 alpha-2-chars)",
        },
        ...
    ],
   "representatives": [
        {
            "signing_right": Boolean,
            "title": String ("Mr."|"Ms."|"Mrs."),
            "firstname": String,
            "lastname": String,
            "email": "String MANDATORY",
            "date_of_birth": "Date (yyyy-mm-dd hh:mm:ss, eg. 2001-12-31 23:59:59)",
            "street": String,
            "zip_code": String
            "city": String,
            "state": String,
            "country": "String (ISO 3166-1 alpha-2-chars)",
        },
        ...
    ],
    "date_created": "Date (yyyy-mm-dd hh:mm:ss, eg. 2021-01-20 23:59:59)",
    "last_updated_date": "Date (yyyy-mm-dd hh:mm:ss, eg. 2021-01-20 23:59:59)",
    "logo": String,
    "commision_trx_percentage": Float,
    "commision_trx_fixed_amount": Float,
    "commision_trx_currency": "String (ISO 3 chars currency)",
    }
],
"total_count": Int (number of shops in the list)
}

Not all fields are mandatory in the above request! If the Marketplace does not provide all the necessary data, the shop representative will fill the missing fields in Nuvei platform. Once Nuvei identifies a newly created shop, it creates an account in Nuvei KYC platform for the shop representative and sends an email asking to finalize the application (e.g. fill missing info, upload documents, sign the online contract).

Marketplace API

Marketplace API is the seamless solution that provides access to credit card payments and alternative payment methods for a Marketplace in a simple yet reliable legal and technical setup. Its aim is to provide a robust technical solution which will ensure that all of the participating shops as well as the marketplace will benefit of a seamlessly onboarding process, reliable and secure transaction processing, reconciliation to the penny and prompt settlements.

1 Marketplace - Processes and Systems

The technical process (KYC Flow) with all the necessary steps is described next:

  • The Marketplace accepts a new shop on its platform and creates an entry in the database.
  • The Marketplace exposes an API which Nuvei KYC platform calls several times per day to pull information about the newly created shops.
  • Nuvei KYC platform pulls all available information about the shop (ShopID, Alias, shop representative e-mail, documents etc.). If all the required information is not available, the merchant representative will have to fill it in on Nuvei KYC platform.
  • Nuvei will create an account for the shop in the Nuvei KYC platform and send an e-mail to the shop representative with the login details.
  • The shop representative will fill in any missing company related data and upload KYC/UBO specific documentation.
  • The shop representative signs online the Merchant agreement for Payment processing.
  • Nuvei Risk team reviews the company.
  • In case of approval, a siteID is generated in the Nuvei platform.
  • Nuvei will do a push notification to a page designated by The Marketplace with the following info ShopID, SiteID, APIKEY. The last two parameters need to be used when calling Nuvei REST API when processing the payments. The Marketplace needs to respond with HTTP return code 204 (No content) to the POST notification.

Mobile SDK – Cards

Besides Alipay and WeChat, our Mobile SDK can be used for in-app purchases using Credit Cards. The advantage of using our SDK is that the credit card details never reach your server, simplifying to a minimum the PCI requirements you must meet.

The interaction flow is described next:

  1. Upon order initiation form the customer
  2. Your server asks our server for a temporary API Key at entry point api/authorization/apikey:

    Request Model:

    POST https://securetest.smart2pay.com/v1/authorization/apikey
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
  3. Our server responds with a temporary API Key:

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "ApiKey": {
        "Value": "MzAwMDc6M2FkODVhYzctNjhlNS00MTA2LTliNjctNTg3MmM1ZmI2ZDNiLTYzMzA=",
        "Created": "20181206141407",
        "LifeTime": 30,
        "AccessCounterLimit": 10,
        "Status": {
          "ID": 2,
          "Info": "Success",
          "Reasons": []
        }
      }
    }

  4. The temporary API Key must be passed to the app.
  5. From the app you collect the credit cards details from which you build a CardAuthenticationRequest object, together with the temporary API key obtained in the previous step. Set callback functions to handle Success and Failure cases.
    CardAuthenticationRequest cardAuthenticationRequest = new CardAuthenticationRequest("Basic " + apiKey, true);
    
    HashMap card = new HashMap();
    card.put("HolderName", ((EditText)findViewById(R.id.e_cardholder_name)).getText().toString());
    card.put("Number", ((EditText)findViewById(R.id.e_cc_number)).getText().toString());
    card.put("ExpirationMonth", ((EditText)findViewById(R.id.e_exp_month)).getText().toString());
    card.put("ExpirationYear", ((EditText)findViewById(R.id.e_exp_year)).getText().toString());
    card.put("SecurityCode", ((EditText)findViewById(R.id.e_cvv)).getText().toString());
    
    cardAuthenticationRequest.setRequestBody(CCAuthenticateRequestBodyBuilder.getBody(card));
    cardAuthenticationRequest.setCallback((new CardAuthenticationRequest.Callback() {
        public void onSuccess(@NonNull final String creditCardToken) {
            // Authorization was successful!
            // Send it to your server and initiate a transactions via REST API: https://docs-apm.nuvei.com/category/direct-card-processing/one-click-payment/
            Log.d("TokenForCreditCard", creditCardToken);
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    displayDebugInfo("Credit Card Token:" + creditCardToken);
                }
            });
        }
    
        public void onFailure() {
            Log.w(TAG,"Card Authentication request failed.");
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    displayDebugInfo("Card Authentication request failed.");
                }
            });
        }
    }));
    cardAuthenticationRequest.enqueue();
    
  6. Our SDK calls our server with these details.
  7. The server responds with a token to our SDK.
  8. Our SDK passed the token back to your APP via the callback function setup in step 5.
  9. The order can now be submitted from the app to your server together with the token
  10. A credit card transaction using token is now initiated from your server. For more details go to: Recurring Card Payments section. You can store the token on your server for subsequent purchases.
  11. Our server responds to your server with the Authorization result. Upon a successful result you can release the goods or services.
  12. You pass the payment result to the app.

Roles Administration

The first user created for a merchant (the one created from the registration form) has a default role assigned. This role (Administrator) has all the access rights existent in the GlobalPay system.

69

Please note that access to this Roles Administration section is only available in production environment!

Click on Add a New Role button and you can create a new role. In the new form that opens, in the General section, you need to provide a role name and a description to the role.

69

In the Access Rights section you can assign access rights for the new role. When finished, click Save and your role will be created. The role you have just created is visible in the grid. You can create as many roles as you like.

70

If you want to remove or add new access rights to a role, or simply modify the name or the description you can click on the Edit button from the grid. And, of course, you can delete the roles you don’t need anymore using the Delete button from the grid.

Users Administration

When entering this section you will see in the grid your user and all the users you have created. These are all the users associated with your Merchant ID.

72

Please note that access to this Users Administration section is only available in production environment!

Click on Add a New User button and you can create a new user. In the new form that opens, in the General section, you need to provide a User Name and a User Email.

In the Roles section you can assign specific roles for the new user. You can assign to the new user one or more of the roles you have previously created.

In the Sites section you can assign specific websites to the new user. When finished, click Save and your new user will be created. Click Save and the new user will be saved and he will receive an email with the password. The User you have just created is visible in the grid. You can create as many users as you like.

Please note that a new user can also be created via API by submitting a POST HTTP request.

If you want to change user name or user email, remove or add roles or update the websites assign to an already created user, you need to click on the Edit button in the grid.

And, of course, you can delete the user accounts that do not serve you anymore using the Delete button from the grid.

74

In the Edit section you can also generate a new password for that specific user. When clicking Generate new password an email will be sent to that user with the new password.

Please be aware that if you assign a user a certain role (that contains specific access rights), that user will only have access to that restricted area defined by that role (and implicitly by the access rights).

Example:

You provide User1 with Role1 that includes NotificationURL-Update access right and Signature-Update access right. This means that User1 will only see two tabs when entering the dashboard: Account and Configuration. And he will have the right to generate a new signature and modify the Notification URL.

An update access right implicitly contains the view access right.

Example:

If the user has only one role that only contains the access right Signature-Update, that user will be able to see the Signature section and update the signature.

If the user has only one role that contains only Signature-view, that user will be able to access the Signature section, but won’t be able to update the signature.

Payment Methods

Here you will find a complete list of all the payment methods, you can easily verify the list of payment methods assigned to your merchant account or to request and activate new payment methods of your choice.

When you access the Payment Methods tab you will see a complete list of all the payment methods available for your merchant account. You have the possibility to search for specific payment methods using different search filters and to see the description for each payment method.

You can search for a specific payment method using the search filters available: payment method’s status, name, description, guaranteed status and countries available.

A very important step during the configuration process is setting up your payment methods. In this section you will be able to configure the preferred way to receive your payments and setup your desired payment methods. The payment methods are selected for an account when the account is created, but they can also be changed at any time needed.

There are a few possible actions available, in order for you to have a better management over your merchant account, that are explained below:

  • Request a new payment method:

    Using the first search filter from the top of the page, choose Can Request option from the dropdown list. A list of all the available payment methods that you can request for your account will appear.

    Once you find the desired payment method, click the “+” Request sign in front of it to add it to your account,

    A confirmation message will be displayed.

    After you have requested the payment method, you need to wait for Smart2pay approval of the payment method. Also, you can check the list of all your requested payment methods by using the first search filter from the top of the page. Choose Approval in Progress option from the dropdown list and a list of all your requested payment methods for your account will appear.

  • Activate a payment method:

    Using the first search filter from the top of the page, choose Can Activate option from the dropdown list. A list of all the payment methods assigned to your account that you can activate will appear.

    Once you find the desired payment method, click the Activate option in front of it to activate it.

    A confirmation message will be displayed.

    You need to wait for Smart2pay approval for the activation of the payment method. Also, you can check the list of all your payment methods that are waiting activation by using the first search filter from the top of the page. Choose Activation in Progress option from the dropdown list and a list of all your payment methods waiting activation will appear.

  • Deactivate a payment method:

    Using the first search filter from the top of the page, choose My Methods option from the dropdown list. A list of all the payment methods activated for your account will appear.

    If you want to deactivate a specific payment method, click the Deactivate option in front of it.

    A confirmation message will be displayed.

  • Ask for availability of a payment method:

    For some payment methods you need to ask our support team for more details regarding its availability. You can check the list of all the payment methods that need further guidance from our support team by using the first search filter from the top of the page. Choose Ask Availability option from the dropdown list and a list of all the payment methods that need further guidance from our support team will appear.

  • Unavailable payment methods:

    Some payment methods may be currently unavailable due to different external factors. You can check the list of all the unavailable payment methods by using the first search filter from the top of the page. Choose Unavailable option from the dropdown list and a list of all the unavailable payment methods will appear.

  • Rejected payment methods:

    If the request of a payment method will have a negative outcome we will let you know. You can check the list of all the rejected payment methods by using the first search filter from the top of the page. Choose Rejected option from the dropdown list and a list of all the rejected payment methods will appear.

iDEAL Implementation guide

iDEAL, one of the most used online banking method in the Netherlands, allows the customer to buy securely on the Internet, directly from his bank account opened at one of the major Dutch banks: ABN AMRO, SNS Bank, RegioBank, Rabobank, Knab, Moneyou, ASN Bank, Triodos Bank, ING, Rabobank, Van Lanschot Bankiers,Knab, Bunq, Moneyou and Handelsbanken.

iDEAL was developed by the Dutch banking community in order to facilitate easier payment for online products and services. iDEAL enables direct and secure real-time online payments between bank accounts of Consumers and iDEAL Merchants. The main characteristics of iDEAL are:

  • Real-time payment through accepted and trusted Internet banking that is already familiar to Consumers;
  • Real-time payment authorisation for the Consumer and real-time confirmation to the Merchant by the Acquiring bank, followed by the irrevocable transfer of funds to the Merchant;
  • Suitability for online delivery (e.g. downloads, mobile top-ups), offline delivery (e.g. goods) and time-critical payments (e.g. airline tickets);
  • Offers the flexibility to make payments for many different purposes (e.g. charitable donations, telephone/e-mail orders).

Please ask technicalsupport-s2p@nuvei.com for the latest iDEAL Merchant Implementation Guide (MIG) and the necessary operation manuals.

iDEAL Four Party Model

When talking about iDeal transaction, one must know that there are at least four parties involved:

  • The Consumer: buys a product or service online from a Merchant that offers the iDEAL payment method
  • The Merchant: sells products or services online to Consumers
  • The Issuer (the Consumers’ bank): the Consumer executes iDEAL payments in his Internet banking environment – through his Issuer
  • The Acquirer (the Merchant’s bank): the Merchant accepts iDEAL payments – through his Acquirer

Additional parties can be involved in an iDEAL transaction:

  • The Merchant can, for example, use a Payment Service Provider (PSP) to establish the connection with its Acquiring bank. When this PSP receives/collects the payments before they are paid to the Merchant, this is called a “Collecting PSP” (CPSP). In this case the Collecting PSP acts as the Merchant for the purpose of the iDEAL payments and holds the iDEAL contract with the Acquiring bank on behalf of one or multiple other Merchants.
Issuer Selection List Presentation

To ensure that the Consumer experience of an iDEAL transaction is consistent and recognizable through all Merchant websites; all Merchants have to comply with certain presentation standards:

  • All Issuers in the DirectoryResponse (to be collected at least monthly) have to be shown in a list (e.g. dropdown list or list of radio buttons) in alphabetic order and exactly as presented in the DirectoryResponse message.
  • The list should be accompanied by the instruction phrase “Kies uw bank” (UK: “Choose your bank”). In case of an HTML SELECT, the first element in the list states this instruction phrase and is selected by default (to prevent accidental Issuer selection).
  • It is not allowed to exclude or grey out any active Issuers from the Issuer list. In case of a new Issuer, the Issuer list should be updated wihtin one month (preferably earlier).
  • It is recommended to configure the HTML “value” field of the items in the list box to be the issuerID (BIC) of the corresponding Issuer, because this value is used in subsequent messages (TransactionRequest).
  • The Merchant may preselect an Issuer only to allow for an improved user experience (e.g. if the Consumer has previously initiated an iDEAL payment with a specific Issuer). The Consumer must however always be offered the possibility to alter the preselected Issuer.

An example of a correct presentation of the Issuer selection list is shown in the figure:

iDEAL banners and logo’s

Merchants that want to use a banner on their website to promote iDEAL can download the most recent banners at https://www.ideal.nl/en/businesses/logos/. These banners need to be installed only once, since the URL will always refer to the latest version of the banner containing the right logos of the participating Issuing banks.

The iDEAL logo must be used by anyone who offers iDEAL as a payment method, informing customers from the beginning that they can pay with iDEAL.

The iDEAL logo may only be used in the provided form and colour. The use of other colours is not permitted.

For more information and instructions for using the iDEAL logo, checkout the iDEAL logo manual.

POLi Test Data (Australia)

In order for you to test POLi payment method successfully, please use the below test data.

POLi Test Data
Data Value
User DemoShopper
Password DemoShopper

POLi Payment Flow (Australia)

  1. The Customer selects his Bank from the list and proceeds with the payment.

    1 Select bank

  2. The Customer enters the login details. He must fill the form with his Username and password and click the Login button.

    1 Login details

  3. The Customer needs to select the bank account he wants to transfer money from and click the Continue button.

    1 Select bank account

  4. The customer is redirected to the provider’s confirmation page where he sees the payment summary and details. He completes the transaction by clicking on the Confirm button.

    1 Transaction confirmation

  5. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Alipay Payment Request

Definition: POST https://paytest.smart2pay.com/v1/payments

Below you will find a full example of a payment request for Alipay method (with Success and Bad response). The parameters of the payment are sent in the message body as a JSON object.

For Alipay payments only the following Articles parameters are mandatory to be sent in the request, the rest of them are optional:

  • Name – Article’s name;
  • Quantity – The number of products.

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

For more information about status codes, please go to Basic HTTP Status Codes.

Request: 

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_h31",
    "Amount": "100",
    "Currency": "CNY",      
    "MethodID": 24,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",      
    "TokenLifetime": 10,
    "BillingAddress": {
      "Country": "CN"
      },        
    "Articles": [
      { 
      "Name": "TEST",
      "Quantity": 1
      }
    ]
  }
}

Response:

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

{
    "Payment": {
        "ID": 4201852,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20181120122556",
        "MerchantTransactionID": "s2ptest_h31",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "CNY",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": null,
        "MethodID": 24,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": "20181120122556",
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": [
            {
                "MerchantArticleID": null,
                "Name": "TEST",
                "Quantity": 1,
                "Price": null,
                "VAT": null,
                "Discount": null,
                "Type": null,
                "TaxType": null,
                "DiscountValue": null
            }
        ],
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
    }
}

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
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_h32",
    "Amount": "100",
    "Currency": "CN",      
    "MethodID": 24,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",      
    "TokenLifetime": 10,
    "BillingAddress": {
      "Country": "CN"
      },
        
    "Articles": [
      { 
      "Name": "TEST",
      "Quantity": 1
      }
    ]
  }
}

Response:

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

{
    "Payment": {
        "ID": null,
        "SkinID": null,
        "ClientIP": null,
        "Created": null,
        "MerchantTransactionID": "s2ptest_h32",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "CN",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": null,
        "MethodID": 24,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": null,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
            "ID": null,
            "Info": null,
            "Reasons": [
                {
                    "Code": "2",
                    "Info": "Validation failed - Currency (RegEx: ^[A-Z]{3}$)"
                }
            ]
        },
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
    }
}

API Idempotence

Idemptotence is the property of certain operations in mathematics and computer science whereby they can be applied multiple times without changing the result beyond the initial application.

When talking about API calls, idempotency means that if you attempt an operation twice or more, only the first attempt will be processed. Idempotence prevents the processing of duplicate requests by using unique keys.

If a network connection error or a timeout error appears when creating a card payment, you can do a retry. But still, in this case, there is the possibility that the card payment has already been created, leading you only to generate a duplicate payment when you do the retry.

In order to avoid this undesired scenario, we have implemented a new piece of functionality using Unique Keys, which make it safe to retry non-idempotent API requests. These Unique Keys or Idempotence keys ensure that no matter the number of retries for a specific call only one response action is executed, and the payment is not duplicated.

Our API supports idempotence for safely retrying requests and guarantees that the operation is performed only once. Therefore, if you create a card payment that fails due to a network connection error, you can retry the request with the same idempotence key to guarantee that only a single card payment is created.

Idempotence keys are unique value generated keys, for example, UUIDs, that you submit as a request header and guarantee that only one resource will be created regardless of how many times a request is sent to the server.

Idempotence keys can be generated using your own preferred method or any appropriately random string. Still, we recommend to generate your own Unique Keys (Idempotence keys) using V4 UUIDs.

For card payments we’ll always send back the same response for requests made with the same key, and keys can’t be reused with different request parameters. The keys are stored for a period of 24 hours.

You can also visit our Nuvei SDK .NET section for more information on how you can generate and plug in your Unique Key Generator.

Alipay Test Data

In order for you to test Alipay payment method successfully, please use the below test data.

Alipay Test Data
Data Value
Email address: cnbuyer_3467@alitest.com
Login password: a111111
Payment password: b111111
Alipay New Test Data
Data Value
Email address: forex_1699541344189@alitest.com
Login password: 111111
Payment password: 111111

Alipay Payment Flow

  1. The Customer selects his preferred currency from the list and continues the payment by clicking on the Continue button.1 Select currency
  2. Once the customer arrives at the provider’s page he has two choices: to continue with the payment using the mobile version or using the desktop version.1 Payment version
  3. The customer logs in to his Alipay account by entering his email address and login password.1 Account login
  4. The customer confirms the payment by entering the payment password.1 Payment password
  5. The payment is processing.1 Payment processing
  6. In a few seconds the customer will be redirected back to your ReturnURL.1 Return page when the redirection status is a success

WeChat Test Data

For WeChat payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

WeChat Payment Flow

  1. The customer selects his preferred currency from the list and enters his email address.

    1 Enter email

  2. You can skip this step by sending in the initial POST the following parameters: SkipHPP=1 and CustomerEmail.

  3. The Customer is redirected to WeChat payment page.

    1 WeChat payment page

  4. The Customer opens WeChat application and scans the QR code.

    1 QR code scanning

  5. The payment details are displayed and the customer confirms by using the payment password.

    1 Payment confirmation

  6. The payment is confirmed.

    1 Payment successful

  7. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Multibanco SIBS Payment Request

Definition: POST https://paytest.smart2pay.com/v1/payments

Below you will find a full example of a payment request for Multibanco SIBS method (with Success and Bad response). The parameters of the payment are sent in the message body as a JSON object.

In order to display the payment details to your customers on your own page, you can send in the request the CustomerName and Country parameters. Use the information received in Response in the ReferenceDetails object.

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

For more information about status codes, please go to Basic HTTP Status Codes.

Request: 

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

{
   "Payment": {
      "MerchantTransactionID": "s2ptest_h40",
      "Amount": "400",
      "Currency": "EUR",
      "ReturnURL": "http://demo.smart2pay.com/redirect.php",
      "Description": "SIBSTestDetails",
      "MethodID": 20,
      "BillingAddress": {
         "Country": "PT"
      },
      "Customer": {
         "FirstName": "John",
         "LastName": "Doe"
      }
   }
}

Response:

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

{
    "Payment": {
        "ID": 4178449,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20181107100206",
        "MerchantTransactionID": "s2ptest_h40",
        "OriginatorTransactionID": null,
        "Amount": "400",
        "Currency": "EUR",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "SIBSTestDetails",
        "MethodID": 20,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": null,
        "Customer": {
            "ID": 142823,
            "MerchantCustomerID": null,
            "Email": null,
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "SocialSecurityNumber2": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 705,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "PT"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": {
            "BankCode": null,
            "BankName": null,
            "EntityID": null,
            "EntityNumber": "11302",
            "ReferenceID": null,
            "ReferenceNumber": "022 518 828",
            "SwiftBIC": null,
            "AccountCurrency": null,
            "AccountNumber": null,
            "AccountHolder": null,
            "IBAN": null,
            "AmountToPay": "4 EUR",
            "QRCodeURL": null,
            "Instructions": null
        },
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "MethodTransactionID": null,
        "TokenLifetime": 1,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=DAB863DD12A9DB642BF15252CB89CAC2.4178449"
    }
}

Bank Transfer Payment Request

Definition: POST https://paytest.smart2pay.com/v1/payments

Below you will find a full example of a payment request for Bank Transfer method (with Success and Bad response). The parameters of the payment are sent in the message body as a JSON object.

In order to display the bank transfer details to your customers on your own page, you can send in the request the CustomerName and Country parameters. Use the information received in Response in the ReferenceDetails object.

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

For more information about status codes, please go to Basic HTTP Status Codes.

Request: 

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

{
  "Payment":{
    "MerchantTransactionID": "s2ptest_h35",
    "Amount": 400,
    "Currency": "PLN",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "BankTransferTestdetails",
    "MethodID": "1",
    "BillingAddress": {
      "Country": "DE"
    },
    "Customer": {
      "FirstName": "John",
      "LastName": "Doe"
    }
  }
}

Response:

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

{
    "Payment": {
        "ID": 4178425,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20181107093433",
        "MerchantTransactionID": "s2ptest_h35",
        "OriginatorTransactionID": null,
        "Amount": "400",
        "Currency": "PLN",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "BankTransferTestdetails",
        "MethodID": 1,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": null,
        "Customer": {
            "ID": 142823,
            "MerchantCustomerID": null,
            "Email": null,
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "SocialSecurityNumber2": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 420,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "DE"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": {
            "BankCode": null,
            "BankName": "ING Bank",
            "EntityID": null,
            "EntityNumber": null,
            "ReferenceID": null,
            "ReferenceNumber": "HPP4178425",
            "SwiftBIC": "INGBDEFF",
            "AccountCurrency": "EUR",
            "AccountNumber": "0010126423",
            "AccountHolder": "Stichting Smart2Pay Escrow Services",
            "IBAN": "DE72 5002 1000 0010 1264 23",
            "AmountToPay": "0.93 EUR",
            "QRCodeURL": null,
            "Instructions": null
        },
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "MethodTransactionID": null,
        "TokenLifetime": 1,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=F152AF870FFF05B98A83F7B8C35A81D9.4178425"
    }
}

There is another possibility to initiate a Bank Transfer transaction where you can send your own Reference Number in the request. Checkout the below example with the ReferenceNumber parameter sent in the request together with Customer parameters:

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_h39",
    "Amount": 400,
    "Currency": "PLN",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "BankTransferTestdetails",
    "MethodID": "1",
    "BillingAddress": {
      "Country": "DE"
    },
    "Customer": {
      "FirstName": "John",
      "LastName": "Doe"
    },
    "Details": {
      "ReferenceNumber": "your_reference_number"
    }
  }
}

Response:

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

{
    "Payment": {
        "ID": 4178441,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20181107095318",
        "MerchantTransactionID": "s2ptest_h39",
        "OriginatorTransactionID": null,
        "Amount": "400",
        "Currency": "PLN",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "BankTransferTestdetails",
        "MethodID": 1,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": null,
        "Customer": {
            "ID": 142823,
            "MerchantCustomerID": null,
            "Email": null,
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "SocialSecurityNumber2": null,
            "Phone": null,
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 420,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "DE"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": {
            "AccountNumber": null,
            "AccountHolder": null,
            "IBAN": null,
            "BIC": null,
            "PrepaidCard": null,
            "PrepaidCardPIN": null,
            "SerialNumbers": null,
            "Wallet": null,
            "ReferenceNumber": null,
            "PayerCountry": null,
            "PayerEmail": null,
            "PayerPhone": null,
            "BankCode": null,
            "BankName": null,
            "BankSortCode": null,
            "SocialSecurityNumber": null,
            "BillingCycleStart": null,
            "BillingCycleEnd": null,
            "UnsubscribeInstructions": null,
            "CustomerLoginID": null,
            "PaidAmount": null,
            "PaidCurrency": null,
            "ProviderExchangeRate": 0,
            "PayerBankAccountID": null
        },
        "ReferenceDetails": {
            "BankCode": null,
            "BankName": "ING Bank",
            "EntityID": null,
            "EntityNumber": null,
            "ReferenceID": null,
            "ReferenceNumber": "your_reference_number",
            "SwiftBIC": "INGBDEFF",
            "AccountCurrency": "EUR",
            "AccountNumber": "0010126423",
            "AccountHolder": "Stichting Smart2Pay Escrow Services",
            "IBAN": "DE72 5002 1000 0010 1264 23",
            "AmountToPay": "0.93 EUR",
            "QRCodeURL": null,
            "Instructions": null
        },
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "MethodTransactionID": null,
        "TokenLifetime": 1,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=DDC981EDC0426B8C22F57F88FD8B0FF4.4178441"
    }
}

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
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_h36",
    "Amount": 400,
    "Currency": "PLN",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "BankTransferTestdetails",
    "MethodID": "1",
    "BillingAddress": {
      "Country": "Germany"
    },
    "Customer": {
      "FirstName": "John",
      "LastName": "Doe"
    }
  }
}

Response:

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

{
    "Payment": {
        "ID": 4178427,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20181107094050",
        "MerchantTransactionID": "s2ptest_h36",
        "OriginatorTransactionID": null,
        "Amount": "400",
        "Currency": "PLN",
        "CapturedAmount": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "BankTransferTestdetails",
        "MethodID": 1,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": "20181107094050",
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
            "ID": 4,
            "Info": "Failed",
            "Reasons": [
                {
                    "Code": "147",
                    "Info": "Address details are invalid (BillingAddress)Country - RegEx: ^[a-zA-Z]{2}$;"
                }
            ]
        },
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
    }
}

SEPA Direct Debit Recurring Payment Notification

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

Payment notification for status Success (2):

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "ID": 4167022,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20181101145458",
    "MerchantTransactionID": "s2ptest_h13",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "EUR",
    "ReturnURL": "",
    "Description": null,
    "MethodID": 84,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30201,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 13199,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": null
    },
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null
  }
}

Response:

204 No Content

The message contains a Payment object with an updated Status, which can have the following meanings:

RECURRING PAYMENT STATUS
ID Info Description
2 Success The transaction is successfully settled by the bank.
4 Failed The transaction has failed.
16 Reversed The customer did not recognize the payment and requested the funds back from his bank.
  • In case of a Failed or Reversed status, you will be given in the notification message the reasons why the payment got to that status. Additional information will be sent in the Reasons Code and Reasons Info fields. For a complete list of possible return codes please see our section GlobalPay Return Codes.

SEPA Direct Debit Return Codes
Return Code Description
221 R-Transaction : AC01 – Account Identifier incorrect (i.e. invalid IBAN of the Debtor).
222 R-Transaction : AC04 – Account closed.
223 R-Transaction : AC06 – Account blocked.
224 R-Transaction : AC13 – Debtor account is a consumer account.
225 R-Transaction : AC13 – Debtor account is a consumer account.
226 R-Transaction : AG02 – Operation code/transaction code/sequence type incorrect, invalid file format.
227 R-Transaction : AM04 – Insufficient funds.
228 R-Transaction : AM05 – Duplicate collection.
229 R-Transaction : BE05 – Identifier of the Creditor Incorrect.
230 R-Transaction : CNOR – Creditor Bank is not registered under this BIC in the CSM.
231 R-Transaction : DNOR – Debtor Bank is not registered under this BIC in the CSM.
232 R-Transaction : FF01 – File Format incomplete or invalid.
233 R-Transaction : MD01 – No mandate.
234 R-Transaction : MD02 – Mandate data missing or incorrect.
235 R-Transaction : MD06 – Disputed authorized transaction.
236 R-Transaction : MD07 – Debtor Deceased.
237 R-Transaction : MS02 – Refusal by the Debtor.
238 R-Transaction : MS03 – Reason not specified.
239 R-Transaction : RC01 – Bank Identifier (BIC) Incorrect.
240 R-Transaction : RR01 – Regulatory Reason.
241 R-Transaction : RR02 – Regulatory Reason.
242 R-Transaction : RR03 – Regulatory Reason.
243 R-Transaction : RR04 – Regulatory Reason.
244 R-Transaction : SL01 – Specific Service offered by the Debtor Bank.

Payment notification for status Failed with reason code and description.

Payment notification for status Failed (4):

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "ID": 4157363,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20181029134811",
    "MerchantTransactionID": "testCORE00001",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "EUR",
    "CapturedAmount": null,
    "ReturnURL": "",
    "Description": "test Smart2Pay",
    "MethodID": 84,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30151,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": {
      "ID": 1720,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "NL"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 13165,
    "Status": {
      "ID": 4,	
      "Info": "Failed",
      "Reasons": [
        {	
          "Code": "227",
          "Info": "R-Transaction : AM04 - Insufficient funds"
        }	
      ]	
    },	
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null
  }
}

Response:

204 No Content

Payment notification for status Reversed with reason code and description.

Payment notification for status Reversed (16):

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "ID": 4157363,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20181029134811",
    "MerchantTransactionID": "testCORE00001",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "EUR",
    "CapturedAmount": null,
    "ReturnURL": "",
    "Description": "test Smart2Pay",
    "MethodID": 84,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30151,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": {
      "ID": 1720,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "NL"
    },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": 13165,
    "Status": {
      "ID": 16,	
      "Info": "Reversed",
      "Reasons": [
        {	
          "Code": "235",
          "Info": "R-Transaction : MD06 - Disputed authorized transaction."
        }	
      ]	
    },	
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null
  }
}

Response:

204 No Content

SEPA Direct Debit Preapproval Notification

Upon successful approval, we will notify you about the new status of the preapproval to the URL you setup in the Merchant Dashboard.

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

Preapproval notification for status Open (2):

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Preapproval": {
    "ID": 13199,
    "Created": "20181101142508",
    "MethodID": 84,
    "SiteID": 30201,
    "MerchantPreapprovalID": "s2ptest_h11",
    "RecurringPeriod": 0,
    "PreapprovedMaximumAmount": null,
    "Currency": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "SEPA DD preapproval request",
    "Customer": {
      "ID": 135127,
      "MerchantCustomerID": null,
      "Email": "youremail@gmail.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": null,
      "SocialSecurityNumber2": null,
      "Phone": "+31651111111",
      "Company": null,
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 5103,
      "City": "Laren",
      "ZipCode": "1251",
      "State": null,
      "Street": "Brink",
      "StreetNumber": "27c",
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "NL"
    },
    "Status": {
      "ID": 2,
      "Info": null,
      "Reasons": null
    },
    "RedirectURL": null,
    "MethodOptionID": 0,
    "PreapprovedFrequency": null,
    "MandateReference": "SLMP004606504"
  }
}

Response:

204 No Content

The message contains a Preapproval object with an updated Status, which can have the following meanings:

PREAPPROVAL STATUS
ID Info Description
1 Pending The customer needs to confirm the preapproval
2 Open The customer confirmed and you can use the preapproval to initiate recurring payments
4 ClosedByCustomer The preapproval is closed and can no longer be used to initiate recurring payments

If the mandate is cancelled by the customer or there is an error in the creation process than a notification with the specific reason is sent.

Preapproval notification for status ClosedByCustomer (4):

Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Preapproval": {
    "ID": 729222,
    "Created": "20181025083420",
    "MethodID": 84,
    "SiteID": 30025,
    "MerchantPreapprovalID": "preapptestingS4526352",
    "RecurringPeriod": 0,
    "PreapprovedMaximumAmount": null,
    "Currency": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "sample description",
    "Customer": {
      "ID": 341703,
      "MerchantCustomerID": null,
      "Email": "youremail@gmail.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": "",
      "SocialSecurityNumber2": null,
      "Phone": "+40765260000",
      "Company": "Smart2Pay",
      "DateOfBirth": null
    },
    "BillingAddress": {
      "ID": 8438,
      "City": "Iași",
      "ZipCode": "23900000",
      "State": null,
      "Street": "Sf. Lazar",
      "StreetNumber": "1",
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "RO"
    },
    "Status": {
      "ID": 4,
      "Info": null,
      "Reasons": [
        {
          "Code": "246",
          "Info": "Preapproval cancelled by consumer"
        }
      ]
    },
    "RedirectURL": null,
    "MethodOptionID": 0,
    "PreapprovedFrequency": null,
    "MandateReference": null
  }
}

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

SEPA Direct Debit Preapproval Request

General information to be known for SEPA Direct Debit:

  • The customer’s bank needs to be enrolled in the SEPA Direct Debit CORE scheme or this service needs to be activated on the customer’s bank account.
  • Ask customer to make sure they have the necessary funds in their account. Up to 80% of payments failures are caused by insufficient amount.
  • According to SEPA Direct Debit rules, the customers can Reverse/Cancel a Direct Debit (claim the money back) in 8 weeks, no questions asked and up to 13 months, if his bank agrees. If this happens, you will receive a Reversed notification with ReasonCode and Reason (R-Transaction) which you should properly handle on your side.
  • For B2B transactions please add the CompanyName parameter.
  • The currency for SEPA Direct Debit CORE is EUR, however the customers can use their account although this is not an EUR account as long as the bank is enrolled in SEPA Direct Debit CORE scheme. In this case, some exchange fees might be charged by their bank.
  • Merchants/Users can decide the actual ExecutionDate of a mandate – they can send the date on which the amount will actually be debited from the Debtor’s account.

Checkout the below example of a preapproval request for SEPA Direct Debit (84), where MethodOptionID parameter is mandatory to be sent in the initial payment request.

Please note that if you have a Company, you also need to send the Company parameter in the request.

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

Request:

POST https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Preapproval": {
    "MerchantPreapprovalID": "s2ptest_h11",
    "Description": "SEPA DD preapproval request",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "MethodID": 84,
    "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "youremail@gmail.com",
      "Phone": "+31651111111"
    },
    "BillingAddress": {
      "Street": "Brink",
      "StreetNumber": "27c",
      "ZipCode": "1251",
      "City": "Laren",
      "Country": "NL"
    },
    "MethodOptionID": 1
  }
}

Response:

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

{
    "Preapproval": {
        "ID": 13199,
        "Created": "20181101142508",
        "MethodID": 84,
        "SiteID": 30201,
        "MerchantPreapprovalID": "s2ptest_h11",
        "RecurringPeriod": 0,
        "PreapprovedMaximumAmount": null,
        "Currency": null,
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "SEPA DD preapproval request",
        "Customer": {
            "ID": 135127,
            "MerchantCustomerID": null,
            "Email": "youremail@gmail.com",
            "FirstName": "John",
            "LastName": "Doe",
            "Gender": null,
            "SocialSecurityNumber": null,
            "SocialSecurityNumber2": null,
            "Phone": "+31651111111",
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "ID": 5103,
            "City": "Laren",
            "ZipCode": "1251",
            "State": null,
            "Street": "Brink",
            "StreetNumber": "27c",
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "NL"
        },
        "Status": {
            "ID": 1,
            "Info": "Pending",
            "Reasons": null
        },
        "RedirectURL": "https://europaytest.smart2pay.com/SlimPay/Landing/PreapprovalLanding.aspx?ID=10084&Hash=CD71CA781BD1F59F52F8F0B2D20A807E",
        "MethodOptionID": 1,
        "PreapprovedFrequency": null,
        "MandateReference": null
    }
}

Redirect the customer to the RedirectURL where he will approve the automatic debit. Once the Customer approves the debit, he will receives via email the digital signed mandate.

SEPA Direct Debit Timeline

Checkout the below SEPA Direct Debit Timeline explained:

  • D-14: Pre-notification for recurrent Direct Debits;
  • D-2: The merchant initiates a SEPA DD – the payment has status Open. If the Direct debit request fails for technical reasons (e.g connection time out), the payment status moves to Failed with ReasonCode and Reason. This is not an incident (R-transaction), it is only a technical failure of the request;
  • D-1: The provider submits the SEPA DD into the network. If the SEPA DD is initiated early in the morning, then it will be submitted in the network in the same day D-1;
  • D: The D day is known as the Execution day for a SEPA Direct Debit – funds are transferred from debtor’s bank to the merchant’s SEPA DD account.;
  • D -> D+5: the payment remains Open unless an incident (R-Transaction) is reported. If an incident – reject, refusal, return – is registered, a notification for status Failed with ReasonCode and Reason (including the R-Transaction code) will be sent to the merchant;
  • D+6: If no incident occurred until D+5, the transaction is settled and the SEPA DD updates to status Success. Now the merchant can provide the product/service to the customer;
  • D+6 -> D+8 weeks / D+13 months: If the customer does not recognize the Direct Debit, he can claim the money back in 8 weeks, no questions asked and up to 13 months, if the customer’s bank agrees. This situation is also considered an incident (R-Transaction). If this happens, you will receive a Reversed notification with ReasonCode and Reason (including the R-Transaction) which you should properly handle on your side.

All days should be considered banking days!

Pre-notification:

Debtor pre-notification: is a 14 days notification period (this can be reduced upon debtor agreement).

This pre-notification must include the following information: the payment due date, the payment amount, the Unique Mandate Reference and the merchant Creditor Identifier. There is no requirement regarding the method of communication, meaning that this can be done through agreement on General Terms and Conditions, it can be solely written on an invoice, it can be displayed in an online customer account.

SEPA Direct Debit Recurring Payment

Direct Debits can be initiated based on the PreapprovalID received in the Preapproval response. If you wish to have the Direct Debit executed at a specific date, you only need to send in the request the ExecutionDate parameter.

  • Recurring payment request for SEPA Direct Debit (84) that is based on the PreapprovalID (also send in the request the Description parameter and Country parameter that should be the same with the ones sent in the Preapproval request):

    Request:

    POST https://paytest.smart2pay.com/v1/payments/recurrent
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
     "Payment": {
       "PreapprovalID":13199,
       "MerchantTransactionID": "s2ptest_h13",
       "Amount": 100,
       "Currency": "EUR",
       "MethodID": 84,
       "Description":"SEPA DD recurrent payment",
       "BillingAddress": {
         "Country": "NL"
        }
      }
    }

  • Recurring payment request for SEPA Direct Debit (84) that includes ExecutionDate parameter:

    Execution day for a SEPA Direct Debit – the moment funds are transferred from debtor’s bank to the merchant’s SEPA DD account.This can be setup by the Merchant/customer by sending ExecutionDate in the Direct Debit payment request or it can be set by default by the SEPA DD provider (which is usually set at 1-2 days from the Direct Debit payment request date).

    Request:

    POST https://paytest.smart2pay.com/v1/payments/recurrent
    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
     "Payment": {
       "PreapprovalID":13165,
       "MerchantTransactionID": "s2ptest_h19",
       "Amount": 100,
       "Currency": "EUR",
       "MethodID": 84,
       "Description":"SEPA recurrent payment with executiondate",
       "BillingAddress": {
         "Country": "NL"
        },
       "ExecutionDate": "20200805"
      }  
    }

Response:

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

{
    "Payment": {
        "ID": 4167022,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20181101145456",
        "MerchantTransactionID": "s2ptest_h13",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": null,
        "ReturnURL": null,
        "Description": "SEPA DD recurrent payment",
        "MethodID": 84,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30201,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": {
            "ID": 309,
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "NL"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": 13199,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
    }
}

Nuvei Android SDK Instructions for Alipay and Wechat (Kotlin)

Now that you have imported the Smart2Pay.SDK package into your app, you need to follow the below steps in order to set up the Mobile SDK for Android in Kotlin language.

If you are using Java go to our section: Nuvei Mobile SDK Configuration using Java language.

First of all you need to start using and install the Kotlin plugin for Android development. For more information, please visit: Getting started with Android and Kotlin.

Configure Kotlin in your project by following the steps below:

  • Click Tools | Kotlin | Configure Kotlin in Project.
  • Select Android.
  • Check if all modules and the selected Kotlin version are correct.
  • Press OK and Kotlin is now part of your Java project.
  1. [APP] Create an order to your server

    //sample code, put your own logic of creating an order to your server
    val orderParameters = HashMap<String, Any>()
            orderParameters["amount"] = "10"
            orderParameters["currency"] = "CNY"
            orderParameters["methodID"] = paymentManager.getMethodId(payment.type).toString()
    
            val paymentsRequest = PaymentsRequest(RequestManager.instance)
            paymentsRequest.setRequestBody(orderParameters)
            paymentsRequest.callback =
                    object : PaymentsRequest.Callback {
                        override fun onSuccess(paymentId: Int, paymentsResponse: String) {
                            payment.id = paymentId
                            payment.instructions = paymentsResponse
                            paymentManager.pay(payment)
                        }
    
                        override fun onFailure() {
    
                        }
                    }
            paymentsRequest.enqueue()
    
  2. [SERVER] Once the order is created on your server, from the server create a Payment using our REST API and specifying isMobileApp: true.

    
    {
      "Payment": {
        "MerchantTransactionID": "{{tester}}-{{env}}-{{time}}-{{rand}}",
        "Amount": "100",
        "Currency": "CNY",
        "ReturnURL": "https://www.merchant.com/return",
        "MethodID" : "24",
        "Customer":{
          "Email": "john.doe@isp.com"
        },
        "Details":{
        "IsMobileApp": true
        }
    
      }
    }
    
  3. [SERVER] Our server responds with Instructions field which you need to pass to the app.

    {
      "Payment": {
        "ID": 4164863,
        "MethodID": 24,
        […]
        },
        "ReferenceDetails": {
    […]
          "Instructions": "_input_charset=\"utf-8\"&appenv=\"system=android^version=3.0.1.2\"&body=\"Alipay Payment\"&currency=\"USD\"&forex_biz=\"FP\"&notify_url=\"https://europaytest.smart2pay.com/Alipay/Landing/AlipayNotificationURL.aspx\"&out_trade_no=\"s2ptest200336\"&partner=\"2088201612260077\"&payment_type=\"1\"&rmb_fee=\"1\"&secondary_merchant_id=\"GP1045\"&secondary_merchant_industry=\"5946\"&secondary_merchant_name=\"demo iasi test\"&seller_id=\"2088201612260077\"&service=\"mobile.securitypay.pay\"&subject=\"Alipay Payment\"&supplier=\"demo iasi test\"&sign=\"vRQ1ouMvn0rJUCxSEi91RLJcS0NU7mojYfJpfT8gxtctF8jfJ4x6uN8t0ETdDdmGziqP7IsYHTSAHdFLHGO4hQdovyzJMna42nc9DcfMMlhTX7ZVCa7rUuieBWcW0ek8w3DxojrWnWT9lM3lUQZVLsY1CjXFGJ126x4TnjrA86w%3d\"&sign_type=\"RSA\""
          },
        "Status": {
          "ID": 1,
          "Info": "Open",
          "Reasons": null
          },
          […]
      }
    }
    
  4. [APP] Pass the instructions from the response to the payment object together with the payment type and Activity.

    override fun onSuccess(paymentId: Int, paymentsResponse: String) {
                            payment.id = paymentId
                            payment.instructions = paymentsResponse
                            payment.activity = this@MainActivity
                            […]
                            }
    
  5. [APP] Call Nuvei Mobile SDK by calling pay() function from the paymentManager object.

    override fun onSuccess(paymentId: Int, paymentsResponse: String) {
                            [...]
                            paymentManager.pay(payment)
                            }
    

    The information needed inside the Payment object of our mobile SDK:

    class Payment {
        enum class PaymentProvider {
            NONE,
            ALIPAY,
            WECHAT
        }
        var id: Int = 0
        var type = PaymentProvider.NONE
        var instructions: String = "" 
        var activity: Activity
    }

    When pasting this into your code the imports should go automatically or you can add them manually:

    import com.smart2pay.sdk.PaymentManager
    import com.smart2pay.sdk.models.Payment
  6. [SDK] Our SDK triggers Alipay or WeChat application

  7. [User] The user completes the payment

  8. [SDK] Alipay or WeChat application passes the status to our mobile SDK

  9. [APP] Our SDK calls one of the two callbacks onPaymentSuccess or onPaymentFailure, depending on the payment result.

    Make sure the activity uses the Interface:

    PaymentManager.PaymentManagerEventListener

    For example your activity could look like this:

    class MainActivity : AppCompatActivity(), PaymentManager.PaymentManagerEventListener {

    Add these two functions to get the callbacks from the Payment Manager:

    override fun onPaymentFailure(payment: Payment) {
    }
    override fun onPaymentSuccess(payment: Payment) {
    }
  10. [APP] Inside onPaymentSuccess, before displaying the result to the user and providing the service you need to do a server verification by calling from the server our payment verification API. Call your server from the App to ask for the verification result. – (Only for Alipay payments)

  11. [SERVER] You need to pass the Nuvei payment ID and the message received from Nuvei mobile SDK. – (Only for Alipay payments)

    POST {{entryPoint}}/{{version}}/payments/{id}/verify
    
    {
       "message": "partner=\"2088101568358171\"&out_trade_no=\"0819145412-6177\"&subject=\"test\"&body=\"testtest\"&total_fee=\"0.01\"&notify_url=\"http://notify.msp.hk/notify.htm\"&service=\"mobile.securitypay.pay\"&payment_type=\"1\"&_input_charset=\"utf-8\"&it_b_pay=\"30m\"&success=\"true\"&sign_type=\"RSA\"&sign=\"hkFZr+zE9499nuqDNLZEF7W75RFFPsly876QuRSeN8WMaUgcdR00IKy5ZyBJ4eldhoJ/2zghqrD4E2G2mNjs3aE+HCLiBXrPDNdLKCZgSOIqmv46TfPTEqopYfhs+o5fZzXxt34fwdrzN4mX6S13cr3UwmEV4L3Ffir/02RBVtU="
    }
    
  12. [SERVER] Our API checks the transaction and replies back with the status of the verification. – (Only for Alipay payments)

    {
        "status": "Success"
    }
    
  13. [SERVER] If the “status” is Success you can deliver the goods or services. Pass this result to the App. – (Only for Alipay payments)

  14. [APP] Display the payment result to the user.

  15. [SERVER] As a backup for any client communication issues, Nuvei will also send to your server a backend notification as documented here: Payment Notification.

SDK is now fully functional in your app!

Nuvei Android SDK Instructions for Alipay and Wechat (Java)

Now that you have imported the Smart2Pay.SDK package into your app, you need to follow the below steps in order to set up the Mobile SDK for Android in Java language.

If you are using Kotlin go to our section: Nuvei Mobile SDK Configuration using Kotlin language.

  1. [APP] Create an order to your server

    //sample code, put your own logic of creating an order to your server
    order order = new Order()
    order.setAmount(1);
    order.setCurrency("CNY");
    order.setType(Payment.PaymentProvider.ALIPAY); //or Payment.PaymentProvider.WECHAT
    order.create();
    
  2. [SERVER] Once the order is created on your server, from the server create a Payment using our REST API and specifying isMobileApp: true.

    {
      "Payment": {
        "MerchantTransactionID": "{{tester}}-{{env}}-{{time}}-{{rand}}",
        "Amount": "100",
        "Currency": "CNY",
        "ReturnURL": "https://www.merchant.com/return",
        "MethodID" : "24",
        "Customer":{
          "Email": "john.doe@isp.com"
        },
        "Details":{
          "IsMobileApp": true
        }
      }
    }
    
  3. [SERVER] Our server responds with Instructions field which you need to pass to the app.

    {
      "Payment": {
        "ID": 4164863,
        "MethodID": 24,
        […]
        },
        "ReferenceDetails": {
    […]
          "Instructions": "_input_charset=\"utf-8\"&appenv=\"system=android^version=3.0.1.2\"&body=\"Alipay Payment\"&currency=\"USD\"&forex_biz=\"FP\"&notify_url=\"https://europaytest.smart2pay.com/Alipay/Landing/AlipayNotificationURL.aspx\"&out_trade_no=\"s2ptest200336\"&partner=\"2088201612260077\"&payment_type=\"1\"&rmb_fee=\"1\"&secondary_merchant_id=\"GP1045\"&secondary_merchant_industry=\"5946\"&secondary_merchant_name=\"demo iasi test\"&seller_id=\"2088201612260077\"&service=\"mobile.securitypay.pay\"&subject=\"Alipay Payment\"&supplier=\"demo iasi test\"&sign=\"vRQ1ouMvn0rJUCxSEi91RLJcS0NU7mojYfJpfT8gxtctF8jfJ4x6uN8t0ETdDdmGziqP7IsYHTSAHdFLHGO4hQdovyzJMna42nc9DcfMMlhTX7ZVCa7rUuieBWcW0ek8w3DxojrWnWT9lM3lUQZVLsY1CjXFGJ126x4TnjrA86w%3d\"&sign_type=\"RSA\""
        },
        "Status": {
          "ID": 1,
          "Info": "Open",
          "Reasons": null
          },
       […]
      }
    }
    
  4. [APP] Get the instructions from the server response.

    String instructions = order.getInstructions();
  5. [APP] Call Nuvei Mobile SDK by creating a Payment object, passing the Activity, payment type and instructions. Then trigger the payment using a PaymentManager object.

    Payment payment = new Payment();
        payment.setInstructions(instructions);
        payment.setType(Payment.PaymentProvider.ALIPAY);
        payment.setActivity(this);
    
        PaymentManager paymentManager = new PaymentManager();
        paymentManager.pay(payment);

    The information needed inside the Payment object of our mobile SDK:

    class Payment {
        enum PaymentProvider {
            NONE,
            ALIPAY,
            WECHAT
        };
        int ID;
        PaymentProvider type;
        String instructions;
        Activity activity;
    }

    When pasting this into your code the imports should go automatically or you can add them manually:

    import com.smart2pay.sdk.PaymentManager;
    import com.smart2pay.sdk.models.Payment;
  6. [SDK] Our SDK triggers Alipay or WeChat application

  7. [User] The user completes the payment

  8. [SDK] Alipay or WeChat application passes the status to our mobile SDK

  9. [APP] Our SDK calls one of the two callbacks onPaymentSuccess or onPaymentFailure, depending on the payment result.

    Make sure the activity uses the Interface:

    PaymentManager.PaymentManagerEventListener

    For example your activity could look like this:

    public class MainActivity extends AppCompatActivity implements PaymentManager.PaymentManagerEventListener {

    Add these two functions to get the callbacks from the Payment Manager:

    @Override
    public void onPaymentSuccess(Payment payment) {
        
    }
    @Override
    public void onPaymentFailure(Payment payment) {
        
    }
  10. [APP] Inside onPaymentSuccess, before displaying the result to the user and providing the service you need to do a server verification by calling from the server our payment verification API. Call your server from the App to ask for the verification result. – (Only for Alipay payments)

  11. [SERVER] You need to pass the Nuvei payment ID and the message received from Nuvei mobile SDK. – (Only for Alipay payments)

    POST {{entryPoint}}/{{version}}/payments/{id}/verify
    
    {
       "message": "partner=\"2088101568358171\"&out_trade_no=\"0819145412-6177\"&subject=\"test\"&body=\"testtest\"&total_fee=\"0.01\"&notify_url=\"http://notify.msp.hk/notify.htm\"&service=\"mobile.securitypay.pay\"&payment_type=\"1\"&_input_charset=\"utf-8\"&it_b_pay=\"30m\"&success=\"true\"&sign_type=\"RSA\"&sign=\"hkFZr+zE9499nuqDNLZEF7W75RFFPsly876QuRSeN8WMaUgcdR00IKy5ZyBJ4eldhoJ/2zghqrD4E2G2mNjs3aE+HCLiBXrPDNdLKCZgSOIqmv46TfPTEqopYfhs+o5fZzXxt34fwdrzN4mX6S13cr3UwmEV4L3Ffir/02RBVtU="
    }
  12. [SERVER] Our API checks the transaction and replies back with the status of the verification. – (Only for Alipay payments)

    {
        "status": "Success"
    }
    
  13. [SERVER] If the “status” is Success you can deliver the goods or services. Pass this result to the App. – (Only for Alipay payments)

  14. [APP] Display the payment result to the user.

  15. [SERVER] As a backup for any client communication issues, Nuvei will also send to your server a backend notification as documented here: Payment Notification.

SDK is now fully functional in your app!

Nuvei Android SDK Installation

You need to follow the below steps to build an in-app payment flow using Smart2Pay.SDK.Payment, a class designed to make building your app’s checkout flow as easy as possible.

  1. Download the smart2pay.aar file located at: https://github.com/Smart2Pay/SDK-Android-Release/tree/master/releases.
  2. Place the .aar file in the app/libs folder.
  3. Add this to your app Gradle file and click on the Sync Now button.
    dependencies {
        api files('libs/smart2pay.aar')
    }

Now that the SDK is in the app, you can actually use it in the code. Continue with setting up the SDK:

Nuvei Mobile SDK

By using Nuvei SDK for mobile, you can quickly integrate more payment options directly in your mobile application. Our SDK provides one unique interface to Cards, Alipay and WeChat in-app payments.

You can download our mobile SDK for Android and iOS together with demo projects from Github:

For Alipay and Wechat, the payments are initiated by the user from the mobile app and the initial message is sent by your server to our REST API in the usual way (see Create a payment), plus sending an additional parameter IsMobileApp: true. We will respond back with the Instructions field that needs to be passed from your app to our SDK. Our SDK handles the various calls to Alipay or WeChat apps and returns the control to your app for the final verification of the status.

Besides Alipay and WeChat, our Mobile SDK can be used for in-app purchases using Credit Cards. The advantage of using our SDK is that the credit card details never reach your server, simplifying to a minimum the PCI requirements you must meet.

For more details regarding the installation and the configuration of the SDK, please go to the below sections:

Tingg Test Data

In order for you to test Tingg payment method available in Nigeria, please use the below test data.

Tingg (Nigeria) Test Data
Data Value
Phone 23485844338

Tingg (Nigeria) Payment Flow

  1. The customer fills in his first and last name, his email address and his phone number.

    1 Payment instructions

  2. The customer receives all the details needed to complete the payment.

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

NIBSS Test Data

In order for you to test NIBSS payment method available in Nigeria, please use the below test data.

NIBSS (Nigeria) Test Data
Data Value
Phone 23485844338

NIBSS (Nigeria) Payment Flow

  1. The customer fills in his first and last name, his email address and his phone number.

    1 Payment instructions

  2. The customer receives all the details needed to complete the payment.

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

PesaLink (Kenya) Test Data

In order for you to test PesaLink payment method available in Kenya, please use the below test data.

PesaLink (Kenya) Test Data
Data Value
Phone 255653560949

PesaLink (Kenya) Payment Flow

  1. The customer fills in his personal details, including: his first and last name, email address and phone number. Then, the customer chooses the desired bank from the provided list.

    1 Payment instructions

  2. The customer receives the details needed to complete the payment.

    1 Payment instructions

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

MTN Test Data

In order for you to test MTN payment method available in Uganda, please use the below test data.

MTN Test Data
Data Value
Phone 256387676229

MTN (Uganda) Payment Flow

  1. The customer fills in his first and last name, his email address and his phone number.1 Payment instructions
  2. The customer receives the details needed to complete the payment.1 Payment instructions
  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.1 Return page when the redirection status is a success

Equitel Test Data

In order for you to test Equitel payment method available in Kenya, please use the below test data.

Equitel (Kenya) Test Data
Data Value
Phone 254725362916

Equitel (Kenya) Payment Flow

  1. The customer fills in his first and last name, his email address and his phone number.

    1 Payment instructions

  2. The customer receives the details needed to complete the payment.

    1 Payment instructions

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Airtel Money (Uganda) Test Data

In order for you to test Airtel Money payment method available in Uganda, please use the below test data.

Airtel Money (Uganda) Test Data
Data Value
Phone 256428789696

Airtel Money (Uganda) Payment Flow

  1. The customer fills in his first and last name, his email address and his phone number.

    1 Payment instructions

  2. The customer receives the details needed to complete the payment.

    1 Payment instructions

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Airtel Money (Kenya) Test Data

In order for you to test Airtel Money payment method available in Kenya, please use the below test data.

Airtel Money (Kenya) Test Data
Data Value
Phone 254725362916

Airtel Money (Kenya) Payment Flow

  1. The customer fills in his first and last name, his email address and his phone number.

    1 Payment instructions

  2. The customer receives the details needed to complete the payment.

    1 Payment instructions

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Airtel Money Test Data

In order for you to test Airtel Money payment method available in Tanzania, please use the below test data.

Airtel Money (Tanzania) Test Data
Data Value
Phone 255737306783

Please click on the appropriate link below, to see how Airtel Money payment method works in Kenya, Ghana and Uganda:

Airtel Money (Tanzania) Payment Flow

  1. The customer fills in his first and last name, his email address and his phone number.1 Payment instructions
  2. The customer receives the details needed to complete the payment.1 Payment instructions
  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.1 Return page when the redirection status is a success

M-Pesa (Tanzania) Test Data

In order for you to test M-Pesa payment method available in Tanzania, please use the below test data.

M-Pesa (Tanzania) Test Data
Data Value
Phone 255653560949

M-Pesa (Tanzania) Payment Flow

  1. The customer fills in his first and last name, his email address and his phone number.

    1 Payment instructions

  2. The customer receives the details needed to complete the payment.

    1 Payment instructions

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

M-Pesa Test Data

In order for you to test M-Pesa payment method, please use the below test data.

M-Pesa Test Data
Data Value
Phone 254716737623


M-Pesa (Kenya) Payment Flow

  1. The customer fills in his first and last name, his email address and his phone number.1 Payment instructions
  2. The customer receives the details needed to complete the payment.1 Payment instructions
  3. The customer receives a push notification to his mobile and confirms the payment.1 Payment instructions
  • In case the customer has not received the M-Pesa prompt on his phone, there is another possibility to complete a M-Pesa payment flow by following the instructions:
  1. The customer opens the SIM Tool Kit and selects “M-Pesa” menu.1 Payment instructions
  2. The customer selects “Lipa na M-Pesa”.1 Payment instructions
  3. The customer selects the “Pay Bill” option.1 Payment instructions
  4. The customer enters his business number.1 Payment instructions
  5. The customer enters his account number.1 Payment instructions
  6. The customer needs to enter the amount.1 Payment instructions
  7. The customer needs to enter his M-Pesa PIN number and press “OK” button to complete the payment.1 Payment instructions
  8. The customer receives the payment details. If the details are correct he needs to press “OK” button to confirm the payment.1 Payment instructions

WeChat POS Test Data

For WeChat payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

WeChat POS Payment Flow

  1. The customer selects his preferred currency from the list and enters his email address.

    1 Enter email

  2. You can skip this step by sending in the initial POST the following parameters: SkipHPP=1 and CustomerEmail.

  3. The Customer is redirected to WeChat payment page.

    1 WeChat payment page

  4. The Customer opens WeChat application and scans the QR code.

    1 QR code scanning

  5. The payment details are displayed and the customer confirms by using the payment password.

    1 Payment confirmation

  6. The payment is confirmed.

    1 Payment successful

  7. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Alipay POS Test Data

For Alipay payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Alipay POS Payment Flow

    1. The Customer selects his preferred currency from the list and continues the payment.1 Select currency

You can skip this step by sending in the initial POST the following parameters: SkipHPP=1 and CustomerEmail.

  1. The Customer is redirected to Alipay payment page. The Customer opens Alipay application and scans the QR code.1 Payment version
  2. The payment details are displayed on the client’s Alipay app on their smartphone; the customer confirms the payment by pressing Pay now.
  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL by pressing the Return to Merchant button1 Return page when the redirection status is Processing

WeChat POS Payment Request

Definition: POST https://paytest.smart2pay.com/v1/payments

Below you will find a full example of a payment request for WeChat POS method (with Success and Bad response). The parameters of the payment are sent in the message body as a JSON object.

For WeChat POS payments the IsOffline parameter set to true is mandatory to be sent in the request:

  • IsOffline – Offline payment method;

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

For more information about status codes, please go to Basic HTTP Status Codes.

Request: 

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_k2",
    "Amount": 11,
    "Currency": "CNY",      
    "MethodID": 1066,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",      
    "TokenLifetime": 10,
    "Customer": {    
      "Email": "youremail@email.com"   
    },
    "BillingAddress": {
      "Country": "CN"
      }
  }
}

Response:

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

{
  "Payment": {
    "ID": 4116540,
    "SkinID": null,
    "ClientIP": null,
    "Created": "20181009113622",
    "MerchantTransactionID": "s2ptest_k2",
    "OriginatorTransactionID": null,
    "Amount": "11",
    "Currency": "CNY",
    "CapturedAmount": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "",
    "MethodID": 1066,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": 30201,
    "NotificationDateTime": null,
    "Customer": {
      "ID": 340,
      "MerchantCustomerID": null,
      "Email": "youremail@email.com",
      "FirstName": null,
      "LastName": null,
      "Gender": null,
      "SocialSecurityNumber": null,
      "SocialSecurityNumber2": null,
      "Phone": null,
      "Company": null,
      "DateOfBirth": null
      },
    "BillingAddress": {
      "ID": 291,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "CN"
      },
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": {
      "BankCode": null,
      "BankName": null,
      "EntityID": null,
      "EntityNumber": null,
      "ReferenceID": null,
      "ReferenceNumber": null,
      "SwiftBIC": null,
      "AccountCurrency": null,
      "AccountNumber": null,
      "AccountHolder": null,
      "IBAN": null,
      "QRCodeURL": "weixin://wxpay/bizpayurl?pr=qXY38eE",
      "Instructions": null
      },
    "CustomParameters": null,
    "PreapprovalID": null,
    "Status": {
      "ID": 1,
      "Info": "Open",
      "Reasons": null
      },
    "MethodTransactionID": null,
    "TokenLifetime": 10,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": "https://apitest.smart2pay.com/Home?PaymentToken=73EF92D30E6E3D90ED2E9FE4A9238FC3.4116540"
  }
}

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
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_k4",
    "Amount": 11,
    "Currency": "CN",      
    "MethodID": 1066,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",      
    "TokenLifetime": 10,
    "Customer": {    
      "Email": "youremail@email.com"   
    },
    "BillingAddress": {
      "Country": "CN"
    }
  }
}

Response:

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

{
  "Payment": {
    "ID": null,
    "SkinID": null,
    "ClientIP": null,
    "Created": null,
    "MerchantTransactionID": "s2ptest_k4",
    "OriginatorTransactionID": null,
    "Amount": "11",
    "Currency": "CN",
    "CapturedAmount": null,
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": null,
    "MethodID": 1066,
    "MethodOptionID": null,
    "IncludeMethodIDs": null,
    "ExcludeMethodIDs": null,
    "PrioritizeMethodIDs": null,
    "SiteID": null,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Details": null,
    "ReferenceDetails": null,
    "CustomParameters": null,
    "PreapprovalID": null,
    "Status": {
      "ID": null,
      "Info": null,
      "Reasons": [
      {
        "Code": 2,
        "Info": "Validation failed - Currency (RegEx: ^[A-Z]{3}$)"
        }
      ]
    },
    "MethodTransactionID": null,
    "TokenLifetime": null,
    "Capture": null,
    "PreapprovalDetails": null,
    "RedirectURL": null
  }
}

Alipay POS Payment Request

Definition: POST https://paytest.smart2pay.com/v1/payments

Below you will find a full example of a payment request for Alipay POS method (with Success and Bad response). The parameters of the payment are sent in the message body as a JSON object.

For Alipay POS payments the following Details parameters are mandatory to be sent in the request:

  • IsOffline – Offline payment method;
  • StoreName – Store name. Can be null only when the store information is verified;
  • StoreId – Store ID;
  • TerminalID – POS Terminal ID.

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

For more information about status codes, please go to Basic HTTP Status Codes.

Request:

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

{
    "Payment": {
        "MerchantTransactionID": "AlipayPlus-{{$timestamp}}",
        "Amount": 100,
        "Currency": "CNY",
        "MethodID": 24,
        "ReturnURL": "https://demo2.smart2pay.com/redirect.php",
        "TokenLifetime": 10,
        "BillingAddress": {
            "Country": "CN"
        },
        "Customer": {
            "Email": "test_s2p@test.com",
            "FirstName": "Test",
            "LastName": "Test",
            "Phone": "00000000"
        },
        "Details": {    
      "IsOffline": true,
      "StoreName": "Zara Palace Mall",
      "StoreId": "ZA2345",
      "TerminalID": "T8999"
    }
    }
}

Response:

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

{
    "Payment": {
        "ID": 6883549,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20240321085116",
        "MerchantTransactionID": "AlipayPlus-1711011077",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "CNY",
        "CapturedAmount": null,
        "ReturnURL": "https://demo2.smart2pay.com/redirect.php",
        "ReturnURLSuccess": null,
        "ReturnURLFailure": null,
        "ReturnURLCancel": null,
        "ReturnURLProcessing": null,
        "Description": "",
        "MethodID": 24,
        "MethodOptionID": null,
        "MethodOptionIdString": null,
        "BankName": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30563,
        "NotificationDateTime": null,
        "Customer": {
            "MerchantCustomerID": null,
            "Email": "test_s2p@test.com",
            "FirstName": "Test",
            "LastName": "Test",
            "Gender": null,
            "SocialSecurityNumber": null,
            "Phone": "00000000",
            "Company": null,
            "DateOfBirth": null
        },
        "BillingAddress": {
            "City": null,
            "ZipCode": null,
            "State": null,
            "Street": null,
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "CN"
        },
        "ShippingAddress": null,
        "Articles": null,
        "Details": {
            "AccountNumber": null,
            "AccountHolder": null,
            "IBAN": null,
            "Address": null,
            "BIC": null,
            "PrepaidCard": null,
            "PrepaidCardPIN": null,
            "ConfirmationCode": null,
            "Store": null,
            "SerialNumbers": null,
            "Wallet": null,
            "ReferenceNumber": null,
            "PayerCountry": null,
            "PayerEmail": null,
            "PayerPhone": null,
            "BankCode": null,
            "Pin": null,
            "BankName": null,
            "BankSortCode": null,
            "BankAccountNumber": null,
            "SocialSecurityNumber": null,
            "BillingCycleStart": null,
            "BillingCycleEnd": null,
            "UnsubscribeInstructions": null,
            "CustomerLoginID": null,
            "PaidAmount": null,
            "PaidCurrency": null,
            "ProviderExchangeRate": 0.0,
            "ProviderBlockChain": null,
            "PayerBankAccountID": null,
            "PayerID": null,
            "CryptoAmount": null,
            "CryptoCurrency": null,
            "CryptoAddress": null,
            "AvailableBalance": null,
            "CurrentBalance": null,
            "Installments": null
        },
        "ReferenceDetails": {
            "BankCode": null,
            "BankName": null,
            "EntityID": null,
            "EntityNumber": null,
            "ReferenceID": null,
            "ReferenceNumber": null,
            "SwiftBIC": null,
            "AccountCurrency": null,
            "AccountNumber": null,
            "AccountHolder": null,
            "IBAN": null,
            "Address": null,
            "AmountToPay": null,
            "QRCodeURL": "https://qr.alipayplus.com/showQrImage?code=281666040092tDqC8ZCNM7QoFo49S3Ev4Z0I&picSize=M",
            "Instructions": null,
            "BoletoURL": null,
            "SortCode": null
        },
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
            "ID": 1,
            "Info": "Open",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": "20240321190741010003H0005811115",
        "OriginalMerchantTID": null,
        "Unknown": false,
        "TokenLifetime": 10,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://webapp-apm-globalpay-api-qa.nuvei.com/Home?PaymentToken=E3E8959BED00BC85C70EFE666EF40D29.6883549",
        "Splits": null
    }
}

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
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

{
    "Payment": {
        "MerchantTransactionID": "AlipayPlus-{{$timestamp}}",
        "Amount": 100,
        "Currency": "CNY",
        "MethodID": 24,
        "ReturnURL": "https://demo2.smart2pay.com/redirect.php",
        "TokenLifetime": 10,
        "BillingAddress": {
            "Country": "China"
        },
        "Customer": {
            "Email": "test_s2p@test.com",
            "FirstName": "Test",
            "LastName": "Test",
            "Phone": "00000000"
        },
        "Details": {    
      "IsOffline": true,
      "StoreName": "Zara Palace Mall",
      "StoreId": "ZA2345",
      "TerminalID": "T8999"
    }
    }
}

Response:

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

{
    "Payment": {
        "ID": 6883560,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20240321090237",
        "MerchantTransactionID": "AlipayPlus-1711011757",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "CNY",
        "CapturedAmount": null,
        "ReturnURL": "https://demo2.smart2pay.com/redirect.php",
        "ReturnURLSuccess": null,
        "ReturnURLFailure": null,
        "ReturnURLCancel": null,
        "ReturnURLProcessing": null,
        "Description": null,
        "MethodID": 24,
        "MethodOptionID": null,
        "MethodOptionIdString": null,
        "BankName": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30563,
        "NotificationDateTime": "20240321090237",
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
            "ID": 4,
            "Info": "Failed",
            "Reasons": [
                {
                    "Code": "147",
                    "Info": "Address details are invalid (BillingAddress)Country - RegEx: ^[a-zA-Z]{2}$;"
                }
            ]
        },
        "Fraud": null,
        "MethodTransactionID": null,
        "OriginalMerchantTID": null,
        "Unknown": false,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null,
        "Splits": null
    }
}

Airtel Money (Kenya) Test Data

In order for you to test Airtel Money payment method available in Kenya, please use the below test data.

Airtel Money (Kenya) Test Data
Data Value
Phone 254725362916

Airtel Money (Kenya) Payment Flow

  1. The customer fills in the Phone number.

    1 Payment instructions

  2. The customer receives the details needed to complete the payment.

    1 Payment instructions

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Alliance Online Test Data

For Alliance Online payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Alliance Online Payment Flow

  1. The customer enters his email address, name and phone number.

    1 Customer details

  2. The customer is shown the details of his payment and proceeds to pay with Alliance Online.

    1 Payment details

  3. The customer logs in to his account and completes the payment.

    1 Account login

  4. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Settlement invoice reports

    The Settlement invoice reports are a great tool that allows you to verify each transaction and activity in detail, including:

  • Any type of fee that applies at transaction level is reported with great granularity;
  • Information about all the payment methods traded are available in only one report;
  • The report is the confirmation that the payout to you has been made and thus can be reconciled with the entry into the bank account.

Settlement invoice reports are available in XLS, PDF and CSV format. The settlement invoices reports are generated depending on the settlement cycle of each payment method.

Examples of our standard weekly and monthly settlement cycles are provided below:

    Weekly settlement cycle

    The settlement invoice follows our standards weekly settlement cycle, which means that all transactions processed from Friday (day 1) – Thursday (day 7) period, and settled to Nuvei (before and after day 7) are invoiced and settled to your account on the following Tuesday (day 12):

  • Transactions period: Friday, May 18th, 2018 00:00 UTC (day 1) – Thursday, May 24th, 2018 23:59 UTC (day 7);
  • Invoice date: Tuesday, May 29th (day 12).
    Monthly settlement cycle

    The settlement invoice follows our standards monthly settlement cycle, which means that all transactions processed from July 1st to July 31st period, and settled to Nuvei (before and after July 31st) are invoiced and settled to your account between August 20 – 25th:

  • Transactions period: July 1st, 2018 00:00 UTC (day 1) – July 31st, 2018 23:59 UTC (last day of the month);
  • Invoice date: August 20 – 25th.

Below there are examples of Settlement invoice reports in all supported formats:

The XLS and PDF files are sent by e-mail to a group of people in your organization. Please send an e-mail to technicalsupport-s2p@nuvei.com and inform which people should be receiving this e-mail.

    The XLS file of each settlement invoice contains details about the successful transactions invoiced per payment method and per SiteID, the fees applied per payment method for each SiteID and the general Nuvei account fees. The information appears on separate sheets, as follows:

  • SettlementInvoice = a summary of all information listed in the settlement invoice;
  • Payments = total gross amounts (transactions) you processed via different payment methods and total refunds;
  • Transaction Fees = the fees charged for transactions processed  (according to the signed agreement);
  • Different sheets with transactions processed via a specific payment method (one for each). All payment methods sheets contain certain details per transaction to reconcile them with your system (e.g. PaymentID, InputDateTime, Amount, Currency, Status, Exchange rate, Amount in EUR).
  • Enquiries|Refunds|Reversed|CFTs = details about refunds, payment enquiries, chargebacks, etc.
  • Preapprovals|Mandates = details about preapprovals and mandates.

The CSV files are uploaded on an SFTP server where you can download them from and process them automatically. Please request login details from technicalsupport-s2p@nuvei.com.

1 Settlement invoice report

The Settlement invoice report file contains the following fields:

  • GPaymentId
    GPaymentId
    Definition
    The ID of the payment in Europay system (can be empty if you are using GlobalPay).
    Type
    int
    – ID of the payment in Europay system (can be empty if you are using GlobalPay);
  • PaymentId
    PaymentId
    Definition
    GlobalPay transaction ID, a unique number that identifies the transaction in the GlobalPay system.
    Type
    int
    Regex
    ^\d{1,12}$
    – ID of the payment in GlobalPay system;
  • Type
    Type
    Definition
    Describes the entry type:
    - Entries depending on a transaction (row has GPaymentID and/or PaymentID): Payment, Refund, Chargeback, Chargeback Reversal, Enquiry;
    - Generic entries: Monthly fee, Account Setup Fee, Account Opening Fee, Account Closing Fee, Account and Transactions Fee VAT, Repatriation Fee, IOF, etc.;
    Type
    string
    – Describes the entry type:
    1. Entries depending on a transaction (row has GPaymentID and/or PaymentID): Payment, Refund, Chargeback, Chargeback Reversal, Enquiry;
    2. Generic entries: Monthly fee, Account Setup Fee, Account Opening Fee, Account Closing Fee, Account and Transactions Fee VAT, Repatriation Fee, IOF, etc.;
  • PaymentMethodName
    PaymentMethodName
    Definition
    The name of the payment method used for the current transaction.
    Type
    string
    – The name of the payment method used for current transaction;
  • CustomerName
    CustomerName
    Definition
    When available, the Customer Name is being displayed in this field.
    Type
    string
    – When available, the Customer Name is being displayed in this field;
  • MerchantName
    MerchantName
    Definition
    Your merchant alias in our system.
    Type
    string
    – Your merchant alias in our system;
  • MerchantId
    MerchantId
    Definition
    Your Merchant Transaction ID – can be used for reconciliation.
    Type
    string
    – Your Merchant Transaction ID – can be used for reconciliation;
  • GtId
    GtId
    Definition
    Oobsolete ID that is not used anymore
    – obsolete ID that is not used anymore;
  • IssuerName
    IssuerName
    Definition
    When available, this field contains the name of the buyer bank.
    Type
    string
    – When available, this field contains the name of the buyer bank;
  • IdealTrxId
    IdealTrxId
    Definition
    For iDeal transactions only, it contains the ID of the transaction from the provider.
    Type
    int
    – For iDeal transactions only, it contains the ID of the transaction from the provider;
  • Country
    Country
    Definition
    Customer‘s country. Format is according to ISO-3166-1 alpha-2, a two-letter code.
    Type
    string
    Regex
    ^[a-zA-Z]{2}$
    – When available, it containts the customer billing country;
  • InputDateTime
    InputDateTime
    Definition
    The data and time when the transaction was initiated in our system (UTC).
    Type
    datetime
    – The data and time when the transaction was initiated in our system (UTC);
  • Amount
    Amount
    Definition
    The amount of the transaction in the currency in which the transaction was initiated
    Type
    int
    Regex
    ^\d{1,12}$
    – The amount of the transaction in the currency in which the transaction was initiated;
  • Currency
    Currency
    Definition
    The currency in which the transaction was initiated. Format is according to ISO 4217, a three-letter code.
    Type
    string
    Regex
    ^[A-Z]{3}$
    – The currency in which the transaction was initiated;
  • Status
    Status
    Definition
    The status of the transaction. Can be one of: Open, Success, Captured, Paid, Partially Captured, Failed, Cancelled, Expired, Dispute Lost, Dispute Won.
    Type
    string
    – The status of the transaction. Can be one of: Open, Success, Captured, Paid, Partially Captured, Failed, Cancelled, Expired, Dispute Lost, Dispute Won.
  • ExchangeRate
    ExchangeRate
    Definition
    The exchange rate used to convert from Currency to Settlement Currency (Reference Currency).
    – The exchange rate used to convert from Currency to Settlement Currency (Reference Currency);
  • CalculatedAmount
    CalculatedAmount
    Definition
    The amount of the transaction in the Settlement Currency (Reference Currency).
    Type
    int
    Regex
    ^\d{1,12}$
    – The amount of the transaction in the Settlement Currency (Reference Currency);
  • ReferenceCurrency
    ReferenceCurrency
    Definition
    Your settlement currency for the current transaction. Format is according to ISO 4217, a three-letter code.
    Type
    string
    Regex
    ^[A-Z]{3}$
    – Your settlement currency for the current transaction;
  • PaymentMethodFee
    PaymentMethodFee
    Definition
    The payment method fee charged for the current transaction.
    – The payment method fee charged for the current transaction;
  • TransactionFeePerSuccess
    TransactionFeePerSuccess
    Definition
    The transaction fee that is applied for successful transactions (completed).
    – The transaction fee that is applied for successful transactions (completed);
  • TransactionFeePerAttempt
    TransactionFeePerAttempt
    Definition
    The transaction fee that is applied for each successful and unsuccessful transaction processed through Smart2Pay.
    – The transaction fee that is applied for each successful and unsuccessful transaction processed through Smart2Pay;
  • IssuedFee
    IssuedFee
    Definition
    An additional transaction fee used for specific payment methods
    – An additional transaction fee used for specific payment methods;
  • LocalVatFee
    LocalVatFee
    Definition
    The local value-added tax (VAT) applied for Payment Method Fee and/or for transaction’s value for specific countries, depending on the case.
    – The local value-added tax (VAT) applied for Payment Method Fee and/or for transaction’s value for specific countries, depending on the case;
  • VAT
    VAT
    Definition
    Value-added tax (VAT) charged by Smart2Pay for PaymentMethodFee, TransactionFeePerSuccess, TransactionFeePerAttempt and Account Fees according to EU Vat regulations if necessary – field currently not used, but the information is available as additional rows at the bottom of the file.
    – Value-added tax (VAT) charged by Nuvei for PaymentMethodFee, TransactionFeePerSuccess, TransactionFeePerAttempt and Account Fees according to EU Vat regulations if necessary – field currently not used, but the information is available as additional rows at the bottom of the file;
  • InvoiceNumber
    InvoiceNumber
    Definition
    The number of the invoice
    – The number of the invoice;
  • InvoiceDate
    InvoiceDate
    Definition
    The date the invoice was issued
    Type
    datetime
    – The date the invoice was issued.
  • SpecificDetails
    SpecificDetails
    Definition
    Specific details provided.
    Type
    string
    – Specific details provided;

Transactional reports

The transactional reports generated can be uploaded periodically on our SFTP server where you can download them from and process them automatically. Please request login details from technicalsupport-s2p@nuvei.com.

The transactional reports are available in CSV format. By default these reports are generated every Friday (weekly) but upon request the frequency can be changed to daily.

Below there are examples of transactional reports in CSV format:

  1. All transactions initiated, no matter the status of the payment: MerchantDemo_ATTEMPTS_2018_07_07;The generated transactional report contains transactions with all the statuses we process for your merchant account.
  2. The transactions with Success status: MerchantDemo_SUCCESS_2018_07_07;In case a transaction was exported with a status (any status except Success), but at a later time the status changed to Success (and only Success), GlobalPay will notify again the payment with the success status and the payment will be exported in a separate report (the format is the same) and the report filename ends in “_success”.1 Transactional report</p

    The transactional report file with Success transactions contains the following information:

    Id
    Id
    Definition
    GlobalPay transaction ID, a unique number that identifies the transaction in the GlobalPay system.
    Type
    int
    Regex
    ^\d{1,12}$
    – GlobalPay transaction ID, a unique number that identifies the transaction in the GlobalPay system;

    MerchantTransactionID
    MerchantTransactionID
    Definition
    Merchant Transaction ID, a number that uniquely identifies a transaction in your system.
    Type
    string
    Regex
    ^[0-9a-zA-Z_-]{1,50}$
    – Merchant Transaction ID, a number that uniquely identifies a transaction in your system;

    InputDateTime
    InputDateTime
    Definition
    Date and time when the transaction was created in GlobalPay system.
    Type
    datetime
    – Date and time when the transaction was created in GlobalPay system;

    Status
    Status
    Definition
    The status of the transaction. It can have the following values: Open, Success, Cancelled, Failed, Expired, Authorized.
    Type
    string
    – The status of the transaction. It can have the following values: Open, Success, Cancelled, Failed, Expired, Authorized;

    MerchantAmount
    MerchantAmount
    Definition
    The amount of the transaction.
    Type
    int
    Regex
    ^\d{1,12}$
    – The amount of the transaction;

    MerchantCurrency
    MerchantCurrency
    Definition
    The currency in which the transaction was initiated. Format is according to ISO 4217, a three-letter code.
    Type
    string
    Regex
    ^[A-Z]{3}$
    – The currency in which the transaction was initiated;

    MethodID
    MethodID
    Definition
    The ID of the payment method.
    Type
    int
    Regex
    ^([0-9]{1,10})$
    – The ID of the payment method;

    ReportedByBOTOperatorDate
    ReportedByBOTOperatorDate
    Definition
    The date when the transaction was exported in a SFTP/CSV file.
    Type
    datetime
    – The date when the transaction was exported in a SFTP/CSV file;

    CapturedAmount
    CapturedAmount
    Definition
    The payment‘s captured amount.
    Type
    int
    Regex
    ^\d{1,12}$
    – The payment‘s captured amount;

    MethodName
    MethodName
    Definition
    The name of the payment method used.
    Type
    string
    – The name of the payment method used;

    PaymentStateDefID
    PaymentStateDefID
    Definition
    The ID of the payment status. It can have the following values: 1 - Open, 2 - Success, 3 - Cancelled, 4 - Failed, 5 - Expired, 9 - Authorized.
    Type
    int
    – The ID of the payment status;

    SpecificDetails
    SpecificDetails
    Definition
    Specific details provided.
    Type
    string
    – Specific details provided;

    ReconciliationProviderID
    ReconciliationProviderID
    Definition
    A payment identification ID used at the provider’s end.
    Type
    int
    – A payment identification ID used at the provider’s end;

    ProviderTransactionID
    ProviderTransactionID
    Definition
    Internal ID used for payment notification within our system.
    Type
    int
    – Internal ID used for payment notification within our system;

    MerchantAlias
    MerchantAlias
    Definition
    Your merchant alias in our system.
    Type
    string
    – Your merchant alias in our system;

    MerchantSiteID
    MerchantSiteID
    Definition
    GlobalPay website ID, a unique number that identifies the website in the GlobalPay system.
    Type
    int
    Regex
    ^\d{1,12}$
    – The ID of your site in our system;

    MerchantSiteAlias
    MerchantSiteAlias
    Definition
    Site alias, an alternative name that identifies the website in the GlobalPay system.
    Type
    string
    Regex
    ^.{1,255}$
    – Your site alias in our system;

    RootProviderTransactionID
    RootProviderTransactionID
    Definition
    The transaction ID from the provider.
    Type
    int
    – The transaction ID from the provider;

    Country
    Country
    Definition
    Customer‘s country. Format is according to ISO-3166-1 alpha-2, a two-letter code.
    Type
    string
    Regex
    ^[a-zA-Z]{2}$
    – When available, it containts the customer billing country.
  3.  

  4. The list of refunds: MerchantDemo_REFUNDS_2018_07_07;1 Refunds report

    The refunds report file contains the following information:

    Id
    Id
    Definition
    GlobalPay Refund ID, a unique number that identifies the refund in the GlobalPay system
    Type
    int
    Regex
    ^\d{1,12}$
    – GlobalPay Refund ID, a unique number that identifies the refund in the GlobalPay system;

    RefundRequestDate
    RefundRequestDate
    Definition
    Date and time when the refund was created in GlobalPay system
    Type
    datetime
     – Date and time when the refund was created in GlobalPay system;

    EntryDate
    EntryDate
    Definition
    Date and time when the refund was created in GlobalPay system
    Type
    datetime
     – Date and time when the refund was created in GlobalPay system;

    MethodName
    MethodName
    Definition
    The name of the payment method used
    Type
    string
     – The name of the payment method used;

    Customer
    Customer
    Definition
    When available, the Customer Name is being displayed in this field
     – When available, the Customer Name is being displayed in this field;

    MerchantTransactionID
    MerchantTransactionID
    Definition
    Merchant Transaction ID, a number that uniquely identifies a transaction in your system
     – Your Merchant Transaction ID – can be used for reconciliation;

    Amount
    Amount
    Definition
    The amount of the refund in the currency in which the refund was initiated
     – The amount of the refund in the currency in which the refund was initiated;

    Currency
    Currency
    Definition
    The currency in which the refund was initiated
     – The currency in which the refund was initiated;

    ToBeInvoiced
    ToBeInvoiced
    Definition
    if a fee is applied against the refund or not
     – if a fee is applied against the refund or not;

    PaymentID
    PaymentID
    Definition
    ID of the initial payment for which the refund was made
     – ID of the initial payment for which the refund was made;

    TrxDate
    TrxDate
    Definition
    The data and time when the initial transaction was initiated in our system (UTC)
     – The data and time when the initial transaction was initiated in our system (UTC);

    OtherDetails
    OtherDetails
    Definition
    Any other additional information
    ;

    Merchant
    Merchant
    Definition
    Your merchant alias in our system
    Type
    string
     – Your merchant alias in our system;

    SiteID
    SiteID
    Definition
    GlobalPay website ID, a unique number that identifies the website in the GlobalPay system.
    Type
    int
    Regex
    ^\d{1,12}$
     – The ID of your site in our system;

    RefundType
    RefundType
    Definition
    The type of refund: Native, SEPABankTransfer, SWIFTBankTransfer, ManualSupportWorkNoInfo, SEPABankTransferNoInfo, SWIFTBankTransferNoInfo, LocalBankTransfer, LocalBankTransferNoInfo, ManualSupportWorkDetailsNeeded, LocalBankTransfer2API
     – the type of refund: https://docs-apm.nuvei.com/category/refunds-api/refund-types/;

    PayerEntity
    PayerEntity
    Definition
    The source of the refund entity (usually Smart2Pay entity)
     – the source of the refund entity (usually Nuvei entity);

    PayerAccount
    PayerAccount
    Definition
    Smart2Pay Account, when applicable
     – Nuvei Account, when applicable;

    PayerBIC
    PayerBIC
    Definition
    Smart2Pay BIC, when applicable
     – Nuvei BIC, when applicable;

    Country
    Country
    Definition
    Customer‘s country. Format is according to ISO-3166-1 alpha-2, a two-letter code.
    Type
    string
    Regex
    ^[a-zA-Z]{2}$
     – When available, it contains the customer billing country;

    ReconciliationProviderID
    ReconciliationProviderID
    Definition
    A payment identification ID used at the provider’s end
     – The transaction ID from the provider.
  5.  

  6. The list of refunds for SmartCards payment method: MerchantDemo_SMARTCARDS_REFUNDS_2018_07_07.

    1 SmartCards Refunds report

    The SmartCards refunds report file contains the following information:

    ID
    ID
    Definition
    A unique number that identifies the refund in the Smartcards system
    Type
    int
    Regex
    ^\d{1,12}$
     – a unique number that identifies the refund in the Smartcards system;

    MerchantAlias
    MerchantAlias
    Definition
    Your merchant alias in our system
    Type
    string
     – Your merchant alias in our system;

    MerchantSiteAlias
    MerchantSiteAlias
    Definition
    Your site alias in our system
    Type
    string
     – Your site alias in our system;

    MerchantSiteID
    MerchantSiteID
    Definition
    The ID of your site in our system
    Type
    string
     – The ID of your site in our system;

    MerchantTransactionID
    MerchantTransactionID
    Definition
    Merchant Transaction ID, a number that uniquely identifies a transaction in your system.
    Type
    string
    Regex
    ^[0-9a-zA-Z_-]{1,50}$
     – Merchant Transaction ID, a number that uniquely identifies a transaction in your system;

    InputDateTime
    InputDateTime
    Definition
    Date and time when the transaction was created in GlobalPay system.
    Type
    datetime
     – Date and time when the refund was created in the Smartcards system;

    InitialPaymentID
    InitialPaymentID
    Definition
    ID of the initial payment for which the refund was made
     – ID of the initial payment for which the refund was made;

    MerchantAmount
    MerchantAmount
    Definition
    The amount of the refund
     – The amount of the refund;

    MerchantCurrency
    MerchantCurrency
    Definition
    The currency in which the refund was initiated
     – The currency in which the refund was initiated;

    Status
    Status
    Definition
    The status of the refund. It can have the following values: Open, Success, Failed.
    Type
    int
     – The status of the refund. It can have the following values: Open, Success, Failed;

    MethodName
    MethodName
    Definition
    The name of the payment method used
     – The name of the payment method used;

    ProviderTransactionID
    ProviderTransactionID
    Definition
    Internal ID used for payment notification within our system.
    Type
    int
     – The transaction ID from the provider;

    RefundType
    RefundType
    Definition
    The type of refund: Native - is the only one available at the moment
     – the types of refund: https://docs-apm.nuvei.com/category/refunds-api/refund-types/;

    ReportedByBOTOperatorDate
    ReportedByBOTOperatorDate
    Definition
    The date when the transaction was exported in a SFTP/CSV file
    Type
    datetime
     – The date when the transaction is exported in a SFTP/CSV file;

    Bookdate
    Bookdate
    Definition
    Bookdate
     – The date when the transaction is reported by the bank.

Dashboard reports

The Dashboard reports contain a complete list of all the transactions made with the payment methods assigned to your merchant account. You have the possibility to search for specific payments using different criteria, to see the details of the payment invoice and fees, and to export your payments into an XLS file. These reports can be exported from GlobalPay Dashboard.

For more information regarding Dashboard reports, please visit our dedicated section: GlobalPay Merchant Dashboard.

MTN (Zambia) Test Data

In order for you to test MTN payment method available in Zambia, please use the below test data.

MTN (Zambia) Test Data
Data Value
Phone 260214002248

MTN (Zambia) Payment Flow

    1. The customer fills in the Phone number.1 Payment instructions
    2. The customer receives the details needed to complete the payment.1 Payment instructions

  1. The customer dials *303# to access the MTN Mobile Money menu.1 Payment instructions
  2. The customer selects Pay Bill option from the menu.1 Payment instructions
  3. The customer selects Goods and Services option from the menu.1 Payment instructions
  4. The customer enters the merchant ID. For test purposes, please use: 3GDP.1 Payment instructions
  5. The customer enters the amount.1 Payment instructions
  6. The customer enters the payment reference number. For test purposes, please use: 8417CE8C.1 Payment instructions
  7. The customer enters the PIN to complete the payment and receives a message that the payment was successful.1 Payment instructions

MTN (Rwanda) Test Data

For MTN payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

MTN (Rwanda) Payment Flow

  1. The customer fills in the Phone number.1 Payment instructions
  2. The customer receives the details needed to complete the payment.1 Payment instructions
  3. The customer receives a mobile request to complete the payment. He has to select the transaction with the amount in RWF currency.1 Payment instructions
  4. The customer accepts or rejects the payment.1 Payment instructions
  5. The customer enters the mobile money PIN to complete the payment. He will receive an SMS confirmation of the transaction from MTN.1 Payment instructions

M-Pesa (Tanzania) – Test Data

In order for you to test M-Pesa payment method available in Tanzania, please use the below test data.

M-Pesa (Tanzania) Test Data
Data Value
Phone 255653560949

M-Pesa (Tanzania) Payment Flow

  1. The customer fills in the Phone number.

    1 Payment instructions

  2. The customer receives the details needed to complete the payment.

    1 Payment instructions

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Tigo Test Data

For Tigo payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Tigo Payment Flow

  1. The customer fills in the Phone number.

    1 Payment instructions

  2. The customer receives the details needed to complete the payment.

    1 Payment instructions

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

MTN Test Data

In order for you to test MTN payment method available in Uganda, please use the below test data.

MTN Test Data
Data Value
Phone 256387676229

For MTN payment method available in Rwanda and Zambia, you can see how it works with the payment flows given here: MTN (Rwanda) Payment Flow and MTN (Zambia) Payment Flow.

MTN (Unganda) Payment Flow

    1. The customer fills in the Phone number.1 Payment instructions
    2. The customer receives the details needed to complete the payment.1 Payment instructions

  1. The customer dials *165# and selects from the menu the Payments option.1 Payment instructions
  2. The customer enters 3G as the Merchant Code.1 Payment instructions
  3. The customer enters the payment reference number. For test purposes, please use: 8412BA96.1 Payment instructions
  4. The customer enters the amount.1 Payment instructions
  5. The customer sees the payment details and enters the PIN to complete the payment.1 Payment instructions

Airtel Money Test Data

In order for you to test Airtel Money payment method available in Tanzania, please use the below test data.

Airtel Money (Tanzania) Test Data
Data Value
Phone 255737306783

For Airtel Money payment method available in Kenya, you can see how it works with the payment flow given here: Airtel Money (Kenya) Payment Flow (2).

Airtel Money (Tanzania) Payment Flow

  1. The customer fills in his phone number.

    1 Payment instructions

  2. The customer receives the details needed to complete the payment.

    1 Payment instructions

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

M-Pesa Test Data

In order for you to test M-Pesa payment method, please use the below test data.

M-Pesa Test Data
Data Value
Phone 254716737623

For M-Pesa payment method available in Tanzania, you can see how it works with the payment flow given here: M-Pesa (Tanzania) – DirectPay Payment Flow.

M-Pesa (Kenya) Payment Flow

  1. The customer fills in the Phone number.1 Payment instructions
  2. The customer receives the details needed to complete the payment.1 Payment instructions
  3. The customer receives a push notification to his mobile and confirms the payment.1 Payment instructions
  • In case the customer has not received the M-Pesa prompt on his phone, there is another possibility to complete a M-Pesa payment flow by following the instructions:
  1. The customer opens the SIM Tool Kit and selects “M-Pesa” menu.1 Payment instructions
  2. The customer selects “Lipa na M-Pesa”.1 Payment instructions
  3. The customer selects the “Pay Bill” option.1 Payment instructions
  4. The customer enters his business number.1 Payment instructions
  5. The customer enters his account number.1 Payment instructions
  6. The customer needs to enter the amount.1 Payment instructions
  7. The customer needs to enter his M-Pesa PIN number and press “OK” button to complete the payment.1 Payment instructions
  8. The customer receives the payment details. If the details are correct he needs to press “OK” button to confirm the payment.1 Payment instructions

Ininal Test Data

For Ininal payment method test data is available on demand. Please contact our support department at technicalsupport-s2p@nuvei.com for more information.

Ininal Payment Flow

  1. The customer enters his phone number and his email address.1 Enter customer details
  2. The customer receives a 6-digit verification code at the phone number that he previously added. He needs to enter the 6-digit code and click the Confirm button.1 SMS Verification
  3. The Customer enters his Ininal card information and confirms the payment.1 Payment confirmation
  4. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.1 Return page when the redirection status is a success

Cards Turkey Test Data

For Cards Turkey payment method test data is available on demand. Please contact our support department at technicalsupport-s2p@nuvei.com for more information.

Cards Turkey Payment Flow

  1. The customer enters his phone number and his email address.1 Enter customer details
  2. The customer receives a 6-digit verification code at the phone number that he previously added. He needs to enter the 6-digit code and click the Confirm button.1 SMS Verification
  3. The Customer enters his credit card details and confirms the payment.1 Payment confirmation
  4. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.1 Return page when the redirection status is a success

BKM Express Test Data

For BKM Express payment method test data is available on demand. Please contact our support department at technicalsupport-s2p@nuvei.com for more information.

BKM Express Payment Flow

  1. The customer enters his phone number and his email address.1 Enter customer details
  2. The customer receives a 6-digit verification code at the phone number that he previously added. He needs to enter the 6-digit code and click the Confirm button.1 SMS Verification
  3. The Customer logs in to his BKM Express account with his email address and password.1 Account login
  4. The customer verifies the payment information and the user details and completes the transaction by clicking on the Perform Payment button.1 Perform payment
  5. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.1 Return page when the redirection status is a success

Bank Transfer Turkey Test Data

For Bank Transfer Turkey payment method test data is available on demand. Please contact our support department at technicalsupport-s2p@nuvei.com for more information.

Bank Transfer Turkey Payment Flow

  1. The customer enters his phone number and his email address.1 Enter customer details
  2. The customer chooses the desired bank from the list provided.1 SMS Verification
  3. The customer enters his phone number and the verification code and clicks on the Approve button.1 SMS Verification
  4. The customer will receive a message that the bank information were sent to his mobile phone via sms. He just needs to write his GPM registered mobile phone to explain his payment.1 Perform payment

Yandex.Money Refund Request (Fiscalization)

This setup is required for the Merchants that decide to setup the interaction with their online sales register via Yandex.Checkout.

For Yandex.Money the refunds can be full and/or partial depending if you have to return all the money to customer or not. A particular case is for Partial refund as you will need to provide additional parameters.

Below there are two examples of a refund request: one for a full refund, where no additional parameters are needed and one for a partial refund, where additional parameters are needed.

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

Where:
  • {id} – GlobalPay Payment ID

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

Full refund means you can only refund the entire paid amount for the initial transaction. For full refund you only need to send the Amount parameter, like in the below example:

Request:

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

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

Response:

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

{
  "Refund": {
    "ID": 1640512,
    "Created": "20170803095139",
    "MerchantTransactionID": "s2ptest_g28_b",
    "OriginatorTransactionID": null,
    "InitialPaymentID": 3005389123,
    "Amount": "100",
    "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
    }
  }
}

For Yandex.Money a particular case is for Partial refund as you will need to provide the below additional parameters in request: Merchant Article ID and Quantity, like in the below example:

Request:

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

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

Response:

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

{
  "Refund": {
    "ID": 0,
    "Created": null,
    "MerchantTransactionID": "YandexPartialRefund",
    "OriginatorTransactionID": null,
    "InitialPaymentID": 3006154123,
    "Amount": "980",
    "Currency": null,
    "Description": null,
    "TypeID": 0,
    "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,
        "DiscountValue": 0
      }
    ],
    "Status": {
      "ID": 1,
      "Info": "Open",
      "Reasons": null
    }
  }
}

Cards Russia Refund Request (Fiscalization)

This setup is required for the Merchants that decide to setup the interaction with their online sales register via Yandex.Checkout.

For Cards Russia the refunds can be full and/or partial depending if you have to return all the money to customer or not. A particular case is for Partial refund as you will need to provide additional parameters.

Below there are two examples of a refund request: one for a full refund, where no additional parameters are needed and one for a partial refund, where additional parameters are needed.

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

Where:
  • {id} – GlobalPay Payment ID

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

Full refund means you can only refund the entire paid amount for the initial transaction. For full refund you only need to send the Amount parameter, like in the below example:

Request:

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

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

Response:

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

{
  "Refund": {
    "ID": 16405,
    "Created": "20170803095139",
    "MerchantTransactionID": "s2ptest_g28_a",
    "OriginatorTransactionID": null,
    "InitialPaymentID": 300538912,
    "Amount": "100",
    "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
    }
  }
}

For Cards Russia a particular case is for Partial refund as you will need to provide the below additional parameters in request: Merchant Article ID and Quantity, like in the below example:

Request:

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

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

Response:

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

{
  "Refund": {
    "ID": 0,
    "Created": null,
    "MerchantTransactionID": "YandexPartialRefund",
    "OriginatorTransactionID": null,
    "InitialPaymentID": 3006154,
    "Amount": "980",
    "Currency": null,
    "Description": null,
    "TypeID": 0,
    "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,
        "DiscountValue": 0
      }
    ],
    "Status": {
      "ID": 1,
      "Info": "Open",
      "Reasons": null
    }
  }
}

Online Banking Vietnam Test Data

For Online Banking Vietnam payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Online Banking Vietnam Payment Flow

  1. The customer enters his Email Address (the below page can be skipped by sending the parameter in the payment request).

    1 Enter Email Address

  2. The customer has to choose his preferred payment option from the given list.

    1 Choose payment option

  3. The customer needs to enter the necessary credit card information: Name of the Cardholder, Card Number and Expiration Date. Then he needs to confirm the payment.

    1 Code via text message

  4. The customer receives a message that the payment was successfully processed.

    1 Payment successfully processed

  5. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Cards Vietnam Test Data

For Cards Vietnam payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Cards Vietnam Payment Flow

  1. The customer enters his Email Address (the below page can be skipped by sending the parameter in the payment request).

    1 Enter Email Address

  2. The customer has to choose his preferred payment option from the given list.

    1 Choose card

  3. The customer needs to enter the necessary credit card information and billing information. Then he needs to confirm the payment.

    1 Code via text message

  4. The customer receives a message that the payment was successfully processed.

    1 Payment successfully processed

  5. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

VTC Pay Wallet Test Data

For VTC Pay Wallet payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

VTC Pay Wallet Payment Flow

  1. The customer enters his Email Address (the below page can be skipped by sending the parameter in the payment request).

    1 Enter Email Address

  2. The customer logs in to his VTC Pay Wallet account by using his account number and password.

    1 Account login

  3. The customer will receive a a code via text message to his phone number which he needs to enter to confirm the payment.

    1 Code via text message

  4. The customer receives a message that the payment was successfully processed.

    1 Payment successfully processed

  5. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

VTC Pay Test Data

For VTC Pay payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

VTC Pay Payment Flow

  1. The customer enters his Email Address (the below page can be skipped by sending the parameter in the payment request).

    1 Enter Email Address

  2. The customer has to choose his preferred payment method from the list.

    1 Choose payment method

  3. After choosing the payment method the customer logs in to his VTC Pay account by using his account number and password.

    1 Account login

  4. The customer will receive a a code via text message to his phone number which he needs to enter to confirm the payment.

    1 Code via text message

  5. The customer receives a message that the payment was successfully processed.

    1 Payment successfully processed

  6. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Local Bank Transfer 2 API – refund flow

Full or partials Local Bank Transfer 2 API refunds are made by using Initiate Refund button from Payments tab.

The Initiate Refund button is displayed only for transactions with status Success.

50

A pop-up window with the transaction details will be displayed. The Refund Merchant Transaction ID is automatically generated. You can change this ID by introducing your ID value.

If you want to perform a full refund you will have to fill Refund Amount with the same amount as Payment Amount.

In the case you want to perform a partial refund you have to fill the Refund Amount with a smaller amount than the Payment Amount. 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.

51

The refunds for most LATAM payment methods are made by our local provider. In order for the refund to be processed the customer bank details are required and there are 2 possibilities:

  • the Customer bank details are sent in full in the request. In this case, the refund should be processed within 48 hours.

  • the Customer bank details are not sent in request. However, in this case, the local provider will contact the customer in order to obtain the bank details so the refund can be performed.

The refunds for India payment methods, do not require sending the customer’s bank details at all.

A confirmation message, that the refund request has been successfully sent, will be displayed:

52

You can see the complete list of all of your refunds in the Refunds tab.

54

Get the number of installments per country

You can get information about the number of installments available per country and BIN (Bank Identification Number) by using the following GET HTTP request.

Definition: GET /v1/installments?country={countryCode}&bin={bin}

Where:
  • {bin} – The Bank’s Identification Number

Request:

GET https://securetest.smart2pay.com/v1/installments?country=AR&bin=512345
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Country": "AR",
    "BIN": "512345",
    "CardBrand": "MasterCard",
    "CardSubBrand": "MasterCard",
    "Installments": [
    {
      "Number": "3",
      "Rate": "1097"
    },
    {
      "Number": "6",
      "Rate": "1951"
    },
    {
      "Number": "9",
      "Rate": "3146"
    },
    {
      "Number": "12",
      "Rate": "4211"
    }
  ]
}

Cancel a Credit Card Token

Definition: POST /v1/card/token/{value}/cancel

Where:
  • {value} – the value of the credit card token used for Recurring Payments

You have the possibility to cancel a credit card token by using the above action.

A 200 HTTP response (OK) is returned if the request was completed successfully.

Request:

POST https://securetest.smart2pay.com/v1/card/token/B531AFAC800FD51A9CCF67D0CC7B24A4/cancel
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "CardAuthentication": { 
    "Card": {
      "HolderName": "John Doe",
      "Number": "VISA-1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2021",
      "IssuingBankCountry": null
    },
    "CreditCardToken": {
      "Value": "B531AFAC800FD51A9CCF67D0CC7B24A4",
      "Active": "false"
    },
    "Status": {
      "ID": 3,
      "Info": "Canceled",
      "Reasons": []
    }
  }
}

Get information on a specific card token

Definition: GET /v1/card/token/{value}

Where:
  • {value} – the value of the credit card token used for Recurring Payments

You can get more information about a specific credit card token by using an action based on GET HTTP request. Please be aware that only a limited amount of details for each token will be provided.

A 200 HTTP response (OK) is returned if the request was completed successfully.

Request:

GET https://securetest.smart2pay.com/v1/card/token/B531AFAC800FD51A9CCF67D0CC7B24A4
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "CardAuthentication": {                 
    "Card": {
      "HolderName": "John Doe",
      "Number": "VISA-1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2021",
      "IssuingBankCountry": null
    },
    "CreditCardToken": {
      "Value": "B531AFAC800FD51A9CCF67D0CC7B24A4",
      "Active": "true"
    }                            
  }
}

Generate a Credit Card Token

To initiate Recurring Card Payments, you must generate first a credit card token. The credit card token can be obtained in two ways:

  • by initiating a payment request with GenerateCreditCardToken parameter set to true. For more detailed information, please go to our section Recurring Card Payments;
  • by using the following action for Card Authentication based on POST HTTP request:

Definition: POST /v1/card/authenticate

By using the Card Authentication request with all the necessary details for customer and for credit card, a token element will be sent in the response, containing the value of the newly created credit card token. The token received in the response can be used to initiate future Recurring Payments.

Request:

POST https://securetest.smart2pay.com/v1/card/authenticate
Authorization: Basic MTAxMDpnYWJp

{
  "CardAuthentication": {
    "Customer": {
      "FirstName": "John",
      "LastName": "Doe",
      "Email": "testing2@test.com",
      "SocialSecurityNumber": "00003456789"
      },
    "BillingAddress": {
      "Country": "BR"
      },
    "Card": {
      "HolderName": "John Doe",
      "Number": "4111111111111111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2021",
      "SecurityCode": "312"
    }
  }
}

Response:

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

{
  "CardAuthentication": {
    "Customer": {
      "ID": 0,
      "MerchantCustomerID": null,
      "Email": "testing2@test.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": "00003456789",
      "Phone": null,
      "Company": null
      },
    "BillingAddress": {
      "ID": 0,
      "City": null,
      "ZipCode": null,
      "State": null,
      "Street": null,
      "StreetNumber": null,
      "HouseNumber": null,
      "HouseExtension": null,
      "Country": "BR"
      },
    "Card": {
      "HolderName": "John Doe",
      "Number": "VISA-1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2021",
      "IssuingBankCountry": null
      },
    "CreditCardToken": {
      "Value": "B531AFAC800FD51A9CCF67D0CC7B24A4",
      "Active": "true"
    },
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": []
    }
  }
}

Resilience

By default the SDK supports Automatic Retries with Exponential Delay and Circuit Breaker.

The default configuration values for Retry and Circuit Breaker are the following:

Retry Configuration
Retry Count 3 Retries 3 times
DelayExponentialFactor 2 Wait time between retries is Math.Pow(2, retryAttempt)
Circuit Breaker Configuration
CircuitBreaker FailureThreshold 0.7 Break on >=70% actions result in handled exception
SamplingDuration TimeSpan.FromSeconds(60) Over any 60 seconds period
MinimumThroughput 16 Provided at least 16 actions in the 60 seconds period
DurationOfBreak TimeSpan.FromSeconds(60) Break for 60 seconds

If you want to change these values you will have to create your own Resilience configuration reference:

var configuration = new ResilienceConfiguration
        {
            Retry = new RetryConfiguration
            {
                Count = 5, // Retries 3 times
                DelayExponentialFactor = 5 // Wait time between retries is Math.Pow(2, retryAttempt)
            },
            CircuitBreaker = new CircuitBreakerConfiguration
            {
                FailureThreshold = 0.5, // Break on >=50% actions result in handled exceptions
                SamplingDuration = TimeSpan.FromSeconds(30), // over any 30 seconds period
                MinimumThroughput = 10, // provided at least 10 actions in the 30 seconds period.
                DurationOfBreak = TimeSpan.FromSeconds(90) // Break for 90 seconds.
            }
        };
        };


var httpClientBuilder = new HttpClientBuilder(() => AuthenticationConfiguration).WithResilienceConfiguration(configuration);

Idempotence

Our API supports idempotence for safely retrying requests and guarantees that the operation is performed only once. For example, if you create a card payment that fails due to a network connection error, you can retry the request with the same idempotence key to guarantee that only a single card payment is created.

The SDK by default uses Guid.NewGuid().ToString() to generate Unique Keys. We strongly recommend to generate your own Unique Keys using V4 UUIDs or another appropriately random string.

For card payments we’ll always send back the same response for requests made with the same key, and keys can’t be reused with different request parameters. Keys expire after 24 hours.

This is how you can plug in your Unique Key Generator:

var uniqueKeyGenerator = new Func<string>(() => {/* write your custom unique key generator logic and return a string */});
var httpClientBuilder = new HttpClientBuilder(() => AuthenticationConfiguration).WithIdempotencyKeyGenerator(uniqueKeyGenerator);

After you perform a Create Payment this is how you can obtain the Unique Key:

var createPaymentResult = await paymentService.InitiatePaymentAsync(paymentRequest);
var uniquKey = createPaymentResult.HttpRequest.Headers.GetIdempotencyToken();

INotificationCallback Interface

Notification Callback Interface
Documentation Method
Alternative Payment Notification Task<bool> AlternativePaymentNotificationCallbackAsync(ApiAlternativePaymentResponse alternativePaymentNotification);
Card Payment Notification Task<bool> CardPaymentNotificationCallbackAsync(ApiCardPaymentResponse cardPaymentNotification);
Refund Notification Task<bool> RefundNotificationCallbackAsync(ApiRefundResponse refundNotification);
Preapproval Notification Task<bool> PreapprovalNotificationCallbackAsync(ApiPreapprovalResponse preapprovalNotification);
Card Payout Notification Task<bool> CardPayoutNotificationCallbackAsync(ApiCardPayoutResponse cardPayoutNotification);
Chargebacks API Task<bool> DisputeNotificationCallbackAsync(ApiDisputeResponse disputeNotification);
Task<bool> InvalidFormatNotificationCallbackAsync(InvalidFormatNotification invalidFormatNotification);
This callback will be raised if the notification body is not in a correct Json format. You will be able to see the Exception and the Notification Body. We just recommend you to log them and not to implement any logic in this callback.
Task<bool> UnknownTypeNotificationCallbackAsync(UnknownTypeNotification unknownTypeNotification);
This callback will be raised if the notification body is in a correct Json format, but we cannot determine the type of notification. We just recommend you to log it and not to implement any logic in this callback.

Nuvei SDK .NET Notification

We offer you the possibility to receive notifications for every type of service used. We will notify you about the status changes to the Notification URL you setup in the Merchant Dashboard.

In order to receive notifications you need to expose REST – endpoint which accepts POSTs.

You need to implement the INotificationCallback Interface. The interface exposes asynchronous methods that return Task<bool> and uses true/false values to indicate success/failure.

Please make sure to handle your exceptions; if the SDK catches an exception it will consider that the callback has failed. The SDK will return Http 204 (No content) if the callback succeeds or it will return Http 500 (Internal Server Error) if the callback returns false or if an exception is caught.

In your POST action handler you will need an reference of INotificationProcessor type, you will need to read the Notification Body as a string and pass that string as an argument to ProcessNotificationBodyAsync method.

For more information, please visit our sections on GitHub: ASP.NET Core 1.1 and ASP.NET WebApi. Please note that examples do not implement security, but you will have to do it in your application.

To ensure that a notification has been securely processed you will need to validate the authorization header using your SiteID and API Key in the same manner you compute the authorization header for a request. For more details, please go to Authentication section.

Also, you will have to whitelist Smart2Pay’s IPs for Test and Live Environment.
Here you will find the complete list of GlobalPay’s Environments and IPs.

Refund Service

Refund Service
Documentation Method Supports cancellation Supports idempotency
Get information on a specific refund Task<ApiResult<ApiRefundResponse>> GetRefundAsync(long paymentId, int refundId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiRefundResponse>> GetRefundAsync(long paymentId, int refundId); No No
Get a list of refunds of a specific payment Task<ApiResult<ApiRefundListResponse>> GetRefundListAsync(long paymentId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiRefundListResponse>> GetRefundListAsync(long paymentId); No No
Get the status of a refund for a card payment Task<ApiResult<ApiCardRefundStatusResponse>> GetRefundStatusAsync(long paymentId, int refundId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardRefundStatusResponse>> GetRefundStatusAsync(long paymentId, int refundId); No No
Create a Refund Task<ApiResult<ApiRefundResponse>> CreateRefundAsync(long paymentId, ApiRefundRequest refundRequest, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiRefundResponse>> CreateRefundAsync(long paymentId, ApiRefundRequest refundRequest); No No
Task<ApiResult<ApiRefundResponse>> CreateRefundAsync(long paymentId, ApiRefundRequest refundRequest, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiRefundResponse>> CreateRefundAsync(long paymentId, ApiRefundRequest refundRequest, string idempotencyToken); No Yes
Get refund types for a certain payment Task<ApiResult<ApiRefundTypeListResponse>> GetRefundTypesAsync(long paymentId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiRefundTypeListResponse>> GetRefundTypesAsync(long paymentId); No No
Get refund types (filtered) Task<ApiResult<ApiRefundTypeListResponse>> GetRefundTypesAsync(short paymentMethodId, string countryCode, string currency, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiRefundTypeListResponse>> GetRefundTypesAsync(short paymentMethodId, string countryCode, string currency); No No

Preapproval Service

Preapproval Service
Documentation Method Supports cancellation Supports idempotency
Get information on a specific Preapproval Task<ApiResult<ApiPreapprovalResponse>> GetPreapprovalAsync(int preapprovalId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiPreapprovalResponse>> GetPreapprovalAsync(int preapprovalId); No No
Get a list of preapprovals Task<ApiResult<ApiPreapprovalListResponse>> GetPreapprovalListAsync(CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiPreapprovalListResponse>> GetPreapprovalListAsync(); No No
Get all payments associated with a preapproval Task<ApiResult<ApiPaymentListResponse>> GetPreapprovalPaymentsAsync(int preapprovalId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiPaymentListResponse>> GetPreapprovalPaymentsAsync(int preapprovalId); No No
Create a Preapproval Task<ApiResult<ApiPreapprovalResponse>> CreatePreapprovalAsync(ApiPreapprovalRequest preapprovalRequest, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiPreapprovalResponse>> CreatePreapprovalAsync(ApiPreapprovalRequest preapprovalRequest); No No
Task<ApiResult<ApiPreapprovalResponse>> CreatePreapprovalAsync(ApiPreapprovalRequest preapprovalRequest, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiPreapprovalResponse>> CreatePreapprovalAsync(ApiPreapprovalRequest preapprovalRequest, string idempotencyToken); No Yes
Change a Preapproval Task<ApiResult<ApiPreapprovalResponse>> ChangePreapprovalAsync(int preapprovalId, ApiPreapprovalRequest preapprovalRequest, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiPreapprovalResponse>> ChangePreapprovalAsync(int preapprovalId, ApiPreapprovalRequest preapprovalRequest); No No
Task<ApiResult<ApiPreapprovalResponse>> ChangePreapprovalAsync(int preapprovalId, ApiPreapprovalRequest preapprovalRequest, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiPreapprovalResponse>> ChangePreapprovalAsync(int preapprovalId, ApiPreapprovalRequest preapprovalRequest, string idempotencyToken); No Yes
Close a Preapproval Task<ApiResult<ApiPreapprovalResponse>> ClosePreapprovalAsync(int preapprovalId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiPreapprovalResponse>> ClosePreapprovalAsync(int preapprovalId); No No

Card Payout Service

Card Payout Service
Documentation Method Supports cancellation Supports idempotency
Get a list of Payouts Task<ApiResult<ApiCardPayoutListResponse>> GetPayoutListAsync(CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPayoutListResponse>> GetPayoutListAsync(); No No
Get a list of payouts (filtered) Task<ApiResult<ApiCardPayoutListResponse>> GetPayoutListAsync(CardPayoutFilter filter, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPayoutListResponse>> GetPayoutListAsync(CardPayoutFilter filter); No No
Get the status of a Payout Task<ApiResult<ApiCardPayoutStatusResponse>> GetPayoutStatusAsync(long payoutId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPayoutStatusResponse>> GetPayoutStatusAsync(long payoutId); No No
Get information on a specific Payout Task<ApiResult<ApiCardPayoutResponse>> GetPayoutAsync(long payoutId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPayoutResponse>> GetPayoutAsync(long payoutId); No No
Create a Payout Task<ApiResult<ApiCardPayoutResponse>> CreatePayoutAsync(ApiCardPayoutRequest payoutRequest, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPayoutResponse>> CreatePayoutAsync(ApiCardPayoutRequest payoutRequest); No No
Task<ApiResult<ApiCardPayoutResponse>> CreatePayoutAsync(ApiCardPayoutRequest payoutRequest, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiCardPayoutResponse>> CreatePayoutAsync(ApiCardPayoutRequest payoutRequest, string idempotencyToken); No Yes

Alternative Payment Service

Alternative Payment Service
Documentation Method Supports cancellation Supports idempotency
Get information on a specific payment Task<ApiResult<ApiAlternativePaymentResponse>> GetPaymentAsync(long paymentId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiAlternativePaymentResponse>> GetPaymentAsync(long paymentId); No No
Get a list of payments Task<ApiResult<ApiAlternativePaymentListResponse>> GetPaymentListAsync(CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiAlternativePaymentListResponse>> GetPaymentListAsync(); No No
Get a list of filtered payments Task<ApiResult<ApiAlternativePaymentListResponse>> GetPaymentListAsync(AlternativePaymentsFilter filter, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiAlternativePaymentListResponse>> GetPaymentListAsync(AlternativePaymentsFilter filter); No No
Create a Payment Task<ApiResult<ApiAlternativePaymentResponse>> CreatePaymentAsync(ApiAlternativePaymentRequest paymentRequest, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiAlternativePaymentResponse>> CreatePaymentAsync(ApiAlternativePaymentRequest paymentRequest); No No
Task<ApiResult<ApiAlternativePaymentResponse>> CreatePaymentAsync(ApiAlternativePaymentRequest paymentRequest, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiAlternativePaymentResponse>> CreatePaymentAsync(ApiAlternativePaymentRequest paymentRequest, string idempotencyToken); No Yes
Capture a Payment Task<ApiResult<ApiAlternativePaymentResponse>> CapturePaymentAsync(long paymentId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiAlternativePaymentResponse>> CapturePaymentAsync(long paymentId); No No
Task<ApiResult<ApiAlternativePaymentResponse>> CapturePaymentAsync(long paymentId, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiAlternativePaymentResponse>> CapturePaymentAsync(long paymentId, string idempotencyToken); No Yes
Cancel a Payment Task<ApiResult<ApiAlternativePaymentResponse>> CancelPaymentAsync(long paymentId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiAlternativePaymentResponse>> CancelPaymentAsync(long paymentId); No No
Task<ApiResult<ApiAlternativePaymentResponse>> CancelPaymentAsync(long paymentId, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiAlternativePaymentResponse>> CancelPaymentAsync(long paymentId, string idempotencyToken); No Yes
Create a Recurring Payment Task<ApiResult<ApiAlternativePaymentResponse>> CreateRecurrentPaymentAsync(ApiAlternativePaymentRequest paymentRequest, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiAlternativePaymentResponse>> CreateRecurrentPaymentAsync(ApiAlternativePaymentRequest paymentRequest); No No
Task<ApiResult<ApiAlternativePaymentResponse>> CreateRecurrentPaymentAsync(ApiAlternativePaymentRequest paymentRequest, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiAlternativePaymentResponse>> CreateRecurrentPaymentAsync(ApiAlternativePaymentRequest paymentRequest, string idempotencyToken); No Yes

Payment Method Service

Payment Method Service
Documentation Method Supports cancellation Supports idempotency
Payment Methods API Task<ApiResult<ApiPaymentMethodResponse>> GetPaymentMethodAsync(short paymentMethodId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiPaymentMethodResponse>> GetPaymentMethodAsync(short paymentMethodId); No No
Task<ApiResult<ApiPaymentMethodListResponse>> GetPaymentMethodsListAsync(CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiPaymentMethodListResponse>> GetPaymentMethodsListAsync(); No No
Task<ApiResult<ApiPaymentMethodListResponse>> GetPaymentMethodsListAsync(string countryCode, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiPaymentMethodListResponse>> GetPaymentMethodsListAsync(string countryCode); No No
Task<ApiResult<ApiPaymentMethodListResponse>> GetAssignedPaymentMethodsListAsync(CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiPaymentMethodListResponse>> GetAssignedPaymentMethodsListAsync(); No No
Task<ApiResult<ApiPaymentMethodListResponse>> GetAssignedPaymentMethodsListAsync(string countryCode, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiPaymentMethodListResponse>> GetAssignedPaymentMethodsListAsync(string countryCode); No No

Exchange Rate Service

Exchange Rate Service
Documentation Method Supports cancellation Supports idempotency
Get Exchange Rates Task<ApiResult<ApiExchangeRateResponse>> GetExchangeRateAsync(string fromCurrency, string toCurrency, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiExchangeRateResponse>> GetExchangeRateAsync(string fromCurrency, string toCurrency); No No

Card Payment Service

Card Payment Service
Documentation Method Supports cancellation Supports idempotency
Get the status of a card payment Task<ApiResult<ApiCardPaymentStatusResponse>> GetPaymentStatusAsync(long paymentId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPaymentStatusResponse>> GetPaymentStatusAsync(long paymentId); Yes No
Get information on a specific payment Task<ApiResult<ApiCardPaymentResponse>> GetPaymentAsync(long paymentId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPaymentStatusResponse>> GetPaymentAsync(long paymentId); Yes No
Get a list of payments Task<ApiResult<ApiCardPaymentListResponse>> GetPaymentListAsync(CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPaymentListResponse>> GetPaymentListAsync(); Yes No
Get a list of direct card payments (filtered) Task<ApiResult<ApiCardPaymentListResponse>> GetPaymentListAsync(CardPaymentsFilter filter, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPaymentListResponse>> GetPaymentListAsync(CardPaymentsFilter filter); Yes No
Create a Payment Task<ApiResult<ApiCardPaymentResponse>> CreatePaymentAsync(ApiCardPaymentRequest paymentRequest, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPaymentResponse>> CreatePaymentAsync(ApiCardPaymentRequest paymentRequest); No No
Task<ApiResult<ApiCardPaymentResponse>> CreatePaymentAsync(ApiCardPaymentRequest paymentRequest, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiCardPaymentResponse>> CreatePaymentAsync(ApiCardPaymentRequest paymentRequest, string idempotencyToken); No Yes
Capture a Payment Task<ApiResult<ApiCardPaymentResponse>> CapturePaymentAsync(long paymentId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPaymentResponse>> CapturePaymentAsync(long paymentId); No No
Task<ApiResult<ApiCardPaymentResponse>> CapturePaymentAsync(long paymentId, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiCardPaymentResponse>> CapturePaymentAsync(long paymentId, string idempotencyToken); No Yes
Task<ApiResult<ApiCardPaymentResponse>> CapturePaymentAsync(long paymentId, long amount, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPaymentResponse>> CapturePaymentAsync(long paymentId, long amount); No No
Task<ApiResult<ApiCardPaymentResponse>> CapturePaymentAsync(long paymentId, long amount, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiCardPaymentResponse>> CapturePaymentAsync(long paymentId, long amount, string idempotencyToken); No Yes
Cancel a Payment Task<ApiResult<ApiCardPaymentResponse>> CancelPaymentAsync(long paymentId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPaymentResponse>> CancelPaymentAsync(long paymentId); No No
Task<ApiResult<ApiCardPaymentResponse>> CancelPaymentAsync(long paymentId, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiCardPaymentResponse>> CancelPaymentAsync(long paymentId, string idempotencyToken); No Yes
Fraud Check – Payment Challenged Task<ApiResult<ApiCardPaymentResponse>> AcceptChallengeAsync(long paymentId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPaymentResponse>> AcceptChallengeAsync(long paymentId); No No
Task<ApiResult<ApiCardPaymentResponse>> AcceptChallengeAsync(long paymentId, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiCardPaymentResponse>> AcceptChallengeAsync(long paymentId, string idempotencyToken); No Yes
Fraud Check – Payment Challenged Task<ApiResult<ApiCardPaymentResponse>> RejectChallengeAsync(long paymentId, CancellationToken cancellationToken); Yes No
Task<ApiResult<ApiCardPaymentResponse>> RejectChallengeAsync(long paymentId); No No
Task<ApiResult<ApiCardPaymentResponse>> RejectChallengeAsync(long paymentId, string idempotencyToken, CancellationToken cancellationToken); Yes Yes
Task<ApiResult<ApiCardPaymentResponse>> RejectChallengeAsync(long paymentId, string idempotencyToken); No Yes

Multiple Websites Management

If you have multiple websites from where you initiate payments to our system, there are two possibilities for managing them.

First one, is to manage your websites via the API and this is described in next section!

Second one, is to manage your websites via Merchant Dashboard. You can define more sites with distinct API Keys from the Merchant Dashboard, Configuration tab, Add a New Site. This allows you to manage multiple websites under the same merchant account.

MerchantTransactionID must be unique for each website!

Nuvei SDK .NET Services

Use HttpClient Builder to obtain a HttpClient Object, which you can use to initialize the services. With the HttpClient already created and the BaseAddress you can create a service instance.

Nuvei offers 2 environments you can use to interact with our payment platform: Test and Live.

Alternative Payment Methods Test Entry Point: https://paytest.smart2pay.com
Alternative Payment Methods Live Entry Point: https://pay.smart2pay.com

Credit Cards Test Entry Point: https://securetest.smart2pay.com
Credit Cards Live Entry Point: https://secure.smart2pay.com

See below examples on how to create a credit card payment request and a payment request for an alternative payment method of your choice.

  • You can create a credit card payment request by calling a function with the appropriate parameters given below:

    
    var baseAddress = new Uri("https://securetest.smart2pay.com");
    IHttpClientBuilder httpClientBuilder = new HttpClientBuilder(() => new AuthenticationConfiguration
    {
    	SiteId = 33258,
    	ApiKey = "JOPxYQftN9xICry9koMuER6L4SrszVHI8SLh9Q83n964tFa2GK"
    });
    var httpClient = httpClientBuilder.Build();
    var paymentService = new S2p.RestClient.Sdk.Services.CardPaymentService(httpClient, baseAddress);
    
    var paymentRequest = new CardPaymentRequest
    {
    	MerchantTransactionID = MerchantTransactionID,
    	Amount = 9000,
    	Currency = "USD",
    	ReturnURL = "http://demo.smart2pay.com/redirect.php",
    	Description = DescriptionText,
    	StatementDescriptor = "bank statement message",
    	Card = new CardDetailsRequest
    	{
    		HolderName = "John Doe",
    		Number = "4111111111111111",
    		ExpirationMonth = "02",
    		ExpirationYear = "2022",
    		RequireSecurityCode = false
    	},
    	BillingAddress = new Address
    	{
    		City = "Iasi",
    		ZipCode = "7000-49",
    		State = "Iasi",
    		Street = "Sf Lazar",
    		StreetNumber = "37",
    		HouseNumber = "5A",
    		HouseExtension = "-",
    		Country = "BR"
    	},
    	Capture = false,
    	Retry = false,
    	GenerateCreditCardToken = false,
    	PaymentTokenLifetime = 5
    }.ToApiCardPaymentRequest();
    
    var createPaymentResult = await paymentService.CreatePaymentAsync(paymentRequest);
    var createPaymentResponse = createPaymentResult.Value.Payment;
    
  • You can create a payment request for an alternative payment method by calling a function with the appropriate parameters given below:

    
    var baseAddress = new Uri("https://paytest.smart2pay.com");
    IHttpClientBuilder httpClientBuilder = new HttpClientBuilder(() => new AuthenticationConfiguration
    {
    	SiteId = 45614,
            ApiKey = "rAwLLh3rQk3uNTOPHpqydrEOdAGsRzZChCd4uyXsXoGE2tkoYA"
    });
    var httpClient = httpClientBuilder.Build();
    var paymentService = new S2p.RestClient.Sdk.Services.AlternativePaymentService(httpClient, baseAddress);
    
    var paymentRequest = new AlternativePaymentRequest()
    {
    	MerchantTransactionID = MerchantTransactionID,
    	Amount = 11,
    	Currency = "CNY",
    	MethodID = 1066,
    	ReturnURL = "http://demo.smart2pay.com/redirect.php",
    	TokenLifetime = 10,
    	Customer = new Customer
    	{
    		Email = "john@doe.com"
    	},
    	BillingAddress = new Address
    	{
    		Country = "CN"
    	}
    }.ToApiAlternativePaymentRequest();
    
    var createPaymentResult = await paymentService.CreatePaymentAsync(paymentRequest);
    var createPaymentResponse = createPaymentResult.Value.Payment;
    

For a complete list of Integration Tests examples, please go to our section on Github: SDK .NET Integration Tests.

Full Nuvei SDK .NET Reference

By using the HttpClient Builder you can obtain an HttpClient which is ready to send Http Request across the network.

With the HttpClient already created and the BaseAddress you can create a service instance.

The library exposes the following services: Card Payment Service, Card Payout Service, Exchange Rate Service, Payment Method Service, Alternative Payment Service, Preapproval Service, Refund Service, INotificationCallback.

Nuvei offers 2 environments you can use to interact with our payment platform: Test and Live.

Alternative Payment Methods Test Entry Point: https://paytest.smart2pay.com
Alternative Payment Methods Live Entry Point: https://pay.smart2pay.com

Credit Cards Test Entry Point: https://securetest.smart2pay.com
Credit Cards Live Entry Point: https://secure.smart2pay.com

Nuvei SDK .NET Logging

Smart2pay’s SDK provide support for logging using LoggerProvider which enables you to use the logging framework of your choice as a provider.

You need to implement ILogger interface and supply a Logging factory. A Logging factory is just a Func which should return the same Logger for a given stringKey.

See the below example of how to register the Logger Factory:

LoggingDefault.Provider.RegisterLoggerFactory(key => {/* please add your custom logger factory code here */ })

Please register the factory only once in the start method of your application!

Nuvei SDK .NET Configuration

First you need to create and initialize a HttpClient configured to accept JSON responses and also an Authentication Provider (using the Site ID and API Key obtained for your test merchant account).

The HttpClient Builder enables the below mandatory and optional configuration points. The only mandatory configuration point is AuthenticationProvider, the next configuration points are optional and let you have more control over the services.

Use HttpClient Builder to obtain a HttpClient Object, which you can use to initialize the services.

Please create only one HttpClient and use it for the entire life of your apllication. For more information, please visit: https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client.

Nuvei SDK .NET Installation

Supporting .NET Standard 1.3+, .NET Core 1.1+, and .NET Framework 4.6.1+. If you need other versions, please contact us via technicalsupport-s2p@nuvei.com.

Install Smart2pay.RestClient.SDK.NET via NuGet. Run the following command line in the Package Manager Console:

PM> Install-Package S2p.RestClient.SDK

If you do not have NuGet, you can download the package from here: https://www.nuget.org/.

Depencies used:

Nuvei SDK .NET

Start integration with GlobalPay payment platform using Nuvei SDK .NET.

Download Nuvei SDK .NET available now on NuGet.org. Source code available on GitHub.

Please note that in order to test a full end-to-end transaction you will require a valid Nuvei test account which you can obtain at: https://www.smart2pay.com/microsoft/signup/. After you registered a test account you just need to use the API Key and the Site ID found at Getting Started > Integration Roadmap > Integration Site and configure your SDK.

Creating your test merchant account

Go to https://www.smart2pay.com/microsoft/signup/ and complete the form. There you will be able to create a new user for all of the Smart2pay platforms. You can access all of the Smart2pay platforms with the same email address and password that you have chosen. For more information checkout our dedicated section Registration Process.

Log into your account and go to Getting Started > Integration Roadmap > Integration Site.

Use the Site ID and the API Key found on that page to configure your test SDK environment.

In order to test a full end-to-end transaction you need to configure your SDK. For more information, please go to: Nuvei SDK .NET Installation.

3D Secure

3D Secure is a security protocol used as an additional layer of security for online credit card transactions prior to authorization in order to prevent fraud. 3D Secure comes from the three-domain model used to provide the additional layer of secure authentication between the financial authorization process and online authentication process. The service is provided by Visa and MasterCard under the name Verified by Visa and MasterCard SecureCode.

3D Secure 1.0 enables customers to validate transactions they make over the internet by requesting an authentication method (usually a a password-based method sent over mobile or email address is used), thus reducing the risk of fraudulent use by unauthorized individuals.

Although the introduction of 3D Secure 1.0 has helped merchants fight fraud, it also came with a negative impact on the user experience, adding extra steps and supporting only browser-based transactions.

This is why the new 3D Secure 2.0 has come into effect to answer and to resolve the security issues and to implement the strong customer authentication (SCA).

SCA requires merchants to integrate into the checkout flow a two-factor authentication that is based on the use of two or more elements categorised as:

  • knowledge (something only the user knows, i.e password);
  • possession (something only the user possesses: i.e.,phone, token, certificate tec.);
  • inherence (something the user is: i.e. fingerprint, Face ID).

For more information about the PSD2 Directive and Strong Customer Authentication (SCA) visit our section: PSD2 and Strong Customer Authentication (SCA).

3D Secure 1.0 Payment Notification

We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

  • For a payment with Success 3D Secure Authentication, you will receive the below notification:

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

    Payment notification format:

    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Payment": {
        "ID": 203771,
        "ClientIP": null,
        "SkinID": null,
        "Created": "20180509114444",
        "MerchantTransactionID": "s2ptest_1002",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "S2P 3Dsecure test",
        "StatementDescriptor": null,
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Card": {
          "HolderName": "John Doe",
          "Number": "Ends with 0004",
          "ExpirationMonth": "5",
          "ExpirationYear": "2021",
          "IssuingBankCountry": null
        },
        "CreditCardToken": null,
        "Status": {
          "ID": 9,
          "Info": "Authorized",
          "Reasons": []
        },
        "MethodTransactionID": null,
        "PaymentTokenLifetime": null,
        "Capture": false,
        "RedirectURL": null,
        "3DSecure": true,
        "Fraud": null
      }
    }

    Response:

    204 No Content
  • For a Failed 3D Secure Authentication, you will receive the below notification:

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

    Payment notification format:

    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Payment": {
        "ID": 203772,
        "ClientIP": null,
        "SkinID": null,
        "Created": "20180509114626",
        "MerchantTransactionID": "s2ptest_1003",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "S2P 3Dsecure test",
        "StatementDescriptor": null,
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 10101,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Card": {
          "HolderName": "John Doe",
          "Number": "Ends with 0004",
          "ExpirationMonth": "5",
          "ExpirationYear": "2021",
          "IssuingBankCountry": null
        },
        "CreditCardToken": null,
        "Status": {
          "ID": 4,
          "Info": "Failed",
          "Reasons": [
            {
              "Code": "5073",
              "Info": "Error in holder authentication"
            }
          ]
        },
        "MethodTransactionID": null,
        "PaymentTokenLifetime": null,
        "Capture": false,
        "RedirectURL": null,
        "3DSecure": true,
        "Fraud": null
      }
    }

    Response:

    204 No Content

3D Secure 1.0 Payments

For enabling and using 3D Secure service, there are two options:

  • statically, in which we can enable for you the 3D Secure service at SiteID level;
  • dynamically, in which you send the 3DSecure parameter in the payment request.

If you set the 3DSecure parameter to true, the customer will be required to authenticate the card used for that transaction:

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_1002",
    "Amount": 100,
    "Currency": "EUR",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "S2P 3Dsecure test",    
    "Card": {
      "HolderName": "John Doe",
      "Number": "4548812049400004",
      "ExpirationMonth": "05",
      "ExpirationYear": "2021",
      "SecurityCode": "123"
      },
    "3DSecure": true
  }
}

Response:

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


{
  "Payment": {
    "ID": 203771,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20180509114444",
    "MerchantTransactionID": "s2ptest_1002",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "EUR",
    "CapturedAmount": "0",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "S2P 3Dsecure test",
    "StatementDescriptor": null,
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "Ends with 0004",
      "ExpirationMonth": "05",
      "ExpirationYear": "2021",
      "IssuingBankCountry": null
      },
    "CreditCardToken": null,
    "Status": {
      "ID": 1,
      "Info": "Open",
      "Reasons": []
      },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": 10,
    "Capture": false,
    "RedirectURL": "https://securetest.smart2pay.com/v1/Payments/FillCardDetails?PaymentToken=203771.1010.05D9FE3FD0AF7FD3D1C848A82F5F54985&SkipLandingPage=true",
    "3DSecure": true,
    "3DSecureData": {     
      "AuthenticationStatus": "Y",
      "ECI": "05",
      "CAVV": "MDA5ODYyNjQxMzEyNzQxMTQ4NzA=",
      "DSID": "f41f41f-f412f-41f-4321-f4132f4",
      "3DSecureVersion": "1.0.2"
    },
    "Fraud": null
  }
}

Access the RedirectURL received in the payment response and enter an identification code. Please note that the landing page will be different depending on the card issuer.

For test purposes, please enter the identification test code received on the page (123456). For a Success 3D Secure Authentication click on the Acceptar button and for a Failed 3D Secure Authentication click on the Cancelar button.

1 Enter Identification Code

You will receive a payment notification to the Notification URL you setup in the Merchant Dashboard containing the new payment status. For more information on Payment Notifications with Success or Failed 3D Secure Authentication, go to our section 3D Secure Payment 1.0 Notification.

Uruguay

Rates per number of installments and issuer bank
Brand Installments
6 12 18
Visa 2%
Oca 2%
Mastercard 2%
Diners Club 2%
Lider 2%
Scotiabank 2%

Peru

Rates per number of installments and issuer bank
Brand Installments
3 6 9 12
AMEX 0% 0% 0% 0%
Visa BBVA 0% 0% 0% 0%
Visa 0% 0% 0% 0%
Mastercard 0% 0% 0% 0%

Chile

Rates per number of installments and issuer bank
Brand Installments
1 2 3 6 9 12
Diners 0% 0% 0% 0% 0% 0%
CMR 0% 0% 0% 0% 0% 0%
AMEX 0% 0% 0% 0% 0% 0%
Mastercard 0% 0% 0% 0% 0% 0%
Visa 0% 0% 0% 0% 0% 0%
Presto 0% 0% 0% 0% 0% 0%
Magna 0% 0% 0% 0% 0% 0%

Argentina

Rates per number of installments and issuer bank
Brand SubBrand Installments
3 6 9 12
Visa Visa Argentina SA 24,20% 43,56% 62,19% 84,70%
Tarjeta Shopping 24,20% 43,56% 62,19% 84,70%
Mastercard Mastercard 24,20% 43,56% 62,19% 84,70%
Nativa Mastercard 0% 43,56% 84,70%
Cencosud 24,20% 43,56% 62,19% 84,70%
AMEX AMEX 19,72% 34,49% 49,19% 63,77%
Mercado Pago + Banco Patagonia Mercado Pago + Banco Patagonia 0% 0% 62,19% 84,70%
Naranja Naranja 24,20% 43,56% 84,70%
Cabal Cabal 0% 17,73% 25,77% 34,42%
Diners Diners 13,92% 26,62% 39,93% 53,24%

Mexico

Rates per number of installments and issuer bank
Brand SubBrand Installments
3 6 9 12
Mastercard Mastercard 5,99% 9,74% 13,92% 18,55%
Banamex 5,99% 9,74% 13,92% 18,55%
Bancomer 5,99% 9,74% 13,92% 18,55%
Santander 5,99% 9,74% 13,92% 18,55%
AMEX AMEX 5,99% 9,74% 13,92% 18,55%
Visa Visa 5,99% 9,74% 13,92% 18,55%
Banamex 5,99% 9,74% 13,92% 18,55%
Bancomer 5,99% 9,74% 13,92% 18,55%
Santander 5,99% 9,74% 13,92% 18,55%

Colombia

Rates per number of installments and issuer bank
Brand SubBrand Installments

(*Interest depends on issuer)
1 2 3 4 5 6 12 18 24 36
Mastercard Mastercard * * * * * * * * * *
Banco Colombia * * * * * * * N/A N/A N/A
Banco BBVA * * * * * * * N/A N/A N/A
AV. Villas * * * * * * * N/A N/A N/A
Colpatria Porpias * * * * * * * N/A N/A N/A
Banco de Bogota * * * * * * * N/A N/A N/A
AMEX AMEX * * * * * * * * * *
Banco de Colombia * * * * * * * N/A N/A N/A
Colpatria Propias * * * * * * * * * *
Visa Visa * * * * * * * * * *
Banco Colombia * * * * * * * N/A N/A N/A
Banco BBVA * * * * * * * N/A N/A N/A
AV. Villas * * * * * * * N/A N/A N/A
Colpatria Porpias * * * * * * * N/A N/A N/A
Banco de Bogota * * * * * * * N/A N/A N/A
Crédito Facil Codensa Crédito Facil Codensa * * * * * * * * * *
Diners Diners * * * * * * * * * *

Brazil

Rates per number of installments and issuer bank
Brand Installments
2 3 4 5 6 7 8 9 10 11 12 15 18 24
Cartao mercado livre 2,39% 4,78% 7,17% 8,99% 10,49% 11,83% 12,49% 13,21% 14,59% 16,00% 17,41% 21,73% 26,15% 28,04%
ELO 2,39% 4,78% 7,17% 8,99% 10,49% 11,83% 12,49% 13,21% 14,59% 16,00% 17,41%
Diners 2,39% 4,78% 7,17% 8,99% 10,49% 11,83% 12,49% 13,21% 14,59% 16,00% 17,41%
AMEX 2,39% 4,78% 7,17% 8,99% 10,49% 11,83% 12,49% 13,21% 14,59% 16,00% 17,41%
Hipercard 2,39% 4,78% 7,17% 8,99% 10,49% 11,83% 12,49% 13,21% 14,59% 16,00% 17,41%
Mastercard 2,39% 4,78% 7,17% 8,99% 10,49% 11,83% 12,49% 13,21% 14,59% 16,00% 17,41%
Visa 2,39% 4,78% 7,17% 8,99% 10,49% 11,83% 12,49% 13,21% 14,59% 16,00% 17,41%

Card Payout Notification

We will notify you about the new status of the payout to the Notification URL you setup in the Merchant Dashboard. The format of the received notification has the same structure as the response of the initial request.

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

Payout notification format:

Authorization: Basic MTAxMDpnYWJp

{
  "Payout": {
    "ID": 214,
    "SiteID": 1010,
    "Created": "20181016133234",
    "MerchantTransactionID": "test_h4",
    "OriginatorTransactionID": null,
    "Amount": "1000",
    "Currency": "EUR",
    "Description": "payment product",
    "StatementDescriptor": null,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": []
    }
  }
}

Response:

204 No Content

Get Exchange Rates

You can get information about exchange rates for all our supported currencies (200 + transaction currencies) by using the following GET HTTP request. The parameters are sent in the message body as a JSON object.

This action can be exploited when DCC (Dynamic Currency Conversion) is being used. DCC means Dynamic currency conversion which allows you to initiate transactions in any currency you want, even if specific payment method doesn’t support that currency. Our system will take care of converting the transaction currency in a currency supported by the payment method.

Just replace the fields From and To in the request below with the currency codes you want exchange rate for and make a GET request.

Definition: GET /v1/exchangerates/{FromCurrency}/{ToCurrency}

Where:
  • {FromCurrency} – The three letter currency code (Alphabetic code of ISO 4217) I want exchage rate from;
  • {ToCurrency} – The three letter currency code (Alphabetic code of ISO 4217) I want exchage rate to.

Request:

GET https://paytest.smart2pay.com/v1/exchangerates/EUR/USD
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

Response:

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

{
  "ExchangeRate": {
    "From": "EUR",
    "To": "USD",
    "DateTime": "20181022130450",
    "Rate": 1.05
  }
}

Secure Communication

Web security is an important responsibility that is constantly changing and evolving. We are always keeping up with the latest changes in securing internet communication.

Using TLS 1.2, the most current version of the protocol that encrypts internet traffic of all types, enables secure internet communication, helping you protect your customers and your business.

If you are not already communicating over TLS 1.2, we strongly recommend you to upgrade your operating systems and environments to communicate to Nuvei over TLS 1.2.

TLS 1.2 protocol is mandatory in order to access our Credit Card Payments.

Switching to TLS 1.2 protocol is a change that will sooner or later happen, so switch now to secure – proof your website.

You must use HTTPS (Hyper Text Transfer Protocol Secure) in order to make your website more secure and trustworthy.

HTTPS protocol allows communication between different systems or for transferring data from a web server to a browser to view web pages in a secure and reliable manner.

Recurring Card Payments

For Recurring Card Payments you will need to generate a credit card token by sending the GenerateCreditCardToken parameter to true and the card details in full in the initial payment request. Afterwards, the recurring card payments will be initiated by sending the new generated token instead of the card details.

Please note that the credit card token has a usage limit that we can set. If the token is sent more times than our set limit the payment will fail.

If you initiate a Card payment and set the GenerateCreditCardToken parameter to true, the CardOnFile object is mandatory to be sent. A token element is sent in the response, containing the value of the newly created credit card token, that will be used to initiate future Recurring Payments.

For more information regarding CardOnFile object please go to our dedicated section Card on file transactions (COF).

    • See below an example of an initial card payment with the GenerateCreditCardToken parameter set to true and mandatory Card details and CardOnFile objects:

      Request:

      POST https://securetest.smart2pay.com/v1/payments
      Authorization: Basic MTAxMDpnYWJp
      
      {
        "Payment": {
          "MerchantTransactionID": "s2ptest_m20",
          "Amount": 1000,
          "Currency": "EUR",
          "ReturnURL": "http://demo.smart2pay.com/redirect.php",   
          "Card": {
            "HolderName": "John Doe",
            "Number": "4548812049400004",
            "ExpirationMonth": "05",
            "ExpirationYear": "2021",
            "SecurityCode": "123",
            "RequireSecurityCode": true
            },
          "GenerateCreditCardToken": true,
          "CardOnFile":{
               "IsInitial": true,
               "TransactionType": "Recurring"
          }
        }
      }

      Response:

      HTTP/1.1 201 Created
      Content-Type: application/json; charset=utf-8
      
      {
        "Payment": {
          "ID": 203747,
          "ClientIP": null,
          "SkinID": null,
          "Created": "20180502085305",
          "MerchantTransactionID": "s2ptest_m20",
          "OriginatorTransactionID": null,
          "Amount": "1000",
          "Currency": "EUR",
          "CapturedAmount": "0",
          "ReturnURL": "http://demo.smart2pay.com/redirect.php",
          "Description": null,
          "StatementDescriptor": null,
          "MethodID": 6,
          "MethodOptionID": null,
          "SiteID": 1010,
          "NotificationDateTime": null,
          "Customer": null,
          "BillingAddress": null,
          "ShippingAddress": null,
          "Articles": null,
          "Card": {
            "HolderName": "John Doe",
            "Number": "Ends with 0004",
            "ExpirationMonth": "05",
            "ExpirationYear": "2021",
            "IssuingBankCountry": "NL"
            },
          "CreditCardToken": {
            "Value": "C0D510746B513D66093609AA92BDA295"
            },
          "Status": {
            "ID": 9,
            "Info": "Authorized",
            "Reasons": []
            },
          "MethodTransactionID": null,
          "PaymentTokenLifetime": null,
          "Capture": false,
          "RedirectURL": null,
          "3DSecure": false,
          "CardOnFile":{
               "IsInitial": true,
               "TransactionType": "Recurring"
           },
          "Fraud": {
            "Status": "Accept",
            "CheckMode": "CheckOnPreAuthorisation",
            "Score": 31,
            "Reason": "No decision provided"
          }
        }
      }

The token received in the response of the initial payment, together with the RequireSecurityCode parameter set to false, can be used to initiate future Recurring Payments.

For Recurring Payments, the security code is not needed, you only need to send the RequireSecurityCode parameter set to false. In this case, the client will not be redirected to the form page to fill in the security code, but the payment will be directly sent to the upstream processor.

  • See below an example of a Recurring Card Payment:

    Request:

    POST https://securetest.smart2pay.com/v1/payments
    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Payment": {
        "MerchantTransactionID": "s2ptest_m23",
        "Amount": 1000,
        "Currency": "EUR",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "CreditCardToken": {
          "Value": "C0D510746B513D66093609AA92BDA295",
          "RequireSecurityCode": false
          },
        "CardOnFile": {
              "IsInitial": false,
              "TransactionType": "Recurring",
              "InitialPaymentID": 203747
        }
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Payment": {
        "ID": 203751,
        "ClientIP": null,
        "SkinID": null,
        "Created": "20180502090314",
        "MerchantTransactionID": "s2ptest_m23",
        "OriginatorTransactionID": null,
        "Amount": "1000",
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": null,
        "StatementDescriptor": null,
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Card": {
          "HolderName": "John Doe",
          "Number": "Ends with 0004",
          "ExpirationMonth": "05",
          "ExpirationYear": "2021",
          "IssuingBankCountry": "NL"
          },
        "CreditCardToken": {
          "Value": "C0D510746B513D66093609AA92BDA295"
          },
        "Status": {
          "ID": 9,
          "Info": "Authorized",
          "Reasons": []
          },
        "MethodTransactionID": null,
        "PaymentTokenLifetime": null,
        "Capture": false,
        "RedirectURL": null,
        "3DSecure": false,
        "CardOnFile": {
              "IsInitial": false,
              "TransactionType": "Recurring",
              "InitialPaymentID": 203747
        },
        "Fraud": {
          "Status": "Accept",
          "CheckMode": "CheckOnPreAuthorisation",
          "Score": 31,
          "Reason": "No decision provided"
        }
      }
    }

  • For LATAM region it is mandatory to send in the initial Card payment the Country parameter for the Billing Address together with the Email parameter and the SocialSecurityNumber parameter of the Customer. You also need to set the GenerateCreditCardToken parameter to true and a token element is sent in the response, containing the value of the newly created credit card token. Checkout the example below of an initial card payment with all the mandatory parameters to be sent for LATAM region:

    Request:

    POST https://securetest.smart2pay.com/v1/payments
    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Payment": {
        "MerchantTransactionID": "s2ptest_m21",
        "Amount": 1000,
        "Currency": "EUR",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",   
        "Card": {
          "HolderName": "John Doe",
          "Number": "4548812049400004",
          "ExpirationMonth": "05",
          "ExpirationYear": "2021",
          "SecurityCode": "123",
          "RequireSecurityCode": true
          },
        "Customer": {
          "Email": "customer@test.com",
          "SocialSecurityNumber": "45908-28324"
        },
        "GenerateCreditCardToken": true,
        "CardOnFile": {
              "IsInitial": true,
              "TransactionType": "Recurring"
        }
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Payment": {
        "ID": 203746,
        "ClientIP": null,
        "SkinID": null,
        "Created": "20180502085305",
        "MerchantTransactionID": "s2ptest_m20",
        "OriginatorTransactionID": null,
        "Amount": "1000",
        "Currency": "EUR",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": null,
        "StatementDescriptor": null,
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": {
          "ID": 115,
          "MerchantCustomerID": "null",
          "Email": "customer@test.com",
          "FirstName": "John",
          "LastName": "Doe",
          "Gender": "1",
          "SocialSecurityNumber": "45908-28324",
          "Phone": "0744-783322",
          "Company": "S2P"
        },
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Card": {
          "HolderName": "John Doe",
          "Number": "Ends with 0004",
          "ExpirationMonth": "05",
          "ExpirationYear": "2021",
          "IssuingBankCountry": "NL"
          },
        "CreditCardToken": {
          "Value": "C0D510746B513D66093609AA92BDA295"
          },
        "Status": {
          "ID": 9,
          "Info": "Authorized",
          "Reasons": []
          },
        "MethodTransactionID": null,
        "PaymentTokenLifetime": null,
        "Capture": false,
        "Retry": false,
        "RedirectURL": null,
        "3DSecure": false,
        "CardOnFile": {
              "IsInitial": true,
              "TransactionType": "Recurring"
        },
        "Fraud": {
          "Status": "Accept",
          "CheckMode": "CheckOnPreAuthorisation",
          "Score": 31,
          "Reason": "No decision provided"
        }
      }
    }

    The token received in the response of the initial payment, can be used to initiate future Recurring Payments for LATAM region, like in the below example:

    Request:

    POST https://securetest.smart2pay.com/v1/payments
    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Payment": {
        "MerchantTransactionID": "s2p_m6",
        "Amount": 10000,
        "Currency": "BRL",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "CreditCardToken": {
          "Value": "F43F90A5CB613D91F704407D4E297EA1"
          },
        "GenerateCreditCardToken": true,
        "CardOnFile": {
              "IsInitial": false,
              "TransactionType": "Recurring",
              "InitialPaymentID": 203746
        }
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Payment": {
        "ID": 203754,
        "ClientIP": null,
        "SkinID": null,
        "Created": "20180430092243",
        "MerchantTransactionID": "s2p_m6",
        "OriginatorTransactionID": null,
        "Amount": "10000",
        "Currency": "BRL",
        "CapturedAmount": "0",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": null,
        "StatementDescriptor": null,
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Card": {
          "HolderName": "John Doe",
          "Number": "",
          "ExpirationMonth": "05",
          "ExpirationYear": "2021",
          "IssuingBankCountry": "NL"
          },
        "CreditCardToken": {
          "Value": "F43F90A5CB613D91F704407D4E297EA1"
          },
        "Status": {
          "ID": 9,
          "Info": "Authorized",
          "Reasons": []
          },
        "MethodTransactionID": null,
        "PaymentTokenLifetime": null,
        "Capture": false,
        "RedirectURL": null,
        "3DSecure": false,
        "CardOnFile": {
              "IsInitial": false,
              "TransactionType": "Recurring",
              "InitialPaymentID": 203746
        },
        "Fraud": {
          "Status": "Accept",
          "CheckMode": "CheckOnPreAuthorisation",
          "Score": 31,
          "Reason": "No decision provided"
        }
      }
    }

Chargebacks API

A chargeback is the reversal of a credit card payment, forcibly initiated by the cardholder through the issuing bank of the instrument used to settle a debt. After the bank verifies the claim and an investigation occurs, the bank validates the cardholders request, and removes money from the merchant’s account back to the customer.

Any chargeback request received will be verified according to the regulations of the relevant card issuer. In some cases, you may need to provide additional documentation, via email, in order to resolve the chargeback.

Reasons for a chargeback

Typically, a cardholder might file a chargeback for any of the following reasons:

    • duplicate billing;
    • incorrect amount billed;
    • refund never issued;
    • the customer claims he did not authorize the charge or that his identity was stolen;
    • the customer claims he has never received the products or services.

We strongly recommend you avoid such situations where the customer initiates a chargeback process. Refunds are always preferable to chargebacks, because no negative chargeback score is linked to your account and customer satisfaction is increased. The chargeback process can be very costly as it includes chargeback fees and time needed to gather the required documentation. Also, there are situations where chargebacks can be non-disputable, meaning the dispute is always lost and you have no control over the chargeback process.

Notification Types:

We will notify you in real time of any chargebacks requests received (the payment is disputed by the customer) or when the status of the payment changes (the cardholder has won the dispute and has received the money back). You will receive two types of notifications:

  • Notification Type Dispute, in which we will notify you about the status of the Dispute, it can be either Open – 1 / DisputeWon – 23 / DisputeLost – 24;
  • Notification type Payment, in which according to the status of the Dispute we will notify you about the new status of the Payment, it can be either Success – 2 / Captured – 11 / PartiallyCaptured – 35 / Disputed – 19 / Chargedback – 26.
  • Notification type Dispute

    When a payment is disputed by the customer, it will also change its status to Disputed. If the customer wins the dispute, the dispute changes its status in DisputeLost – 24 and we will notify of the event:

    Dispute notification format:

    {
    "Dispute": {
        "ID": 158,
        "SiteID": 30563,
        "Created": "20240318090132",
        "PaymentID": 6880987,
        "MethodID": 113,
        "Amount": "8801",
        "Currency": "USD",
        "Status": {
          "ID": 23,
          "Info": "DisputeWon",
          "Reasons": null
        }
      }
    }
    
    

    Response:

    204 No Content
  • Dispute reasons for CashApp

    For the CashApp method, the notifications will also include the reason code and reason info; this applies to all 3 dispute states: Open – 1 / DisputeWon – 23 / DisputeLost – 24.

    Open Dispute notification format:

    {
    {
      "Dispute": {
        "ID": 203,
        "SiteID": 30563,
        "Created": "20250224120232",
        "PaymentID": 8063017,
        "MethodID": 113,
        "Amount": "8801",
        "Currency": "USD",
        "ProviderDisputeID": "DSPT_d49y4043pcy42brk461np6cqz",
        "Status": {
          "ID": 1,
          "Info": "Open",
          "Reasons": [
            {
              "Code": "905",
              "Info": "Canceled services."
            }
          ]
        }
      }
    }
    
    

    Lost Dispute notification format:

    {
    {
      "Dispute": {
        "ID": 204,
        "SiteID": 30563,
        "Created": "20250224122046",
        "PaymentID": 8063016,
        "MethodID": 113,
        "Amount": "8801",
        "Currency": "USD",
        "ProviderDisputeID": "DSPT_ptyqbwxkktzetfwvyzbjfd92z",
        "Status": {
          "ID": 24,
          "Info": "DisputeLost",
          "Reasons": [
            {
              "Code": "905",
              "Info": "Canceled services."
            }
          ]
        }
      }
    }
    
    

    Won Dispute notification format:

    {
    {
      "Dispute": {
        "ID": 203,
        "SiteID": 30563,
        "Created": "20250224120232",
        "PaymentID": 8063017,
        "MethodID": 113,
        "Amount": "8801",
        "Currency": "USD",
        "ProviderDisputeID": "DSPT_d49y4043pcy42brk461np6cqz",
        "Status": {
          "ID": 23,
          "Info": "DisputeWon",
          "Reasons": [
            {
              "Code": "905",
              "Info": "Canceled services."
            }
          ]
        }
      }
    }
    
    
  • Notification type Payment

    When a payment with Success status is disputed by the customer and you lose the dispute, the payment changes its status in Chargedback – 26 and we will notify you about the new status of the payment:

    Payment notification format:

    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
      "Payment": {
        "ID": 169144,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20180215151027",
        "MerchantTransactionID": "609374486387",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "EUR",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "",
        "MethodID": 32,
        "MethodOptionID": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 1000,
        "NotificationDateTime": null,
        "Customer": null,
        "BillingAddress": null,
        "ShippingAddress": null,
        "Articles": null,
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
          "ID": 26,
          "Info": "Chargedback",
          "Reasons": null
        },
        "MethodTransactionID": null,
        "TokenLifetime": null,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": null
      }
    }

    Response:

    204 No Content

    When a card payment with Captured or PartiallyCaptured status is disputed by the customer and you lose the dispute, the payment changes its status in Chargedback – 26 and we will notify you about the new status of the payment:

    Payment notification format:

    Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=
    
    {
      "Payment": {
        "ID": 202242,
        "ClientIP": null,
        "SkinID": null,
        "Created": "20161205093117",
        "MerchantTransactionID": "s2ptest_h12",
        "OriginatorTransactionID": "100_a",
        "Amount": "2000",
        "Currency": "EUR",
        "CapturedAmount": "2000",
        "ReturnURL": "http://demo.smart2pay.com/redirect.php",
        "Description": "payment product",
        "StatementDescriptor": "bank statement message",
        "MethodID": 6,
        "MethodOptionID": null,
        "SiteID": 1010,
        "NotificationDateTime": null,
        "Customer": {
          "ID": 115,
          "MerchantCustomerID": "null",
          "Email": "customer@test.com",
          "FirstName": "John",
          "LastName": "Doe",
          "Gender": "1",
          "SocialSecurityNumber": "45908-28324",
          "Phone": "0744-783322",
          "Company": "S2P"
        },
        "BillingAddress": {
          "ID": 253,
          "City": "Iasi",
          "ZipCode": "7000-49",
          "State": "Iasi",
          "Street": "Sf Lazar",
          "StreetNumber": "37",
          "HouseNumber": "5A",
          "HouseExtension": "-",
          "Country": "RO"
        },
        "ShippingAddress": {
          "ID": 87,
         "City": "Iasi",
          "ZipCode": "700049",
          "State": "Iasi",
          "Street": "Sf Lazar",
          "StreetNumber": "37",
          "HouseNumber": "-",
          "HouseExtension": "-",
          "Country": "RO"
        },
        "Articles": null,
        "Card": {
          "HolderName": "John Doe",
          "Number": "VISA-1111",
          "ExpirationMonth": "02",
          "ExpirationYear": "2018"
        },
        "CreditCardToken": {
          "Value": "6BEBF42B0E43D3BFD360DFB5EFF9D96D"
        },
        "Status": {
          "ID": 26,
          "Info": "Chargedback",
          "Reasons": []
        },
        "MethodTransactionID": null,
        "PaymentTokenLifetime": null,
        "Capture": true,
        "Retry": true,
        "RedirectURL": null,
        "3DSecure": null
      }
    }

    Response:

    204 No Content

Fraud Check – Payment Challenged

If the system detects a possible malicious transaction, that transaction will be challenged by the fraud check provider. There are 2 possible outcomes after running your own processes and procedures for fraud management: you can reject or accept the challenge.

The card payment is initiated and the Fraud Check system detects a possible suspicious behavior or rule. The payment is challenged by the fraud check provider. You can reject or accept the challenge.

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_j10",
    "Amount": 100,
    "Currency": "BRL",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "test payment",
    "StatementDescriptor": "card payment",
    "BillingAddress": {
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "BR"
    },
    "ShippingAddress": null,
    "Customer": {
      "FirstName":"John",
      "LastName":"Doe",
      "Email": "challenge@challenge.com",
      "SocialSecurityNumber": "00003456789"
    },
    "Card": {
      "HolderName": "John Doe",
      "Number": "4111111111111111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2021",
      "SecurityCode": "312"
    },
    "Installments": 3,
    "Capture": false,
    "GenerateCreditCardToken": false,
    "PaymentTokenLifetime": 100,
    "3DSecure": false,
    "Language": "ro-RO",
    "SkinID": 200
  }
}

Response:

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

{
  "Payment": {
    "ID": 203373,
    "ClientIP": null,
    "SkinID": 200,
    "Created": "20180209082529",
    "MerchantTransactionID": "s2ptest_j10",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "BRL",
    "CapturedAmount": "0",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "test payment",
    "StatementDescriptor": "card payment",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": {
      "ID": 298,
      "MerchantCustomerID": null,
      "Email": "challenge@challenge.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": "00003456789",
      "Phone": null,
      "Company": null
      },
    "BillingAddress": {
      "ID": 9590,
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "BR"
      },
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "Ends with 1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2021",
      "IssuingBankCountry": null
      },
    "CreditCardToken": null,
    "Status": {
      "ID": 30,
      "Info": "PendingChallengeConfirmation",
      "Reasons": []
      },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": false,
    "RedirectURL": null,
    "3DSecure": false,
    "Fraud": {
      "Status": "Challenge",
      "Score": 55,
      "Reason": "Transaction hit a velocity or rule threshold"
      },
    "Installments": 3
    }
}

Accept the Challenge:

Request:

POST https://securetest.smart2pay.com/v1/payments/203373/challenge/accept
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Payment": {
    "ID": 203373,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20180209082529",
    "MerchantTransactionID": "s2ptest_j10",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "BRL",
    "CapturedAmount": "0",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "test payment",
    "StatementDescriptor": "card payment",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "411111******1111",
      "ExpirationMonth": "2",
      "ExpirationYear": "2021",
      "IssuingBankCountry": null
      },
    "CreditCardToken": null,
    "Status": {
      "ID": 9,
      "Info": "Authorized",
      "Reasons": []
      },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": false,
    "RedirectURL": null,
    "3DSecure": false,
    "Fraud": {
      "Status": "Challenge",
      "Score": 55,
      "Reason": "Transaction hit a velocity or rule threshold"
      },
    "Installments": 3
    }
}

Reject the Challenge:

Request:

POST https://securetest.smart2pay.com/v1/payments/203374/challenge/reject
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Payment": {
    "ID": 203374,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20180209082726",
    "MerchantTransactionID": "s2ptest_j11",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "BRL",
    "CapturedAmount": "0",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "test payment",
    "StatementDescriptor": "card payment",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": {
      "ID": 298,
      "MerchantCustomerID": null,
      "Email": "challenge@challenge.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": "00003456789",
      "Phone": null,
      "Company": null
      },
    "BillingAddress": {
      "ID": 9590,
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "BR"
      },
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "411111******1111",
      "ExpirationMonth": "2",
      "ExpirationYear": "2021",
      "IssuingBankCountry": null
      },
    "CreditCardToken": null,
    "Status": {
      "ID": 3,
      "Info": "Cancelled",
      "Reasons": [
      {
        "Code": 118,
        "Info": "Transaction rejected by merchant"
        }
      ]
    },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": false,
    "RedirectURL": null,
    "3DSecure": false,
    "Fraud": {
      "Status": "Challenge",
      "Score": 55,
      "Reason": "Transaction hit a velocity or rule threshold"
      },
    "Installments": 3
    }
}

Fraud Check – Payment Denied

If the system detects a malicious transaction, that transaction will be rejected by the fraud check provider. You will be given in the response the reason of why the transaction has Failed in the Reason field in the Fraud object.

The card payment is initiated and the Fraud Check system detects a suspicious behavior or rule. The payment is denied.

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_j8",
    "Amount": 100,
    "Currency": "BRL",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "test payment",
    "StatementDescriptor": "card payment",
    "BillingAddress": {
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "BR"
    },
    "ShippingAddress": null,
    "Customer": {
      "FirstName":"John",
      "LastName":"Doe",
      "Email": "deny@deny.com",
      "SocialSecurityNumber": "00003456789"
    },
    "Card": {
      "HolderName": "John Doe",
      "Number": "4111111111111111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2021",
      "SecurityCode": "312"
    },
    "Installments": 3,
    "Capture": false,
    "GenerateCreditCardToken": false,
    "PaymentTokenLifetime": 100,
    "3DSecure": false,
    "Language": "ro-RO",
    "SkinID": 200
  }
}

Response:

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

{
  "Payment": {
    "ID": 203371,
    "ClientIP": null,
    "SkinID": 200,
    "Created": "20180209082141",
    "MerchantTransactionID": "s2ptest_j8",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "BRL",
    "CapturedAmount": "0",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "test payment",
    "StatementDescriptor": "card payment",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": {
      "ID": 296,
      "MerchantCustomerID": null,
      "Email": "deny@deny.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": "00003456789",
      "Phone": null,
      "Company": null
      },
    "BillingAddress": {
      "ID": 9590,
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "BR"
      },
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "Ends with 1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2019",
      "IssuingBankCountry": null
      },
    "CreditCardToken": null,
    "Status": {
      "ID": 4,
      "Info": "Failed",
      "Reasons": [
        {
          "Code": 116,
          "Info": "Transaction rejected by fraud provider"
          }
        ]
      },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": false,
    "RedirectURL": null,
    "3DSecure": false,
    "Fraud": {
      "Status": "Reject",
      "Score": 74,
      "Reason": "Transaction hit a velocity or rule threshold"
      },
    "Installments": 3
    }
}

Fraud Check – Payment Accepted

Any credit card transaction will undergo a Fraud Check based on the provided parameters. The more parameters are provided, a more accurate precision the fraud check will have.

The card payment is initiated and the Fraud Check system doesn’t detect any suspicious behavior or rule. The payment is accepted.

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_j9",
    "Amount": 100,
    "Currency": "BRL",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "test payment",
    "StatementDescriptor": "card payment",
    "BillingAddress": {
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "BR"
    },
    "ShippingAddress": null,
    "Customer": {
      "FirstName":"John",
      "LastName":"Doe",
      "Email": "accept@accept.com",
      "SocialSecurityNumber": "00003456789"
    },
    "Card": {
      "HolderName": "John Doe",
      "Number": "4111111111111111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2021",
      "SecurityCode": "312"
    },
    "Installments": 3,
    "Capture": false,
    "GenerateCreditCardToken": false,
    "PaymentTokenLifetime": 100,
    "3DSecure": false,
    "Language": "ro-RO",
    "SkinID": 200
  }
}

Response:

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

{
  "Payment": {
    "ID": 203372,
    "ClientIP": null,
    "SkinID": 200,
    "Created": "20180209082328",
    "MerchantTransactionID": "s2ptest_j9",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "BRL",
    "CapturedAmount": "0",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "test payment",
    "StatementDescriptor": "card payment",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": {
      "ID": 297,
      "MerchantCustomerID": null,
      "Email": "accept@accept.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": "00003456789",
      "Phone": null,
      "Company": null
      },
    "BillingAddress": {
      "ID": 9590,
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "BR"
      },
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "Ends with 1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2021",
      "IssuingBankCountry": null
      },
    "CreditCardToken": null,
    "Status": {
      "ID": 9,
      "Info": "Authorized",
      "Reasons": []
      },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": false,
    "RedirectURL": null,
    "3DSecure": false,
    "Fraud": {
      "Status": "Accept",
      "CheckMode": "CheckOnPreAuthorisation",
      "Score": 0,
      "Reason": "Always accept rule"
      },
    "Installments": 3
    }
}

Fraud Management

We are providing you with a secure and reliable Fraud Management solution that will protect you from any fraudulent activity and keep you and your customers happy and safe. The Fraud Check system will verify and validate your transactions in order to detect any suspicious transactions and therefore reduce the risk of chargebacks.

There are 3 possible scenarios when initiating a card payment with Fraud Check system on:

  • The card payment is initiated and the Fraud Check system doesn’t detect any suspicious behavior or rule. The payment is accepted. For more details checkout our section: Fraud Check – Payment Accepted.

  • The card payment is initiated and the Fraud Check system detects a suspicious behavior or rule. The payment is denied. For more details checkout our section: Fraud Check – Payment Denied.

  • The card payment is initiated and the Fraud Check system detects a possible suspicious behavior or rule. The payment is challenged by the fraud check provider. You can reject or accept the challenge. For more details checkout our section: Fraud Check – Payment Challenged.

GPay Test Data

For GPay payment method test data is available on demand. Please contact our support department at technicalsupport-s2p@nuvei.com for more information.

GPay Payment Flow

  1. The customer enters his phone number and his email address.1 Enter customer details
  2. The customer receives a 6-digit verification code at the phone number that he previously added. He needs to enter the 6-digit code and click the Confirm button.1 SMS Verification
  3. The customer sees the payment details and he needs to choose the payment option in order to complete the payment.1 SMS Verification
  4. The customer verifies the payment information and the user details and completes the transaction by clicking on the Perform Payment button.1 Perform payment
  5. The customer receives a message that the payment has been completed correctly.1 Payment confirmation
  6. Upon completion of the payment flow, the customer is redirected to your ReturnUrl.1 Return page when the redirection status is a success

Cards Peru Test Data

For Cards Peru payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Cards Peru Payment Flow

  1. The customer enters his Email Address, Name and DNI. Please note that for Peru the Customer Social Security Number parameter consists of DNI. For more information about the DNI please click here.

    1 Enter customer details

  2. The customer enters his email address, name and card details: Card Number, CVC (CSC) and Expiration Date. He finalizes the payment by using the Pay button.

    1 Enter card details

  3. The customer receives a message that the payment has been completed correctly.

    1 Payment confirmation

  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Cards Colombia Test Data

For Cards Colombia payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Cards Colombia Payment Flow

  1. The customer enters his Email Address, Name and CC. Please note that for Colombia the CustomerSocialSecurityNumber parameter consists of CC. For more information about the CC please click here.

    1 Enter customer details

  2. The customer enters his email address, name and card details: Card Number, CVC (CSC) and Expiration Date. He finalizes the payment by using the Pay button.

    1 Enter card details

  3. The customer receives a message that the payment has been completed correctly.

    1 Payment confirmation

  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Credit Cards Chile Test Data

For Credit Cards Chile payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Credit Cards Chile Payment Flow

  1. The customer enters his Email Address, Name and RUT. Please note that for Chile the CustomerSocialSecurityNumber parameter consists of RUT. For more information about the RUT please click here.

    1 Enter customer details

  2. The customer enters his email address, name and card details: Card Number, CVC (CSC) and Expiration Date. He finalizes the payment by using the Pay button.

    1 Enter card details

  3. The customer receives a message that the payment has been completed correctly.

    1 Payment confirmation

  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

WebPay Test Data

For WebPay payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

WebPay Payment Flow

  1. The customer enters his Email Address, Name and RUT. Please note that for Chile the CustomerSocialSecurityNumber parameter consists of RUT. For more information about the RUT please click here.

    1 Enter customer details

  2. The customer needs to choose the preferred payment option and enter the necessary details in order to complete the payment.

    1 Payment details

Servipag Test Data

For Servipag payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Servipag Payment Flow

  1. The customer enters his Email Address, Name and RUT. Please note that for Chile the CustomerSocialSecurityNumber parameter consists of RUT. For more information about the RUT please click here.

    1 Enter customer details

  2. The customer receives the printable payment details. He needs to pay the exact amount at any Servipag branch in his area.

    Please take into consideration the expiration date printed on the ticket, in order to complete the payment before the ticket expires!

    1 Payment details

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Cash Payment Colombia Test Data

For Cash Payment Colombia payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Cash Payment Colombia Payment Flow

  1. The customer enters his Email Address, Name and CC, and chooses his preferred payment option from the given list. Please note that for Colombia the CustomerSocialSecurityNumber parameter consists of CC. For more information about the CC please click here.

    1 Enter customer details

  2. The customer sees the payment summary and chooses the payment option.

    1 Payment summary

  3. The customer needs to enter the necessary details in order to complete the transaction.

    1 Payment details

  4. The customer receives the voucher number and payment details. He needs to pay the exact amount at any Efecty, Davivienda, Baloto, Boleto Bancolombia branch.

    1 Payment details

  5. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

PSE Colombia Test Data

For PSE Colombia payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

PSE Colombia Payment Flow

  1. The customer enters his Email Address, Name and CC. Please note that for Colombia the CustomerSocialSecurityNumber parameter consists of CC. For more information about the CC please click here.

    1 Enter customer details

  2. The customer sees the payment summary and chooses the payment option.

    1 Payment summary

  3. The customer needs to enter the necessary details in order to complete the transaction.

    1 Payment details

  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Installment Payments

Installment Payments are an easy and reliable way for the customer to pay in monthly installments. You only need to choose the number of installments in order for the customer to pay for the products / services.

For installments number and availability per route and country please check with our support department at technicalsupport-s2p@nuvei.com.

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_j4",
    "Amount": "100",
    "Currency": "BRL",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "test payment",
    "StatementDescriptor": "card payment",
    "BillingAddress": {
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "BR"
    },
    "ShippingAddress": null,
    "Customer": {
            "FirstName":"John",
            "LastName":"Doe",
            "Email": "testing2@test.com",
            "SocialSecurityNumber": "00003456789"
    },
    "Card": {
      "HolderName": "John Doe",
      "Number": "4111111111111111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2019",
      "SecurityCode": "312"
    },
    "Installments": 3,
    "Capture": false,
    "Retry": false,
    "GenerateCreditCardToken": false,
    "PaymentTokenLifetime": 100,
    "3DSecure": false,
    "SkinID": 200
  }
}

Response:

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

{
  "Payment": {
    "ID": 203313,
    "ClientIP": null,
    "SkinID": 200,
    "Created": "20180125152757",
    "MerchantTransactionID": "s2ptest_j4",
    "OriginatorTransactionID": null,
    "Amount": "100",
    "Currency": "BRL",
    "CapturedAmount": "0",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "test payment",
    "StatementDescriptor": "card payment",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": {
      "ID": 294,
      "MerchantCustomerID": null,
      "Email": "testing2@test.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": null,
      "SocialSecurityNumber": "00003456789",
      "Phone": null,
      "Company": null
      },
    "BillingAddress": {
      "ID": 9590,
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "BR"
      },
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "Ends with 1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2019"
      },
    "CreditCardToken": null,
    "Status": {
      "ID": 9,
      "Info": "Authorized",
      "Reasons": []
      },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": false,
    "Retry": false,
    "RedirectURL": null,
    "3DSecure": false,
    "Fraud": null,
    "Installments": 3
    }
}

Cards Mexico Test Data

For Cards Mexico payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Cards Mexico Payment Flow

  1. The customer enters his Email Address, Name and CURP/RFC/IFE. Please note that for Mexico the Customer Social Security Number parameter consists of CURP/RFC/IFE. For more information about the CURP/RFC/IFE please click here.

    1 Enter customer details

  2. The customer enters his email address, name and card details: Card Number, CVC (CSC) and Expiration Date. He finalizes the payment by using the Pay button.

    1 Enter card details

  3. The customer receives a message that the payment has been completed correctly.

    1 Payment confirmation

  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Bank Transfer Peru Test Data

For Bank Transfer Peru payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Bank Transfer Peru Payment Flow

  1. The customer enters his Email Address, Name and DNI. Please note that for Peru the Customer Social Security Number parameter consists of DNI. For more information about the DNI please click here.

    1 Enter customer details

  2. The customer receives the printable payment details in order to complete the payment.

    1 Payment details

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Cash Payment Peru Test Data

For Cash Payment Peru payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Cash Payment Peru Payment Flow

  1. The customer enters his Email Address, Name and DNI.
    Please note that for Peru the Customer Social Security Number parameter consists of DNI. For more information about the DNI please click here.

    1 Enter customer details

  2. The customer receives the printable payment details in order to complete the payment.

    1 Payment details

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

SPEI Test Data

For SPEI payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

SPEI Payment Flow

  1. The customer enters his Email Address, Name and CURP/RFC/IFE.
    Please note that for Mexico the Customer Social Security Number parameter consists of CURP/RFC/IFE. For more information about the CURP/RFC/IFE please click here.

    1 Enter customer details

  2. The customer receives the printable payment details in order to complete the payment.

    1 Enter account details

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Oxxo Test Data

For Oxxo payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Oxxo Payment Flow

  1. The customer enters his Email Address, Name and CURP/RFC/IFE.
    Please note that for Mexico the Customer Social Security Number parameter consists of CURP/RFC/IFE. For more information about the CURP/RFC/IFE please click here.

    1 Enter customer details

  2. The customer receives the printable voucher. In order to complete the payment, he needs to print the voucher and present it to any Oxxo store in his area to make the payment.

    1 Enter account details

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Bank Transfer Mexico Test Data

For Bank Transfer Mexico payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Bank Transfer Mexico Payment Flow

  1. The customer enters his Email Address, Name and CURP/RFC/IFE, and chooses his preferred payment option from the given list.
    Please note that for Mexico the Customer Social Security Number parameter consists of CURP/RFC/IFE. For more information about the CURP/RFC/IFE please click here.

    1 Enter customer details

  2. The customer can print the payment details and complete the payment in the next 48 hours at the corresponding bank. Payment confirmation may take between 24 and 48 business hours.

    1 Payment details

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Online Bank Transfer Brazil Test Data

For Online Bank Transfer Brazil payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Online Bank Transfer Brazil Payment Flow

  1. The customer enters his Email Address, Name and CPF/CNPJ, and chooses his preferred payment option from the given list. Please note that for Brazil the Customer Social Security Number parameter consists of CPF/CNPJ. For more information about the CPF/CNPJ please click here.

    1 Enter customer details

  2. The customer logs in to his account by entering his login details in order to make the payment.

    1 Voucher

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Boleto Brazil Test Data

For Boleto Brazil payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Boleto Brazil Payment Flow

  1. The customer enters his Email Address, Name and CPF/CNPJ.
    Please note that for Brazil the Customer Social Security Number parameter consists of CPF/CNPJ. For more information about the CPF/CNPJ please click here.

    1 Enter customer details

  2. The customer receives the Boleto with all the necessary payment details. In order to complete the payment, he needs to print the Boleto and go to a physical bank branch in his area and pay with cash, use online banking, or simply go to an ATM machine.

    1 Print Boleto

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Credit Cards Brazil Test Data

For Credit Cards Brazil payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Credit Cards Brazil Payment Flow

  1. The customer enters his Email Address, Name and CPF / CNPJ.
    Please note that for Brazil the Customer Social Security Number parameter consists of CPF / CNPJ. For more information about the CPF / CNPJ please click here.

    1 Enter customer details

  2. The customer enters his name and card details: Card Number, CVC (CSC) and Expiration Date. He finalizes the payment by using the Pay button.

    1 Enter card details

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Cards LATAM Test Data

For Cards LATAM payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Cards LATAM Payment Flow

  1. The customer enters his Email Address, Name and his Customer Social Security Number, and chooses his preferred payment option from the given list. See below, depending on the selected country, the values for the CustomerSocialSecurityNumber parameter.

    Country Customer Social Security Number
    Argentina For Argentina the CustomerSocialSecurityNumber parameter consists of DNI. For more information about the DNI please click here.
    Brazil For Brazil the CustomerSocialSecurityNumber parameter consists of CPF/CNPJ. For more information about the CPF/CNPJ please click here.
    Chile For Chile the CustomerSocialSecurityNumber parameter consists of RUT. For more information about the RUT please click here.
    Colombia For Colombia the CustomerSocialSecurityNumber parameter consists of CC. For more information about the CC please click here.
    Mexico For Mexico the CustomerSocialSecurityNumber parameter consists of CURP/RFC/IFE. For more information about the CURP/RFC/IFE please click here.
    Uruguay For Uruguay the CustomerSocialSecurityNumber parameter consists of CI. For more information about the CI please click here.
    Peru For Peru the CustomerSocialSecurityNumber parameter consists of DNI. For more information about the DNI please click here.

    1 Enter customer details

  2. The customer enters his name and card details: Card Number, CVC (CSC) and Expiration Date. He finalizes the payment by using the Pay button.

    1 Voucher

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Success

Pago Fácil Test Data

For Pago Fácil payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Pago Fácil Payment Flow

  1. The customer enters his Email Address, Name and National Identity Document (DNI), and chooses his preferred payment option from the given list. Please note that for Argentina the Customer Social Security Number parameter consists of DNI. For more information about the DNI please click here.

    1 Enter customer details

  2. The customer receives the printable voucher. In order to complete the payment, he needs to print the voucher and present it to any Pago Fácil store in his area to make the payment.

    1 Enter account details

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Rapi Pago Test Data

For Rapi Pago payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Rapi Pago Payment Flow

  1. The customer enters his Email Address, Name and National Identity Document (DNI), and chooses his preferred payment option from the given list. Please note that for Argentina the Customer Social Security Number parameter consists of DNI. For more information about the DNI please click here.

    1 Enter customer details

  2. The customer receives the printable voucher. In order to complete the payment, he needs to print the voucher and present it to any Rapi Pago store in his area to make the payment.

    1 Voucher

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Capture Scenarios for Klarna Payments

Scenario Status / Return Code Description
The transaction has been fully captured.

Only payments with “Authorized” status can be captured.
Status: 2 Success
The payment has been partially captured.

Only payments with “Authorized” status can be captured.
Status: 35 Partially Captured
Retry Capture.

This happens when the request timeouts at Provider; a new capture request has to be initiated.
Return Code: 157 Unable to capture transaction
The transaction could not be captured.

The transaction is not in an Authorized status.
Return Code: 17 Payment is invalid

For a complete list of all the possible Return Code IDs go to our section GlobalPay Return Codes.

See the request – response examples for the above possible scenarios:

Success Status

A payment can only be captured if it has an Authorized status. Once the payment has an Authorized status, you can capture either the full amount or a partial amount of the initial authorized amount for the transaction.

A 200 HTTP response (OK) is returned if the request was completed successfully.

Full capture means you capture the entire authorized amount for the initial transaction.

Request:

POST: https://paytest.smart2pay.com/v1/payments/8061531/capture
Authorization: Basic MzAwNzc6ZXJ2YVJNY1VqcGJXd0dhWit0ayswWGdNdUJDaVRuS2dzSDVCUUJPcUk2a3VFb2FKVnI=

Response:

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

{
    "Payment": {
        "ID": 8061531,
        "SkinID": null,
        "ClientIP": null,
        "Created": "20250217102607",
        "MerchantTransactionID": "XYZtest1739787966",
        "OriginatorTransactionID": null,
        "Amount": "2000",
        "Currency": "EUR",
        "CapturedAmount": "2000",
        "ReturnURL": "http://demo2.smart2pay.com/redirect.php",
        "ReturnURLSuccess": null,
        "ReturnURLFailure": null,
        "ReturnURLCancel": null,
        "ReturnURLProcessing": null,
        "Description": null,
        "MethodID": 1078,
        "MethodOptionID": null,
        "MethodOptionIdString": null,
        "BankName": null,
        "IncludeMethodIDs": null,
        "ExcludeMethodIDs": null,
        "PrioritizeMethodIDs": null,
        "SiteID": 30563,
        "NotificationDateTime": "20250217102656",
        "Customer": null,
        "BillingAddress": {
            "ID": 18658,
            "City": "Wien",
            "ZipCode": "1060",
            "State": null,
            "Street": "Mariahilfer Strasse 10",
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "AT"
        },
        "ShippingAddress": {
            "ID": 18658,
            "City": "Wien",
            "ZipCode": "1060",
            "State": null,
            "Street": "Mariahilfer Strasse 10",
            "StreetNumber": null,
            "HouseNumber": null,
            "HouseExtension": null,
            "Country": "AT"
        },
        "Articles": [
            {
                "MerchantArticleID": "1231",
                "Name": "TEST",
                "Quantity": 1,
                "Price": "2000",
                "VAT": "0",
                "Discount": "0",
                "Type": "5",
                "TaxType": 0,
                "DiscountValue": "0"
            }
        ],
        "Details": null,
        "ReferenceDetails": null,
        "CustomParameters": null,
        "PreapprovalID": null,
        "Status": {
            "ID": 2,
            "Info": "Success",
            "Reasons": null
        },
        "Fraud": null,
        "MethodTransactionID": "a7d087d9-2cfb-4f7f-b767-5d014141aab3",
        "OriginalMerchantTID": null,
        "Unknown": false,
        "TokenLifetime": 10,
        "Capture": null,
        "PreapprovalDetails": null,
        "RedirectURL": "https://webapp-apm-globalpay-api-qa.nuvei.com/Home?PaymentToken=8098486DFB91DDC9BBE2B45609F3DA3F.8061531",
        "Splits": null
    }
}

Partially Captured Status

  • Partial capture means you have the possibility to capture a smaller amount than the one from the initial authorized transaction. Partial capture is used when you have sent at least part of the order to the consumer and want to capture the amount for the item(s) that have been shipped. You can perform only one partial capture for an authorized transaction with the limitation that the amount of the partial capture to be smaller or equal than the initial authorized amount. The remaining amount that has not been captured will be returned to the client’s account. There are 3 possibilities to partially capture a payment:
    1. Specify only the captured amount parameter in the query string, in order to partially capture the payment, like in the below example:

      Request:

      POST: https://paytest.smart2pay.com/v1/payments/8061531/capture?amount=50
      Authorization: Basic MzAwNzc6ZXJ2YVJNY1VqcGJXd0dhWit0ayswWGdNdUJDaVRuS2dzSDVCUUJPcUk2a3VFb2FKVnI=
      

      Response:

      HTTP/1.1 200 OK
      Content-Type: application/json; charset=utf-8
      
      {
          "Payment": {
              "ID": 8061528,
              "SkinID": null,
              "ClientIP": null,
              "Created": "20250217101602",
              "MerchantTransactionID": "XYZtest1739787362",
              "OriginatorTransactionID": null,
              "Amount": "2000",
              "Currency": "EUR",
              "CapturedAmount": "100",
              "ReturnURL": "http://demo2.smart2pay.com/redirect.php",
              "ReturnURLSuccess": null,
              "ReturnURLFailure": null,
              "ReturnURLCancel": null,
              "ReturnURLProcessing": null,
              "Description": null,
              "MethodID": 1078,
              "MethodOptionID": null,
              "MethodOptionIdString": null,
              "BankName": null,
              "IncludeMethodIDs": null,
              "ExcludeMethodIDs": null,
              "PrioritizeMethodIDs": null,
              "SiteID": 30563,
              "NotificationDateTime": "20250217101745",
              "Customer": null,
              "BillingAddress": {
                  "ID": 18658,
                  "City": "Wien",
                  "ZipCode": "1060",
                  "State": null,
                  "Street": "Mariahilfer Strasse 10",
                  "StreetNumber": null,
                  "HouseNumber": null,
                  "HouseExtension": null,
                  "Country": "AT"
              },
              "ShippingAddress": {
                  "ID": 18658,
                  "City": "Wien",
                  "ZipCode": "1060",
                  "State": null,
                  "Street": "Mariahilfer Strasse 10",
                  "StreetNumber": null,
                  "HouseNumber": null,
                  "HouseExtension": null,
                  "Country": "AT"
              },
              "Articles": [
                  {
                      "MerchantArticleID": "1231",
                      "Name": "TEST",
                      "Quantity": 1,
                      "Price": "2000",
                      "VAT": "0",
                      "Discount": "0",
                      "Type": "5",
                      "TaxType": 0,
                      "DiscountValue": "0"
                  }
              ],
              "Details": null,
              "ReferenceDetails": null,
              "CustomParameters": null,
              "PreapprovalID": null,
              "Status": {
                  "ID": 35,
                  "Info": "PartiallyCaptured",
                  "Reasons": null
              },
              "Fraud": null,
              "MethodTransactionID": "aa2f6a99-35a0-434e-bba4-6fb0a228a0ea",
              "OriginalMerchantTID": null,
              "Unknown": false,
              "TokenLifetime": 10,
              "Capture": null,
              "PreapprovalDetails": null,
              "RedirectURL": "https://webapp-apm-globalpay-api-qa.nuvei.com/Home?PaymentToken=AA7E73E1C498B38E6400E"
          }
      }

    2. Specify the captured amount parameter in the query string and send the appropriate details for the Articles object together with the Shipping and Customer information, like in the below example:

      Request:

      POST: https://paytest.smart2pay.com/v1/payments/8061525/capture?amount=50
      Authorization: Basic MzAwNzc6ZXJ2YVJNY1VqcGJXd0dhWit0ayswWGdNdUJDaVRuS2dzSDVCUUJPcUk2a3VFb2FKVnI=
      
      HTTP/1.1 200 OK
      Content-Type: application/json; charset=utf-8
      
      {
        "Payment": {
          "Articles": [
            {
            "MerchantArticleID": "1231",
            "Quantity": 1
            }
          ]
        }
      }

      Response:

      HTTP/1.1 200 OK
      Content-Type: application/json; charset=utf-8
      
      {
          "Payment": {
              "ID": 8061528,
              "SkinID": null,
              "ClientIP": null,
              "Created": "20250217101602",
              "MerchantTransactionID": "XYZtest1739787362",
              "OriginatorTransactionID": null,
              "Amount": "2000",
              "Currency": "EUR",
              "CapturedAmount": "100",
              "ReturnURL": "http://demo2.smart2pay.com/redirect.php",
              "ReturnURLSuccess": null,
              "ReturnURLFailure": null,
              "ReturnURLCancel": null,
              "ReturnURLProcessing": null,
              "Description": null,
              "MethodID": 1078,
              "MethodOptionID": null,
              "MethodOptionIdString": null,
              "BankName": null,
              "IncludeMethodIDs": null,
              "ExcludeMethodIDs": null,
              "PrioritizeMethodIDs": null,
              "SiteID": 30563,
              "NotificationDateTime": "20250217101745",
              "Customer": null,
              "BillingAddress": {
                  "ID": 18658,
                  "City": "Wien",
                  "ZipCode": "1060",
                  "State": null,
                  "Street": "Mariahilfer Strasse 10",
                  "StreetNumber": null,
                  "HouseNumber": null,
                  "HouseExtension": null,
                  "Country": "AT"
              },
              "ShippingAddress": {
                  "ID": 18658,
                  "City": "Wien",
                  "ZipCode": "1060",
                  "State": null,
                  "Street": "Mariahilfer Strasse 10",
                  "StreetNumber": null,
                  "HouseNumber": null,
                  "HouseExtension": null,
                  "Country": "AT"
              },
              "Articles": [
                  {
                      "MerchantArticleID": "1231",
                      "Name": "TEST",
                      "Quantity": 1,
                      "Price": "2000",
                      "VAT": "0",
                      "Discount": "0",
                      "Type": "5",
                      "TaxType": 0,
                      "DiscountValue": "0"
                  }
              ],
              "Details": null,
              "ReferenceDetails": null,
              "CustomParameters": null,
              "PreapprovalID": null,
              "Status": {
                  "ID": 35,
                  "Info": "PartiallyCaptured",
                  "Reasons": null
              },
              "Fraud": null,
              "MethodTransactionID": "aa2f6a99-35a0-434e-bba4-6fb0a228a0ea",
              "OriginalMerchantTID": null,
              "Unknown": false,
              "TokenLifetime": 10,
              "Capture": null,
              "PreapprovalDetails": null,
              "RedirectURL": "https://webapp-apm-globalpay-api-qa.nuvei.com/Home?PaymentToken=AA7E73E1C498B38E6400E"
          }
      }

  • Return Code: 157 – Unable to capture transaction. The transaction could not be captured. Retry Capture. This happens when the request timeouts at Provider.

    Request:

    POST: https://paytest.smart2pay.com/v1/payments/3434068/capture
    Authorization: Basic MzAwNzc6ZXJ2YVJNY1VqcGJXd0dhWit0ayswWGdNdUJDaVRuS2dzSDVCUUJPcUk2a3VFb2FKVnI=
    

    Response:

    HTTP/1.1 400 Bad Request
    Content-Type: application/json; charset=utf-8
    
    {
        "Payment": {
            "ID": 3434068,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20171123141730",
            "MerchantTransactionID": "testpaymentauthorized",
            "OriginatorTransactionID": null,
            "Amount": "900",
            "Currency": "DKK",
            "CapturedAmount": null,
            "ReturnURL": "http://demo.smart2pay.com/redirect.php",
            "Description": "test smart2pay",
            "MethodID": 1078,
            "MethodOptionID": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30151,
            "NotificationDateTime": "20171123141847",
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 9,
                "Info": "Authorized",
                "Reasons": [
                    {
                        "Code": 157,
                        "Info": "Unable to capture transaction"
                    }
                ]
            },
            "MethodTransactionID": null,
            "TokenLifetime": null,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": null
        }
    }

  • Return Code: 17 – Payment is invalid. The transaction could not be captured. The transaction is not in an Authorized status. You can receive this response when the payment you want to Capture is not Authorized or when the payment has already been Captured.

    Request:

    POST: https://paytest.smart2pay.com/v1/payments/8061512/capture
    Authorization: Basic MzAwNzc6ZXJ2YVJNY1VqcGJXd0dhWit0ayswWGdNdUJDaVRuS2dzSDVCUUJPcUk2a3VFb2FKVnI=
    

    Response:

    HTTP/1.1 400 Bad Request
    Content-Type: application/json; charset=utf-8{
        "Payment": {
            "ID": 8061512,
            "SkinID": null,
            "ClientIP": null,
            "Created": "20250217081415",
            "MerchantTransactionID": null,
            "OriginatorTransactionID": null,
            "Amount": null,
            "Currency": null,
            "CapturedAmount": null,
            "ReturnURL": null,
            "ReturnURLSuccess": null,
            "ReturnURLFailure": null,
            "ReturnURLCancel": null,
            "ReturnURLProcessing": null,
            "Description": null,
            "MethodID": 1078,
            "MethodOptionID": null,
            "MethodOptionIdString": null,
            "BankName": null,
            "IncludeMethodIDs": null,
            "ExcludeMethodIDs": null,
            "PrioritizeMethodIDs": null,
            "SiteID": 30563,
            "NotificationDateTime": "20250217084539",
            "Customer": null,
            "BillingAddress": null,
            "ShippingAddress": null,
            "Articles": null,
            "Details": null,
            "ReferenceDetails": null,
            "CustomParameters": null,
            "PreapprovalID": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": [
                    {
                        "Code": "17",
                        "Info": "Payment is invalid - 8061512"
                    }
                ]
            },
            "Fraud": null,
            "MethodTransactionID": null,
            "OriginalMerchantTID": null,
            "Unknown": false,
            "TokenLifetime": null,
            "Capture": null,
            "PreapprovalDetails": null,
            "RedirectURL": null,
            "Splits": null
        }
    }

Payout Details

Go to Payouts List tab from the dashboard and use the search filters to find a specific payout. After you have found the transaction you have been looking for, using the search filters, just double click on it to see specific details of that payout.

A new window will open containing the general details for that Payout ID and also providing details about specific sections, like: General information, Credit Card, Reporting, Flags and Reason Codes.

The dashboard Payout Details allows the user to always find specific information in order to be informed and keep track of his day-to-day operations and payouts.

General provides detailed information for the following fields: ID of the transaction, Merchant Transaction ID, Input Date Time, Merchant ID, Merchant Site ID, Method ID, Merchant Alias, Merchant Site Alias, Method Name, Amount, Currency, Status, Statement Descriptor, Originator Transaction ID, Country, Specific Details and Method Transaction ID.

32

Credit Card provides detailed information for the following fields: Masked Card Number, Card Expiration Month, Card Expiration Year, Card Holder Name, Credit Card Brand, Credit Card Sub-Brand.

32

Reporting provides detailed information for the following fields: Notification Date Time, Last Notified Status.

32

Flags provides detailed information for the following fields: Request Version.

32

Reason Codes provides detailed information for the following fields: Reason Code and Reason.

32

Payouts List

Access the Payouts List tab in order to see and verify your payouts. Here you will find a complete list of all of your payouts. You have the possibility to search for a specific payout using different search filters, to see the details of the payouts, and to export your payouts into an Excel file.

32

Search filters

When you access the Payouts tab, the Search Filters section is expanded. In order to collapse it just click the arrow on the right of the screen.

You can search payouts by ID (the payment id in the GlobalPay system), Merchant Transaction ID (the payout id in your system), Method Transaction ID (used for transaction tracking and matching with customer receipt or bank statement), Method, Amount, Currency, Country, Status, Interval (from – to) and Site Alias.

32

Payouts Details

After you have found the transaction you’ve been looking for, using the search filters, just click on it to see the specific details of that payout.

A new window will open containing the general details for that Payout ID and also providing details about specific sections, like: General information, Credit Card, Reporting, Flags and Reason Codes.

66

Export transactions

The list of payouts can be exported (filtered or not) to an .xls file. The file contains the following information: ID, MerchantTransactionID, InputDateTime, Amount, Currency, Status, MethodName, StatusID, MethodID, MethodTransactionID, SiteID, Alias and Country.

32

UPI Test Data

For UPI payment method there aren’t any test data available, but you can see how it works with the payment flows given below for Test and Production environment.

UPI – Test Payment Flow

  1. The customer enters his Email Address, Name and Permanent account number (PAN).
    Please note that for India the CustomerSocialSecurityNumber parameter consists of PAN. For more information about the PAN please click here.

    1 Enter customer details

  2. The customer logs in to his account by entering his Customer ID and password. For test purposes, enter any Customer ID and password.1 Payment instructions
  3. The Customer checks the payment resume and proceeds with the payment by clicking on the Confirm button. For test purposes, please choose and click Paid status from the ones provided on the page.1 Payment instructions
  4. The customer receives a message that the payment has been completed correctly. Confirm by using OK button.1 Payment confirmation
  5. Upon completion of the payment flow the customer is redirected back to your ReturnURL.1 Return page when the redirection status is Success

UPI – Production Payment Flow

  1. The customer enters his Email Address, Name and Permanent account number (PAN).
    Please note that for India the CustomerSocialSecurityNumber parameter consists of PAN. For more information about the PAN please click here.

    1 Enter customer details

  2. The customer is redirected to the page where he chooses the desired option to complete the payment – UPI QR Code or one of UPI apps.1 Payment instructions
  3. In order to complete the payment, the customer needs to enter his UPI address.
    1 Payment instructions
  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.1 Return page when the redirection status is Processing

NetBanking Test Data

For NetBanking payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

NetBanking – Test Payment Flow

  1. The customer enters his Email Address, Name and Permanent account number (PAN).
    Please note that for India the CustomerSocialSecurityNumber parameter consists of PAN. For more information about the PAN please click here.

    1 Enter customer details

  2. The customer logs in to his account by entering his Customer ID and password. For test purposes, enter any Customer ID and password.1 Enter account details
  3. The Customer checks the payment resume and proceeds with the payment by clicking on the Confirm button. For test purposes, please choose and click Paid status from the ones provided on the page.1 Payment confirmation
  4. The customer receives a message that the payment has been completed correctly.1 Payment confirmation
  5. Upon completion of the payment flow the customer is redirected back to your ReturnURL.1 Return page when the redirection status is a success

NetBanking – Production Payment Flow

  1. The customer enters his Email Address, Name and Permanent account number (PAN).
    Please note that for India the CustomerSocialSecurityNumber parameter consists of PAN. For more information about the PAN please click here.

    1 Enter customer details

  2. The customer is redirected to a page where he selects his preferred Bank from the list in order to complete the payment.1 Bank selection
  3. The customer is redirected to the selected Bank page in order to log in and complete the payment.1 Complete payment
  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.1 Return page when the redirection status is a success

Rupay Cards Test Data

In order for you to test the Rupay Cards payment method successfully, please use the test data provided below.

Rupay Cards – Payment Flow

Rupay Cards Test Data
Data Value
Email Address: Enter any valid email address. Example: person@test.com
Name: Enter any name. Example: John Doe
Permanent account number (PAN): Enter: ABCDE1234F
  1. The customer enters his Email Address, Name and Permanent account number (PAN).
    Please note that for India the CustomerSocialSecurityNumber parameter consists of PAN. For more information about the PAN please click here.

    1 Enter customer details

  2. The customer enters his name and card details: Card Number, CVC (CSC) and Expiration Date, and finalizes the payment by using the Pay button.

    1 Payment details

  3. The customer receives a message that the payment has been approved.

    1 Payment details

  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Success

Credit Cards Turkey Test Data

For Credit Cards Turkey payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Credit Cards Turkey Payment Flow

    1. The customer enters his Email Address, Name and Turkish Identification Number (ID).
      Please note that for Turkey the CustomerSocialSecurityNumber parameter consists of ID. For more information about the ID please click here.

      1 Enter customer details

    2. The customer logs in to his account by entering his Customer ID and password.

      1 Enter account details

    3. The Customer checks the payment resume and proceeds with the payment by clicking on the Confirm button.

      1 Payment confirmation

    4. The customer receives a message that the payment has been completed correctly.

      1 Payment confirmation

    5. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

      1 Return page when the redirection status is a success

Santander Rio Test Data

For Santander Rio payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Santander Rio Payment Flow

  1. The customer enters his Email Address, Name and National Identity Document (DNI).
    Please note that for Argentina the Customer Social Security Number parameter consists of DNI. For more information about the DNI please click here.

    1 Enter customer details

  2. The Customer checks the deposit instructions and proceeds with the payment.

    1 Enter account details

  3. The customer logs in to his Santander Rio account by entering the document number, his Santander Rio key and his user name.

    1 Enter account details

  4. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Cash Payments Argentina Test Data

For Cash Payments Argentina payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Cash Payments Argentina Payment Flow

  1. The customer enters his Email Address, Name and National Identity Document (DNI), and chooses his preferred payment option from the given list. Please note that for Argentina the Customer Social Security Number parameter consists of DNI. For more information about the DNI please click here.

    1 Enter customer details

  2. The customer receives the printable voucher. In order to complete the payment, he needs to print the voucher and present it to any Rapi Pago or Pago Fácil store in his area to make the payment.

    1 Voucher

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

Credit Cards Uruguay Test Data

For Credit Cards Uruguay payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Credit Cards Uruguay Payment Flow

    1. The customer enters his Email Address, Name and Identity Card (CI).
      Please note that for Uruguay the Customer Social Security Number parameter consists of Identity Card (CI). For more information about the CI please click here.

      1 Enter customer details

    2. The customer enters his name and card details: Card Number, CVC (CSC) and Expiration Date. He finalizes the payment by using the Pay button.

      1 Enter card details

    3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

      1 Return page when the redirection status is Processing

Redpagos Test Data

For Redpagos payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Redpagos Payment Flow

    1. The customer enters his Email Address, Name and Identity Card (CI).
      Please note that for Uruguay the Customer Social Security Number parameter consists of Identity Card (CI). For more information about the CI please click here.

      1 Enter customer details

    2. The customer receives a message that the payment has been initiated successfully together with the payment details. In order to complete the payment, he needs to know the invoice number and pay it at any Redpagos store in his area.

      1 Payment details

    3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

      1 Return page when the redirection status is Processing

Credit Cards Argentina Test Data

For Credit Cards Argentina payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Credit Cards Argentina Payment Flow

  1. The customer enters his Email Address, Name and National Identity Document (DNI).
    Please note that for Argentina the Customer Social Security Number parameter consists of National Identity Document (DNI)! For more information about the DNI please click here.

    1 Enter customer details

  2. The customer enters his name and card details: Card Number, CVC (CSC) and Expiration Date, and finalizes the payment by using the Pay button.

    1 Enter card details

  3. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is Processing

SEPA Direct Debit Test Data

For SEPA Direct Debit payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

SEPA Direct Debit Payment Flow

    1. Make a Preapproval request to initiate a Direct Debit mandate with all the mandatory parameters (including Customer Name, Email and Address).

    2. The Customer is redirected to the Provider’s page to fill the IBAN Number:

      1 Iban Number required

    3. The Customer fills the phone number:

      1 Phone number required

    4. The Customer confirms the mandate using the 4-DIGIT CODE SMS code received:

      1 4-DIGIT CODE SMS

    5. The Customer is redirected back to the Merchant website:

      1 Preapproval ReturnURL

    6. The Customer receives the digital signed mandate via email:

      1 Received digital signed mandate

    7. You will receive a notification from our system which needs to be answered with 204 NoContent.

      Based on the PreapprovalID, Direct Debits can be initiated.

      For more detailed information regarding recurring payments, please visit our section: Recurring Payments API

Get a list of filtered payments

You can specify various filters as parameters in the query string in order to get a customized list of payments. This type of request allows you to get a list of payments according to your own needs and requirements, simplifying the process of finding transactions.

You can get a list of paginated payments by adding the pageSize and pageIndex parameters to the URL. The pageIndex parameter is recommended to be used together with the pageSize parameter to select the number of transactions on a specific page.

The following table describes all the filters that you can use. Please note that you can mix the filters to get specific results.

FILTERS
Field Description Data type
pageSize The maximum number of transactions that will be returned per page. The pageSize parameter used together with the pageIndex parameter will also represent the number of transactions returned for a specific page. Please note that without specifying any parameter the default number of transactions that will be returned is 50! Long
Request:
GET https://paytest.smart2pay.com/v1/payments?pagesize=20&pageindex=3
pageIndex Using the pageIndex parameter you will be able to receive the transactions paginated. The default number of transactions that will be returned per page is 50. Transactions are ordered by ID descending. The pageIndex parameter is recommended to be used together with the pageSize parameter in order to choose the desired number of transactions returned per page. Long
Request:
GET https://paytest.smart2pay.com/v1/payments?pagesize=20&pageindex=3
sortDirection By default, the transactions are ordered by ID descending. By using the sortDirection parameter, you have the possibility to order the transactions by ID ascending (sortdirection=asc). String
Request:
GET https://paytest.smart2pay.com/v1/payments?pagesize=20&pageindex=3&sortdirection=asc
sortBy By default, the transactions are ordered by ID descending. By using the sortBy parameter you will be able to receive the transactions sorted after merchanttransactionid / inputdatetime / amount in combination with sortDirection (=asc / =desc) parameter. Long
Request:
GET https://paytest.smart2pay.com/v1/payments?pagesize=20&pageindex=3&sortby=amount&sortdirection=asc
startDate The date and time after which the payments are returned. DateTime

YYYYMMDDHHMMSS

Request:
GET https://paytest.smart2pay.com/v1/payments?startDate=20170803150000
endDate The date and time until which the payments are returned. DateTime

YYYYMMDDHHMMSS

Request:
GET https://paytest.smart2pay.com/v1/payments?startDate=20170803150000&endDate=20171003140000
methodID Only the transactions having this methodID will be returned. Long
Request:
GET https://paytest.smart2pay.com/v1/payments?methodID=2
country Only the transactions having this country code will be returned. String

(ISO 3166-1-alpha-2)

Request:
GET https://paytest.smart2pay.com/v1/payments?country=NL
currency Only the transactions having this currency code will be returned. String

(ISO 4217)

Request:
GET https://paytest.smart2pay.com/v1/payments?currency=EUR
minimumAmount Only the payments with an amount higher than this will be returned. Integer (last 2 digits representing the decimal part)
Request:
GET https://paytest.smart2pay.com/v1/payments?minimumAmount=100
maximumAmount Only the payments with an amount lower than this will be returned. Integer (last 2 digits representing the decimal part)
Request:
GET https://paytest.smart2pay.com/v1/payments?maximumAmount=1000
merchantTransactionID Only the payment having this merchantTransactionID will be returned. String

^[0-9a-zA-Z_-]{1,50}$

Request:
GET https://paytest.smart2pay.com/v1/payments?merchantTransactionID=123456
statusID Only the transactions having this statusID will be returned. Integer

The ID of the payment status can have the following values: 1 – Open, 2 – Success, 3 – Cancelled, 4 – Failed, 5 – Expired, 9 – Authorized.

Request:
GET https://paytest.smart2pay.com/v1/payments?statusID=2
methodTransactionID Only the payments having this methodTransactionID will be returned. This transaction ID from the payment method provider can be used for customer support. String

^[0-9a-zA-Z_-]{1,50}$

Request:
GET https://paytest.smart2pay.com/v1/payments?methodTransactionID=100200
typeID Only the transactions having this typeID will be returned. Integer

The typeID filter can have the following values: 1 – Payments, 2 – Recurring payments.

Request:
GET https://paytest.smart2pay.com/v1/payments?typeID=1

Here is an example request where the transactions are divided in pages (groups of transactions) of 2 transactions and the third group of transactions is returned.

Request:

GET https://paytest.smart2pay.com/v1/payments?pagesize=2&pageindex=3

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"Payments": [
  {
   "ID": 2459122,
   "SkinID": null, 
   "Created": "20160411140447",
   "MerchantTransactionID": "WPD_1460383484_8795_5000",
   "Amount": "100",
   "Currency": "BAM",
   "CapturedAmount": null,
   "ReturnURL": "https://docs-apm.nuvei.com/wp-content/plugins/smart2pay-api/views/funcs/demo_clean_return.php",
   "Description": null,
   "MethodID": 79,
   "MethodOptionID": null,
   "IncludeMethodIDs": null,
   "ExcludeMethodIDs": null,
   "PrioritizeMethodIDs": null,
   "SiteID": 30201,
   "NotificationDateTime": "20160411140522",
   "Customer": null,
   "BillingAddress": null,
   "ShippingAddress": null,
   "Articles": null,
   "Details": null,
   "ReferenceDetails": null,
   "CustomParameters": null,
   "PreapprovalID": null,
   "Status": {
     "ID": 1,
     "Info": "Open",
     "Reasons": null
   },
   "MethodTransactionID": null,
   "TokenLifetime": null,
   "Capture": null,
   "RedirectURL": null
   },
   {
   "ID": 2459118,
   "SkinID": null,
   "Created": "20160411125607",
   "MerchantTransactionID": "WPD_1460379365_1783_6355",
   "Amount": "1100",
   "Currency": "NGN",
   "CapturedAmount": null,
   "ReturnURL": "https://docs-apm.nuvei.com/wp-content/plugins/smart2pay-api/views/funcs/demo_clean_return.php",
   "Description": null,
   "MethodID": null,
   "MethodOptionID": null,
   "IncludeMethodIDs": null,
   "ExcludeMethodIDs": null,
   "PrioritizeMethodIDs": null,
   "SiteID": 30201,
   "NotificationDateTime": "20160411125629",
   "Customer": null,
   "BillingAddress": null,
   "ShippingAddress": null,
   "Articles": null,
   "Details": null,
   "ReferenceDetails": null,
   "CustomParameters": null,
   "PreapprovalID": null,
   "Status": {
     "ID": 3,
     "Info": "Cancelled",
     "Reasons": null
       },
   "MethodTransactionID": null,
   "TokenLifetime": null,
   "Capture": null,
   "PreapprovalDetails": null,
   "RedirectURL": null
    }
  ],
   "TotalPages": 50,
   "PageSize": 2,
   "PageIndex": 3,
   "Count": 2,
   "TotalCount": 100
}

In the response you will receive additional information in order to keep track of your transactions, like: TotalPages, PageSize, PageIndex, Count and TotalCount.

Here is the example of the request where the transactions are divided in pages (groups of transactions) of 3 transactions and the last group of transactions is returned. In this case the Count parameter will refer to the number of the remaining transactions on the last page.

Request:

GET https://paytest.smart2pay.com/v1/payments?pagesize=3&pageindex=50

Response:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "Payments": [
    {
      "ID": 3037285,
      "SkinID": null,
      "ClientIP": null,
      "Created": "20170808100902",
      "MerchantTransactionID": "WPD_1502186809_5528_8717",
      "OriginatorTransactionID": null,
      "Amount": "1",
      "Currency": "PHP",
      "CapturedAmount": null,
      "ReturnURL": "https://docs-apm.nuvei.com/wp-content/plugins/smart2pay-api/views/funcs/demo_clean_return.php",
      "Description": null,
      "MethodID": 1029,
      "MethodOptionID": null,
      "IncludeMethodIDs": null,
      "ExcludeMethodIDs": null,
      "PrioritizeMethodIDs": null,
      "SiteID": 30201,
      "NotificationDateTime": "20170808100927",
      "Customer": null,
      "BillingAddress": null,
      "ShippingAddress": null,
      "Articles": null,
      "Details": null,
      "ReferenceDetails": null,
      "CustomParameters": null,
      "PreapprovalID": null,
      "Status": {
        "ID": 3,
        "Info": "Cancelled",
        "Reasons": null
      },
      "MethodTransactionID": null,
      "TokenLifetime": null,
      "Capture": null,
      "PreapprovalDetails": null,
      "RedirectURL": null
    },
    {
      "ID": 3037282,
      "SkinID": null,
      "ClientIP": null,
      "Created": "20170808100848",
      "MerchantTransactionID": "WPD_1502186795_5903_4452",
      "OriginatorTransactionID": null,
      "Amount": "1",
      "Currency": "PHP",
      "CapturedAmount": null,
      "ReturnURL": "https://docs-apm.nuvei.com/wp-content/plugins/smart2pay-api/views/funcs/demo_clean_return.php",
      "Description": null,
      "MethodID": 1051,
      "MethodOptionID": null,
      "IncludeMethodIDs": null,
      "ExcludeMethodIDs": null,
      "PrioritizeMethodIDs": null,
      "SiteID": 30201,
      "NotificationDateTime": null,
      "Customer": null,
      "BillingAddress": null,
      "ShippingAddress": null,
      "Articles": null,
      "Details": null,
      "ReferenceDetails": null,
      "CustomParameters": null,
      "PreapprovalID": null,
      "Status": {
        "ID": 4,
        "Info": "Failed",
        "Reasons": null
      },
      "MethodTransactionID": null,
      "TokenLifetime": null,
      "Capture": null,
      "PreapprovalDetails": null,
      "RedirectURL": null      
        }
     ],
      "TotalPages": 50,
      "PageSize": 3,
      "PageIndex": 50,
      "Count": 2,
      "TotalCount": 149
}

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.

Please note that when a request is initiated with PageIndex filter greater than the TotalPages, an HTTP 4xx status is returned with return code 184: PageIndex Out of Range!

Request:

GET https://paytest.smart2pay.com/v1/payments?pagesize=20&pageindex=500

Response:

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

{
  "Payments": [],
  "Count": 0,
  "TotalPages": 178,
  "TotalCount": 3552,
  "PageIndex": 500,
  "PageSize": 20,
  "Error": "PageIndex Out of Range"
}

Refund Details

Go to Refunds tab from the Dashboard and use the search filters to find a specific refund. After you have found the transaction you have been looking for, using the search filters, just double click on it to see specific details of that payment.

A new window will open containing the general details for that Payment ID and also providing details about specific sections, like: General information, Reporting, Reason Codes, Initial Payment details and Invoicing.

The dashboard Refund Details allows the user to always find specific information in order to be informed and keep track of his day-to-day transactions and refunds.

General provides detailed information for the following fields: ID of the transaction, Initial Payment ID, Input Date Time, Merchant ID, Merchant Site ID, Method ID, Merchant Alias, Merchant Site Alias, Method Name, Amount, Currency, Status, Merchant Transaction ID, Originator Transaction ID, Type, Description, Specific Details and Method Transaction ID / ARN.

32

Reporting provides detailed information for the following fields: Notification Date Time and Last Notified Status.

32

Reason Codes provides detailed information for the following fields: Reason Code and Reason.

32

InitialPayment provides detailed information for the following fields: ID, Merchant Transaction ID, Input Date Time, Amount, Currency, Status, Available Amount, Method ID, Method Name and Country.

32

Invoicing provides detailed information for the following fields: Invoiced as refund on, Gross Settlement Amount, Settlement Currency, Exchange Rate, Refund Fee and VAT.

32

  • For refunds of credit card transactions we will also be providing specific details, like: General information, Reporting, Reason Codes, Initial Payment details and Invoicing.

General provides detailed information for the following fields: ID of the transaction, Initial Payment ID, Input Date Time, Merchant ID, Merchant Site ID, Method ID, Merchant Alias, Merchant Site Alias, Method Name, Amount, Currency, Status, Merchant Transaction ID, Originator Transaction ID, Description, Statement Descriptor, Specific Details, Method Transaction ID / ARN.

32

Reporting provides detailed information for the following fields: Notification Date Time and Last Notified Status.

32

Reason Codes provides detailed information for the following fields: Reason Code and Reason.

32

Initial Payment provides detailed information for the following fields: ID, Merchant Transaction ID, Originator Transaction ID, Input Date Time, Amount, Currency, Status, Available Amount, Method ID, Method Name and Country.

32

Invoicing provides detailed information for the following fields: Invoiced as refund on, Gross Settlement Amount, Settlement Currency, Exchange Rate, Refund Fee and VAT.

32

Payment Details

Go to Payments tab from the main Dashboard menu and use the search filters to find a specific payment. After you have found the transaction you have been looking for, using the proper search filters, just double click on it to see specific details for that payment.

A new window will open containing the general details for that Payment ID and also providing details about specific sections, like: Reporting, Flags, Reason Codes and Invoicing.

Please note that Credit Card, 3D Secure and Dispute sections are specific and will only appear for credit card transactions!

The dashboard Payment Details allows the user to always find specific information in order to be informed and keep track of his day-to-day operations and transactions.

General provides detailed information for the following fields: ID of the transaction, Merchant Transaction ID, Input Date Time, Merchant ID, Merchant Site ID, Method ID, Merchant Alias, Merchant Site Alias, Method Name, Amount, Currency, Status, Available Amount, Captured Amount, Return URL, Description, Originator Transaction ID, Customer Name, Customer Email, Country, Specific Details, Method Transaction ID.

32

Fraud Check provides detailed information for the following fields: Status, Score and Reason.

32

Reporting provides detailed information for the following fields: Notification Date Time, Last Notified Status.

32

Flags provides detailed information for the following fields: Request Version, Request Type ID.

32

Reason Codes provides detailed information for the following fields: Reason Code and Reason.

32

Invoicing provides detailed information for the following fields: Invoiced as attempt on, Invoiced as success on, Gross Settlement Amount, Settlement Currency, Exchange Rate, Transaction Fee, General Fee, Issued Fee, Attempt Fee, LocalVat Fee, Repatriation Fee, VAT.

32

  • For credit card transactions Credit Card, 3D Secure and Dispute sections are specific and will only appear for credit card transactions!

General provides detailed information for the following fields: ID of the transaction, Merchant Transaction ID, Input Date Time, Merchant ID, Merchant Site ID, Method ID, Merchant Alias, Merchant Site Alias, Method Name, Amount, Currency, Status, Available Amount, Captured Amount, Return URL, Description, Statement Descriptor, Originator Transaction ID, Country, Language, Specific Details, Method Transaction ID, Authorization Code.

32

Credit Card provides detailed information for the following fields: Masked Card Number, Card Expiration Month, Card Expiration Year, Card Holder Name, Credit Card Brand, Credit Card Sub-Brand, Credit Card Token.

32

3DSecure provides detailed information for the following fields: 3D Secure Check, 3D Secure CAVV, 3D Secure ECI.

32

Fraud Check provides detailed information for the following fields: Fraud Status Code, Fraud Score, Fraud Status ID, Fraud Response Description, Fraud Response Code, Fraud Counter, Fraud Check Mode.

32

Reporting provides detailed information for the following fields: Notification Date Time, Last Notified Status, Reported As Authorized Date, Reported As Captured Date, Reported As Charged Back Date.

32

Flags provides detailed information for the following fields: Request Version, Capture, Retry Counter.

32

Reason Codes provides detailed information for the following fields: Reason Code and Reason.

32

Dispute provides detailed information for the following fields: ID of the transaction, Status, Notification Date Time, Last Notified Status, Amount, Currency, Dispute Date Time, Created Date Time, Reason Code, Reason Code Name.

32

Invoicing provides detailed information for the following fields: Invoiced as attempt on, Invoiced as success on, Gross Settlement Amount, Settlement Currency, Exchange Rate, Transaction Fee, General Fee, Issued Fee, Attempt Fee, LocalVat Fee, Repatriation Fee and VAT.

32

Captures provides detailed information for the Capture ID: CreatedDateTime, Amount, Currency, CaptureAvailableAmount, PaymentStateDefID, Status, ReasonCode and Reason..

32

Card Processing Return Codes

When an API error occurs, an HTTP 4xx or HTTP 5xx status is returned with a code that provides more detailed information in the response.

List of possible Return Code IDs for credit card transactions:

  • 1: Invalid data
  • 2: Validation failed
  • 13: Generic error
  • 17: Payment is invalid
  • 18: Technical error
  • 19: Database technical error
  • 20: Key is duplicated
  • 21: Payment has already been processed
  • 22: Payout has already been processed
  • 23: Refund has already been processed
  • 100: Invalid route
  • 101: Invalid integration type usage
  • 102: Technical error occurred when processing the form
  • 103: Too many attempts for the current transaction
  • 104: Transaction lifetime expired
  • 105: Action is invalid
  • 106: Invalid offset
  • 107: Invalid limit
  • 108: Country is invalid
  • 109: Currency is invalid
  • 110: Merchant transaction ID is invalid
  • 111: Amount is invalid
  • 112: DateTime is invalid
  • 113: Method Transaction ID is invalid
  • 114: Skin ID is invalid
  • 115: Invalid fraud provider
  • 116: Transaction rejected by fraud provider
  • 117: Transaction challenged by fraud provider
  • 118: Transaction rejected by merchant
  • 119: Transaction cancelled by customer
  • 120: Initial Transaction ID is invalid
  • 121: BIN is invalid
  • 122: Installments are not supported for received country
  • 123: Installments are not supported for received BIN
  • 1000: Payment.MerchantTransactionID is invalid
  • 1001: Payment.Amount is invalid
  • 1002: Payment.Currency is invalid
  • 1003: Payment.ReturnURL is invalid
  • 1004: Payment.Description is invalid
  • 1005: Payment.StatementDescriptor is invalid
  • 1006: Payment.State is invalid
  • 1007: Payment.Language is invalid
  • 1008: Payment.Token is invalid
  • 1009: Payment.FraudCheckMode is invalid
  • 1010: Payment is in process
  • 1011: Payment.OriginatorTransactionID is invalid
  • 1012: Payment.AmountToCapture format is invalid
  • 1013: Payment.AmountToCapture exceeds initial payment authorized amount
  • 1014: Payment partial capture is not supported
  • 1200: CardDetails.HolderName is invalid
  • 1201: CardDetails.Number is invalid
  • 1202: CardDetails.ExpirationMonth is invalid
  • 1203: CardDetails.ExpirationYear is invalid
  • 1204: CardDetails.SecurityCode is invalid
  • 1205: CardDetails – Card is expired
  • 1206: CardDetails are missing
  • 1300: ThreeDSecure – Card not enrolled
  • 1301: ThreeDSecure – Card enrollment verification error
  • 1302: ThreeDSecure – Authentication failed
  • 1303: ThreeDSecure – Authentication error
  • 1304: ThreeDSecure – Authentication unavailable
  • 1400: Address is required
  • 1401: Address.City is invalid
  • 1402: Address.ZipCode is invalid
  • 1403: Address.State is invalid
  • 1404: Address.Street is invalid
  • 1405: Address.StreetNumber is invalid
  • 1406: Address.HouseNumber is invalid
  • 1407: Address.HouseExtension is invalid
  • 1408: Address.CountryCode is invalid
  • 1409: Address.Country does not exist
  • 1410: Address.ID is invalid
  • 1600: Customer.MerchantCustomerID is invalid
  • 1601: Customer.Email is invalid
  • 1602: Customer.Firstname is invalid
  • 1603: Customer.Lastname is invalid
  • 1604: Customer.Gender is invalid
  • 1605: Customer.SocialSecurityNumber is invalid
  • 1606: Customer.Phone is invalid
  • 1607: Customer.Company is invalid
  • 1608: Customer.ID is invalid
  • 1609: Customer is required
  • 1800: Invalid provider information
  • 1801: Duplicate provider transaction
  • 2000: Payout.MerchantTransactionID is invalid
  • 2001: Payout.Amount is invalid
  • 2002: Payout.Currency is invalid
  • 2003: Payout.Description is invalid
  • 2004: Payout.StatementDescriptor is invalid
  • 2005: Payout.State is invalid
  • 2200: Refund.MerchantTransactionID is invalid
  • 2201: Refund.Amount is invalid
  • 2202: Refund.Currency is invalid
  • 2203: Refund.Description is invalid
  • 2204: Refund.StatementDescriptor is invalid
  • 2205: Refund.State is invalid
  • 2206: Refund.Amount exceeds initial payment available amount
  • 2207: Another refund is in process
  • 2208: Partial refunds are not available
  • 2209: Refund.OriginatorTransactionID is invalid
  • 2400: Credit card token is invalid
  • 2401: Credit card token value is not available
  • 2402: Credit card token usage limit exceeded
  • 2403: Credit card invalid for the card token
  • 2404: Missing credit card token details
  • 2405: Credit card token is inactive
  • 2406: Credit card token already exists for received card data
  • 2600: Missing credit card details
  • 2800: MerchantSite.ID is invalid
  • 2801: MerchantSite.merchantID is invalid
  • 2802: MerchantSite.URL is invalid
  • 2803: MerchantSite.NotificationURL is invalid
  • 2804: MerchantSite.ApiKey is invalid
  • 2805: MerchantSite.DisplayName is invalid
  • 2806: MerchantSite.Country does not exist
  • 2807: MerchantSite.FraudCheckMode is invalid
  • 4996: Payment is PartiallyCaptured but status is Exception
  • 4997: Payment is Captured but status is Exception
  • 4998: Payment is Authorized but status is Exception
  • 4999: Fraud provider return code is missing or not mapped
  • 5000: Acquirer route return code is missing or not mapped
  • 5001: AVS Mismatch Failure
  • 5002: AVS Mismatch Failure
  • 5003: CVV2 Mismatch Failure
  • 5004: Sorry, the transaction failed Cybersource Fraud Test and was voided
  • 5005: Transaction may not be marked
  • 5006: orderID was not marked successfully
  • 5007: Test Tran. Bad Card
  • 5008: Test Tran. Problem
  • 5009: Username already exists
  • 5010: Username is blank
  • 5011: Fraud Screen Failure
  • 5012: Missing PIN Code
  • 5013: Invalid Bank Acct. No.
  • 5014: Invalid Bank Routing No.
  • 5015: Invalid/Missing Check No.
  • 5016: Invalid card for test transaction
  • 5017: Invalid CVV2/CVC2 No.
  • 5018: Expired card
  • 5019: Missing Data
  • 5020: Missing Email Address
  • 5021: Zip Code does not match Billing State
  • 5022: Invalid Billing Zip Code
  • 5023: Zip Code does not match Shipping State
  • 5024: Invalid Shipping Zip Code
  • 5025: Invalid Credit Card CVV2/CVC2 Format
  • 5026: Maximum number of attempts has been exceeded
  • 5027: Credit Card number has been flagged and can not be used to access this service
  • 5028: IP Address is on Blocked List
  • 5029: Billing country does not match ipaddress country
  • 5030: US based ipaddresses are currently blocked
  • 5031: Credit Cards issued from this country are currently not being accepted
  • 5032: Credit Cards issued from this bank are currently not being accepted
  • 5033: Daily volume exceeded
  • 5034: Too many transactions within allotted time
  • 5035: Sales for this phone number are currently not being accepted
  • 5036: Email Address is on Blocked List
  • 5037: Duplicate Transaction error
  • 5038: Missing/incorrect password
  • 5039: Account not configured for mobil administration
  • 5040: IP Not registered to username
  • 5041: Mode not permitted for this account
  • 5042: Currently Blank
  • 5043: Currently Blank
  • 5044: Processor not responding
  • 5045: Missing merchant/publisher name
  • 5046: Currently Blank
  • 5047: Discount exceeds available gift certificate balance
  • 5048: Gift certificate discount does not match order
  • 5049: Capture failed but will retry again later
  • 5050: Cancel failed but will retry again later
  • 5051: Refund failed at provider
  • 5052: Security code (CVV2/CVC2) is incorrect
  • 5053: Do not Honour
  • 5054: Not sufficient funds
  • 5055: Invalid card number
  • 5056: Merchant does not allow card to be sent
  • 5057: The merchant does not allow Card on File operations
  • 5058: Card temporarily blocked by issuing bank or under suspicion of fraud
  • 5059: Rejection without specifying motive
  • 5060: Operation not allowed for this type of card
  • 5061: Invalid transaction card / issuer / acquirer
  • 5062: Operation rejected to avoid duplicities
  • 5063: Transaction not permitted on card
  • 5064: Technical error upstream processor/gateway
  • 5065: Card not found within table of ranges
  • 5066: Pickup Card
  • 5067: Decline Cvv2 failure
  • 5068: Issuer not available
  • 5069: Card brand not accepted
  • 5070: Wrong Expiration Date
  • 5071: Restricted card
  • 5072: Card blocked by issuing bank or under suspicion of fraud
  • 5073: Error in holder authentication
  • 5074: The CVV2 has more than three positions
  • 5075: No Credit Account
  • 5076: Technical error – Invalid merchant
  • 5077: Technical error – unable to capture payment
  • 5078: Invalid amount
  • 5079: Unable to go online
  • 5080: Forward to issuer
  • 5081: Customer contacted the issuing bank and revoked all the authorizations orders
  • 5082: Customer contacted the issuing bank and revoked the authorization
  • 5083: Stop Payment Order
  • 5084: Card Authentication failed
  • 5085: Unsafe PIN
  • 5086: PIN Change/Unblock request declined
  • 5087: Invalid biller information
  • 5088: Cashback request exceeds issuer limit
  • 5089: Cash service not available
  • 5090: Force STIP
  • 5091: Surcharge amount not permitted on Visa cards (U.S. acquirers only)
  • 5092: Decline.MAC error (Private use only)
  • 5093: Transaction cannot be completed; violation of law
  • 5094: Destination cannot be found for routing
  • 5095: No reason to decline a request for account number verification, address verification, or CVV2 verification
  • 5096: Unable to verify PIN
  • 5097: Decline.Invalid business date
  • 5098: Previous message located for a repeat or reversal, but repeat or reversal data are inconsistent with original message
  • 5099: Unable to locate previous message (no match on Retrieval Reference number)
  • 5100: Allowable number of PIN-entry tries exceeded
  • 5101: Unable to Capture Payment – the confirmation of autorisation date cannot exceed pre-autorisation date by more than 7 days
  • 5102: Decline.Card acceptor call acquirer’s security department
  • 5103: Activity count limit exceeded
  • 5104: Security violation
  • 5105: Activity amount limit exceeded
  • 5106: Decline.Card acceptor contact acquirer
  • 5107: Transaction not allowed at terminal
  • 5108: Transaction not permitted to cardholder
  • 5109: Incorrect PIN
  • 5110: No savings account
  • 5111: No checking account
  • 5112: Decline.No investment account
  • 5113: Decline.No universal account
  • 5114: Decline.Request function not supported
  • 5115: Decline.No credit account
  • 5116: Capture Card acceptor call acquirer security
  • 5117: Completed partially
  • 5118: Unable to locate record in le, or account number is missing from the inquiry
  • 5119: Decline.Unacceptable transaction fee
  • 5120: No action taken (unable to back out prior transaction)
  • 5121: Re-enter transaction
  • 5122: Decline.Member dispute
  • 5123: Decline.Member cancellation
  • 5124: No such issuer
  • 5125: Invalid account number (no such number)
  • 5126: Invalid transaction
  • 5127: Honor with ID
  • 5128: Refer to card issuer
  • 5129: Request in progress
  • 5130: Partial Approval
  • 5131: V.I.P. approval
  • 5132: CVV2/CVC2 is mandatory!
  • 5133: Country not supported
  • 5134: Confirmation for this pre-authorisation already exists
  • 5135: Refund that was sent in the same minute denied to avoid duplication
  • 5136: Issuing bank does not allow automatic authorization. It is necessary to call your authorization center to obtain manual approval.
  • 5137: Cancel period expired
  • 5141: Invalid BIN
  • 5142: This card does not allow pre-authorization operations
  • 5143: No operation to make refund
  • 5144: Frequency limit exceeded
  • 5145: Security Violation
  • 5146: Wrong customer details (check email, name, SSN etc.)
  • 5147: Empty customer detail (check email, name, SSN etc.)
  • 5148: User must be adult
  • 5149: Invalid transaction status
  • 5150: Email associated with another country
  • 5151: Currency not allowed for this country
  • 5152: Mismatch credit card – user data
  • 5153: Rejected by bank
  • 5154: Pending for contingency
  • 5155: Rejected due to blacklisted card
  • 5156: Card is disabled
  • 5157: Rejected due to score validation
  • 5158: Transaction rejected due to velocity checks. Merchant website needs to be verified.
  • 5159: CONTACT ISSUER – Issuing bank does not allow automatic authorisation. It is necessary to call your authorisation centre to obtain manual approval.
  • 5160: User unauthorized (customer SSN blacklisted)
  • 5161: Number of attempts with erroneous PIN exceeded
  • 5162: Cancellation for this pre-authorization already exists
  • 5163: The pre-authorization to be cancelled is not authorized
  • 5164: Merchant has no authorization to use this API
  • 5165: This payment is not cancellable
  • 5166: The customer has exceeded the balance or credit limit available on their card
  • 5167: Card is expired or the customer has entered the wrong expiry date.
  • 5168: 3DSecure Response from issuer contains errors. Unable to verify 3D Secure result.
  • 5169: Operation exceeds an operating limit defined upstream.
  • 5170: Incorrect currency configuration. Please contact support@smart2pay.com
  • 5171: Technical configuration issue. Please contact support@smart2pay.com
  • 5172: Card Number does not meet the check-digit
  • 5173: Technical error upstream. Please contact support@smart2pay.com
  • 5174: Error. The card number can not have more than 19 positions
  • 5175: The card was not authenticated as 3D Secure
  • 5176: The card used is not enrolled in 3DSecure
  • 5177: Rejected by issuer because PIN is missing. Issuer blocked card for online transactions
  • 5178: The currency provided is not allowed (e.g. currency for a refund is not equal to the currency of the original payment)
  • 5179: The credit card number has a wrong format or number is not valid for the payment method’s card scheme or CVC not provided.
  • 5180: Currency was not provided
  • 5181: The payment action is not allowed for the current state the payment is.
  • 5182: The Payment Recurrence cannot be stopped.
  • 5183: Technical error upstream. Please retry.
  • 6000: Custom reason

Klarna Payments Test Data

Test Data
Data Value
Email: Enter any valid email. Example: youremail@email.com
First Name: Enter any name. Example: Doe
Last Name: Enter any name. Example: Test
Phone Number: Enter any number up to 15 characters. See below table for format per country
City Enter any city. Example: London
Street Enter any street. Example: Street 1
Zip Code Enter any number. Example: 12345
State Mandatory to be sent for country US. Enter any valid state.

Example: CA.

Country: Austria(AT), Belgium(BE), Canada(CA), Denmark(DK), Finland(FI), France(FR), Germany(DE), Ireland(IE), Italy(IT), Netherlands(NL), Norway(NO), Poland(PL), Portugal(PT), Spain(ES), Sweden(SE), Switzerland(CH), United Kingdom(UK), United States(US), Mexico(MX), Australia(AU) and New Zeeland(NZ)
Countries supported in production: Austria(AT), Belgium(BE), Canada(CA), Denmark(DK), Finland(FI), France(FR), Germany(DE), Ireland(IE), Italy(IT), Netherlands(NL), Norway(NO), Poland(PL), Portugal(PT), Spain(ES), Sweden(SE), Switzerland(CH), United Kingdom(UK), United States(US), Mexico(MX), Australia(AU) and New Zeeland(NZ)
Article Type: 4 = Discount, 5 = Physical, 6 = Shipping_fee, 7 = Sales_tax, 8 = Digital, 9 = Gift_card, 10 = Store_credit, 11 = Surcharge

Please note that depending on the country chosen by the customer, further personal details may be required from the customer, like: Date of Birth or Social Security Number (Personal ID Number):

Additional Test Data required from the customer on the provider’s page
Country Social Security Number (Personal ID Number)
Sweden (SE): 410321-9202
4103219202
Finland (FI): 190122-829F
190122829F
Norway (NO): 1087000571
Denmark (DK): 801363945
Additional Test Data required from the customer on the provider’s page
Country Date of Birth
For all supported countries: Format is Day/Month/Year (DD-MM-YYYY)
Enter any date.
Additional Test Data required from the customer on the provider’s page
Country Phone number (format)
Austria (AU): +4306762600456
Belgium (BE): +4306762600456
Canada (CA): +15197438620
Denmark (DK): +4542555628
Finland (FI): +358401234567
France (FR): +33689854321
Germany (DE): +49017614284340
Ireland (IE): +353855351400
Italy (IT): +393339741231
Netherlands (NL): +31689124321
Norway (NO): +4740123456
Poland (PL): +48795222223
Portugal (PT): +351935556731
Spain (ES): +34672563009
Sweden (SE): +46701740615
Switzerland (CH): +41758680000
United Kingdom (UK): +447755564318
United States (DE): +13106683312

For more details about the specific personal details required please go to our section: Payment flows per country.

On-Site Messaging
Nuvei supports Klarna’s On-site messaging solution, which enables merchants to add tailored messaging that informs customers about available Klarna payment options as they browse the merchant’s online store, even before they decide to buy.
Merchants integrate Klarna’s On-site messaging separately from their Nuvei integration. For instructions, see the On-site messaging section of the Klarna Docs website.

Klarna Payments Payment Flow

    1. This is a standard payment flow where the customer selected Austria (AU) country. For test purposes, please use the above test data depending on the country used. The Customer fills in the form with his personal details and then they are redirected to Klarna’s page where they are presented with the Confirm and Pay page.
      For Austria, they can choose a payment option from the given list: to pay in full or to in 30 days (with interest). When clicking on the pay option, they are presented with one of the 2 options:
      1 AT pay option select
      For the Pay in full option (Pay by Bank), they need to click on Pay by Bank with Klarna button.1 Place order
      For the Pay in 30 days option, they need to click on Pay with Klarna button:1 Place order
  • If the customer hasn’t provided in the first step one of the required personal details: email, name or phone, he will provide this info on a further intermediary page. Please note that if Shipping Address is not sent, then by default it will have the same value as Billing Address.1 Enter details
  • If the details are filled correctly by the Customer, the transaction is completed and you will receive a notification with the Authorized status. Meanwhile the customer is redirected to your ReturnURL.1 Return page when the redirection status is a success
  • The last step of the payment flow is the capture action when the transaction becomes successful. Simply do a capture request – POST /v1/payments/{id}/capture, where the ID is the GlobalPay Payment ID. In the response we will return the new status as being Success.

Hong Leong Connect PEx+ Test Data

For Hong Leong Connect PEx+ payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Hong Leong Connect PEx+ Payment Flow

  1. The customer enters his email address, name and phone number.

    1 Customer details

  2. The customer logs in to his Connect mobile app on his smartphone by entering his password, scans the QR code and confirms the payment.

    1 Account login

UOB Online Test Data

For UOB Online payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

UOB Online Payment Flow

  1. The customer enters his email address, name and phone number.

    1 Customer details

  2. The customer is shown the details of his payment and proceeds to pay with UOB Online.

    1 Payment details

  3. The customer logs in to his UOB account by entering his User ID and password, and completes the payment.

    1 Account login

  4. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Bank Islam Online Test Data

For Bank Islam Online payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Bank Islam Online Payment Flow

  1. The customer enters his email address, name and phone number.

    1 Customer details

  2. The customer is shown the details of his payment and proceeds to pay with Bank Islam Online.

    1 Payment details

  3. The customer logs in to his account by entering his User ID and completes the payment.

    1 Account login

  4. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

myBSN Test Data

For myBSN payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

myBSN Payment Flow

  1. The customer enters his email address, name and phone number.

    1 Customer details

  2. The customer is shown the details of his payment and proceeds to pay with myBSN.

    1 Payment details

  3. The customer logs in to his account by entering his Username and completes the payment.

    1 Account login

  4. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

AffinOnline Test Data

For AffinOnline payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

AffinOnline Payment Flow

  1. The customer enters his email address, name and phone number.

    1 Customer details

  2. The customer is shown the details of his payment and proceeds to pay with AffinOnline.

    1 Payment details

  3. The customer logs in to his AffinOnline account by entering his Username and completes the payment.

    1 Account login

  4. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Bank Rakyat Internet Banking Test Data

For Bank Rakyat Internet Banking payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Bank Rakyat Internet Banking Payment Flow

  1. The customer enters his email address, name and phone number.

    1 Customer details

  2. The customer is shown the details of his payment and proceeds to pay with Bank Rakyat Internet Banking.

    1 Payment details

  3. The customer logs in to his Rakyat Internet Banking account by entering his Username and completes the payment.

    1 Account login

  4. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Celcom AirCash Test Data

For Celcom AirCash payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Celcom AirCash Payment Flow

  1. The customer enters his email address, name and phone number.

    1 Customer details

  2. The customer is shown the details of his payment and proceeds to pay with Celcom AirCash by entering his registered mobile number.

    1 Payment details

  3. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Public Bank Online Test Data

For Public Bank Online payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Public Bank Online Payment Flow

  1. The customer enters his email address, name and phone number.

    1 Customer details

  2. The customer is shown the details of his payment and proceeds to pay with Public Bank Online.

    1 Payment details

  3. The customer logs in to his Public Bank Online account by entering his User ID and completes the payment.

    1 Account login

  4. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Credit Card Processing

Integration Flavours

Accepting all major credit cards for your business is essential in today’s economic environment and we have made it easier for you now than ever.

With our reliable and easy to integrate platform – GlobalPay REST API, we offer our clients two ways to accept credit card payments: Redirect Card Processing and Direct Card Processing.

Compare credit card payment solutions
Features Redirect Card Processing Direct Card Processing
PCI compliance required No Yes
Credit card tokenization Yes Yes
Card details collected by merchant No Yes
One click payment Yes Yes
Payment page skinning and branding allowed Yes Yes
Customers pay never leaving your website No Yes
Instant payment status notification Yes Yes
Retry logic Yes Yes
Processing transactions in local currencies Yes Yes
Advanced payment security solutions Yes Yes

Redirect Card Processing

Benefits:

  • Even though you are not PCI compliant, you can still process credit cards. Redirect Card Processing comes to your aid and takes care of PCI compliance for you.
  • Not having to worry about being PCI compliant, gives you time to focus on the other aspects of your business.
  • By integrating Redirect Card Processing you have access to many alternative payment options including Credit Card processing.
  • Customer satisfaction is higher because customers expect to be able to pay with their preferred method of payment. Providing various payment options is essential and an invaluable tool for ensuring customer service. For a complete list of our payment methods available, please go to Payment Methods API section.

Direct Card Processing

Benefits:

  • If you are only interested in processing credit cards and you are PCI compliant, this is the best solution for you.
  • With a singular reliable payment option: Direct Card Processing, you can run your business 24/7, focusing on a single payment method.
  • By integrating Direct Card Processing you have access to credit card payment method with a frictionless payment flow.
  • With Direct Card processing, the payment process is more efficient and less time consuming. You will complete transactions more quickly and easily, without any intermediary page.

In order for you to accept credit card payments and handling card data directly, no matter the size or number of transactions, you must comply with the PCI DSS (Payment Card Industry Data Security Standards).

Take into consideration when choosing the card processing solution that you should be PCI compliant if you wish to accept Direct Card Processing. If you are not fully PCI compliant, you need to use Redirect Card Processing.

Get a list of preapprovals

You can get information about all the Preapprovals you have created per SiteID by using an action based on GET HTTP request. Please be aware that only a limited amount of details for each preapproval will be provided.

The default number of preapprovals returned by this request is 50, but you can get a customized list of preapprovals by adding the limit parameter to the URL.

Definition: GET /v1/preapprovals

Request:

GET https://paytest.smart2pay.com/v1/preapprovals
Authorization: Basic MzAyMDE6aEo1Um9iWXg5cjdGZk53Q3ZIWTlMWEhxcXIrRkV6cmM3YUp2UVFrNEdhejFtZzdSeXk=

Response:

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

{
  "Preapprovals": [
    {
      "ID": 4217,
      "Created": "20170804065155",
      "MethodID": 46,
      "SiteID": 30201,
      "MerchantPreapprovalID": "s2ptest_g107",
      "RecurringPeriod": 0,
      "PreapprovedMaximumAmount": null,
      "Currency": null,
      "ReturnURL": "http://demo.smart2pay.com/redirect.php",
      "Description": "1 year subscription update1",
      "Customer": null,
      "BillingAddress": null,
      "Status": {
        "ID": 2,
        "Info": "Open",
        "Reasons": null
      },
      "RedirectURL": null,
      "MethodOptionID": 0,
      "PreapprovedFrequency": null,
      "MandateReference": null
    },
    {
      "ID": 4103,
      "Created": "20170714123423",
      "MethodID": 78,
      "SiteID": 30201,
      "MerchantPreapprovalID": "1122991392222",
      "RecurringPeriod": 0,
      "PreapprovedMaximumAmount": "500",
      "Currency": "EUR",
      "ReturnURL": null,
      "Description": "PreapprovalDescription",
      "Customer": null,
      "BillingAddress": null,
      "Status": {
        "ID": 2,
        "Info": "Open",
        "Reasons": null
      },
      "RedirectURL": null,
      "MethodOptionID": 0,
      "PreapprovedFrequency": null,
      "MandateReference": null
    },
    {
      "ID": 1744,
      "Created": "20160913144228",
      "MethodID": 46,
      "SiteID": 30201,
      "MerchantPreapprovalID": "s2ptest_f25",
      "RecurringPeriod": 0,
      "PreapprovedMaximumAmount": null,
      "Currency": null,
      "ReturnURL": "http://demo.smart2pay.com/redirect.php",
      "Description": "1 year subscription update1",
      "Customer": null,
      "BillingAddress": null,
      "Status": {
        "ID": 4,
        "Info": "ClosedByCustomer",
        "Reasons": null
      },
      "RedirectURL": null,
      "MethodOptionID": 0,
      "PreapprovedFrequency": null,
      "MandateReference": null
    },
    {
      "ID": 1743,
      "Created": "20160913120451",
      "MethodID": 46,
      "SiteID": 30201,
      "MerchantPreapprovalID": "s2ptest_f23",
      "RecurringPeriod": 0,
      "PreapprovedMaximumAmount": null,
      "Currency": null,
      "ReturnURL": "http://demo.smart2pay.com/redirect.php",
      "Description": "1 year subscription",
      "Customer": null,
      "BillingAddress": null,
      "Status": {
        "ID": 4,
        "Info": "ClosedByCustomer",
        "Reasons": null
      },
      "RedirectURL": null,
      "MethodOptionID": 0,
      "PreapprovedFrequency": null,
      "MandateReference": null
    }
  ]
}

Method Balance

By accessing the Method Balance tab, you can see for each method the converted balance from the transaction (merchant) currency to the settlement currency in the calculated amount field.

Please note that the converted balance value from the calculated amount field is an approximate value based on the current exchange rate.

This means, you have the possibility to see the currency and the amount for a specific method in which you have initiated the payment and the amount for that specific method in the settlement currency.

84

Search filters

When you access the Method Balance tab, the Search Filters section is expanded. In order to collapse it just click the arrow on the right of the screen.

84

You can search methods by using the following filters:

  • Method Name
    Method Name
    Definition
    The name of the payment method used and assigned for a specific settlement cycle
    : the name of the payment method used and assigned for a specific settlement cycle;
  • Merchant Currency
    Merchant Currency
    Definition
    The currency in which the merchant has made the payment
    : the currency in which the merchant has made the payment;
  • Settlement Currency
    Settlement Currency
    Definition
    The currency in which the settlement will be made
    : the currency in which the settlement will be made.

Invoices

By accessing the Invoices tab, you can see all of your invoices and when they were generated. You can also search and view a specific invoice by introducing either the invoice number or the total amount in the appropriate text boxes.

84

You can search invoices by using the following filters:

  • Interval
    Interval
    Definition
    The time period in which a specific invoice was generated
    – the time period in which a specific invoice was generated;
  • ID
    ID
    Definition
    The ID of the invoice
    – the ID of the invoice;
  • Invoice Number
    Invoice Number
    Definition
    The number of the invoice
    – the number of the invoice;
  • Total
    Total
    Definition
    The total amount of the invoice
    – the total amount of the invoice.

You have the possibility to download a specific invoice in XLS, PDF or CSV format or to download all of the invoices into the appropriate format. Invoices will be sent on email, and they can also be generated in CSV format in SFTP upon request.

84

Testing Requirements

Test Amounts

Before going live you will first complete a number of test card transactions on our test environment. We have provided a range of amounts that you can use to check all the transactional statuses. Using the below amounts will produce specific responses in order for you to test different scenarios.

Please be aware that all the possible statuses of the transactions that are returned in responses are based on the values assigned in the Amount field.
If you want to obtain a specific status, simply enter a specific amount as the transaction amount. Below you will find different amounts to simulate certain situations and statuses.

The amount’s last two digits represent the decimal part (11.54 will be sent 1154).

Test Amounts
Value Status Description
1 – 10000 Captured / Authorized For this amount range all the actions will be successful: payment authorization, capture action, cancel action, refund action.
10001 Failed All the transactions having this amount will fail.
10002 QueuedForCapturing

If you set capture flag to true it will return status QueuedForCapturing with return code: 5288: “Capture failed but will retry again later”.

If you set capture flag to false it will return status Authorized. Then if you sent a capture request it will receive status QueuedForCapturing with return code: 5288: “Capture failed but will retry again later”.

10003 CaptureRequested

If you set capture flag to true it will return status CaptureRequested.

If you set capture flag to false it will return status Authorized. Then if you sent a capture request it will receive status CaptureRequested.

10004 Transaction: Captured; Refund: Open If this amount will be used for a transaction it will be captured but the refund will remain Open.
10005 Failed Capture failed with timelimit reached. The timelimit for capture action is overdue.
10006 QueuedForCanceling If you set capture flag to false it will return status Authorized. Then if you sent a cancel request it will receive status QueuedForCanceling with return code: 5289: “Cancel failed but will retry again later”.
10201 – 10299 Transaction: Captured; Refund: Failed If any of the amounts in this range limit are used for a transaction it will be Captured but the refund will fail.
20001 – 30000 Failed If any of the amounts in this range limit are used for a transaction it will fail and it will receive status Failed with return code: 5291: “Security code (CVV2/CVC2) is incorrect”.
30001 – 30200 Captured / Authorized For this amount range all the actions will be successful: payment authorization, capture action, cancel action, refund action. For the initial request there is a delay in seconds according to the last 3 digits (from 1 – 200 seconds).

Test Credit Card Numbers

For testing purposes, please use the following credit card numbers:

Test Credit Card Numbers
Credit Card Name Credit Card Number
Visa: 4111111111111111
4024007189870784
4548812049400004
Mastercard: 5148196509775860
5443066050671259
Discover: 6011087785272940
6011235328768235
UnionPay: 6226388000000095
6216261000000000018
Visa Electron: 5443066050671259
4917300800000000
American Express: 345364891980314
372986503275489
Diners Club: 30120905411096
38341714925074
Hipercard: 6062825624254001
JCB: 3158178601355868
210076836080396
InstaPayment: 6385756289989351
6390524121376333

For testing purposes, please use only the credit card numbers from the above list! If any other credit card number is used for a test transaction it will fail and it will receive status Failed with return code: 5287: “Invalid card for test transaction”.

Card Processing Status Codes

List of transaction status IDs
Status ID Name Description *Final Status Applicable for
1 Open The transaction is initiated in our system. No Payments / Refunds / Payouts
2 Success The transaction is successful. Yes Refunds / Payouts
3 Cancelled The payment was cancelled. The payments that can be cancelled are the payments with “Authorized” status or the payments that are cancelled by the customer on the form. Yes Payments
4 Failed The transaction has failed. Yes Payments / Refunds / Payouts
5 Expired The time period the customer had for completing the payment has expired. Yes Payments
7 PendingOnProvider The payment is awaiting approval from the downstream partners/acquirers. No Payments
9 Authorized The payment was successfully authorized. In the initial request the Capture parameter is sent to false so the responsibility of the capturing the payment is on the merchants side.
The goods can be delivered.
No Payments
10 AuthorizeRequested The payment has been submitted for authorization. No Payments
11 Captured The transaction has been captured. Only payments with “Authorized” status can be captured.
The goods can be delivered.
Yes Payments
13 CaptureRequested The payment was successfully authorized and the capture request was also sent to the provider. In the initial request the capture parameter is sent to true so our service will handle the capturing of the payment automatically.
The goods can be delivered.
No Payments
14 Exception The transaction needs manual review from Smart2Pay. No Payments
15 CancelRequested A cancel request has been sent. No Payments
16 Reversed The authorization has been reversed (the money were credited back to the customer account). Yes Payments
19 Disputed The payment is disputed by the customer. No Payments
21 PartiallyRefunded The payment has been partially refunded with a smaller amount than the one from the initial paid transaction. Yes Payments
22 Refunded The payment has been refunded with an equal amount as the one from the initial paid transaction. Yes Payments
23 DisputeWon The cardholder has lost the dispute and the money will return to the merchant. Yes Chargebacks
24 DisputeLost The cardholder has won the dispute and has received the money back. Yes Chargebacks
25 Paid The transaction has been paid. Yes Payments
26 Chargedback The cardholder has won the dispute and has received the money back. Yes Payments
27 SecondDisputeWon The cardholder has lost the second dispute and the money will return to the merchant. Yes Chargebacks
28 SecondDisputeLost The cardholder has won the second dispute and has received the money back. Yes Chargebacks
30 PendingChallengeConfirmation The fraud provider has challenged the payment. Payment is authorized. You can reject or accept the challenge. No Payments
33 QueuedForCapturing The payment will be sent automatically for capturing. No further action from you is required.
The goods can be delivered.
No Payments
34 QueuedForCanceling The payment will be sent automatically for canceling. No further action from you is required. No Payments
35 PartiallyCaptured The payment is partially captured. Yes Payments
38 Retrieval Retrieval request indicates that the customer wants more information about a transaction and inquires their issuing bank and asks for additional information on the charge, but hasn’t yet initiated a chargeback. Yes Chargebacks
39 SoftDeclined A soft decline may occur when the issuing bank will not proceed with a transaction that require SCA and doesn’t meet these requirements. For more information see our dedicated section about: Strong Customer Authentication (SCA). Yes Payments

* In exceptional cases it is possible to receive different notifications and your system should be able to handle such situations. If an additional notification is received with Success Status, it overwrites any previous notification.

Settlement Cycles

In order to view and access the Invoicing tab you need to have assigned to your dashboard user account the proper access rights (Invoicing-view).

Nuvei is managing a complex schedule of settlements, and depending on the payment methods you are using, you can be settled in various cycles with various cutoffs.

By accessing the Invoicing tab->Settlement Cycles view, you can see important information on the invoicing/settlement cycles, invoice date, cutoffs and if any invoices are expected to be delayed. You have the possibility to search for specific cycle using different criteria.

84

Search filters

When you access the Invoicing tab->Settlement Cycles view, the Search Filters section is expanded. In order to collapse it just click the arrow on the right of the screen.

84

You can search invoices by using the following filters:

  • Invoice Type
    Invoice Type
    Definition
    Settlement Invoice – contains the fees and the payments; Settlement Report: contains only the payments; and Invoice: contains only the fees
    : Settlement Invoice – contains the fees and the payments; Settlement Report: contains only the payments; and Invoice: contains only the fees;
  • Invoice Cut Off
    Invoice Cut Off
    Definition
    The time period for which the transactions will be invoiced
    : the time period for which the transactions will be invoiced;
  • Settlement Currency
    Settlement Currency
    Definition
    The currency in which the settlement was made
    : the currency in which the settlement was made;
  • Site Alias
    Site Alias
    Definition
    The merchant identification name in our financial system according to his SiteID previously configured
    : the merchant identification name in our financial system according to his SiteID previously configured;
  • Method
    Method
    Definition
    The name of the payment method used and assigned for a specific settlement cycle
    : the name of the payment method used and assigned for a specific settlement cycle;
  • Next Invoice Date
    Next Invoice Date
    Definition
    The date when the next invoice is to be generated
    Next Invoice Date: the date when the next invoice is to be generated;
  • Next Invoice Interval
    Next Invoice Interval
    Definition
    The interval when the next invoice is to be generated
    : the interval when the next invoice is to be generated;
  • On Hold
    On Hold
    Definition
    If set to no, invoices will be automatically generated and process by the system. If set to yes, it will be manually processed by our financial team when certain conditions are met
    : if set to no, invoices will be automatically generated and process by the system. If set to yes, it will be manually processed by our financial team when certain conditions are met.

Server to Server Card Payment

If you initiate a payment with the GenerateCreditCardToken element set to false, the token element is not sent in the response/notification, so you cannot use it for future payments, but the token is still created and associated with the credit card and the payment.

Request:

POST https://securetest.smart2pay.com/v1/payments
Authorization: Basic MTAxMDpnYWJp{
  "Payment": {
    "MerchantTransactionID": "s2ptest_i6",
    "Amount": 2000,
    "Currency": "EUR",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "payment product",
    "StatementDescriptor": "bank statement message",
    "Card": {
      "HolderName": "John Doe",
      "Number": "4111111111111111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2021",
      "SecurityCode": "312"
    },		
     "Capture": true,
     "GenerateCreditCardToken": false,
     "Moto": true
  }
}

Response:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8{
  "Payment": {
    "ID": 202589,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20170511112434",
    "MerchantTransactionID": "s2ptest_i6",
    "OriginatorTransactionID": null,
    "Amount": 2000,
    "Currency": "EUR",
    "CapturedAmount": "2000",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "payment product",
    "StatementDescriptor": "bank statement message",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "VISA-1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2021",
      "IssuingBankCountry": "NL"
    },
    "CreditCardToken": null,
    "Status": {
      "ID": 11,
      "Info": "Captured",
      "Reasons": []
    },
    "CaptureDetails": {
      "ID": 276,
      "Amount": 2000,
      "Status": {
        "ID": 2,
        "Info": "Success",
        "Reasons": []
      }
    },
    "MethodTransactionID": null,
    "AuthorizationCode": "115399",
    "PaymentTokenLifetime": null,
    "Capture": true,
    "RedirectURL": null,
    "3DSecure": false,
    "Fraud": null,
    "Moto": true
  }
}

Hosted Card Form

If you initiate a payment without any card or token details, you will be given in the response a RedirectURL, that will be used to redirect the customer to a form where he will have to fill all the necessary details and continue the payment.

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_h6",
    "Amount": 2000,
    "Currency": "EUR",	
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Capture": true
  }
}

Response:

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

{
  "Payment": {
    "ID": 202235,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20161205084804",
    "MerchantTransactionID": "s2ptest_h6",
    "OriginatorTransactionID": null,
    "Amount": "2000",
    "Currency": "EUR",
    "CapturedAmount": "0",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": null,
    "StatementDescriptor": null,
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Card": null,
    "CreditCardToken": null,
    "Status": {
      "ID": 1,
      "Info": "Open",
      "Reasons": []
    },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": 10,
    "Capture": true,
    "RedirectURL": "https://securetest.smart2pay.com/v1/Payments/FillCardDetails?PaymentToken=202235.1010.A3F07F81639486814BAF3319CF96A9071",
    "3DSecure": null
  }
}

Also, if you initiate a Card payment using the CreditCardToken value without the SecurityCode parameter and with the RequireSecurityCode parameter set to true, a RedirectURL will be given in the response. Using this URL the customer will be redirected to a form where the card details are already filled, except the SecurityCode (card number is masked and cannot be changed). The customer will have to fill the value for the SecurityCode parameter and continue the payment.

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_i9",
    "Amount": 2000,
    "Currency": "EUR",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "CreditCardToken": {
      "Value": "F43F90A5CB613D91F704407D4E297EA1",
      "RequireSecurityCode": true
    },		
     "Capture": true,
      "GenerateCreditCardToken": true
   }
}

Response:

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

{
  "Payment": {
    "ID": 202592,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20170511112846",
    "MerchantTransactionID": "s2ptest_i9",
    "OriginatorTransactionID": null,
    "Amount": "2000",
    "Currency": "EUR",
    "CapturedAmount": "0",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": null,
    "StatementDescriptor": null,
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "Ends with 1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2018",
      "IssuingBankCountry": null
    },
    "CreditCardToken": {
      "Value": "F43F90A5CB613D91F704407D4E297EA1"
    },
    "Status": {
      "ID": 1,
      "Info": "Open",
      "Reasons": []
    },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": 10,
    "Capture": true,
    "RedirectURL": "https://securetest.smart2pay.com/v1/Payments/FillCardDetails?PaymentToken=202592.1010.8DBBBF0F45451A5D094F4CDD88E199698",
    "3DSecure": false
  }
}

Whenever the payment process is completed, we will notify you of the event to the notification URL you setup in the Merchant Dashboard. We will send a notification containing the final status of the card payment. For more information about notifications, please go to our section Payment Notification.

One Click Payment

If you initiate a Card payment and you set the GenerateCreditCardToken parameter to true, a token element is sent in the response, containing the value of the newly created credit card token, that you can use for future payments.

The token received in the response, together with the Security Code (CVV) parameter, can be used to initiate future payments, without having to enter all the necessary card details again.

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_i4",
    "Amount": 2000,
    "Currency": "EUR",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "payment product",
    "StatementDescriptor": "bank statement message",
    "CreditCardToken": {
      "Value": "F43F90A5CB613D91F704407D4E297EA1",
      "SecurityCode": "312"
    },		
     "Capture": true,
     "GenerateCreditCardToken": true
  }
}

Response:

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

{
  "Payment": {
    "ID": 202587,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20170511111702",
    "MerchantTransactionID": "s2ptest_i4",
    "OriginatorTransactionID": null,
    "Amount": "2000",
    "Currency": "EUR",
    "CapturedAmount": "2000",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "payment product",
    "StatementDescriptor": "bank statement message",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "Ends with 1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2018",
      "IssuingBankCountry": null
    },
    "CreditCardToken": {
      "Value": "F43F90A5CB613D91F704407D4E297EA1"
    },
    "Status": {
      "ID": 11,
      "Info": "Captured",
      "Reasons": []
    },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": true,
    "RedirectURL": null,
    "3DSecure": false
  }
}

Authorize Card Payment

Definition: POST /v1/payments

In order to initiate a Direct Card payment, you must create a payment object with the necessary card details.

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_h2",
    "Amount": 2000,
    "Currency": "EUR",
    "Card": {
      "HolderName": "John Doe",
      "Number": "4111111111111111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2018",
      "SecurityCode": "312"
    },		
     "Capture": true
  }
}

Response:

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

{
  "Payment": {
    "ID": 202230,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20161205084103",
    "MerchantTransactionID": "s2ptest_h2",
    "OriginatorTransactionID": null,
    "Amount": "2000",
    "Currency": "EUR",
    "CapturedAmount": "2000",
    "ReturnURL": null,
    "Description": null,
    "StatementDescriptor": null,
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "VISA-1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2018"
    },
    "CreditCardToken": null,
    "Status": {
      "ID": 11,
      "Info": "Captured",
      "Reasons": []
    },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": true,
    "Retry": false,
    "RedirectURL": null,
    "3DSecure": null
  }
}

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

Also, when the validation fails, an invalid request is inserted in the database and the ID of the newly inserted invalid request is sent in the Payment response. The value of the element InvalidRequestID is prefixed with ”i” to not be confused with the Payment ID.

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

Request:

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

{
  "Payment": {
    "MerchantTransactionID": "s2ptest_h2",
    "Amount": 2000,
    "Currency": "EUR",
    "Card": {
      "HolderName": "John Doe",
      "Number": "4111111111111111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2018",
      "SecurityCode": "312"
    },		
     "Capture": true
  }
}

Response:

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

{
  "Payment": {
    "InvalidRequestID": "i3065",
    "ID": null,
    "ClientIP": null,
    "SkinID": null,
    "Created": null,
    "MerchantTransactionID": "s2ptest_h2",
    "OriginatorTransactionID": null,
    "Amount": "2000",
    "Currency": "EUR",
    "CapturedAmount": "0",
    "ReturnURL": null,
    "Description": null,
    "StatementDescriptor": null,
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": null,
    "BillingAddress": null,
    "ShippingAddress": null,
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "Ends with 1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2018"
    },
    "CreditCardToken": null,
    "Status": {
      "ID": null,
      "Info": null,
      "Reasons": [
        {
          "Code": "20",
          "Info": "Key is duplicated"
        }
      ]
    },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": true,
    "Retry": false,
    "RedirectURL": null,
    "3DSecure": null
  }
}

See our section: Create a Complex Direct Card Payment for a complete example of a direct card payment.

Via Baloto Test Data

For Via Baloto payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

Via Baloto Payment Flow

  1. The customer enters his email address.

    1 Enter email

  2. The customer selects his preferred payment method from the list.

    1 Select payment method

  3. The customer receives the payment instructions and clicks on the Generate Invoice button.

    1 Generate invoice

  4. The customer receives the payment receipt containing the payment details. He needs to print the receipt and pay it at any branch of Via Baloto in the country.

    1 Payment receipt

PSE Test Data

For PSE payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

PSE Payment Flow

  1. The customer enters his email address.

    1 Enter email

  2. After selecting the payment method, the customer enters the required information and proceeds with the payment using the Pay button.

    1 Payment details

  3. The customer enters his email address registered in PSE and completes the payment.

    1 Payment confirmation

  4. Upon completion of the payment flow, the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

WebMoney Transfer Test Data

For WebMoney Transfer payment method there aren’t any test data available, but you can see how it works with the payment flow given below.

WebMoney Transfer Payment Flow

  1. The customer chooses his preferred currency from the list and enters his email address.

    1 Enter email

  2. The customer logs in to his WebMoney Transfer account by entering his login data (WMID, email address or phone number) and password.

    1 Account login

  3. The customer selects one WMID from the list and continues the payment.

    1 Select WMID

  4. The customer selects his purse/wallet (if he does not have a purse/wallet in the transaction currency one will be automatically created).

    The customer can confirm the payment:

    • by receiving a SMS on his registered phone number
    • by receiving a code using the E-Num application installed in his mobile device.

    1 Payment confirmation option

  5. Using his E-Num application the customer scans the QR-code and enters the response code received, in order to confirm the payment.

    1 Payment confirmation

  6. The customer verifies the transaction details and he also has the possibility to print them.

    1 Transaction details

  7. Upon completion of the payment flow the customer is redirected back to your ReturnURL.

    1 Return page when the redirection status is a success

Get a list of payouts (filtered)

You can specify various filters as parameters in the query string in order to get a customized list of payouts.

Requests:

GET https://securetest.smart2pay.com/v1/payouts?limit=3
Authorization: Basic MTAxMDpnYWJp
GET https://securetest.smart2pay.com/v1/payouts?maximumAmount=1000
Authorization: Basic MTAxMDpnYWJp

The following table describes the possible filters you can use. You can mix the filters so you can obtain the desired results.

FILTERS
Field Description Data type
limit The maximum number of items that will be returned Long
offset A list of payments starting with the value of the offset parameter will be returned. The offset parameter can also be used together with the limit parameter to select specific entries within a list of payments. String
startDate The date and time after which the payments are returned DateTime

(YYYYMMDDHHMMSS)

endDate The date and time until which the payments are returned DateTime

(YYYYMMDDHHMMSS)

country Only the transactions having this country code will be returned String

(ISO 3166-1-alpha-2)

currency Only the transactions having this currency code will be returned String

(ISO 4217)

minimumAmount Only the payments with an amount higher than this will be returned Integer (last 2 digits representing the decimal part)
maximumAmount Only the payments with an amount lower than this will be returned Integer (last 2 digits representing the decimal part)
merchantTransactionID Only the payment having this merchantTransactionID will be returned String

^[0-9a-zA-Z_-]{1,50}$

statusID Only the transactions having this statusID will be returned. Integer

The ID of the payment status can have the following values: 1 – Open, 2 – Success, 3 – Cancelled, 4 – Failed, 5 – Expired, 9 – Authorized.

methodTransactionID Only the payments having this methodTransactionID will be returned. This transaction ID from the payment method provider can be used for customer support. String

^[0-9a-zA-Z_-]{1,50}$

Here is an example of a request with the limit filter set to 3. This means that it will only return 3 transactions in a descending order.

Request:

GET https://securetest.smart2pay.com/v1/payouts?limit=3
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
    "Payouts": [
        {
            "ID": 214,
            "SiteID": 1010,
            "Created": "20181016133234",
            "MerchantTransactionID": "test_h4",
            "OriginatorTransactionID": null,
            "Amount": "1000",
            "Currency": "EUR",
            "Description": "payment product",
            "StatementDescriptor": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": []
            }
        },
        {
            "ID": 213,
            "SiteID": 1010,
            "Created": "20181016133041",
            "MerchantTransactionID": "Laur-1539696641",
            "OriginatorTransactionID": "test123456789!$%#",
            "Amount": "1000",
            "Currency": "EUR",
            "Description": "payment product",
            "StatementDescriptor": "card payment",
            "BillingAddress": {
                "ID": 9622,
                "City": "Iasi",
                "ZipCode": "700049",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "371",
                "HouseNumber": "---",
                "HouseExtension": "---",
                "Country": "RO"
            },
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": []
            }
        },
        {
            "ID": 212,
            "SiteID": 1010,
            "Created": "20181016133024",
            "MerchantTransactionID": "Laur-1539696624",
            "OriginatorTransactionID": "test123456789!$%#",
            "Amount": "1000",
            "Currency": "EUR",
            "Description": "payment product",
            "StatementDescriptor": "card payment",
            "BillingAddress": {
                "ID": 9622,
                "City": "Iasi",
                "ZipCode": "700049",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "371",
                "HouseNumber": "---",
                "HouseExtension": "---",
                "Country": "RO"
            },
            "Status": {
                "ID": 4,
                "Info": "Failed",
                "Reasons": [
                    {
                        "Code": 5065,
                        "Info": "Card not found within table of ranges."
                    }
                ]
            }
        }
    ]
}

You can also mix various filters to get specific results. Here is an example of a request with the limit filter set to 2 and the currency EUR. This means that it will return the last two payout entries that have the transaction currency EUR.

Request:

GET https://securetest.smart2pay.com/v1/payouts?limit=2&currency=EUR
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
    "Payouts": [
        {
            "ID": 214,
            "SiteID": 1010,
            "Created": "20181016133234",
            "MerchantTransactionID": "test_h4",
            "OriginatorTransactionID": null,
            "Amount": "1000",
            "Currency": "EUR",
            "Description": "payment product",
            "StatementDescriptor": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": []
            }
        },
        {
            "ID": 213,
            "SiteID": 1010,
            "Created": "20181016133041",
            "MerchantTransactionID": "Laur-1539696641",
            "OriginatorTransactionID": "test123456789!$%#",
            "Amount": "1000",
            "Currency": "EUR",
            "Description": "payment product",
            "StatementDescriptor": "card payment",
            "BillingAddress": {
                "ID": 9622,
                "City": "Iasi",
                "ZipCode": "700049",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "371",
                "HouseNumber": "---",
                "HouseExtension": "---",
                "Country": "RO"
            },
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": []
            }
        }
    ]
}

Get a list of direct card payments (filtered)

You can specify various filters as parameters in the query string in order to get a customized list of direct card payments.

Requests:

GET https://securetest.smart2pay.com/v1/payments?limit=2
Authorization: Basic MTAxMDpnYWJp
GET https://securetest.smart2pay.com/v1/payments?startDate=20160803150000&endDate=20161003140000
Authorization: Basic MTAxMDpnYWJp

The following table describes the possible filters you can use. You can mix the filters so you can obtain the desired results.

FILTERS
Field Description Data type
limit The maximum number of items that will be returned Long
offset A list of payments starting with the value of the offset parameter will be returned. The offset parameter can also be used together with the limit parameter to select specific entries within a list of payments. Long
startDate The date and time after which the payments are returned DateTime (YYYYMMDDHHMMSS)
endDate The date and time until which the payments are returned DateTime (YYYYMMDDHHMMSS)
country Only the transactions having this country code will be returned String (ISO 3166-1-alpha-2)
currency Only the transactions having this currency code will be returned String (ISO 4217)
minimumAmount Only the payments with an amount higher than this will be returned Integer (last 2 digits representing the decimal part)
maximumAmount Only the payments with an amount lower than this will be returned Integer (last 2 digits representing the decimal part)
merchantTransactionID Only the payment having this merchantTransactionID will be returned String

^[0-9a-zA-Z_-]{1,50}$

statusID Only the transactions having this statusID will be returned. Integer

The ID of the payment status can have the following values: 1 – Open, 3 – Cancelled, 4 – Failed, 5 – Expired, 9 – Authorized, 11 – Captured.

methodTransactionID Only the payments having this methodTransactionID will be returned. This transaction ID from the payment method provider can be used for customer support. String

^[0-9a-zA-Z_-]{1,50}$

Here is an example of a request with the currency filter set to EUR. This means that it will return only the transactions with this payment currency.

Request:

GET https://securetest.smart2pay.com/v1/payments?limit=2
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Payments": [
    {
      "ID": 202245,
      "ClientIP": null,
      "SkinID": null,
      "Created": "20161205094557",
      "MerchantTransactionID": "s2ptest_h17",
      "OriginatorTransactionID": null,
      "Amount": 2000,
      "Currency": "EUR",
      "CapturedAmount": 2000,
      "ReturnURL": null,
      "Description": null,
      "StatementDescriptor": null,
      "MethodID": 6,
      "MethodOptionID": null,
      "SiteID": 1010,
      "NotificationDateTime": null,
      "Customer": null,
      "BillingAddress": null,
      "ShippingAddress": null,
      "Articles": null,
      "Card": null,
      "CreditCardToken": null,
      "Status": {
        "ID": 11,
        "Info": "Captured",
        "Reasons": []
      },
      "MethodTransactionID": null,
      "PaymentTokenLifetime": null,
      "Capture": null,
      "Retry": null,
      "RedirectURL": null,
      "3DSecure": null
    },
    {
      "ID": 202244,
      "ClientIP": null,
      "SkinID": null,
      "Created": "20161205094546",
      "MerchantTransactionID": "s2ptest_h16",
      "OriginatorTransactionID": null,
      "Amount": 2000,
      "Currency": "EUR",
      "CapturedAmount": 0,
      "ReturnURL": null,
      "Description": null,
      "StatementDescriptor": null,
      "MethodID": 6,
      "MethodOptionID": null,
      "SiteID": 1010,
      "NotificationDateTime": null,
      "Customer": null,
      "BillingAddress": null,
      "ShippingAddress": null,
      "Articles": null,
      "Card": null,
      "CreditCardToken": null,
      "Status": {
        "ID": 9,
        "Info": "Authorized",
        "Reasons": []
      },
      "MethodTransactionID": null,
      "PaymentTokenLifetime": null,
      "Capture": null,
      "Retry": null,
      "RedirectURL": null,
      "3DSecure": null
    }
  ]
}

Get a list of payouts

Without specifying any parameters a list of payouts is returned. Please be aware that only a limited amount of details for each payout will be provided.

Definition: GET /v1/payouts

Request:

GET https://securetest.smart2pay.com/v1/payouts
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
    "Payouts": [
        {
            "ID": 214,
            "SiteID": 1010,
            "Created": "20181016133234",
            "MerchantTransactionID": "test_h4",
            "OriginatorTransactionID": null,
            "Amount": "1000",
            "Currency": "EUR",
            "Description": "payment product",
            "StatementDescriptor": null,
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": []
            }
        },
        {
            "ID": 213,
            "SiteID": 1010,
            "Created": "20181016133041",
            "MerchantTransactionID": "Laur-1539696641",
            "OriginatorTransactionID": "test123456789!$%#",
            "Amount": "1000",
            "Currency": "EUR",
            "Description": "payment product",
            "StatementDescriptor": "card payment",
            "BillingAddress": {
                "ID": 9622,
                "City": "Iasi",
                "ZipCode": "700049",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "371",
                "HouseNumber": "---",
                "HouseExtension": "---",
                "Country": "RO"
            },
            "Status": {
                "ID": 2,
                "Info": "Success",
                "Reasons": []
            }
        },
        {
            "ID": 212,
            "SiteID": 1010,
            "Created": "20181016133024",
            "MerchantTransactionID": "Laur-1539696624",
            "OriginatorTransactionID": "test123456789!$%#",
            "Amount": "1000",
            "Currency": "EUR",
            "Description": "payment product",
            "StatementDescriptor": "card payment",
            "BillingAddress": {
                "ID": 9622,
                "City": "Iasi",
                "ZipCode": "700049",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "371",
                "HouseNumber": "---",
                "HouseExtension": "---",
                "Country": "RO"
            },
            "Status": {
                "ID": 4,
                "Info": "Failed",
                "Reasons": [
                    {
                        "Code": 5065,
                        "Info": "Card not found within table of ranges."
                    }
                ]
            }
        },
        {
            "ID": 211,
            "SiteID": 1010,
            "Created": "20181016132837",
            "MerchantTransactionID": "Laur-1539696517",
            "OriginatorTransactionID": "test123456789!$%#",
            "Amount": "1000",
            "Currency": "EUR",
            "Description": "payment product",
            "StatementDescriptor": "card payment",
            "BillingAddress": {
                "ID": 9622,
                "City": "Iasi",
                "ZipCode": "700049",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "371",
                "HouseNumber": "---",
                "HouseExtension": "---",
                "Country": "RO"
            },
            "Status": {
                "ID": 1,
                "Info": "Open",
                "Reasons": []
            }
        },
        {
            "ID": 210,
            "SiteID": 1010,
            "Created": "20181016123606",
            "MerchantTransactionID": "Laur-1539693367",
            "OriginatorTransactionID": "test123456789!$%#",
            "Amount": "1000",
            "Currency": "EUR",
            "Description": "payment product",
            "StatementDescriptor": "card payment",
            "BillingAddress": {
                "ID": 9622,
                "City": "Iasi",
                "ZipCode": "700049",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "371",
                "HouseNumber": "---",
                "HouseExtension": "---",
                "Country": "RO"
            },
            "Status": {
                "ID": 1,
                "Info": "Open",
                "Reasons": []
            }
        },
        {
            "ID": 209,
            "SiteID": 1010,
            "Created": "20181016123450",
            "MerchantTransactionID": "Laur-1539693291",
            "OriginatorTransactionID": "test123456789!$%#",
            "Amount": "1000",
            "Currency": "EUR",
            "Description": "payment product",
            "StatementDescriptor": "card payment",
            "BillingAddress": {
                "ID": 9622,
                "City": "Iasi",
                "ZipCode": "700049",
                "State": "Iasi",
                "Street": "Sf Lazar",
                "StreetNumber": "371",
                "HouseNumber": "---",
                "HouseExtension": "---",
                "Country": "RO"
            },
            "Status": {
                "ID": 1,
                "Info": "Open",
                "Reasons": []
            }
        }
    ]
}

Get a list of refunds of a specific direct card payment

You can get a list of refunds for a specific direct card 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://securetest.smart2pay.com/v1/payments/202247/refunds
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Refunds": [
    {
      "ID": 266,
      "SiteID": 1010,
      "Created": "20161205095522",
      "MerchantTransactionID": "s2ptest_h22",
      "OriginatorTransactionID": null,
      "InitialPaymentID": 202247,
      "Amount": 1000,
      "Currency": "EUR",
      "Description": "refund reason",
      "StatementDescriptor": null,
      "Customer": null,
      "BillingAddress": null,
      "BankAddress": null,
      "Articles": null,
      "Status": {
        "ID": 4,
        "Info": "Failed",
        "Reasons": [
          {
            "Code": "2206",
            "Info": "Refund.Amount exceeds initial payment available amount"
          }
        ]
      }
    },
    {
      "ID": 265,
      "SiteID": 1010,
      "Created": "20161205095515",
      "MerchantTransactionID": "s2ptest_h21",
      "OriginatorTransactionID": null,
      "InitialPaymentID": 202247,
      "Amount": 1000,
      "Currency": "EUR",
      "Description": "refund reason",
      "StatementDescriptor": null,
      "Customer": null,
      "BillingAddress": null,
      "BankAddress": null,
      "Articles": null,
      "Status": {
        "ID": 2,
        "Info": "Success",
        "Reasons": []
      }
    },
    {
      "ID": 264,
      "SiteID": 1010,
      "Created": "20161205095505",
      "MerchantTransactionID": "s2ptest_h20",
      "OriginatorTransactionID": null,
      "InitialPaymentID": 202247,
      "Amount": 1000,
      "Currency": "EUR",
      "Description": "refund reason",
      "StatementDescriptor": null,
      "Customer": null,
      "BillingAddress": null,
      "BankAddress": null,
      "Articles": null,
      "Status": {
        "ID": 2,
        "Info": "Success",
        "Reasons": []
      },
      "MethodTransactionID": "75260719055008187880561"
    }
  ]
}

Get a list of direct card payments

Without specifying any parameters a list of direct card payments is returned. Please be aware that only a limited amount of details for each direct card payment will be provided.

Definition: GET /v1/payments

Request:

GET https://securetest.smart2pay.com/v1/payments
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Payments": [
    {
      "ID": 202245,
      "ClientIP": null,
      "SkinID": null,
      "Created": "20161205094557",
      "MerchantTransactionID": "s2ptest_h17",
      "OriginatorTransactionID": null,
      "Amount": 2000,
      "Currency": "EUR",
      "CapturedAmount": 2000,
      "ReturnURL": null,
      "Description": null,
      "StatementDescriptor": null,
      "MethodID": 6,
      "MethodOptionID": null,
      "SiteID": 1010,
      "NotificationDateTime": null,
      "Customer": null,
      "BillingAddress": null,
      "ShippingAddress": null,
      "Articles": null,
      "Card": null,
      "CreditCardToken": null,
      "Status": {
        "ID": 11,
        "Info": "Captured",
        "Reasons": []
      },
      "MethodTransactionID": null,
      "PaymentTokenLifetime": null,
      "Capture": null,
      "Retry": null,
      "RedirectURL": null,
      "3DSecure": null
    },
    {
      "ID": 202244,
      "ClientIP": null,
      "SkinID": null,
      "Created": "20161205094546",
      "MerchantTransactionID": "s2ptest_h16",
      "OriginatorTransactionID": null,
      "Amount": 2000,
      "Currency": "EUR",
      "CapturedAmount": 0,
      "ReturnURL": null,
      "Description": null,
      "StatementDescriptor": null,
      "MethodID": 6,
      "MethodOptionID": null,
      "SiteID": 1010,
      "NotificationDateTime": null,
      "Customer": null,
      "BillingAddress": null,
      "ShippingAddress": null,
      "Articles": null,
      "Card": null,
      "CreditCardToken": null,
      "Status": {
        "ID": 9,
        "Info": "Authorized",
        "Reasons": []
      },
      "MethodTransactionID": null,
      "PaymentTokenLifetime": null,
      "Capture": null,
      "Retry": null,
      "RedirectURL": null,
      "3DSecure": null
    },
    {
      "ID": 202243,
      "ClientIP": null,
      "SkinID": null,
      "Created": "20161205093245",
      "MerchantTransactionID": "s2ptest_h13",
      "OriginatorTransactionID": null,
      "Amount": 2000,
      "Currency": "EUR",
      "CapturedAmount": 0,
      "ReturnURL": "http://demo.smart2pay.com/redirect.php",
      "Description": "payment product",
      "StatementDescriptor": "bank statement message",
      "MethodID": 6,
      "MethodOptionID": null,
      "SiteID": 1010,
      "NotificationDateTime": null,
      "Customer": {
        "ID": 115,
        "MerchantCustomerID": "null",
        "Email": "customer@test.com",
        "FirstName": "John",
        "LastName": "Doe",
        "Gender": "1",
        "SocialSecurityNumber": "45908-28324",
        "Phone": "0744-783322",
        "Company": "S2P"
      },
      "BillingAddress": {
        "ID": 253,
        "City": "Iasi",
        "ZipCode": "7000-49",
        "State": "Iasi",
        "Street": "Sf Lazar",
        "StreetNumber": "37",
        "HouseNumber": "5A",
        "HouseExtension": "-",
        "Country": "RO"
      },
      "ShippingAddress": {
        "ID": 87,
        "City": "Iasi",
        "ZipCode": "700049",
        "State": "Iasi",
        "Street": "Sf Lazar",
        "StreetNumber": "37",
        "HouseNumber": "-",
        "HouseExtension": "-",
        "Country": "RO"
      },
      "Articles": null,
      "Card": null,
      "CreditCardToken": null,
      "Status": {
        "ID": 1,
        "Info": "Open",
        "Reasons": []
      },
      "MethodTransactionID": null,
      "PaymentTokenLifetime": null,
      "Capture": null,
      "Retry": null,
      "RedirectURL": null,
      "3DSecure": null
    },
    {
      "ID": 202242,
      "ClientIP": null,
      "SkinID": null,
      "Created": "20161205093117",
      "MerchantTransactionID": "s2ptest_h12",
      "OriginatorTransactionID": null,
      "Amount": 2000,
      "Currency": "EUR",
      "CapturedAmount": 2000,
      "ReturnURL": "http://demo.smart2pay.com/redirect.php",
      "Description": "payment product",
      "StatementDescriptor": "bank statement message",
      "MethodID": 6,
      "MethodOptionID": null,
      "SiteID": 1010,
      "NotificationDateTime": null,
      "Customer": {
        "ID": 115,
        "MerchantCustomerID": "null",
        "Email": "customer@test.com",
        "FirstName": "John",
        "LastName": "Doe",
        "Gender": "1",
        "SocialSecurityNumber": "45908-28324",
        "Phone": "0744-783322",
        "Company": "S2P"
      },
      "BillingAddress": {
        "ID": 253,
        "City": "Iasi",
        "ZipCode": "7000-49",
        "State": "Iasi",
        "Street": "Sf Lazar",
        "StreetNumber": "37",
        "HouseNumber": "5A",
        "HouseExtension": "-",
        "Country": "RO"
      },
      "ShippingAddress": {
        "ID": 87,
        "City": "Iasi",
        "ZipCode": "700049",
        "State": "Iasi",
        "Street": "Sf Lazar",
        "StreetNumber": "37",
        "HouseNumber": "-",
        "HouseExtension": "-",
        "Country": "RO"
      },
      "Articles": null,
      "Card": null,
      "CreditCardToken": null,
      "Status": {
        "ID": 11,
        "Info": "Captured",
        "Reasons": []
      },
      "MethodTransactionID": null,
      "PaymentTokenLifetime": null,
      "Capture": null,
      "Retry": null,
      "RedirectURL": null,
      "3DSecure": null
    },
    {
      "ID": 202240,
      "ClientIP": null,
      "SkinID": null,
      "Created": "20161205092303",
      "MerchantTransactionID": "s2ptest_h11",
      "OriginatorTransactionID": null,
      "Amount": 2000,
      "Currency": "EUR",
      "CapturedAmount": 1000,
      "ReturnURL": null,
      "Description": null,
      "StatementDescriptor": null,
      "MethodID": 6,
      "MethodOptionID": null,
      "SiteID": 1010,
      "NotificationDateTime": null,
      "Customer": null,
      "BillingAddress": null,
      "ShippingAddress": null,
      "Articles": null,
      "Card": null,
      "CreditCardToken": null,
      "Status": {
        "ID": 35,
        "Info": "PartiallyCaptured",
        "Reasons": []
      },
      "MethodTransactionID": null,
      "PaymentTokenLifetime": null,
      "Capture": null,
      "Retry": null,
      "RedirectURL": null,
      "3DSecure": null
    }
  ]
}

Get information on a specific refund for a direct payment

You can get information about a refund by using the following action 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://securetest.smart2pay.com/v1/payments/202246/refunds/263
Authorization: Basic MTAxMDpnYWJp

Response:

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



{
  "Refund": {
    "ID": 263,
    "SiteID": 1010,
    "Created": "20161205095348",
    "MerchantTransactionID": "s2ptest_h19",
    "OriginatorTransactionID": null,
    "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": []
    }
  }
}

Get information on a specific payout

You can get information about a payout by using GET HTTP request.

Definition: GET /v1/payouts/{id}

Where:
  • {id} – GlobalPay Payout ID

Request:

GET https://securetest.smart2pay.com/v1/payouts/214
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Payout": {
    "ID": 214,
    "SiteID": 1010,
    "Created": "20181016133234",
    "MerchantTransactionID": "test_h4",
    "OriginatorTransactionID": null,
    "Amount": "1000",
    "Currency": "EUR",
    "Description": "payment product",
    "StatementDescriptor": null,
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": []
    }
  }
}

Get the status of a payout

You can get the status of a payout by using the following GET HTTP request.

Please note that this method sends only the status information about a payout. To receive more information about a payout please go to our section Get information on a specific payout.

Definition: GET /v1/payouts/{id}/status

Where:
  • {id} – GlobalPay Payout ID

Request:

GET https://securetest.smart2pay.com/v1/payouts/214/status
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Payout": {
    "ID": 214,
    "MerchantTransactionID": "test_h4",
    "Status": {
      "ID": 2,
      "Info": "Success",
      "Reasons": []
    }
  }
}

Create a payout

Definition: POST /v1/payouts

To initiate a payout, you must create a payout object. The parameters of the payout are sent in the message body as a JSON object. There are two ways in which a payout can be initiated:

  • First one is when you create a payout object with all the necessary card details, like in the below example.

    Request:

    POST https://securetest.smart2pay.com/v1/payouts
    Authorization: Basic MTAxMDpnYWJp
    
    {
     "Payout": {
       "MerchantTransactionID": "test_h4",
       "Amount": 1000,
       "Currency": "EUR",
       "Description": "payment product",
       "Card": {
         "HolderName": "John Doe",
         "Number": "4548812049400004",
         "ExpirationMonth": "02",
         "ExpirationYear": "2029"
        }
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Payout": {
        "ID": 214,
        "SiteID": 1010,
        "Created": "20181016133234",
        "MerchantTransactionID": "test_h4",
        "OriginatorTransactionID": null,
        "Amount": "1000",
        "Currency": "EUR",
        "Description": "payment product",
        "StatementDescriptor": null,
        "Status": {
          "ID": 2,
          "Info": "Success",
          "Reasons": []
        }
      }
    }

  • The second one is when you create a payout object containing only the Credit Card Token that was received in a previous card payment.

    If you initiate a Card payment and you set the GenerateCreditCardToken parameter to true, a token element is sent in the response, containing the value of the newly created credit card token.

    The token received in the response can be used to initiate future payouts.

    Request:

    POST https://securetest.smart2pay.com/v1/payouts
    Authorization: Basic MTAxMDpnYWJp
    
    {
      "Payout": {
        "MerchantTransactionID": "s2ptest_i11",
        "Amount": "100",
        "Currency": "EUR",
        "Description": "Payout Token Test",    
        "CreditCardToken": {
          "Value": "C0D510746B513D66093609AA92BDA295"
        }
      }
    }

    Response:

    HTTP/1.1 201 Created
    Content-Type: application/json; charset=utf-8
    
    {
      "Payout": {
        "ID": 219,
        "SiteID": 1010,
        "Created": "20190612130707",
        "MerchantTransactionID": "s2ptest_i11",
        "OriginatorTransactionID": null,
        "Amount": "100",
        "Currency": "EUR",
        "Description": "Payout Token Test",
        "StatementDescriptor": 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 Card Processing Return Codes.

Request:

POST https://securetest.smart2pay.com/v1/payouts
Authorization: Basic MTAxMDpnYWJp

{
  "Payout": {
    "MerchantTransactionID": "test_h5",
    "Amount": 1000,
    "Currency": "EUR",
    "Description": "payment product"
  }
}

Response:

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

{
  "Payout": {
    "InvalidRequestID": "i3355",
    "ID": null,
    "SiteID": 1010,
    "Created": null,
    "MerchantTransactionID": "test_h5",
    "OriginatorTransactionID": null,
    "Amount": "1000",
    "Currency": "EUR",
    "Description": "payment product",
    "StatementDescriptor": null,
    "Status": {
      "ID": null,
      "Info": null,
      "Reasons": [
      {
        "Code": 1206,
        "Info": "CardDetails are missing"
        }
      ]
    }
  }
}

Direct Card Payment Notification Format

Whenever a payment process is completed, we notify you of the event and whether it was successful or not. GlobalPay will send a POST message to the notification URL you setup in the Merchant Dashboard.
Please note that you need to respond within a 30 seconds time limit otherwise we will resend the notification.

We recommend you to always verify the Notification content we sent and not just simply/automatically respond to our notifications. Also it is highly recommended to match the values for notification Amount and Currency with the ones from your database!

In exceptional cases it is possible to receive different notifications and your system should be able to handle such situations. If an additional notification is received with Success Status, it overwrites any previous notification.

If you do not respond to the notifications of type Payment our system will keep sending the notifications until it receives a response. At first you will be notified more often. Once the time passes the notifications from our system will be rare and they will eventually stop (after a period of time defined in our system, currently set to 7 days).

We will notify you about the new status of the payment to the Notification URL you setup in the Merchant Dashboard.

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

Payment notification format:

Authorization: Basic MTAxMDpnYWJp

{
  "Payment": {
    "ID": 202242,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20161205093117",
    "MerchantTransactionID": "s2ptest_h12",
    "OriginatorTransactionID": "100_a",
    "Amount": "2000",
    "Currency": "EUR",
    "CapturedAmount": "2000",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "payment product",
    "StatementDescriptor": "bank statement message",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": {
      "ID": 115,
      "MerchantCustomerID": "null",
      "Email": "customer@test.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": "1",
      "SocialSecurityNumber": "45908-28324",
      "Phone": "0744-783322",
      "Company": "S2P"
    },
    "BillingAddress": {
      "ID": 253,
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "RO"
    },
    "ShippingAddress": {
      "ID": 87,
      "City": "Iasi",
      "ZipCode": "700049",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "-",
      "HouseExtension": "-",
      "Country": "RO"
    },
    "Articles": null,
    "Card": {
      "HolderName": "John Doe",
      "Number": "VISA-1111",
      "ExpirationMonth": "02",
      "ExpirationYear": "2018"
    },
    "CreditCardToken": {
      "Value": "6BEBF42B0E43D3BFD360DFB5EFF9D96D"
    },
    "Status": {
      "ID": 11,
      "Info": "Captured",
      "Reasons": []
    },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": true,
    "Retry": true,
    "RedirectURL": null,
    "3DSecure": null
  }
}

Response:

204 No Content

Capture a Card Payment

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

Where:
  • {id} – GlobalPay Payment ID

A payment can only be captured if it has an Authorized status. The Authorized status can only be obtained for direct card payments initiated with Capture parameter set to false.

Once the payment has an Authorized status, you can capture either a partial amount or the full amount of the initial authorized amount for the transaction.

Full capture means you capture the entire authorized amount for the initial transaction.

A 200 HTTP response (OK) is returned if the request was completed successfully.

Request:

POST https://securetest.smart2pay.com/v1/payments/202238/capture
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Payment": {
    "ID": 202238,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20161205091735",
    "MerchantTransactionID": "s2ptest_h9",
    "OriginatorTransactionID": null,
    "Amount": "2000",
    "Currency": "EUR",
    "CapturedAmount": "2000",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "payment product",
    "StatementDescriptor": "bank statement message",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": {
      "ID": 115,
      "MerchantCustomerID": "null",
      "Email": "customer@test.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": "1",
      "SocialSecurityNumber": "45908-28324",
      "Phone": "0744-783322",
      "Company": "S2P"
    },
    "BillingAddress": {
      "ID": 253,
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "RO"
    },
    "ShippingAddress": {
      "ID": 87,
      "City": "Iasi",
      "ZipCode": "700049",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "-",
      "HouseExtension": "-",
      "Country": "RO"
    },
    "Articles": null,
    "Card": null,
    "CreditCardToken": null,
    "Status": {
      "ID": 11,
      "Info": "Captured",
      "Reasons": []
    },
    "CaptureDetails": {
      "ID": 264,
      "Amount": 2000,
      "Status": {
        "ID": 2,
        "Info": "Success",
        "Reasons": []
      }
    },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": false,
    "Retry": true,
    "RedirectURL": null,
    "3DSecure": null
  }
}

Partial capture means you have the possibility to capture a smaller amount than the one from the initial authorized transaction.

Some acquiring banks allow you to perform one or more partial captures for an authorized transaction with the limitation that the total amount of the partial captures to be smaller or equal than the initial authorized amount.

You need to specify the captured amount parameter in the query string, in order to partially capture a payment.

Request:

POST https://securetest.smart2pay.com/v1/payments/202240/capture?amount=1000
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Payment": {
    "ID": 202240,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20161205091934",
    "MerchantTransactionID": "s2ptest_h10",
    "OriginatorTransactionID": null,
    "Amount": "2000",
    "Currency": "EUR",
    "CapturedAmount": "1000",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "payment product",
    "StatementDescriptor": "bank statement message",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": {
      "ID": 115,
      "MerchantCustomerID": "null",
      "Email": "customer@test.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": "1",
      "SocialSecurityNumber": "45908-28324",
      "Phone": "0744-783322",
      "Company": "S2P"
    },
    "BillingAddress": {
      "ID": 253,
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "RO"
    },
    "ShippingAddress": {
      "ID": 87,
      "City": "Iasi",
      "ZipCode": "700049",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "-",
      "HouseExtension": "-",
      "Country": "RO"
    },
    "Articles": null,
    "Card": null,
    "CreditCardToken": null,
    "Status": {
      "ID": 35,
      "Info": "PartiallyCaptured",
      "Reasons": []
    },
    "CaptureDetails": {
      "ID": 266,
      "Amount": 1000,
      "Status": {
        "ID": 2,
	"Info": "Success",
	"Reasons": []
        }
    },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": false,
    "Retry": true,
    "RedirectURL": null,
    "3DSecure": null
  }
}

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 Card Processing Return Codes.

Request:

POST https://securetest.smart2pay.com/v1/payments/202238/capture
Authorization: Basic MTAxMDpnYWJp

Response:

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

{
  "Payment": {
    "ID": 202238,
    "ClientIP": null,
    "SkinID": null,
    "Created": "20161205091735",
    "MerchantTransactionID": "s2ptest_h9",
    "OriginatorTransactionID": null,
    "Amount": "2000",
    "Currency": "EUR",
    "CapturedAmount": "2000",
    "ReturnURL": "http://demo.smart2pay.com/redirect.php",
    "Description": "payment product",
    "StatementDescriptor": "bank statement message",
    "MethodID": 6,
    "MethodOptionID": null,
    "SiteID": 1010,
    "NotificationDateTime": null,
    "Customer": {
      "ID": 115,
      "MerchantCustomerID": "null",
      "Email": "customer@test.com",
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": "1",
      "SocialSecurityNumber": "45908-28324",
      "Phone": "0744-783322",
      "Company": "S2P"
    },
    "BillingAddress": {
      "ID": 253,
      "City": "Iasi",
      "ZipCode": "7000-49",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "5A",
      "HouseExtension": "-",
      "Country": "RO"
    },
    "ShippingAddress": {
      "ID": 87,
      "City": "Iasi",
      "ZipCode": "700049",
      "State": "Iasi",
      "Street": "Sf Lazar",
      "StreetNumber": "37",
      "HouseNumber": "-",
      "HouseExtension": "-",
      "Country": "RO"
    },
    "Articles": null,
    "Card": null,
    "CreditCardToken": null,
    "Status": {
      "ID": 11,
      "Info": "Captured",
      "Reasons": [
        {
          "Code": "1006",
          "Info": "Payment.State is invalid"
        }
      ]
    },
    "CaptureDetails": {
      "ID": 267,
      "Amount": 1000,
      "Status": {
      "ID": 4,
      "Info": "Failed",
      "Reasons": [
        {
          "Code": "1006",
          "Info": "Payment.State is invalid"
          }
        ]
      }
    },
    "MethodTransactionID": null,
    "PaymentTokenLifetime": null,
    "Capture": false,
    "Retry": true,
    "RedirectURL": null,
    "3DSecure": null
  }
}