Skip to main content

Sale Request

To initiate a payment within the Payment Platform, utilize the "SALE" request.

API Endpoint

Request URL:      {{API_HOST}}
Request Method: POST
Request Body: x-www-form-urlencoded
Response Body: JSON
tip
  • {{API_HOST}}
  • To send a payment to a particular sub-account (channel), you must utilize the channel_id.
  • The request should be initiated in the background (e.g. through PHP CURL).

Request Parameters

ParameterDescriptionLimitationsRequired
actionAction to perform (=SALE)= SALEY
client_keyMerchnat Key provided by TESS PaymentsY
channel_idPayment channel (Sub-account)String up to 16 charactersN
brandBrand through which the transaction is performedString up to 36 characters(Appendix B)Y
order_idTransaction ID in the Clients systemString up to 255 charactersY
order_amountThe amount of the transactionNumbers in the format XXXX.XX
Pay attention that amount format depends on currency exponent.
If exponent = 0, then amount is integer (without decimals). It used for currencies: CLP, VND, ISK, UGX, KRW, JPY.
If exponent = 3, then format: XXXX.XXX (with 3 decimals). It used for currencies: BHD, JOD, KWD, OMR, TND.
Y
order_currencyCurrency3-letter codeY
order_descriptionDescription of the transaction (product name)String (Maximum 1024 characters) [a-zA-Z0-9,]Y
payer_first_nameCustomer's nameString up to 32 charactersN
payer_last_nameCustomer's surnameString up to 32 charactersN
payer_addressCustomer's addressString up to 255 charactersN
payer_countryCustomer's country2-letter codeN
payer_stateCustomer's stateString up to 32 charactersN
payer_cityCustomer's cityString up to 32 charactersN
payer_zip ZIP-code of the CustomerString up to 32 charactersN
payer_emailCustomer's emailString up to 256 charactersN
payer_phoneCustomer's phoneString up to 32 charactersN
payer_birth_dateCustomer's birthdayDate format is "YYYY-MM-DD"N
payer_ipIP-address of the CustomerXXX.XXX.XXX.XXXY
return_urlURL to which Customer should be returned after operation in third-party systemString up to 1024 charactersY
identifierExtra parameter for transaction. It could be token, account information, additional descriptor etcString up to 255 charactersY
hashSpecial signature to validate your request to Payment PlatformSee Appendix A, Sale signature.Y

Response Parameters

ParameterDescription
actionSALE
resultREDIRECT
statusREDIRECT
order_idTransaction ID in the Merchant's system
trans_idTransaction ID in the TESS Payments' system
trans_dateTransaction date in the Payment Platform
redirect_urlURL to which the Merchant should redirect the Customer
redirect_paramsArray parameters
redirect_methodThe method of transferring parameters (POST/GET)
hashSpecial signature to validate callback. See Appendix A, Callback signature.

Examples

