NAV
.NET (C#) PHP JAVA curl HTTP form

Overview of payment process

Intro

The Trust Pay Merchant API (payment service) is an internet based payment tool that merchants can use to receive payments from clients. By integrating this service, merchants are able to process both instant bank transfer and card payments.

API endpoints:
Test - https://playground.trustpay.eu/
Live - https://ib.trustpay.eu/

Payment process

Instant Bank transfers

Payment setup

API endpoints:
Test - https://playground.trustpay.eu/mapi/pay.aspx
Live - https://ib.trustpay.eu/mapi/pay.aspx

Merchant's implementation has to redirect the client to the Merchant API with the following parameters:

Payment setup example:

string baseUrl = "https://playground.trustpay.eu/pay.aspx";
long AID = 2107111111;
decimal AMT = 1.5M;
string CUR = "EUR";
string REF = "123456789";
string NURL = "https://example.handler.com/result.php";
        
string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AID={1}&AMT={2:0.00}&CUR={3}&REF={4}&NURL={5}",
    baseUrl, AID, AMT, CUR, HttpUtility.UrlEncode(REF), HttpUtility.UrlEncode(NURL));

Response.Redirect(url);

$baseUrl = "https://playground.trustpay.eu/pay.aspx";
$AID = 2107111111;
$AMT = 1.5;
$CUR = "EUR";
$REF = "123456789";
$NURL = "https://example.handler.com/result.php";

$url = sprintf(
    "%s?AID=%d&AMT=%s&CUR=%s&REF=%s&NURL=%s", 
    $baseUrl, $AID, number_format($AMT, 2, '.', ''), $CUR, 
    urlencode($REF), urlencode($NURL));
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://playground.trustpay.eu/pay.aspx";
long AID = 2107111111;
double AMT = 1.5d;
String  CUR = "EUR";
String  REF = "123456789";
String  NURL = "https://example.handler.com/result.php";

try
{
    String url = String.format(
        Locale.ROOT,"%s?AID=%d&AMT=%.2f&CUR=%s&REF=%s&NURL=%s", 
        baseUrl, AID, AMT, CUR, URLEncoder.encode(REF, "UTF-8"), 
        URLEncoder.encode(NURL, "UTF-8"));
    response.sendRedirect(url);
}catch(Exception ex){}

curl https://playground.trustpay.eu/pay.aspx \
-d "AID=2107111111" \
-d "AMT=1.50" \
-d "CUR=EUR" \
-d "REF=123456789" \
-d "NURL=https%3A%2F%2Fexample.handler.com%2Fresult.php"

<form method="GET" action="https://playground.trustpay.eu/pay.aspx">
    <input type="hidden" name="AID" value="2107111111" />
    <input type="hidden" name="AMT" value="1.50" />
    <input type="hidden" name="CUR" value="EUR" />
    <input type="hidden" name="REF" value="123456789" />
    <input type="hidden" name="NURL" value="https%3A%2F%2Fexample.handler.com%2Fresult.php" />
    <input type="submit" value="pay" />
</form>
Name Description Format Required
AID Merchant account ID (ID of account assigned by Trust Pay) Numeric(10) Yes
AMT Amount of the payment (exactly 2 decimal places) Numeric(13,2)
en-US format
For secure requests
CUR Currency of the payment (same as currency of merchant account) Char(3) Yes
REF Reference (merchant’s payment identification) Varchar(500)1 For secure requests
URL Return URL (overrides any default Return URL, can be overridden further by RURL, CURL, EURL) Varchar(256) No
RURL Return URL (overrides default Success Return URL) Varchar(256) No
CURL Cancel URL (overrides default Cancel Return URL) Varchar(256) No
EURL Error URL (overrides default Error Return URL) Varchar(256) No
NURL Notification URL (overrides default Notification URL) Varchar(256) No
SIG Data signature calculated from concatenated values of AID, AMT, CUR, and REF parameters Char(64) For secure requests
LNG Default language for Trust Pay site Char(2) No
CNT Default country of client Char(2) No
DSC Description (payment description text that will be displayed to the user) Varchar(256) No
EMA Customer email Varchar(254) No

1 The reference can not contain characters < and >

Payment result

After paying, the customer is redirected to one of the return URLs provided by the Merchant:

The following parameters are always being sent with the redirects:

Payment result example:
https://example.handler.com/result.php?&REF=1234567890&RES=0&PID=4337417657
Name Description Format
REF Reference (merchant’s payment identification) Varchar(500)
RES Result code Numeric(4)
PID Processing ID (sent when available, can be used for inquiries regarding failed payments) Numeric(10)

Payment notification

For each announced, authorized, or successfully finished payment on the merchant’s account, Trust Pay sends the result of the payment to the Merchant in notification URL and/or e-mail using the following parameters:

Payment URL notification example:
https://example.handler.com/result.php?AID=2107111111&TYP=CRDT&AMT=6.00&CUR=EUR&REF=1234567890&RES=0&TID=177561&OID=19553&TSS=Y&SIG=C4FFA5F7B57A0F5E6DD105197C8B7D7B9214509F3618CDC0F527C9B4E57F0334
Payment E-mail notification example:
MerchantAccountID: 2107111111
Type: CRDT
Amount: 6.00
Currency: EUR
Reference: 1234567890
ResultCode: 0
TransactionID: 177561
OrderID: 19553
TransactionSigned: Y
SIGN: C4FFA5F7B57A0F5E6DD105197C8B7D7B9214509F3618CDC0F527C9B4E57F0334
Name Description Format
AID Merchant account ID (ID of account assigned by Trust Pay) Numeric(10)
TYP Type of transaction (CRDT or DBIT) Char(4)
AMT Amount of the payment (exactly 2 decimal places) Numeric(13,2), en-US format
CUR Currency of the payment (same as currency of merchant account) Char(3)
REF Reference (merchant’s payment identification) Varchar(500)
RES Result code Numeric(4)
TID Trust Pay Transaction ID (unique ID used for any enquiries) Numeric(10)
OID Trust Pay Order ID (ID of payment order - 0 if no order available) Numeric(10)
TSS Transaction signed (if request from merchant was signed, this value determines whether the payment was done with same signed values as specified by merchant) Char(1)
SIG Data signature calculated from concatenated values of AID, TYP, AMT, CUR, REF, RES, TID, OID and TSS parameters Char(64)

