The S2S Payments API allows a payment to be submitted through a single server-to-server POST request. The API returns the transaction result synchronously or provides a 3dsurl when additional customer authentication is required.
CARD, raw card data passes through your server, so the integration falls within the applicable PCI DSS scope.CARD, GOOGLEPAY, APPLEPAY.statusUrl webhook.Include all required fields in the request body when creating a payment transaction, ensuring that each field follows the specified data format and structure.
Customer’s payment method.
CARD or GOOGLEPAY or APPLEPAY (Only as given)
CARD
Customer's First Name.
A Maximum of 50 Characters allowed
Sherlock
Customer's Last Name.
A Maximum of 50 Characters allowed
Holmes
Amount of the transaction.
The format depends on the currency exponent.
100.5
Transasction ID assigned by Merchant.
Minimum length of 7 characters.
ABC123
Payment Currency
3 Letter Currency Code
USD
Customer's Phone Number
Min 7 digits - Max 18 digits - No need to enter country code.
6549873215
Customer's Address
Min 3 & Max 45 characters
221 B, Baker Street
Customer's City
Min 3 & Max 45 characters
London
Customer's State
Min 2 & Max 45 characters
State
Customer's Zip Code
Only Alpha Numeric values allowed
NW16XE
Customer's Country Code
2-letter country code
UK
IP address (IPv4 or IPv6)
192.168.1.1
URL to redirect Customer after processing
Https://abcwebsite.com
API endpoint to receive the payment status
To know either Success or Failure
Https://abcwebsite.com/returnurl
Card primary account number (PAN).
All non-numeric characters will be ignored.
Minimum length of 14 to 19 characters.
4000000000000002
Card Expiry Month - 2 Digits only
08
Card Expiry Year - last 2 Digits of the year value only
29
CVV Code - 3 Digits or 4 (for AMEX)
123
Each payment method has its own request body. Card requests carry the four card fields; Google Pay and Apple Pay requests leave them out.
CARD
{
"paymentMethod": "CARD",
"firstName": "John",
"lastName": "Doe",
"amount": "10.00",
"invoiceNumber": "1234567",
"cardNumber": "4000000000000002",
"expMonth": "12",
"expYear": "2028",
"cvv": "123",
"email": "[email protected]",
"currency": "USD",
"phone": "9089090989",
"city": "Miami",
"state": "Florida",
"address": "New Street",
"country": "US",
"zip": "234567",
"ip": "127.0.0.1",
"returnUrl": "https://your-site.com/return",
"statusUrl": "https://your-site.com/webhook"
}
GOOGLEPAY
{
"paymentMethod": "GOOGLEPAY",
"firstName": "John",
"lastName": "Doe",
"amount": "10.00",
"invoiceNumber": "1234567",
"email": "[email protected]",
"currency": "USD",
"phone": "9089090989",
"city": "Miami",
"state": "Florida",
"address": "New Street",
"country": "US",
"zip": "234567",
"ip": "127.0.0.1",
"returnUrl": "https://your-site.com/return",
"statusUrl": "https://your-site.com/webhook"
}
APPLEPAY
{
"paymentMethod": "APPLEPAY",
"firstName": "John",
"lastName": "Doe",
"amount": "10.00",
"invoiceNumber": "1234567",
"email": "[email protected]",
"currency": "USD",
"phone": "9089090989",
"city": "Miami",
"state": "Florida",
"address": "New Street",
"country": "US",
"zip": "234567",
"ip": "127.0.0.1",
"returnUrl": "https://your-site.com/return",
"statusUrl": "https://your-site.com/webhook"
}
Below are sample JSON responses returned by the payment API for different transaction outcomes.
{
"status": 200,
"timestamp": "2026-01-10T05:42:10Z",
"result": {
"action": "SALE",
"state": "REDIRECT",
"message": "3D Secure authentication required",
"transaction": {
"invoiceNumber": "INV-456789",
"transactionId": "TXN-9988776655",
"descriptor": "ONLINE STORE PAYMENT"
},
"business": "Demo Merchant",
"channel": "Primary MID",
"paymentFlow": "3DS",
"amount": {
"value": "62.00",
"currency": "USD"
},
"paymentMethod": {
"type": "CARD",
"brand": "VISA"
},
"card": {
"cardNumber": "400000******0002",
"expMonth": "05",
"expYear": "28",
"issuerCountry": "US",
"issuerBank": "Chase Bank",
"cardBrand": "VISA"
},
"authentication": {
"type": "3DS",
"status": "REQUIRED"
},
"redirect": {
"url": "https://secure-acs.example.com/3ds/authenticate",
"method": "GET"
}
}
}
{
"status": 200,
"timestamp": "2026-01-10T05:30:15Z",
"result": {
"action": "SALE",
"state": "SUCCESS",
"message": "Transaction completed successfully",
"transaction": {
"invoiceNumber": "INV-123456",
"transactionId": "TXN-987654321",
"descriptor": "MERCHANT DESCRIPTOR"
},
"transactionDate": "2026-01-10 10:59:00",
"business": "Demo Merchant",
"channel": "Primary MID",
"paymentFlow": "3DS",
"amount": {
"value": "62.00",
"currency": "USD"
},
"paymentMethod": {
"type": "CARD",
"brand": "VISA"
},
"card": {
"cardNumber": "400000******0002",
"expMonth": "05",
"expYear": "28",
"issuerCountry": "US",
"issuerBank": "Chase Bank",
"cardBrand": "VISA"
}
}
}
{
"status": 200,
"timestamp": "2026-01-10T05:35:42Z",
"result": {
"action": "SALE",
"state": "DECLINED",
"message": "Transaction Declined",
"transaction": {
"invoiceNumber": "INV-789456",
"transactionId": "TXN-1122334455"
},
"orderDate": "2026-01-10 11:02:18",
"business": "Demo Merchant",
"channel": "Primary MID",
"paymentFlow": "3DS",
"amount": {
"value": "62.00",
"currency": "USD"
},
"paymentMethod": {
"type": "CARD",
"brand": "VISA"
},
"card": {
"cardNumber": "400000******0002",
"expMonth": "05",
"expYear": "28",
"issuerCountry": "US",
"issuerBank": "Chase Bank",
"cardBrand": "VISA"
},
"decline": {
"reason": "Insufficient funds"
}
}
}
{
"status": 401,
"message": "Unauthorized access"
}