Sample - Sale Request
curl --location '{{API_HOST}}/post-va' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: PHPSESSID=2bmc5tj4r8uiur21fh2em9nfhf' \
--data-urlencode 'hash={{session_hash}}' \
--data-urlencode 'action=SALE' \
--data-urlencode 'client_key=xxxxx-xxxxx-xxxxx' \
--data-urlencode 'order_id=order-1234' \
--data-urlencode 'order_amount=1.00' \
--data-urlencode 'order_currency=QAR' \
--data-urlencode 'order_description=NAPS Test Order' \
--data-urlencode 'payer_ip=192.168.0.1' \
--data-urlencode 'return_url=https://example.com/return' \
--data-urlencode 'identifier=testing' \
--data-urlencode 'brand=naps'
'
Sample - Sale Response
{
"action": "SALE",
"result": "REDIRECT",
"status": "REDIRECT",
"order_id": "order-1234",
"trans_id": "47f8466c-1341-11ee-9709-be2339f163bc",
"trans_date": "2023-06-25 10:16:00",
"amount": "1.00",
"currency": "QAR",
"redirect_url": "https://checkout.tesspayments.com/interaction/47f8466c-1341-11ee-9709-be2339f163bc",
"redirect_params": {
"body": "blI4dDZUeUlib2pXK2xJNmprbU9GNndmRnZaakdVVTRaTkdxc1BHU1RJWWVXNS9BekFrL0locWhFME5YWCtUaTVqTkpLRnFxUnJ4a2FVYXNMMldFOWc4MVMvdGwzeThnL05FVkQ4ek00eUNWNDdHdExqNGNVeWt4a1RLRjFYazc1cERYZ1lpV0c3NlFCZWh2dEE0ZU82c25ZNW5saDZyUlFuNThPTHQyWGVrNUtDdjROZnNsREhSTldBdE9GNnpnZkVqdVlHb2x1VWpjbkcrbWlxR2FSczBXNW1Cakl2b0dQZHRhOERTOEIra1JyeUNUUVpZb0RsTy93OEdMeUpqOTJ4RGJncURKU3BKUERwZWU1dUcwMytwVEcxZ0VHaTl1bU5xYkdyQVRJbVJxQzdVNXd1YnA4U3FJTXhFOUpvZkhoU0RFUWJyd0hPZEdyUkhGZEpnNklGYzA2cmpDT3BjWllWQkxNRmRpQ25NUXB2aWtZVFhxanpmQXNwcVczWHRuSVVtSnBnc01mY2gvNEtvbDhhSGFIWUo4RVFpYkNDbHpPSDlXUEJQcVkwWG02TUZWUit5NlArN3JNeUJFKzNUY2gwWVM1bTN4UkNjSUZOOGJkOWp2a1JTNWVBRVFMTmdtTDNXM2pMVm1WNVVyVnlhZGk0eTBCNHJxOXdsWU5LRDRBZFhPTFM3S2xjZVBxMERRME5ualFWNVNkaWk5R3hTdXlPUHZ1bndlSGIzN2tCbXhEbDZERlBaMnNiWXlmdlliVXN2RC9rNWhGWHpYVWd0LzJ1YTZCZTYyUFFIR05RMlhuSHQyeGdqd2pHdVRUcnkwSzJoMmtobTcyczRDWlVMcXFoWTNpUjNqeGhScHlLRkFoV0Y5KzJEdWVVaFpNZ28rVXBERzdMOUt5U0hjcDFMdWEvd2tMKzdZa3BzZEFOTGpFdFNXTzBoUW5mMG91Y28wTGhTcS9oV0lRZEcxVFlIT1hXc1IrempuaEZrOVB4UUVqZEdQOVBWOGhFYzZXUzhEeVQyMUNQSVJheHJHLzU5TWtQL1dzYW5OREtLWEFMSEYwL3BaKzVudldMTlhTUWtDLzc4V3E0QUNsU0lZU1o2NXpBYjM1SVdhenlWSTlWamxldXZ1a1A3aTdKcjZUbEwvSmkxanhsR25NWXFFQVNFSFZpQXB1S2RidHRLLytDaHdPODYvMStNSDkvZDRjTHJOYmRCZGVuWjAyK1YxL2R5ZzBEdUxLUjN3bWhlWFVSZDNlQTFaVm95WUg1S3FaMXRFK0VhaUx0WHliZnY5ak1iejdCaE5lSUNzRHhKRXY5KzdVczFtTGVCSFdtQkw2eE8vSXhPWGo2Z2lPNzVWdkZ4YkFFaXpXMllIWWxPMjZtUnJyc0VhOE43R3JhZHYyMWVhUlcyUXNlVnlaSjc3MStIUUlyU3M3NitFYndBYnM0KzIyaGQ4MzFpV2RXVksrRE5mK2s0UXYza3MzekVoK0xtSElUU21ocElHVXdFZnJFajE2WlVVZzVvV0pHbldTMlVKdHRkK3B2czNsTGpoVzFNaHRjSE15RlBNbXNIMHk3aHhrOHdCWEVEVmhsOEtod1AxNk9tYW93RFNibm9DZ3YwZ2IvY3loQVZGMjNkR2JSaCtSQnVYYUZrNU92TXVrVDJHTkhJckcxUS8zNU0xd0IxZVFpcS94TGdjQWFHSXltdG1ERGJnQlVSRXFvSXhtM3RIQUZ2MWtLc09BVDVTUjNCY3NFV1U3RG5LVVpNNGZKNTFJRS9kQlhtRGRjN1U4c01xWk5WZUhmZFVISDl1R0twWVh6MENoT2FSaEl3TXo1THQ4bWNuaGpGbUJxdDJmRE1sdkJ0Nzhnc1BnbWZYVmxyRGdHZ3JHdi9XZkZOVnN1azR5TzhnWExjMm9vRlp0MVJtMXpTZnVVWWZSTE09Ojop+Cxxftfwc1Bp4oM7oRta"
},
"redirect_method": "POST"
}