Notifications can be sent to the Merchant using the following channels:

Signature

Creating a secret key

For test purposes, you can create a test account with a secret key in the playground. This secret key can not be changed.

For live environment, a different secret key is automatically generated for every merchant account. You can view this secret key in your TrustPay Internet Banking under Account Details – Secret Key. You can view your secret key any time. You are also able to see the history of secret keys and generate a new key if required.

Creating a signature


using System;
using System.Security.Cryptography;
using System.Text;

public static string GetSignature(string key, string message)
{
    using (var hmac = HMAC.Create("HMACSHA256"))
    {
        hmac.Key = Encoding.UTF8.GetBytes(key);
        byte[] signature = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
        return BitConverter.ToString(signature).Replace("-", "").ToUpperInvariant();
    }
}
    

function GetSignature($key, $message){
    return strtoupper(hash_hmac('sha256', pack('A*', $message), pack('A*', $key)));
}
    

public static String GetSignature(String key, String message) throws Exception
{   
    byte[] keyBytes = key.getBytes("UTF-8");
    byte[] messageBytes = message.getBytes("UTF-8");
    javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacSHA256");
    mac.init(new javax.crypto.spec.SecretKeySpec(keyBytes, mac.getAlgorithm()));
    return ByteArrayToHexString(mac.doFinal(messageBytes));
}

public static String ByteArrayToHexString(byte[] b)
{
    java.math.BigInteger bi = new java.math.BigInteger(1, b);
    return String.format("%0" + (b.length << 1) + "X", bi);
}
    

HMAC-SHA-256 (RFC 2104) code is used for checking the integrity of the data sent between TrustPay and Merchant. This signature is created using secret key and message data. Message data is obtained by concatenating request parameters and details are explained in documentation for specific operations. After computing the signature, it needs to be converted to hexadecimal uppercase string.

Functions for creating the signature in .NET C#, PHP and JAVA are provided by Trust Pay.

Verification of a signature

Here you can verify your implementation of Trust Pay signature. Just enter your parameters and the signature you calculated and our tool will check whether the signature is valid or not.












Card payments

Visa and MasterCard card payments work in a similar way to instant bank transfers, with the differences described in this chapter.

Successful notifications are sent with result code 3 – authorized, which also means that the payment has been captured. All payments in an agreed period will be settled to your Trust Pay account later in a single transaction. You will not receive any further notifications for the individual card transactions.

Test cards

When you are testing your implementation on the playground, you can use these test cards to make simulated payments:

Card number Result when using this card
4200 0000 0000 0000
4200 0000 0000 1234
4200 0000 0000 5555
Payment is successful
4200 0000 0000 0001 Payment fails with result card expired
4200 0000 0000 0002 Payment fails with result card limit exceeded
4200 0000 0000 0003 Payment fails with result failed 3DS authentication
4200 0000 0000 0004 Payment fails with result insufficient funds
4200 0000 0000 0005 Payment fails with result invalid CVV
4200 0000 0000 0006 Payment fails with result invalid expiry date
4200 0000 0000 0007 Payment fails with result too many invalid tries
Any other card number Payment fails with result invalid card number

Purchase

API endpoints:
Test - https://playground.trustpay.eu/mapi5/Card/Pay
Live - https://ib.trustpay.eu/mapi5/Card/Pay

Merchant's implementation has to redirect the client to the Merchant API with the following parameters:

Payment setup example:

string baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
decimal AMT = 1.5M;
string CUR = "EUR";
string REF = "123456789";
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}", AID, AMT, CUR, REF);
string SIG = GetSignature(secretKey, sigData);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AID={1}&AMT={2:0.00}&CUR={3}&REF={4}&SIG={5}",
    baseUrl, AID, AMT, CUR, HttpUtility.UrlEncode(REF), SIG);

Response.Redirect(url);

$baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
$AID = 2107111111;
$AMT = 1.5;
$CUR = "EUR";
$REF = "123456789";
        
$secretKey = "123456";
$sigData = sprintf("%d%s%s%s", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF);
$SIG = GetSignature($secretKey, $sigData);

$url = sprintf(
    "%s?AID=%d&AMT=%s&CUR=%s&REF=%s&SIG=%s", 
    $baseUrl, $AID, number_format($AMT, 2, '.', ''), $CUR, urlencode($REF), $SIG);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
double AMT = 1.5d;
String  CUR = "EUR";
String  REF = "123456789";

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d%.2f%s%s", AID, AMT, CUR, REF);
    String SIG = GetSignature(secretKey, sigData);

    String url = String.format(
        Locale.ROOT,"%s?AID=%d&AMT=%.2f&CUR=%s&REF=%s&SIG=%s", 
        baseUrl, AID, AMT, CUR, URLEncoder.encode(REF, "UTF-8"), SIG);
    response.sendRedirect(url);
}catch(Exception ex){}
Name Description Format Required
AID Merchant account ID (ID of account assigned by Trust Pay) Numeric(10) Yes
AMT Amount of the payment (exactly 2 decimal places) Numeric(6,2)
en-US format
For secure requests
CUR Currency of the payment Char(3) Yes
REF Reference (merchant’s payment identification) Varchar(19)1 For secure requests
URL Return URL (overrides any default Return URL, can be overridden further by RURL, CURL, EURL) Varchar(256) No
RURL Return URL (overrides default Success Return URL) Varchar(256) No
CURL Cancel URL (overrides default Cancel Return URL) Varchar(256) No
EURL Error URL (overrides default Error Return URL) Varchar(256) No
NURL Notification URL (overrides default Notification URL) Varchar(256) No
SIG Data signature calculated from concatenated values of AID, AMT, CUR, and REF parameters Char(64) Yes
LNG Default language for Trust Pay site Char(2) No
CNT Default country of client Char(2) No
DSC Description (payment description text that will be displayed to the user) Varchar(256)2 No
EMA Customer email Varchar(32) No

1 Only alphanumeric characters are allowed. Other characters may be lost or changed during payment process.
2 Only alphanumeric and space characters are allowed. Other characters may not be displayed correctly.

Card on file

API endpoints:
Test - https://playground.trustpay.eu/mapi5/Card/Pay
Live - https://ib.trustpay.eu/mapi5/Card/Pay

Card on file functionality allows merchants to store card tokens in their systems, without storing any sensitive card data (card number, expiry date, CVV code) and to subsequently use such tokens to process payments, without any need for the client (cardholder) to enter any card details during subsequent purchases.

Register

Card on file registration example:

string baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
decimal AMT = 1.5M;
string CUR = "EUR";
string REF = "123456789";
int CTY = 1;
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}", AID, AMT, CUR, REF);
string SIG = GetSignature(secretKey, sigData);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AID={1}&AMT={2:0.00}&CUR={3}&REF={4}&SIG={5}&CTY={6}",
    baseUrl, AID, AMT, CUR, HttpUtility.UrlEncode(REF), SIG, CTY);

Response.Redirect(url);

$baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
$AID = 2107111111;
$AMT = 1.5;
$CUR = "EUR";
$REF = "123456789";
$CTY = 1;
        
$secretKey = "123456";
$sigData = sprintf("%d%s%s%s", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF);
$SIG = GetSignature($secretKey, $sigData);

$url = sprintf(
    "%s?AID=%d&AMT=%s&CUR=%s&REF=%s&SIG=%s&CTY=%d", 
    $baseUrl, $AID, number_format($AMT, 2, '.', ''), $CUR, urlencode($REF), $SIG, $CTY);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
double AMT = 1.5d;
String  CUR = "EUR";
String  REF = "123456789";
int CTY = 1;

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d%.2f%s%s", AID, AMT, CUR, REF);
    String SIG = GetSignature(secretKey, sigData);

    String url = String.format(
        Locale.ROOT,"%s?AID=%d&AMT=%.2f&CUR=%s&REF=%s&SIG=%s&CTY=%d", 
        baseUrl, AID, AMT, CUR, URLEncoder.encode(REF, "UTF-8"), SIG, CTY);
    response.sendRedirect(url);
}catch(Exception ex){}

To register card for later card on file purchases, a first purchase must be made that works similar to standard purchase, but this additional parameter is required:

Name Description Format Required
CTY Card transaction type
For card on file registration must be set to 1
Numeric(1) Yes

CardID parameter will be present in notification after client completes a purchase. Value of this parameter needs to be used to make subsequent card on file purchases.

Card on file purchase

Card on file purchase example:

string baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
decimal AMT = 1.5M;
string CUR = "EUR";
string REF = "123456789";
int CTY = 2;
string CardID = "8a8394855cfd3692015d0dc3f793355b";
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}", AID, AMT, CUR, REF);
string sig2Data = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}{4}{5}", AID, AMT, CUR, REF, CTY, CardID);
string SIG = GetSignature(secretKey, sigData);
string SIG2 = GetSignature(secretKey, sig2Data);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AID={1}&AMT={2:0.00}&CUR={3}&REF={4}&SIG={5}&CTY={6}&CardID={7}&SIG2={8}",
    baseUrl, AID, AMT, CUR, HttpUtility.UrlEncode(REF), SIG, CTY, CardID, SIG2);

Response.Redirect(url);

$baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
$AID = 2107111111;
$AMT = 1.5;
$CUR = "EUR";
$REF = "123456789";
$CTY = 2;
$CardID = "8a8394855cfd3692015d0dc3f793355b";
        
$secretKey = "123456";
$sigData = sprintf("%d%s%s%s", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF);
$sig2Data = sprintf("%d%s%s%s%d%s", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF, $CTY, $CardID);
$SIG = GetSignature($secretKey, $sigData);
$SIG2 = GetSignature($secretKey, $sig2Data);

$url = sprintf(
    "%s?AID=%d&AMT=%s&CUR=%s&REF=%s&SIG=%s&CTY=%d&CardID=%s&SIG2=%s", 
    $baseUrl, $AID, number_format($AMT, 2, '.', ''), $CUR, urlencode($REF), $SIG, $CTY, $CardID, $SIG2);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
double AMT = 1.5d;
String  CUR = "EUR";
String  REF = "123456789";
int CTY = 2;
String CardID = "8a8394855cfd3692015d0dc3f793355b";

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d%.2f%s%s", AID, AMT, CUR, REF);
    String sig2Data = String.format(Locale.ROOT, "%d%.2f%s%s%d%s", AID, AMT, CUR, REF, CTY, CardID);
    String SIG = GetSignature(secretKey, sigData);
    String SIG2 = GetSignature(secretKey, sig2Data);

    String url = String.format(
        Locale.ROOT,"%s?AID=%d&AMT=%.2f&CUR=%s&REF=%s&SIG=%s&CTY=%d&CardID=%s&SIG2=%s", 
        baseUrl, AID, AMT, CUR, URLEncoder.encode(REF, "UTF-8"), SIG, CTY, CardID, SIG2);
    response.sendRedirect(url);
}catch(Exception ex){}

Parameters for card on file purchase are the same as for standard payment, but these additional parameters have to be added to the request:

Name Description Format Required
CTY Card transaction type
For card on file purchase must be set to 2
Numeric(1) Yes
CardID Card ID from notification Varchar(64) No
SIG2 Data signature calculated from concatenated values of AID, AMT, CUR, REF, CTY and CardID parameters Char(64) Yes

Card on file preauthorization

Card on file preauthorization example:

string baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
decimal AMT = 1.5M;
string CUR = "EUR";
string REF = "123456789";
int CTY = 9;
string CardID = "8a8394855cfd3692015d0dc3f793355b";
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}", AID, AMT, CUR, REF);
string sig2Data = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}{4}{5}", AID, AMT, CUR, REF, CTY, CardID);
string SIG = GetSignature(secretKey, sigData);
string SIG2 = GetSignature(secretKey, sig2Data);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AID={1}&AMT={2:0.00}&CUR={3}&REF={4}&SIG={5}&CTY={6}&CardID={7}&SIG2={8}",
    baseUrl, AID, AMT, CUR, HttpUtility.UrlEncode(REF), SIG, CTY, CardID, SIG2);

Response.Redirect(url);

$baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
$AID = 2107111111;
$AMT = 1.5;
$CUR = "EUR";
$REF = "123456789";
$CTY = 9;
$CardID = "8a8394855cfd3692015d0dc3f793355b";
        
$secretKey = "123456";
$sigData = sprintf("%d%s%s%s", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF);
$sig2Data = sprintf("%d%s%s%s%d%s", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF, $CTY, $CardID);
$SIG = GetSignature($secretKey, $sigData);
$SIG2 = GetSignature($secretKey, $sig2Data);

$url = sprintf(
    "%s?AID=%d&AMT=%s&CUR=%s&REF=%s&SIG=%s&CTY=%d&CardID=%s&SIG2=%s", 
    $baseUrl, $AID, number_format($AMT, 2, '.', ''), $CUR, urlencode($REF), $SIG, $CTY, $CardID, $SIG2);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
double AMT = 1.5d;
String  CUR = "EUR";
String  REF = "123456789";
int CTY = 9;
String CardID = "8a8394855cfd3692015d0dc3f793355b";

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d%.2f%s%s", AID, AMT, CUR, REF);
    String sig2Data = String.format(Locale.ROOT, "%d%.2f%s%s%d%s", AID, AMT, CUR, REF, CTY, CardID);
    String SIG = GetSignature(secretKey, sigData);
    String SIG2 = GetSignature(secretKey, sig2Data);

    String url = String.format(
        Locale.ROOT,"%s?AID=%d&AMT=%.2f&CUR=%s&REF=%s&SIG=%s&CTY=%d&CardID=%s&SIG2=%s", 
        baseUrl, AID, AMT, CUR, URLEncoder.encode(REF, "UTF-8"), SIG, CTY, CardID, SIG2);
    response.sendRedirect(url);
}catch(Exception ex){}

Parameters for card on file preauthorization are the same as for standard payment, but these additional parameters have to be added to the request:

Name Description Format Required
CTY Card transaction type
For card on file preauthorization must be set to 9
Numeric(1) Yes
CardID Card ID from notification Varchar(64) No
SIG2 Data signature calculated from concatenated values of AID, AMT, CUR, REF, CTY and CardID parameters Char(64) Yes

Recurring

API endpoints:
Test - https://playground.trustpay.eu/mapi5/Card/Pay
Live - https://ib.trustpay.eu/mapi5/Card/Pay

Recurring transactions allow repetition of card payments. For instance, this allows merchant to implement auto-recharge payments or scheduled payments.

Merchants responsibilities:

Initial payment

Initial payment example:

string baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
decimal AMT = 1.5M;
string CUR = "EUR";
string REF = "123456789";
int CTY = 3;
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}", AID, AMT, CUR, REF);
string SIG = GetSignature(secretKey, sigData);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AID={1}&AMT={2:0.00}&CUR={3}&REF={4}&SIG={5}&CTY={6}",
    baseUrl, AID, AMT, CUR, HttpUtility.UrlEncode(REF), SIG, CTY);

Response.Redirect(url);

$baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
$AID = 2107111111;
$AMT = 1.5;
$CUR = "EUR";
$REF = "123456789";
$CTY = 3;
        
$secretKey = "123456";
$sigData = sprintf("%d%s%s%s", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF);
$SIG = GetSignature($secretKey, $sigData);

$url = sprintf(
    "%s?AID=%d&AMT=%s&CUR=%s&REF=%s&SIG=%s&CTY=%d", 
    $baseUrl, $AID, number_format($AMT, 2, '.', ''), $CUR, urlencode($REF), $SIG, $CTY);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
double AMT = 1.5d;
String  CUR = "EUR";
String  REF = "123456789";
int CTY = 3;

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d%.2f%s%s", AID, AMT, CUR, REF);
    String SIG = GetSignature(secretKey, sigData);

    String url = String.format(
        Locale.ROOT,"%s?AID=%d&AMT=%.2f&CUR=%s&REF=%s&SIG=%s&CTY=%d", 
        baseUrl, AID, AMT, CUR, URLEncoder.encode(REF, "UTF-8"), SIG, CTY);
    response.sendRedirect(url);
}catch(Exception ex){}

Parameters are the same as for standard Purchase, but there is one additional parameter required:

Name Description Format Required
CTY Card transaction type
For initial recurring payment must be set to 3
Numeric(1) Yes

Subsequent payment

Subsequent payment example:

string baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
decimal AMT = 1.5M;
string CUR = "EUR";
string REF = "123456789";
int CTY = 4;
int TID = 555;
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}", AID, AMT, CUR, REF);
string sig2Data = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}{4}{5}", AID, AMT, CUR, REF, CTY, TID);
string SIG = GetSignature(secretKey, sigData);
string SIG2 = GetSignature(secretKey, sig2Data);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AID={1}&AMT={2:0.00}&CUR={3}&REF={4}&SIG={5}&CTY={6}&TID={7}&SIG2={8}",
    baseUrl, AID, AMT, CUR, HttpUtility.UrlEncode(REF), SIG, CTY, TID, SIG2);

Response.Redirect(url);

$baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
$AID = 2107111111;
$AMT = 1.5;
$CUR = "EUR";
$REF = "123456789";
$CTY = 4;
$TID = 555;
        
$secretKey = "123456";
$sigData = sprintf("%d%s%s%s", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF);
$sig2Data = sprintf("%d%s%s%s%d%d", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF, $CTY, $TID);
$SIG = GetSignature($secretKey, $sigData);
$SIG2 = GetSignature($secretKey, $sig2Data);

$url = sprintf(
    "%s?AID=%d&AMT=%s&CUR=%s&REF=%s&SIG=%s&CTY=%d&TID=%s&SIG2=%s", 
    $baseUrl, $AID, number_format($AMT, 2, '.', ''), $CUR, urlencode($REF), $SIG, $CTY, $TID, $SIG2);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
double AMT = 1.5d;
String  CUR = "EUR";
String  REF = "123456789";
int CTY = 4;
int TID = 555;

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d%.2f%s%s", AID, AMT, CUR, REF);
    String sig2Data = String.format(Locale.ROOT, "%d%.2f%s%s%d%d", AID, AMT, CUR, REF, CTY, TID);
    String SIG = GetSignature(secretKey, sigData);
    String SIG2 = GetSignature(secretKey, sig2Data);

    String url = String.format(
        Locale.ROOT,"%s?AID=%d&AMT=%.2f&CUR=%s&REF=%s&SIG=%s&CTY=%d&TID=%s&SIG2=%s", 
        baseUrl, AID, AMT, CUR, URLEncoder.encode(REF, "UTF-8"), SIG, CTY, TID, SIG2);
    response.sendRedirect(url);
}catch(Exception ex){}

Once an initial transaction was made, you can make repeated transactions. This is done by a background call using the parameters received in the notification of initial transaction.

Parameters are the same as for standard Purchase, but these additional parameters have to be added to the request:

Name Description Format Required
CTY Card transaction type
For subsequent recurring payments must be set to 4
Numeric(1) Yes
TID Transaction ID from notification Numeric(10) Yes
SIG2 Data signature calculated from concatenated values of AID, AMT, CUR, REF, CTY and TID parameters Char(64) Yes

Body of HTTP response will contain a result code, e.g.: result=3

Preauthorization

API endpoints:
Test - https://playground.trustpay.eu/mapi5/Card/Pay
Live - https://ib.trustpay.eu/mapi5/Card/Pay

This functionality allows merchant to perform preauthorization followed by a later capture. It is suitable in scenarios where reservation is required earlier than delivery of goods or services is possible.

When the merchant performs a preauthorization, the amount on the card is only reserved. This works in a similar way to standard transaction. Capture is performed later in the background by the merchant's system.

Setup

Preauthorization setup example:

string baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
decimal AMT = 1.5M;
string CUR = "EUR";
string REF = "123456789";
int CTY = 5;
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}", AID, AMT, CUR, REF);
string SIG = GetSignature(secretKey, sigData);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AID={1}&AMT={2:0.00}&CUR={3}&REF={4}&SIG={5}&CTY={6}",
    baseUrl, AID, AMT, CUR, HttpUtility.UrlEncode(REF), SIG, CTY);

Response.Redirect(url);

$baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
$AID = 2107111111;
$AMT = 1.5;
$CUR = "EUR";
$REF = "123456789";
$CTY = 5;
        
$secretKey = "123456";
$sigData = sprintf("%d%s%s%s", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF);
$SIG = GetSignature($secretKey, $sigData);

$url = sprintf(
    "%s?AID=%d&AMT=%s&CUR=%s&REF=%s&SIG=%s&CTY=%d", 
    $baseUrl, $AID, number_format($AMT, 2, '.', ''), $CUR, urlencode($REF), $SIG, $CTY);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
double AMT = 1.5d;
String  CUR = "EUR";
String  REF = "123456789";
int CTY = 5;

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d%.2f%s%s", AID, AMT, CUR, REF);
    String SIG = GetSignature(secretKey, sigData);

    String url = String.format(
        Locale.ROOT,"%s?AID=%d&AMT=%.2f&CUR=%s&REF=%s&SIG=%s&CTY=%d", 
        baseUrl, AID, AMT, CUR, URLEncoder.encode(REF, "UTF-8"), SIG, CTY);
    response.sendRedirect(url);
}catch(Exception ex){}

Parameters are the same as for standard Purchase, but there is one additional parameter required:

Name Description Format Required
CTY Card transaction type
For preauthorization of standard purchase must be set to 5
Numeric(1) Yes

Capture

Capture example:

string baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
decimal AMT = 1.5M;
string CUR = "EUR";
string REF = "123456789";
int CTY = 6;
int TID = 555;
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}", AID, AMT, CUR, REF);
string sig2Data = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}{4}{5}", AID, AMT, CUR, REF, CTY, TID);
string SIG = GetSignature(secretKey, sigData);
string SIG2 = GetSignature(secretKey, sig2Data);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AID={1}&AMT={2:0.00}&CUR={3}&REF={4}&SIG={5}&CTY={6}&TID={7}&SIG2={8}",
    baseUrl, AID, AMT, CUR, HttpUtility.UrlEncode(REF), SIG, CTY, TID, SIG2);

Response.Redirect(url);

$baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
$AID = 2107111111;
$AMT = 1.5;
$CUR = "EUR";
$REF = "123456789";
$CTY = 6;
$TID = 555;
        
$secretKey = "123456";
$sigData = sprintf("%d%s%s%s", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF);
$sig2Data = sprintf("%d%s%s%s%d%d", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF, $CTY, $TID);
$SIG = GetSignature($secretKey, $sigData);
$SIG2 = GetSignature($secretKey, $sig2Data);

$url = sprintf(
    "%s?AID=%d&AMT=%s&CUR=%s&REF=%s&SIG=%s&CTY=%d&TID=%s&SIG2=%s", 
    $baseUrl, $AID, number_format($AMT, 2, '.', ''), $CUR, urlencode($REF), $SIG, $CTY, $TID, $SIG2);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
double AMT = 1.5d;
String  CUR = "EUR";
String  REF = "123456789";
int CTY = 6;
int TID = 555;

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d%.2f%s%s", AID, AMT, CUR, REF);
    String sig2Data = String.format(Locale.ROOT, "%d%.2f%s%s%d%d", AID, AMT, CUR, REF, CTY, TID);
    String SIG = GetSignature(secretKey, sigData);
    String SIG2 = GetSignature(secretKey, sig2Data);

    String url = String.format(
        Locale.ROOT,"%s?AID=%d&AMT=%.2f&CUR=%s&REF=%s&SIG=%s&CTY=%d&TID=%s&SIG2=%s", 
        baseUrl, AID, AMT, CUR, URLEncoder.encode(REF, "UTF-8"), SIG, CTY, TID, SIG2);
    response.sendRedirect(url);
}catch(Exception ex){}

Once a transaction has been authorized, you can request a capture to complete the transaction. This is done by a background call using parameters received in the notification of the preauthorization.

Parameters are the same as for standard Purchase, but these additional parameters have to be added to the request:

Name Description Format Required
CTY Card transaction type
For capture must be set to 6
Numeric(1) Yes
TID Transaction ID from notification Numeric(10) Yes
SIG2 Data signature calculated from concatenated values of AID, AMT, CUR, REF, CTY and TID parameters Char(64) Yes

Body of HTTP response will contain a result code, e.g.: result=3

Refund

API endpoints:
Test - https://playground.trustpay.eu/mapi5/Card/Pay
Live - https://ib.trustpay.eu/mapi5/Card/Pay
Capture example:

string baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
decimal AMT = 1.5M;
string CUR = "EUR";
string REF = "123456789";
int CTY = 8;
int TID = 555;
        
string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}", AID, AMT, CUR, REF);
string sig2Data = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1:0.00}{2}{3}{4}{5}", AID, AMT, CUR, REF, CTY, TID);
string SIG = GetSignature(secretKey, sigData);
string SIG2 = GetSignature(secretKey, sig2Data);

string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AID={1}&AMT={2:0.00}&CUR={3}&REF={4}&SIG={5}&CTY={6}&TID={7}&SIG2={8}",
    baseUrl, AID, AMT, CUR, HttpUtility.UrlEncode(REF), SIG, CTY, TID, SIG2);

Response.Redirect(url);

$baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
$AID = 2107111111;
$AMT = 1.5;
$CUR = "EUR";
$REF = "123456789";
$CTY = 8;
$TID = 555;
        
$secretKey = "123456";
$sigData = sprintf("%d%s%s%s", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF);
$sig2Data = sprintf("%d%s%s%s%d%d", $AID, number_format($AMT, 2, '.', ''), $CUR, $REF, $CTY, $TID);
$SIG = GetSignature($secretKey, $sigData);
$SIG2 = GetSignature($secretKey, $sig2Data);

$url = sprintf(
    "%s?AID=%d&AMT=%s&CUR=%s&REF=%s&SIG=%s&CTY=%d&TID=%s&SIG2=%s", 
    $baseUrl, $AID, number_format($AMT, 2, '.', ''), $CUR, urlencode($REF), $SIG, $CTY, $TID, $SIG2);
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://playground.trustpay.eu/mapi5/Card/Pay";
long AID = 2107111111;
double AMT = 1.5d;
String  CUR = "EUR";
String  REF = "123456789";
int CTY = 8;
int TID = 555;

try
{
    String secretKey = "123456";
    String sigData = String.format(Locale.ROOT, "%d%.2f%s%s", AID, AMT, CUR, REF);
    String sig2Data = String.format(Locale.ROOT, "%d%.2f%s%s%d%d", AID, AMT, CUR, REF, CTY, TID);
    String SIG = GetSignature(secretKey, sigData);
    String SIG2 = GetSignature(secretKey, sig2Data);

    String url = String.format(
        Locale.ROOT,"%s?AID=%d&AMT=%.2f&CUR=%s&REF=%s&SIG=%s&CTY=%d&TID=%s&SIG2=%s", 
        baseUrl, AID, AMT, CUR, URLEncoder.encode(REF, "UTF-8"), SIG, CTY, TID, SIG2);
    response.sendRedirect(url);
}catch(Exception ex){}

This function allows refunding or cancelling a transaction that was authorized or preauthorized.

Parameters are the same as for standard Purchase, but these additional parameters have to be added to the request:

Name Description Format Required
CTY Card transaction type
For refund must be set to 8
Numeric(1) Yes
TID Transaction ID from notification Numeric(10) Yes
SIG2 Data signature calculated from concatenated values of AID, AMT, CUR, REF, CTY and TID parameters Char(64) Yes

Body of HTTP response will contain a result code, e.g.: result=0

Payment result

After paying, the customer is redirected to one of the return URLs provided by the Merchant:

The following parameters are always being sent with the redirects:

Payment result example:
https://example.handler.com/result.php?&REF=1234567890&RES=0&TID=4337417657
Name Description Format
REF Reference (merchant’s payment identification) Varchar(500)
RES Result code Numeric(4)
TID Transaction ID (sent when available, can be used for inquiries regarding failed payments) Numeric(10)

Payment notification

Payment URL notification example:
https://example.handler.com/result.php?AID=2107111111&TYP=CRDT&AMT=6.00&CUR=EUR&REF=1234567890&RES=0&TID=177561&OID=19553&TSS=Y&SIG=C4FFA5F7B57A0F5E6DD105197C8B7D7B9214509F3618CDC0F527C9B4E57F0334&CardID&CardMask=0162&CardExp=1020&AuthNumber=198159&CardRecTxSec&AcqResId=000.000.000&SIGN2=4AB3A1B90D45F7BE4D31CABC83698A2DE63DD74D7078169CD2C4249DEC9125B2
Payment E-mail notification example:
MerchantAccountID: 2107111111
Type: CRDT
Amount: 6.00
Currency: EUR
Reference: 1234567890
ResultCode: 3
TransactionID: 177561
OrderID: 0
TransactionSigned: Y
SIGN: 51541600BDED4230304D5E20DB96730181E7C34886DF00D82650C6F0C28424A2
CardID:
CardMask: 0162
CardExp: 1020
AuthNumber: 198159
CardRecTxSec:
AcqResId: 000.000.000
SIGN2: 4AB3A1B90D45F7BE4D31CABC83698A2DE63DD74D7078169CD2C4249DEC9125B2

Please first read how the instant bank transfer notifications work, because card notifications are very similar to the instant bank transfer notifications. Only the differences are described in this section.

Card notifications contain all the parameters of instant bank transfer notifications with the following parameters specific to card payments:

Name Description Format
CardID Card ID. This can be used to make card-on-file payments Varchar(64)
CardMask Masked card number or last 4 digits of the card Varchar(19)
CardExp Card expiration in MMYY format Number(4)
AuthNumber Authorization number Varchar(7)
CardRecTxSec Blank, reserved for future versions Char(1)
AcqResId Card acquirer result code Varchar(128)
SIG2 Data signature calculated from concatenated values of AID, TYP, AMT, CUR, REF, RES, TID, OID, TSS, CardID, CardMask, CardExp, AuthNumber, CardRecTxSec and AcqResId parameters Char(64)

Get transaction origin

API endpoints:
Test - https://ib.test.trustpay.eu/mapi/GetTransactionOrigin.aspx
Live - https://ib.trustpay.eu/mapi/GetTransactionOrigin.aspx

Service GetTransactionOrigin returns evidences of transaction country of origin by TransferID. Service is available only for incoming transactions.

Request

Request example:

string baseUrl = "https://ib.test.trustpay.eu/mapi/GetTransactionOrigin.aspx";
long AID = 2107111111;
long TID = 555;

string secretKey = "123456";
string sigData = string.Format(
    CultureInfo.InvariantCulture,
    "{0}{1}", AID, TID);
string SIG = GetSignature(secretKey, sigData);
              
string url = string.Format(
    CultureInfo.InvariantCulture,
    "{0}?AID={1}&TID={2}&SIG={3}",
    baseUrl, AID, TID, SIG);
              
Response.Redirect(url);

$baseUrl = "https://ib.test.trustpay.eu/mapi/GetTransactionOrigin.aspx";
$AID = 2107111111;
$TID = 555;
            
$secretKey = "123456";
$sigData = sprintf("%d%d", $AID, $TID);
$SIG = GetSignature($secretKey, $sigData);
            
$url = sprintf(
    "%s?AID=%d&TID=%d&SIG=%s", 
    $baseUrl, $AID, $TID, $SIG));
header("Location: $url");
exit();

import java.util.Locale;
import java.net.URLEncoder;

String  baseUrl = "https://ib.test.trustpay.eu/mapi/GetTransactionOrigin.aspx";
long AID = 2107111111;
long TID = 555;

String secretKey = "123456";
String sigData = String.format(Locale.ROOT, "%d%d", AID, TID);
String SIG = GetSignature(secretKey, sigData);

try
{
    String url = String.format(
        Locale.ROOT,"%s?AID=%d&TID=%d&SIG=%s", 
        baseUrl, AID, TID, SIG);
    
    response.sendRedirect(url);
}catch(Exception ex){}

curl https://ib.test.trustpay.eu/mapi/GetTransactionOrigin.aspx \
-d "AID=2107111111" \
-d "TID=555" \
-d "SIG=%PRECOMPUTED_SIGNATURE%"

<form method="GET" action="https://ib.test.trustpay.eu/mapi/GetTransactionOrigin.aspx">
    <input type="hidden" name="AID" value="2107111111" />
    <input type="hidden" name="TID" value="555" />
    <input type="hidden" name="SIG" value="%PRECOMPUTED_SIGNATURE%" />
    <input type="submit" value="get" />
</form>

Parameters for request are sent via method GET or POST.

Name Description Format Required
AID Merchant account ID (ID of account assigned by Trust Pay) Numeric(10) Yes
TID Trust Pay Transaction ID (unique ID used for any enquiries) Numeric(10) Yes
SIG Data signature calculated from concatenated values of AID and TID parameters Char(64) Yes

Response

Response example:
        
<GetTransactionOriginResponse>
	<TransferID>171215</TransferID>
	<ResultCode>0</ResultCode>
	<Items>
		<ItemOfEvidence>
			<Name>CustomerIP</Name>
			<Evidences>
				<Evidence>
					<Name>CustomerIPCountry</Name>
					<Priority>1</Priority>
					<Country>POL</Country>
				</Evidence>
			</Evidences>
		</ItemOfEvidence>
		<ItemOfEvidence>
			<Name>AccountCountries</Name>
			<Evidences>
				<Evidence>
					<Name>PayerAccountCountry</Name>
					<Priority>1</Priority>
					<Country>CZE</Country>
				</Evidence>
				<Evidence>
					<Name>PayeeAccountCountry</Name>
					<Priority>10</Priority>
					<Country>SVK</Country>
				</Evidence>
			</Evidences>
		</ItemOfEvidence>
	</Items>
	<Signature>
		DF174E635DABBFF7897A82822521DD739AE8CC2F83D65F6448DD2FF991481EA3
	</Signature>
</GetTransactionOriginResponse>
        
    

Response is XML document with structure specified below. It contains following evidences about transaction country of payment origin:

Name Description Format
TransferID ID of transaction, same as TID from request. Numeric(10)
ResultCode Result code Numeric(4)
Items Contains collection of ItemOfEvidence Response/Items
Signature Computed from whole xml without Signature tag with redundant white-spaces removed. Provided only with ResultCode 0 and 1011.

Response/Items

Name Description Format
ItemOfEvidence Item/ItemOfEvidence

Item/ItemOfEvidence

Name Description Format
Name Following values available: CustomerIP, AccountCountries Varchar
Evidences Contains collection of Evidence ItemOfEvidence/Evidences

ItemOfEvidence/Evidences

Name Description Format
Evidence Evidences/Evidence

Evidences/Evidence

Name Description Format
Name Following values available: CustomerIPCountry, PayerAccountCountry, PayeeAccountCountry Varchar
Priority Priority of evidence. The lower value - the higher priority Numeric(10)
Country Format defined in ISO3166-1Alpha-3 Char(3)

Code lists

Supported currencies

The list of currencies (according to ISO 4217) supported by TrustPay for instant bank transfers.

Code ID Name
CZK 203 Czech koruna
EUR 978 Euro

Supported countries

The list of customer countries (according to ISO 3166-1 alpha-2) supported by TrustPay for instant bank transfers.

Code Country
CZ Czech Republic
SK Slovak Republic

Supported languages

The list of languages (according to ISO 639-1) supported by TrustPay.

Code Language Supported for wire payments Supported for card payments
bgBulgarianYesNo
bsBosnianYesNo
csCzechYesYes
deGermanNoYes
enEnglishYesYes
esSpanishNoYes
etEstonianYesNo
hrCroatianYesYes
huHungarianYesYes
itItalianNoYes
ltLithuanianYesNo
lvLatvianYesNo
plPolishYesYes
roRomanianYesYes
ruRussianYesYes
skSlovakYesYes
slSloveneYesYes
srSerbianYesNo
trTurkishYesNo
ukUkrainianNoYes

Result codes

Code Name Description Returned via
0 Success Payment was successfully processed. When received in notification, funds have been credited to the merchant account - merchant can provide goods or services without delay client redirects, merchant notifications
1 Pending Payment may have been payed, but the real result is not known yet (for example client made offline payment or Trust Pay still waits for notification from bank). client redirects
2 Announced TrustPay has been notified that the client placed a payment order or has made payment, but further confirmation from 3rd party is needed. Another notification (with result code 0 - success) will be sent when TrustPay receives and processes payment from 3rd party. Funds have not been credited to the merchant account and there is no guarantee they will be. merchant notifications
3 Authorized Payment was successfully authorized. Another notification (with result code 0 - success) will be sent when TrustPay receives and processes payment from 3rd party. For card payments, funds will be credited to the merchant's account in a bulk payment on the next settlement day. Merchant can provide goods or services without delay. merchant notifications
4 Processing TrustPay has received the payment, but it must be internally processed before it is settled on the merchant's account. When the payment is successfully processed, another notification (with the result code 0 – success) will be sent. Funds will be credited to merchant's account at a later date. merchant notifications
5 AuthorizedOnly Card payment was successfully authorized, but not captured. Subsequent MAPI calls are required to capture the payment. client redirects, merchant notifications
1001 Invalid request Some of the parameters in request are missing or have invalid format client redirects
1002 Unknown account Account with specified ID was not found. Please check that you are using correct AID for playground/live environment. client redirects
1003 Merchant account disabled Merchant account has been disabled client redirects
1004 Invalid signature Verification of request signature has failed client redirects
1005 User cancel Customer has cancelled the payment client redirects
1006 Invalid authentication Request was not properly authenticated client redirects
1007 Insufficient balance Requested transaction amount is greater than disposable balance client redirects
1008 Service not allowed Service cannot be used or permission to use given service has not been granted. If you receive this code, please contact Trust Pay for more information. client redirects
1010 Transaction not found Transaction with specified ID was not found client redirects, API responses
1011 Unsupported transaction The requested action is not supported for the transaction client redirects, API responses
1100 General Error Internal error has occurred. Please contact Trust Pay to resolve this issue. client redirects, API reponses
1101 Unsupported currency conversion Currency conversion for requested currencies is not supported client redirects