Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 110 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

SensePass Docs

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Other Flows

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

E-commerce

SensePass currently supports 10 e-commerce systems and we continue to add more integrations to our network.

  • WooCommerce

  • Gravity Forms

  • JotForm

  • Zapier

  • PrestaShop

  • Oracle Netsuite SuiteCommerce

  • Shopify

  • BigCommerce

  • PayTech Trust

  • Magento

Payment Flows

Transaction API

SensePass Transaction API allows developers to create payment requests and proccess payments using SensePass network.

SensePass API organized around REST, accepts JSON request body and JSON response.

Payment Methods

SensePass network supports multiple payment methods, including credit cards, Venmo, PayPal, Alipay, Klarna, WeChat Pay, Trustly, Coinbase, BitPay.

Testing

SensePass provides a fully functioning sandbox environment for development and testing, payments in the sandbox enviorement doesn't affect your live data or proccess money.

Environments

API URL: https://api.sensepass.com/api/

Socket.IO URL: https://api.sensepass.com

API URL: https://api.sandbox.sensepass.com/api/

Socket.IO URL: https://api.sandbox.sensepass.com

Authentication

Multiple authentication options are available, based on your use case:

POS

Authentication fields: deviceId

Only one field is required for authentication - deviceId, this field represents the unique identifier of the POS in SensePass network.

Device ID can be generated using the "match" API (Pairing) or using SensePass Partner platform.

E-Commerce

Authentication fields: merchant apiKey Or Location apiKey

apiKey can be associated to a merchant or to a location in specific merchant.

Merchant API key requires branchId field to be provided, Location API key does not requires branchId field.

Payment Methods

Accept any payment app, any wallet, any card any way your customer wants.

SensePass supports currently 105 payment methods with a single API interface for all of them, we continue to add payment methods to our network.

Credit Cards (25)

  • Cardknox

  • NMI

  • TSYS

  • Shift4

  • Authorize.net

  • Elavon

  • Clover

  • Moneris

  • Chase

  • Nuvei

  • DLocal

  • Adyen

  • Coastal Pay

  • Stripe

  • Square

  • Shopify Payments

  • Linkly

  • Westpac

  • First Data

  • Global Payments

  • Heartland Payment

  • Worldpay

  • North American Bancard

  • Electronic Payment Exchange (EPX)

  • Braintree

Wallets (9)

  • Apple Pay

  • Google Payâ„¢

  • PayPal

  • Venmo

  • Amazon Pay

  • Samsung Pay

  • AliPay

  • WeChat Pay

  • Kakao Pay

Buy Now Pay Later - BNPL (10)

  • Klarna

  • SplitIt

  • Sezzle

  • ChargeAfter

  • AfterPay

  • Zip

  • Affirm

  • WeGetFinancing

  • Jifiti

  • Skeps

Bank Payments (4)

  • Trustly

  • ACH

  • EFT

  • Link Money

LATAM, Asia, Africa (54)

  • Mobile Money

  • PIX

  • Boleto

  • Abitab

  • PSE

  • OXXO

  • MercadoPago

  • SPEI

  • Pago Efectevio

  • Infonet

  • Pago al Paso

  • Pago Efectivo

  • Pay Cash

  • Pay Valida

  • Yape

  • au PAY

  • Dana

  • dBarai

  • DragaonPay

  • DuitNow

  • Kobini

  • LINE Pay

  • Lpay

  • Merpay

  • Momo wallet

  • Naver Pay

  • NPP

  • Payco

  • PayPay

  • PromptPay

  • QRIS

  • Rakuten Pay

  • SSGPAY

  • TOSS Payments

  • Touch 'n Go

  • TrueMoney

  • UPI

  • ZaloPay

  • CLAVE

  • CoDi

  • Daviplata

  • Efecty

  • Nequi

  • Pay4Fun

  • Sencillito

  • WebPay

  • Rapipago

  • Cobro Express

  • Pago Facil

  • PicPay

  • NuPay

  • Sencillito

  • Khipu

  • Servipag

  • Sinpe

  • Sinpe Movil

  • PuntoXpress

  • Akisi

  • Practipago

  • Wepa

  • Zimple

  • Sigo Money

  • Billetera Personal

  • Wally

  • Giros Claro

  • BCP

  • Payvalida

  • Redpagos

Crypto (3)

  • Coinbase

  • BitPay

  • PalWallet

API for Fetching Payment Providers

GET /transactions/paymentProviders/list

Request Body

Name
Type
Description

deviceId

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

apiKey

string

Merchant ID provided by SensePass (For Web based Transactions) - Required if deviceId is empty

[
  {
    "name": "PayPal",
    "description": "Paypal Production",
    "type": "wallet",
    "confirmationPrefix": "145",
    "isPartialRefundSupported": true,
    "environment": "Production",
    "providerId": "FLTBxa5D/z/gmjdNeTm0IXNVOOaiyhQBqRrIaTs1kcI="
  }
]
{
    // Response
}

API for Fetching Payment Methods by method type

GET /transactions/paymentProviders/payment-methods

Request Body

Name
Type
Description

deviceId

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

apiKey

string

Merchant ID provided by SensePass (For Web based Transactions) - Required if deviceId is empty

methodType

string

Transaction Type: 0. 'payment' = Regular Payment 1. 'tokenize' = Tokenization 2. 'authorize' = Authorization 3. 'credit' = Credit transaction

{
	"paymentMethods": [
		{
		  "id": 3,
		  "name": "credit-card",
		  "type": "credit-card"
		},
		{
		  "id": 4,
		  "name": "paypal",
		  "type": "wallet"
		},		
	]
}
{
    // Response
}

Google Pay is a trademark of Google LLC.

Overview

SensePass Transaction API allows developers to create payment requests and process payments using SensePass network.

SensePass API organized around REST, accepts JSON request body and JSON response.

Payment Methods

SensePass network supports multiple payment methods, including credit cards, Venmo, PayPal, Alipay, Klarna, WeChat Pay, Trustly, Coinbase, BitPay.

Testing

SensePass provides a fully functioning sandbox environment for development and testing, payments in the sandbox enviorement doesn't affect your live data or proccess money.

Environments

API URL: https://api.sensepass.com/api/

Socket.IO URL: https://api.sensepass.com

API URL: https://api.sandbox.sensepass.com/api/

Socket.IO URL: https://api.sandbox.sensepass.com

Authentication

Multiple authentication options are available, based on your use case:

POS

Authentication fields: deviceId

Only one field is required for authentication - deviceId, this field represents the unique identifier of the POS in SensePass network.

Device ID can be generated using the "match" API (Pairing) or using SensePass Partner platform.

E-Commerce

Authentication fields: merchant apiKey Or Location apiKey

apiKey can be associated to a merchant or to a location in specific merchant.

Merchant API key requires branchId field to be provided, Location API key does not requires branchId field.

Idempotency

The optional header field idempotency-key can be used to uniquely identify a request to prevent duplicate operations.

When provided, the API uses this key to detect if an identical request has already been processed, ensuring that the operation is executed only once even if the client sends multiple identical requests.

This key is supported across all of our API's.

Integrations

Our API also supports .

All merchants must adhere to the Google Pay APIs and accept the terms defined in the .

Our API also supports .

SOAP and XML
See our full payment methods list here
Acceptable Use Policy
Google Pay API Terms of Service

Examples for POS (In-Store)

SOAP and XML
See our full payment methods list here
POS Integrations
E-Commerce Integrations

Payment request with products

Simple request example to create new transaction and products information.

Adding products to request body allows the consumer to view before and after the payment the full product information including product names, quantity, pricing per products, sub products and tax.

URL: /transactions/init

Request body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "products": [
    {
      "name": "Shirt",
      "quantity": 1,
      "amount": 190,
      "discount": 0,
      "vat": 0
    },
    {
      "name": "Service Fee",
      "quantity": 1,
      "amount": 10,
      "discount": 0,
      "vat": 0
    }
  ]
}

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

deviceId

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

products

object

Products information

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

Payment request with POS Data

Simple request example to create new transaction with POS data.

POS data is key-value data that can be sent in the request body to store custom information about the transaction, for example - order id, consumer name.

This information will not be visible to the consumer and this data will be available to the POS on any transaction event - Socket.IO messages, callback, transaction status API.

URL: /transactions/init

Request Body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "posData": {
    "customerName": "John",
    "hello": [
      "world"
    ]
  },
}

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

deviceId

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

posData

object

Any data (object/array/string/number etc...) to be received in the callback url or transaction's responses

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

Create a transaction

API Interface

Creating a new transaction object (Payment Request)

POST https://api.sensepass.com/api/transactions/init

This API creates new payment request based on the fields below.

Authentication Request Body fields

Request Body

Name
Required
Type
Description

methodType

string

Transaction Type: 0. 'payment' = Regular Payment 1. 'tokenize' = Tokenization 2. 'authorize' = Authorization 3. 'credit' = Credit transaction (Refund transaction without a reference to original payment transaction)

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

maxInstallments

number

Installments Limit for this transaction - Valid only for credit card payment

returnURL

string

URL to redirect consumer after Success or Error (For E-Commerce Transactions)

cancelURL

string

URL to redirect consumer on cancel event from consumer (For E-Commerce Transactions)

callbackURL

string

URL to Callback/webhooks API - SensePass will call this API with full Transaction Entity for every status change about this transaction

posData

object

Any data (object/array/string/number etc...) to be received in the callback url or transaction's responses

clientPhoneNumber

string

SMS message will be sent to this consumer number for SMS payment

clientEmail

string

email message will be sent to this consumer email for remote payment

clientName

string

consumer name for the payment

reason

string

The reason for this payment - This field will be presented to the consumer

invoice

object

Used to present invoice for the consumer before the payment

receipt

object

Used for present receipt for the consumer after the payment

emailConfig.paymentRequest.language

string

[ en, he, ru ]

receiptNotifications

object

Receipt Notifications

products

object

Products information

metadata

object

billingAddress

object

shippingAddress

object

paymentDetails

object

Payment details Input

hideAmount

boolean

Determines whether the transaction amount is displayed on the payment page or not

additionalData

object

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "consumerPage": {
            "regular": "https://pay.sandbox.sensepass.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
            "medium": "https://pay.sandbox.sensepass.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872?viewMode=medium"
        }
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

Examples

Basic request example to create a new transaction.

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm"
}

See our full examples for creating transactions on the left menu.

Schema

Flow Chart

Transaction Status Flow

Payment request with callback

Simple request example to create new transaction with callback URL data.

Adding callback URL to request body enables you to get POST request from SensePass on any transaction update events.

In event of communication error from SensePass to your server - SensePass will retry multiple times to call your server will the callback URL over a period of days.

Make sure the URL provided in "callbackURL" is fully accessible from the internet and does not contain local IP or private DNS.

SensePass IP's are dynamic - Limiting your endpoint to specific IP address is not possible.

URL: /transactions/init

Request Body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "callbackURL": "https://google.com/callback/api/callback"
}

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

deviceId

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

callbackURL

string

URL to your POST endpoint

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

Security - HMAC Signature

HMAC (Hash-based Message Authentication Code) signature authentication for callbacks is a security mechanism used to ensure the integrity and authenticity of a message between two systems.

This authentication logic will enables you to verify that the callback API call was originated by SensePass.

HMAC Verification steps:

  1. Extract "HMAC-Random-Key" header from the callback API request

  2. Concat the header from #1 to the request body

  3. Perform HMAC 256 calculation with the concatenated string and using your secret HMAC key

  4. Compare the result from #3 against the value of the request header "HMAC-Authorization"

Callbacks with GET method

By default all the callbacks are sent with JSON body and POST method, it is possible to choose GET method callback without request body.

Callback with GET method will be sent with TransactionNumber as query param.

URL: /transactions/init

Request Body for GET callbacks:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "callbackURL": "https://google.com/callback/api/callback",
  "callbackMethod": "GET"
}

This API call will be sent to this URL:

https://google.com/callback/api/callback?TransactionNumber=573942fsdqe90342k304242&callbackType=transaction_status

Basic Payment Request

Basic request example to create a new transaction.

URL: /transactions/init

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm"
}

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

deviceId*

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

SMS Payment Request

SMS Payment Request enables you to send payment request to a consumer remotely, without asking the consumer any confidential information like credit card number.

The SMS message will be sent from SensePass servers, all of the countries globally are supported.

URL: /transactions/init

Request Body:

{
  "timeOut": 600,
  "amount": 5500,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "clientPhoneNumber": "+155555551234"
}

Customizing message format

Full customization of the SMS message including variables can be done using "customSmsText" field in the "/transactions/init" API.

Request Body:

{
  "timeOut": 600,
  "amount": 5500,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "clientPhoneNumber": "+155555551234",
  "customSmsText": "%%businessName%% asks you for %%amount%%"
}

Available variables:

  1. businessName: Merchant name

  2. locationName: Location name

  3. amount: Transaction amount including currency

  4. link: Full URL to payment request page

  5. reason: Reason field of the transaction

  6. expiration: Transaction expiration date formatted

Using variables:

Add %% before and after the name of the variable.

Examples:

  1. %%businessName%% asks you to pay

  2. Hi, you got payment request from %%businessName%%, %%locationName%% of %%amount%% - %%reason%%. Please click here to pay: %%link%%

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

deviceId

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

clientPhoneNumber

string

SMS message will be sent to this consumer number for SMS payment

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

Payment request with receipt generated by the POS

Adding receipt to your payment request alllows your customers to view the full payment receipt on their mobile device immediately after the payment approved, and on their SensePass account.

Creating a Payment Request

URL: /transactions/init

Request Body:

Response body:

See "posReceiptsEndpoint" field in the response body, the value of the field represents the unique endpoint created for saving the receipt created by the POS.

Save this value in the POS for a case of "Approved" status event.

Transaction Approved Status Event

Register to Socket.IO channel or use callback URL to get notifications about transaction status changes.

Once the transaction status changes to status "Approved" (5) you will get "confirmations" object in the Transaction model:

Save all "confirmationNumber" objects, and create receipt in your POS.

More than one "confirmations" object can be available in cases of split payment, refund and partial refund

Sending the receipt from the POS to SensePass

Once the receipt is ready in your POS, invoke API request to the endpoint from "posReceiptsEndpoint" (see the previous section).

Option 1 - Send Receipt file

Example URL (based on "posReceiptsEndpoint"): https://api.sandbox.sensepass.com/api/invoicesReceipts/receipt/save/0128c664-1a2a-422c-91d0-85a8af229ed4

Request Body as form-data:

"associateToConfirmationNumbers" is an array of "confirmationNumber" for the previous sections, this is the relation between the receipt to the payments of the consumer.

Response body:

Option 2 - Send Receipt URL

It is required to host the receipt on a publicly accessible server and send SensePass the full URL of the file, SensePass will not expose to the consumers the URL, instead our servers will download the receipt from your server and host it securely.

Example URL (based on "posReceiptsEndpoint"): https://api.sandbox.sensepass.com/api/invoicesReceipts/receipt/save/0128c664-1a2a-422c-91d0-85a8af229ed4

Request Body:

"associateToConfirmationNumbers" is an array of "confirmationNumber" for the previous sections, this is the relation between the receipt to the payments of the consumer.

Response body:

Option 3 - Send Receipt as HTML

Example URL (based on "posReceiptsEndpoint"): https://api.sandbox.sensepass.com/api/invoicesReceipts/receipt/save/0128c664-1a2a-422c-91d0-85a8af229ed4

Request Body:

"associateToConfirmationNumbers" is an array of "confirmationNumber" for the previous sections, this is the relation between the receipt to the payments of the consumer.

Response body:

Email Payment Request

Email Payment Request enables you to send payment request to a consumer remotely, without asking the consumer any confidential information like credit card number.

The Email will be sent from SensePass servers from this address: no-reply@sensepass.com

Multiple languages are available, see "emailConfig" field below.

URL: /transactions/init

Request Body:

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

In addition, the products information will be visible in the .

See product object entity:

See Transactions entity schema:

See Transactions entity schema:

API for creating new payment requests, this API create .

For delivery status - See "SMS" field in

See invoice object entity:

See receipt object entity:

entity:

See product object entity:

a unique array with a key-value pair for displaying information on SensePass Dashboard (backoffice)

Customer's billing address entity:

Customer's shipping address entity:

entity:

Any additional data that may be sent to the processor

See Transactions entity schema:

Full Transaction Entity schema:

It is required to implement a POST endpoint on your server based on the same interface as

Interface:

See Transactions entity schema:

See Transactions entity schema:

For delivery status - See "SMS" field in

For delivery status - See "SMS" field in

See Transactions entity schema:

Receipt full documentation:

Field
Value
Name
Type
Description

See Transactions entity schema:

merchant back office
Transaction Entity
See here our Authentication page
See our payment flow chart here
See our transaction status flow here
{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "receipt": {
    "mode": 2
  },
  "receiptNotifications": {
    "email": [
      "a@example.com"
    ],
    "sms": [
      "9295522135"
    ]
  }
}
{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "amount": "2",
    "currency": "USD",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
        "messsage": "Payment commit is enabled for this transaction"
    },
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "branchNumber": "1",
    "branchId": "1",
    "receiptPending": true,
    "posReceiptsEndpoint": "https://api.sandbox.sensepass.com/api/invoicesReceipts/receipt/save/0128c664-1a2a-422c-91d0-85a8af229ed4",
    "transactionPage": {
        "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233"
    }
}
{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "amount": "2",
    "currency": "USD",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
        "messsage": "Payment commit is enabled for this transaction"
    },
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "branchNumber": "1",
    "branchId": "1",
    "receiptPending": true,
    "posReceiptsEndpoint": "https://api.sandbox.sensepass.com/api/invoicesReceipts/receipt/save/0128c664-1a2a-422c-91d0-85a8af229ed4",
    "transactionPage": {
        "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233"
    },
    "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ]
}

receipt-file

Your File Here - PDF or Image

jsonStr

{
  "type": "pdf",
  "receiptIdentifier": "43242342324",
  "associateToConfirmationNumbers": [
    "012-34567891",
    "012-34567892"
  ]
}
{
  "success": true,
  "message": "Saved"
}
{
  "url": "http://someDomain.com/receipt1.pdf",
  "type": "pdf",
  "receiptIdentifier": "43242342324",
  "associateToConfirmationNumbers": [
    "012-34567891",
    "012-34567892"
  ]
}
{
  "success": true,
  "message": "Saved"
}
{
  "base64data": "PGh0bWw+",
  "type": "html",
  "receiptIdentifier": "43242342324",
  "associateToConfirmationNumbers": [
    "012-34567891",
    "012-34567892"
  ]
}
{
  "success": true,
  "message": "Saved"
}
{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "clientEmail": "consumer@gmail.com",
  "emailConfig": {
    "paymentRequest": {
        "language": "en"
    }
}

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

deviceId

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

clientEmail

string

email message will be sent to this consumer email for remote payment

emailConfig.paymentRequest.language

string

[ en, he, ru ]

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}
Metadata Model
Additional Data Model
Receipts Model

Payment request with receipt generated by SensePass

Adding receipt to your payment request alllows your customers to view the full payment receipt on their mobile device immediately after the payment approved, and on their SensePass account.

Receipt full documentation: Receipts Model

URL: /transactions/init

Request Body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "receipt": {
    "mode": 1,
    "accountingProvider": 4,
    "receiptInfo": {
      "customerId": "123456789",
      "firstName": "John",
      "lastName": "Doe",
      "address": "Begin Dw 12",
      "city": "Tel Aviv",
      "zipCode": "90745",
      "socialID": "123456789",
      "phoneNumber": "5551112232",
      "languageCode": "en",
      "currencyCode": "USD",
      "email": "john@doe.com",
      "discount": 0,
      "vat": true
    }
  },
  "receiptNotifications": {
    "email": [
      "a@example.com"
    ],
    "sms": [
      "9295522135"
    ]
  }
}

Examples for e-commerce

Payment request with receipt generated by SensePass

Adding receipt to your payment request alllows your customers to view the full payment receipt on their mobile device immediately after the payment approved, and on their SensePass account.

Receipt full documentation: Receipts Model

Request Body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm",
  "returnURL": "https://merchantDomain.com/thankYouPage",
  "cancelURL": "https://merchantDomain.com/cart",
  "callbackURL": "https://merchantDomain.com/sensepass/callbackEndPoint",
  "receipt": {
    "mode": 1,
    "accountingProvider": 4,
    "receiptInfo": {
      "customerId": "123456789",
      "firstName": "John",
      "lastName": "Doe",
      "address": "Begin Dw 12",
      "city": "Tel Aviv",
      "zipCode": "90745",
      "socialID": "123456789",
      "phoneNumber": "5551112232",
      "languageCode": "en",
      "currencyCode": "USD",
      "email": "john@doe.com",
      "discount": 0,
      "vat": true
    }
  },
  "receiptNotifications": {
    "email": [
      "a@example.com"
    ],
    "sms": [
      "9295522135"
    ]
  }
}

Payment request with receipt generated by the e-commerce platform

Adding receipt to your payment request alllows your customers to view the full payment receipt on their device immediately after the payment approved, and on their SensePass account.

Receipt full documentation: Receipts Model

Creating Payment Request

Request Body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm",
  "returnURL": "https://merchantDomain.com/thankYouPage",
  "cancelURL": "https://merchantDomain.com/cart",
  "callbackURL": "https://merchantDomain.com/sensepass/callbackEndPoint",
  "receipt": {
    "mode": 2
  },
  "receiptNotifications": {
    "email": [
      "a@example.com"
    ],
    "sms": [
      "9295522135"
    ]
  }
}

Response body:

{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "amount": "2",
    "currency": "USD",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
        "messsage": "Payment commit is enabled for this transaction"
    },
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "branchNumber": "1",
    "branchId": "1",
    "receiptPending": true,
    "posReceiptsEndpoint": "https://api.sandbox.sensepass.com/api/invoicesReceipts/receipt/save/0128c664-1a2a-422c-91d0-85a8af229ed4",
    "transactionPage": {
        "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233"
    }
}

See "posReceiptsEndpoint" field in the response body, the value of the field represents the unique endpoint created for saving the receipt created by the e-commerce platform.

Save this value in your website platform for a case of "Approved" status event.

Transaction Approved Status Event

Register to Socket.IO channel or use callback URL to get notifications about transaction status changes.

Once the transaction status changes to status "Approved" (5) you will get "confirmations" object in the Transaction model:

{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "amount": "2",
    "currency": "USD",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
        "messsage": "Payment commit is enabled for this transaction"
    },
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "branchNumber": "1",
    "branchId": "1",
    "receiptPending": true,
    "posReceiptsEndpoint": "https://api.sandbox.sensepass.com/api/invoicesReceipts/receipt/save/0128c664-1a2a-422c-91d0-85a8af229ed4",
    "transactionPage": {
        "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233"
    },
    "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ]
}

Save all "confirmationNumber" objects, and create receipt in your website platform.

More than one "confirmations" object can be available in cases of split payment, refund and partial refund

Sending the receipt from the e-commerce platform to SensePass

Once the receipt is ready in your platform, invoke API request to the url from "posReceiptsEndpoint" (see the previous section).

It is required to host the receipt on a publicy accessible server and send SensePass the full URL of the file, SensePass will not expose to the consumers the URL, instead our servers will download the receipt from your server and host it securely.

Request Body:

{
  "url": "http://someDomain.com/receipt1.pdf",
  "type": "pdf",
  "receiptIdentifier": "43242342324",
  "associateToConfirmationNumbers": [
    "012-34567891",
    "012-34567892"
  ]
}

"associateToConfirmationNumbers" is an array of "confirmationNumber" for the previous sections, this is the relation between the receipt to the payments of the consumer.

Response body:

{
  "success": true,
  "message": "Saved"
}
Receipt Notifications
Customer Billing Details Model
Customer Shipping Details Model
Payment Details Model

Payment request with invoice

Adding invoice to your payment request alllows your customers to view the full payment information before processing the payment.

Supported invoice file formats: PDF, JPEG, PNG.

It is required to host the invoice on a publicy accessible server and send SensePass the full URL of the file, SensePass will not expose to the consumers the URL, instead our servers will download the invoice from your server and host it securely.

URL: /transactions/init

Request Body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "invoice": {
      "type": "pdf",
      "url": "http://someDomain.com/invoice1.pdf"
  }
}

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

deviceId

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

invoice

object

Used to present invoice for the consumer before the payment

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

iFrame Example

Basic request example to create a new transaction and present it on iFrame.

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm",
  "returnURL": "https://merchantDomain.com/thankYouPage",
  "cancelURL": "https://merchantDomain.com/cart",
  "callbackURL": "https://merchantDomain.com/sensepass/callbackEndPoint",
  "products": [
    {
      "name": "Shirt",
      "quantity": 1,
      "amount": 190,
      "discount": 0,
      "vat": 0
    },
    {
      "name": "Service Fee",
      "quantity": 1,
      "amount": 10,
      "discount": 0,
      "vat": 0
    }
  ],
  "posData": {
    "customerName": "John",
    "orderId": "6759082413",
  }
}

Response body:

{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "amount": "2",
    "currency": "USD",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
        "messsage": "Payment commit is enabled for this transaction"
    },
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "branchNumber": "1",
    "branchId": "1",
    "transactionPage": {
        "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "consumerPage": {
            "regular": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
            "medium": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233?viewMode=medium",
            "small": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233?viewMode=small"
        }
    },
    "paymentDetails": {
        "type": "Tokenize"
    }
}

Displaying the iFrame to the consumer - Multiple Sizes

See the URL of the iFrame in transactionPage.consumerPage.

You can choose to display the cosumer two different sizes:

1. Regular display (transactionPage.consumerPage.regular) for full size view, see example:

2. Medium display (transactionPage.consumerPage.medium) for medium view without the QR, see example:

3. Small display (transactionPage.consumerPage.small) for smaller view without the QR and without the header, see example:

Notifications about transaction changes

There are multiple options to get notifications about the transaction status changes:

  1. Callback

  2. Web sockets (Socket.IO)

  3. Post message event on the client side

Callback

Adding callback URL using "callbackURL" field to request body enables you to get POST request from SensePass on any transaction update events.

WebSockets

Implement Socket.IO client on your platform and listen to this URL:

Production - https://api.sensepass.com?id=tr_<TransactionNumber-From-Response-Body>

Sandbox - https://api.sandbox.sensepass.com?id=tr_<TransactionNumber-From-Response-Body>

Listen to "message" event to get notifcations about the transaction.

Post Message

Post messsge events are sent to client side using the browser API.

Code example:

const childWindow = document.getElementById('sensepass-iframe').contentWindow;
window.addEventListener('message', message => {
    // Handle message
});

Transaction Events Interface

All of the notifications are conforms to Transaction Entity interface.

Notification Example:

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": 1234.56,
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}

Payment request with products

Simple request example to create new transaction and products information.

Adding products to request body allows the consumer to view before and after the payment the full product information including product names, quantity, pricing per products, sub products and tax.

Request body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm",
  "returnURL": "https://merchantDomain.com/thankYouPage",
  "cancelURL": "https://merchantDomain.com/cart",
  "callbackURL": "https://merchantDomain.com/sensepass/callbackEndPoint",  
  "products": [
    {
      "name": "Shirt",
      "quantity": 1,
      "amount": 190,
      "discount": 0,
      "vat": 0
    },
    {
      "name": "Service Fee",
      "quantity": 1,
      "amount": 10,
      "discount": 0,
      "vat": 0
    }
  ]
}

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

apiKey*

string

Unique API provided by SensePass, unique for each location of your merchant

products

object

Products information

returnURL

string

URL to redirect consumer after Success or Error

callbackURL

string

URL to Callback API - SensePass will call this API with full Transaction Entity for every status change about this transaction

cancelURL

string

URL to redirect consumer on cancel event from consumer

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

Email Payment Request

Email Payment Request enables you to send payment request to a consumer remotely, without asking the consumer any confidential information like credit card number.

The Email will be sent from SensePass servers from this address: no-reply@sensepass.com

Multiple languages are available, see "emailConfig" field below.

Request Body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm",
  "returnURL": "https://merchantDomain.com/thankYouPage",
  "cancelURL": "https://merchantDomain.com/cart",
  "callbackURL": "https://merchantDomain.com/sensepass/callbackEndPoint",
  "clientEmail": "consumer@gmail.com",
  "emailConfig": {
    "paymentRequest": {
        "language": "en"
    }
}

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

apiKey*

string

Unique API provided by SensePass, unique for each location of your merchant

clientEmail

string

email message will be sent to this consumer email for remote payment

emailConfig.paymentRequest.language

string

[ en, he, ru ]

cancelURL

string

URL to redirect consumer on cancel event from consumer

returnURL

string

URL to redirect consumer after Success or Error

callbackURL

string

URL to Callback API - SensePass will call this API with full Transaction Entity for every status change about this transaction

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

Payment request with website custom data

Simple request example to create new transaction with website custom data.

The data is key-value pairs that can be sent in the request body to store custom information about the transaction, for example - order id, consumer name.

This information will not be visible to the consumer and this data will be available to the e-commerce platform on any transaction event - Socket.IO messages, callback, transaction status API.

Request Body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm",
  "returnURL": "https://merchantDomain.com/thankYouPage",
  "cancelURL": "https://merchantDomain.com/cart",
  "callbackURL": "https://merchantDomain.com/sensepass/callbackEndPoint",
  "posData": {
    "customerName": "John",
    "hello": [
      "world"
    ]
  },
}

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

apiKey*

string

Unique API provided by SensePass, unique for each location of your merchant

posData

object

Any data (object/array/string/number etc...) to be received in the callback url or transaction's responses

returnURL

string

URL to redirect consumer after Success or Error

cancelURL

string

URL to redirect consumer on cancel event from consumer

callbackURL

string

URL to Callback API - SensePass will call this API with full Transaction Entity for every status change about this transaction

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

Payment request with invoice

Adding invoice to your payment request alllows your customers to view the full payment information before processing the payment.

Supported invoice file formats: PDF, JPEG, PNG.

It is required to host the invoice on a publicy accessible server and send SensePass the full URL of the file, SensePass will not expose to the consumers the URL, instead our servers will download the invoice from your server and host it securely.

Request Body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm",
  "returnURL": "https://merchantDomain.com/thankYouPage",
  "cancelURL": "https://merchantDomain.com/cart",
  "callbackURL": "https://merchantDomain.com/sensepass/callbackEndPoint",
  "invoice": {
      "type": "pdf",
      "url": "http://someDomain.com/invoice1.pdf"
  }
}

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

apiKey*

string

Unique API provided by SensePass, unique for each location of your merchant

invoice

object

Used to present invoice for the consumer before the payment

cancelURL

string

URL to redirect consumer on cancel event from consumer

returnURL

string

URL to redirect consumer after Success or Error

callbackURL

string

URL to Callback API - SensePass will call this API with full Transaction Entity for every status change about this transaction

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

Authorization

Authorization is a process of placing a hold on the available credit of the consumer for the requested amount, no settlement will be created.

This process is useful for reserving funds from the consumer, after a successful authorization you will get token in order to create payment transaction based on the funds reserved.

The funds will be reserved until a payment will be made or void will be called to release the funds.

Create an Authorization

Call "transactions/init" in order to create an authorization request and add the "methodType" field with "authorize".

The amount field can be sent blank for future authorization transaction, the amount will be sent later using "authorize" API

URL: /transactions/init

Request Body:

Response body:

The consumer tap the sticker, or get the payment link through e-mail or SMS, and choose a payment method.

Authorization Token

The consumer choose the payment method as usual and after a successful authorization you will get an update regarding this transaction by websocket, callback and transaction status API.

Example of callback response:

The token field in "paymentDetails" object is the authorization token.

Now that we have our authorization token you can make a capture will the full authorization amount, or capture smaller amount than the authorization amount multiple times, or you can void the authorization.

Capture using Token

Capturing can be made with the full authorization amount once, or with smaller amount multiple times until you reach the authorization amount.

URL: /transactions/pay

Request Body:

The amount fields represents the amount in cents, value of 100 represents 1.00

Request Body for Authorize.net token:

Response body:

Void

Void is the process of cancelling a pending authorization and release the credit on the consumer.

Void will not refund the payment already settled.

URL: /transactions/void

Request Body:

Request Body for Authorize.net token:

Response body:

Re-Authorization

Re-Authorization enables you to place an hold on the available credit of the consumer for the requested amount again, using the same token of the original authorization.

URL: /transactions/authorize

Request Body:

The amount fields represents the amount in cents, value of 100 represents 1.00

Request body for Authorize.net token:

Response body:

Close Authorization

POST /transactions/:transactionNumber/closeAuth

Supported only for "Cardknox" processor.

Close Authorization is the process of closing an active authorization after at least one payment has been made and release the remaining credit.

To activate Close Authorization all these should exist:

  1. The transaction's method type has to be of type Authorization

  2. The sum of successful payments under the Authorization transaction must be less than the original auth amount.

Path Parameters

Request Body:

Response body:

Tokenization

Tokenization is the proccess of representing sensitive payment information with a token that does not contain data and represents the payment method of the consumer in SensePass.

Tokenization is useful for recurring payments or any kind of future payments with interaction with the consumer.

Create a Tokenization request

Call "transactions/init" in order to create an tokenization request and add the "methodType" field with "Tokenize".

URL: /transactions/init

Request Body:

Response body:

The consumer tap the sticker, or get the payment link through e-mail or SMS, and choose a payment method.

Create a Capture request with Tokenization

Call "transactions/init" in order to create an capture and tokenization request - add the "methodType" field with "Capture+Tokenize".

URL: /transactions/init

Request Body:

Response body:

The consumer tap the sticker, or get the payment link through e-mail or SMS, and choose a payment method.

Convert credit cards details to Tokens

URL: /transactions/tokenize

Request Body:

Response body:

Payment Token Callback

The consumer choose the payment method as usual and you will get an update regarding this transaction by websocket, callback and transaction status API.

Example of callback response:

See the token in "paymentDetails.token".

The token length is 256 characters.

Pay with Token

URL: /transactions/pay

Amount field only supports cents. This API does not support sending isCent=false

Request Body:

Request Body for Authroize.net token:

Response body:

Token Validation

URL: /transactions/token-validation

This API checks wheter the payment method associated with this token is currently valid using the payment provider - It will fail for example after the card blocked or expired.

Request Body:

Response:

Please see the full invoice model here:

See invoice object entity:

See Transactions entity schema:

See full information about callbacks logic here:

See the full interface model here:

In addition, the products information will be visible in the .

See product object entity:

See Transactions entity schema:

See Transactions entity schema:

See Transactions entity schema:

Please see the full invoice model here:

See invoice object entity:

See Transactions entity schema:

See our docs regarding

The "token" field represents authorization token from the previous section, or token from .

At least one successful payment has been made (if there aren't any successful payments, use endpoint to release the remaining credit).

Name
Type
Description
Callback
Transaction Entity
merchant back office
{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "callbackURL": "https://google.com/callback/api/callback",
  "methodType": "Authorize"
}
{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "amount": "2",
    "currency": "USD",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
        "messsage": "Payment commit is enabled for this transaction"
    },
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "branchNumber": "1",
    "branchId": "1",
    "transactionPage": {
        "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233"
    },
    "paymentDetails": {
        "type": "Authorize"
    }
}
{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "amount": "2",
    "currency": "USD",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "paymentDetails": {
        "type": "Authorize",
        "paymentMethod": "Sensepass PCI",
        "created": "2022-11-16T09:09:11.951Z",
        "token": "fpwotdbb1ggzg07j1pbhmhfw6tyozttq427nucb6um4ku",
        "requestID": "754144919",
        "cardType": "amex",
        "lastFourDigits": "7767",
        "cardMask": "375510*****7767",
        "expiration": "0125",
        "approvedBy": "Cardknox Sandbox"
    },
    "callbackType": "transaction_status"
}
{
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "amount": 200,
  "token": "fpwotdbb1ggzg07j1pbhmhfw6tyozttq427nucb6um4ku"
}
{
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "amount": 200,
  "tokenSource": "Authorize.net",
  "tokenData": {
    "profile_id": "12121212",
    "payment_id": "32323232",
    "auth_code": "ABC123"
  }
}
{
    "success": true,
    "transactionNumber": "73ca0ed84245b7812d18613f30e3393159f11fc216505ec1892021f9",
    "transactionStatus": "TransactionApproved",
    "confirmation": {
        "fullConfirmationCode": "174-85762A",
        "confirmationNumber": "174-85762A",
        "approvedBy": "Cardknox Sandbox",
        "providerId": "6wMjGG7cJ5KPTvzLOXKTIJjwdREImIsJGNpmGckfBiU=",
        "dateApproval": "2022-11-16T09:19:15.486Z",
        "approvalDate": "2022-11-16T09:19:15.486Z",
        "paymentMethodName": "Credit Card",
        "lastFourDigits": "7767",
        "cardExpiration": "0125",
        "sensePassReferenceId": "epr2dxpyxit3ro3jlp8l"
    },
    "cardMask": "375510*****7767",
    "token": "fpwotdbb1ggzg07j1pbhmhfw6tyozttq427nucb6um4ku"
{
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "transactionNumber": "05e5559cb40db534cf526472b4d9609733a438d232d4a94d03aa292c"
}
{
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "tokenSource": "Authorize.net",
  "tokenData": {
    "refNum": "8K0TYW"
  }
}
{
    "success": true,
    "transactionNumber": "05e5559cb40db534cf526472b4d9609733a438d232d4a94d03aa292c",
    "transactionStatus": "TransactionAuthoriziationVoided",
    "error": null
}
{
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "amount": 200,
  "token": "fpwotdbb1ggzg07j1pbhmhfw6tyozttq427nucb6um4ku"
}
{
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "amount": 200,
  "tokenSource": "Authorize.net",
  "tokenData": {
    "profile_id": "12121212",
    "payment_id": "32323232",
    "auth_code": "ABC123"
  }
}
{
    "success": true,
    "transactionNumber": "73ca0ed84245b7812d18613f30e3393159f11fc216505ec1892021f9",
    "transactionStatus": "TransactionApproved",
    "confirmation": {
        "fullConfirmationCode": "174-85762A",
        "confirmationNumber": "174-85762A",
        "approvedBy": "Cardknox Sandbox",
        "providerId": "6wMjGG7cJ5KPTvzLOXKTIJjwdREImIsJGNpmGckfBiU=",
        "dateApproval": "2022-11-16T09:19:15.486Z",
        "approvalDate": "2022-11-16T09:19:15.486Z",
        "paymentMethodName": "Credit Card",
        "lastFourDigits": "7767",
        "cardExpiration": "0125",
        "sensePassReferenceId": "epr2dxpyxit3ro3jlp8l"
    },
    "cardMask": "375510*****7767",
    "token": "fpwotdbb1ggzg07j1pbhmhfw6tyozttq427nucb6um4ku"
}

transactionNumber

string

Transaction Number

{
    "deviceId": "027dpi0gyi1ir8bv20vtrm6yd0aas5i8rzjw94xro3gvroh5b79my3uv06vt"
}
{
    "success": true,
    "transactionNumber": "bf6421709bd9bb107e3914ccc698bf3aa7d61f871cf9c29029578da1",
    "transactionStatus": "TransactionAuthorizationClosed",
    "approvalID": "10203715865",
    "message": "Transaction Authorization Closed Successfully"
}
{
  "timeOut": 600,
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "methodType": "Tokenize"
}
{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
        "messsage": "Payment commit is enabled for this transaction"
    },
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "branchNumber": "1",
    "branchId": "1",
    "transactionPage": {
        "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233"
    },
    "paymentDetails": {
        "type": "Tokenize"
    }
}
{
  "timeOut": 600,
  "amount": 3000,
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "methodType": "Capture+Tokenize"
}
{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
        "messsage": "Payment commit is enabled for this transaction"
    },
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "branchNumber": "1",
    "branchId": "1",
    "transactionPage": {
        "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233"
    },
    "paymentDetails": {
        "type": "Capture+Tokenize"
    }
}
{
    "apiKey": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
    "creditCardDetails": [
        {
            "cardNumber": "4580458045804580",
            "cardExpiration": "12/34",
            "securityCode": "567"
        },
        {
            "cardNumber": "4580458045804580",
            "cardExpiration": "12/34",
            "securityCode": "567"
        }
    ]
}
[
    {
        "cardNumber": "4580458045804580",
        "cardExpiration": "1234",
        "securityCode": "567",
        "uid": "f0de8e51-e886-4b99-9a2b-c5a4189df164",
        "token": "f0de8e51-e886-4b99-9a2b-cda4189df164"
    },
    {
        "cardNumber": "4580458045804580",
        "cardExpiration": "1234",
        "securityCode": "567",
        "uid": "7c2b58db-8985-4547-9e38-f96f9a78d801",
        "token": "7c2b58db-8985-4547-9e38-fa6f9a78d801"
    }
]
{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "paymentDetails": {
        "type": "Tokenize",
        "paymentMethod": "Sensepass PCI",
        "created": "2022-11-17T08:31:10.154Z",
        "token": "kkAl8zuss9men3mvu6rp4fhuwppek9yht6vn8r9z3kza6hyzfmnm",
        "cardType": "visa",
        "lastFourDigits": "1111",
        "cardMask": "458010*****1111",
        "expiration": "1234",
        "approvedBy": "Credit Card"
    },
    "callbackType": "transaction_status"
}
{
  "amount": 200,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "token": "kkAl8zuss9men3mvu6rp4fhuwppek9yht6vn8r9z3kza6hyzfmnm"
}
{
  "amount": 200,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "tokenSource": "Authorize.net",
  "tokenData": {
      "profile_id": "12345",
      "payment_id": "55555"
  }
}
{
    "success": true,
    "transactionNumber": "dff8c53f80b25527666a5935b56fc431d8a68cc82e53234d907103d2",
    "transactionStatus": "TransactionApproved",
    "confirmation": {
        "fullConfirmationCode": "166-60202801955",
        "confirmationNumber": "166-60202801955",
        "approvedBy": "AuthorizeNet Sandbox",
        "providerId": "jDPPZyn8zdGtBcKUP4EbxTfwy62j+JShtQGDlbwx4/c=",
        "dateApproval": "2022-10-20T17:34:31.778Z",
        "approvalDate": "2022-10-20T17:34:31.778Z",
        "paymentMethodName": "Credit Card",
        "lastFourDigits": "1111",
        "cardExpiration": "1234"
    },
    "cardMask": "",
    "token": "kkAl8zuss9men3mvu6rp4fhuwppek9yht6vn8r9z3kza6hyzfmnm"
}
{
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jvrznif3o1tr6xsb1rm",
  "token": "fd269cce79496def3add8157511d2571562221641140aa5edc870ea7fc4ebad"
}
{
    "success": true,
    "message": "The token is valid",
    "AVS": {
        "code": "NNN",
        "message": "Address: No Match & 5 Digit Zip: No Match"
    },
    "CVV": {
        "code": "M",
        "message": "Match"
    }
} 
Void
Transaction Events
Tokenization API
#get-transaction-object-by-transaction-number
#get-transaction-object-by-transaction-number

Payment request with callback

Simple request example to create new transaction with callback URL data.

Adding callback URL to request body enables you to get POST request from SensePass on any transaction update events.

It is required to implement a POST endpoint on your server based on the same interface as #get-transaction-object-by-transaction-number

In event of communication error from SensePass to your server - SensePass will retry multiple times to call your server will the callback URL over a period of days.

Make sure the URL provided in "callbackURL" is fully accessible from the internet and does not contain local IP or private DNS.

SensePass IP's are dynamic - Limiting your endpoint to specific IP address is not possible.

Request Body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm",
  "returnURL": "https://merchantDomain.com/thankYouPage",
  "cancelURL": "https://merchantDomain.com/cart",
  "callbackURL": "https://merchantDomain.com/sensepass/callbackEndPoint"
}

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

apiKey*

string

Unique API provided by SensePass, unique for each location of your merchant

callbackURL

string

URL to your POST endpoint

cancelURL

string

URL to redirect consumer on cancel event from consumer

returnURL

string

URL to redirect consumer after Success or Error

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

Security - HMAC Signature

HMAC (Hash-based Message Authentication Code) signature authentication for callbacks is a security mechanism used to ensure the integrity and authenticity of a message between two systems.

This authentication logic will enables you to verify that the callback API call was originated by SensePass.

HMAC Verification steps:

  1. Extract "HMAC-Random-Key" header from the callback API request

  2. Concat the header from #1 to the request body

  3. Perform HMAC 256 calculation with the concatenated string and using your secret HMAC key

  4. Compare the result from #3 against the value of the request header "HMAC-Authorization"

Callbacks with GET method

By default all the callbacks are sent with JSON body and POST method, it is possible to choose GET method callback without request body.

Callback with GET method will be sent with TransactionNumber as query param.

URL: /transactions/init

Request Body for GET callbacks:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "callbackURL": "https://google.com/callback/api/callback",
  "callbackMethod": "GET"
}

This API call will be sent to this URL:

https://google.com/callback/api/callback?TransactionNumber=573942fsdqe90342k304242&callbackType=transaction_status

Cancel a pending transaction

Cancelling a pending transaction endpoint allows you to block the payment flow for consumers that currently visiting the payment page and also block the payment page for new consumers - only for specific transaction.

This API will not refund approved transactions, see Refund a transaction

API Interface

Cancelling a pending transaction object (Payment Request)

POST https://api.sensepass.com/api/transactions/cancel/{transactionNumber}

Path Parameters

Name
Type
Description

transactionNumber*

String

Transaction number to cancel

Authentication Request Body fields

{
  "status": 200,
  "status_message": "Transaction Was Canceled"
}
{
    // Response
}
{
    // Response
}
{
    // Response
}

Cancelling a pending transaction object using Device ID

POST https://api.sensepass.com/api/transactions/cancelByDeviceId/{deviceId}

This API will cancel the last pending transaction of a given device

Path Parameters

Name
Type
Description

deviceId*

String

Device ID of the transaction

Authentication Request Body fields

{
  "status": 200,
  "status_message": "Transaction Was Canceled"
}

Flow Chart

Transaction Status Flow

Subscription

Subscription is the process of recurring payments by a interval.

Subscription is useful for charging consumers a fixed sum of money, e.g. $10.99 per month, or any kind of future payments with a chosen sum.

Create a Subscription

POST https://api.sensepass.com/api/transactions/init

Request Body

Name
Type
Description

timeOut

number

600

amount

number

1000

deviceId*

string

2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm

methodType*

string

subscription

callbackURL

string

https://your-domain.com/some-post-method-callback-endpoint

subscription.interval

string

Examples: 1day, 14day, 1month, 3month, 1year.

Default value: 1month

subscription.expiration

string

2024-01-01T12:00:00Z

subscription.dueDate

string

2023-01-01T12:00:00Z

{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
        "messsage": "Payment commit is enabled for this transaction"
    },
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "branchNumber": "1",
    "branchId": "1",
    "subscription": {
        "id": "bf8b7e01-466d-4996-b9a2-fc0880923359",
        "active": true,
        "created": "2023-05-30T14:35:13.698Z",
        "updated": "2023-05-30T14:35:13.698Z",
        "expires": null,
        "start_date": "2023-01-01T12:00:00.000Z",
        "interval": "1month",
        "status": "active",
        "customer": {}
    },
    "transactionPage": {
        "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233"
    }
}

Refer to the Subscritption entity at Subscription Model for additional information.

Transaction status

API for retrieving the current status of a given transaction.

Do not implement poll logic with this API, instead implement Socket.IO listener or callback API to get transaction status events.

API Interface

Get transaction object by a transaction number

GET https://api.sensepass.com/api/transactions/{transactionNumber}

Path Parameters

Authentication Request Body fields

Schema

Flow Chart

Transaction Status Flow

Fetch Multiple Transactions

POST https://api.sensepass.com/api/transactions

Body

FilterData

Example Request

Body

Response

Pay by Credit Card

API for direct payment by credit card number without using payment page.

API Interface

Pay by credit card

POST https://api.sensepass.com/api/transactions/pay

Authentication Request Body fields

Request Body

Examples

Basic request example to pay using credit card

Response

Transaction Status Flow

Refund a transaction

API to refund payments of approved transaction or partial refund transaction with available balance to refund.

This endpoint automaticlly detects if void or refund operation is required.

API Interface

Refund approved transaction object

POST https://api.sensepass.com/api/transactions/refund

Request Body

Authentication Request Body fields

Example of Successful Refund

Example of Unsuccessful Refund

Refund Request Examples

Basic request example to refund a new transaction using Device ID:

Basic request example to refund a new transaction using Location API Key or Merchant API key:

Flow Chart

Transaction Status Flow

Interface:

See Transactions entity schema:

See

Name
Type
Description

See Transactions entity schema:

Full Transaction Entity schema:

Name
Type
Description
Name
Type
Description

Sending credit card information using API requires your server to be PCI compliant, if you don't have PCI certification - please see our documentation of

This API only support merchant API authentication -

Name
Type
Description

See Transactions entity schema:

Name
Type
Description

errorCode = 0 indicating successful refund operation.

On error see "errorMessage" field which describes the error cause.

See here our Authentication page
See here our Authentication page
See our payment flow chart here
See our transaction status flow here

transactionNumber*

String

Transaction Number

{
    // Response
}
{
    // Response
}

deviceId

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

apiKey

string

Merchant ID provided by SensePass (For Web based Transactions) - Required if deviceId is empty

startDate*

string

2024-01-01T12:00:00Z

endDate*

string

2024-02-01T12:00:00Z

status

string

settled/expired/voided

currency

string

currency Iso code

pagination.limit

number

limit the number of records returned (between 1 and 1000)

pagination.offset

number

skip N amount of records

orderBy

string

column to sort the results by:

status/amount/date/transactionNumber/methodType

default: date

filter[]

FilterData

filter query rows by array of conditions

parmeter

KeyValue

any custom data to filter by: E.G: "name":"Joe"

operator

string

'=', '!=', '<', '<=', '>', '>='
{
    "startDate": "2024-01-01T00:00:00Z",
    "endDate": "2024-06-01T00:00:00Z",
    "apikey": "myApiKey",
    "pagination": {
        "limit": 2,
        "offset": 2
    },
    "orderBy": "date",
    "filter": [{"accountId": "1000635", "operator": "!="}, {"age": "10", "operator": ">"}  ]    
}
{
    "pagination": {
        "returnedRecords": 2,
        "totalRecords": 133,
        "isPartialResult": true
    },
    "data": [
        {
            "TransactionNumber": "25d0ebc6ed346c7a364ebdb1dbe625455365841c4aee2657bbed7e1f",
            "date": "2024-01-01T17:19:24.826Z",
            "amount": "1",
            "baseAmount": "1",
            "currency": "ILS",
            "status": 5,
            "statusName": "Transaction Approved",
            "timeoutDate": "2024-01-01T17:34:27.410Z",
            "maxInstallments": 1,
            "reason": null,
            "methodType": 4,
            "businessId": "9574846265849362",
            "businessName": "Test Business",
            "pos": "Test Business POS",
            "businessOwnerPhone": "123456789",
            "businessCountry": "Israel",
            "businessCity": "Tel Aviv",
            "businessStreet": "Menachem Begin",
            "businessHouseNumber": 144,
            "businessAddress": "Tel Aviv, Menachem Begin 144",
            "locale": {
                "language": "en"
            },
            "metadata": {
                "receiptSaveUid": "5d46842c-314a-4c61-8da5-75daaa7f17fc",
                "transactionEventId": "1d367841-3cf8-6471-9844-c0269cff657d"
            },
            "products": [],
            "productsSum": {
                "allAmountSum": "0.00",
                "allTipSum": "NaN",
                "allVatSum": "0.00",
                "allTotalSum": "0.00",
                "allDiscountSum": "0.00",
                "allDiscountedAmountSum": "0.00"
            },
            "paymentDetails": {
                "type": "Manual_Capture",
                "paymentMethod": "Bit"
            },
            "paymentMethodImages": {},
            "clientPhoneNumber": null,
            "clientEmail": null
        },
        {
            "TransactionNumber": "e648214bfe164ef4ee3a36c01212ed35b12cd4d3e7cc950f7c915c5d",
            "date": "2024-01-02T10:32:55.882Z",
            "amount": "1",
            "baseAmount": "1",
            "currency": "ILS",
            "status": 5,
            "statusName": "Transaction Approved",
            "timeoutDate": "2024-01-02T10:47:58.651Z",
            "maxInstallments": 1,
            "reason": null,
            "methodType": 4,
            "businessId": "9574846265849362",
            "businessName": "Test Business",
            "pos": "Test Business POS",
            "businessOwnerPhone": "123456789",
            "businessCountry": "Israel",
            "businessCity": "Tel Aviv",
            "businessStreet": "Menachem Begin",
            "businessHouseNumber": 144,
            "businessAddress": "Tel Aviv, Menachem Begin 144",
            "locale": {
                "language": "en"
            },
            "metadata": {
                "receiptSaveUid": "8a4903c5-3674-496c-bc6e-af54e8a8a36d",
                "transactionEventId": "d3bc5cbc-9d35-8471-b43d-984d13be71da"
            },
            "products": [],
            "productsSum": {
                "allAmountSum": "0.00",
                "allTipSum": "NaN",
                "allVatSum": "0.00",
                "allTotalSum": "0.00",
                "allDiscountSum": "0.00",
                "allDiscountedAmountSum": "0.00"
            },
            "paymentDetails": {
                "type": "Manual_Capture",
                "paymentMethod": "Bit"
            },
            "paymentMethodImages": {},
            "clientPhoneNumber": null,
            "clientEmail": null
        }
    ]
}

methodType

string

Transaction Type: 1. 'payment' = Regular Payment 2. 'tokenize' = Tokenization 3. 'authorize' = Authorization 4. 'credit' = Credit transaction (Refund transaction without a reference to original payment transaction)

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

creditCardDetails.cardNumber*

string

Credit card number

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

creditCardDetails.securityCode*

string

Credit card CVV

reason

string

The reason for this payment - This field will be presented to the consumer

creditCardDetails.socialID

String

Israel Only - Social ID of the credit card owner

creditCardDetails.cardExpiration*

string

Credit card expiration MM/YY

installments

number

Israel Only - Installments

metadata

array

Metadata Model

{
  "success": true,
  "message": null,
  "code": null,
  "error": null,
  "approvalID": null,
  "requestID": null,
  "transactionNumber": "cf04ea0faf73988c1f545add1ec2bd9fcd87c7a292566536e8395b1b",
  "transactionPaymentID": null,
  "transactionStatus": "TransactionApproved",
  "confirmation":
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "Credit Card",
      "approvedBy": "Cardknox",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "cardExpiration": "0127",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    },
    "cardMask": "",
    "token": "060a4330-abd7-4845-b8e9-809f454a2d6c"
}
{
    // Response
}
{
    // Response
}
{
  "deviceId": "93sa20e3b9c05d0670f00924a5384185aa4e5fe913b71014",
  "amount": 500,
  "currency": "USD",
  "reason": "Invoice of December 2023",
  "creditCardDetails": {
    "cardNumber": "375510190366075",
    "cardExpiration": "12/34",
    "securityCode": "0123"
  }
}
{
  "success": true,
  "message": null,
  "code": null,
  "error": null,
  "approvalID": null,
  "requestID": null,
  "transactionNumber": "cf04ea0faf73988c1f545add1ec2bd9fcd87c7a292566536e8395b1b",
  "transactionPaymentID": null,
  "transactionStatus": "TransactionApproved",
  "confirmation": {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "Credit Card",
      "approvedBy": "Cardknox",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "cardExpiration": "0127",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
   },
   "cardMask": "",
   "token": "060a4330-abd7-4845-b8e9-809f454a2d6c"
}

transactionNumber*

string

The Transaction Number To Be Refunded - Required

isPartial

boolean

true for partial refund transaction, requires "refundAmount" field for partial amount

refundAmount

number

The refund amount - for partial refund only, see "isPartial" flag

{
  "errorMessage": null,
  "errorCode": 0,
  "refundConfirmation": "063-LlgKAzfRL",
  "approvedBy": "PayPal",
  "refundBy": "PayPal",
  "dateApproval": "2019-12-19T09:47:59.105Z",
  "result": "Approved",
  "providerId": "z+n1opZ+RFn50fstklvWoOsovKIY5AUfsrVdGsO653c=",
  "transaction": {
    "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
    "date": "2019-12-19T09:47:59.105Z",
    "amount": 1234.56,
    "currency": "USD",
    "status": 0,
    "businessId": 144
  }
}
{
    // Response
}
{
    // Response
}
{
  "errorMessage": null,
  "errorCode": 0,
  "refundConfirmation": "063-LlgKAzfRL",
  "approvedBy": "PayPal",
  "refundBy": "PayPal",
  "dateApproval": "2019-12-19T09:47:59.105Z",
  "result": "Approved",
  "providerId": "z+n1opZ+RFn50fstklvWoOsovKIY5AUfsrVdGsO653c=",
  "transaction": {
    "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
    "date": "2019-12-19T09:47:59.105Z",
    "amount": 1234.56,
    "currency": "USD",
    "status": 0,
    "businessId": 144
  }
}
{
    "errorMessage": "refund operation declined by Processor",
    "errorCode": 22,
    "transaction": null,
    "refundConfirmation": null,
    "dateApproval": null,
    "result": "Declined",
    "providerId": null,
    "approvedBy": null,
    "refundBy": null,
    "amount": null
}
{
  "transactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm"
}
{
  "transactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm"
}
#get-transaction-object-by-transaction-number

Tags Pairing

API for getting device ID using SensePass tags.

This API should be called once on new tag assignment for a register, then the register saves the device ID for the next transactions until un-pairing proccess occur.

API Interface

Pair Tag with a register

POST https://api.sensepass.com/api/devices/match

API for getting device ID using SensePass tags.

Request Body

Name
Type
Description

pinCode*

string

SensePass Tag ID - it's located below the QR code, for example: 53K-HMD-786

apiKey*

string

Location or Merchant API key

deviceId

string

Optional - Device ID of existing register, will add the tag to this device instead of creating a new device ID

posName

string

The name of the register, this value will be shown in merchant dashboard and partners dashboard

deviceAliasKey is the device ID created for the tag.

{
  "name": "POS",
  "deviceAliasKey": "syi2vm59le3zf7r9og29ezz12xin95vxhewuzdhu0c4cqizeu9d3yvs8rhn60el4eqr4iq6qozrguyw7rgrgqiec6abb9ftygfhvvwl9ar833i1ztnghj7k9zkrvrw5e8ykd2bueemddgcygwci3q12u4fu07ivxm1i7tw50wog7n9mu1pirdj0cg188mbvdf4axxpgc98udh71kxnu9i56yrm207msqrtl0hj44mvoibt4nanvenr06hpq9h9tq",
  "merchantUID": "string",
  "branchUID": "string",
  "pinCode": "string",
  "clientBoxes": [
    "https://pay.sensepass.com/c_EG9RW3DMJ4WDRF7KFN5A0ICSB0UU16"
  ]
}
{
    // Response
}
{
    // Response
}

Examples

Creating a new device ID for a tag

{
  "pinCode": "111-222-333",
  "apiKey": "a1b2c3d4e5f6g7h8",
  "posName": "NewYorkBranchPos"
}

Attaching a tag to existing device ID

{
  "pinCode": "111-222-333",
  "apiKey": "a1b2c3d4e5f6g7h8",
  "posName": "NewYorkBranchPos",
  "deviceId": "rti3vm59le3zf7r9og29ezz12xin95vxhewuzdhu0c4cqizeu9d3yvs8rhn60el4eqr4iq6qozrguyw7rgrgqiec6abb9ftygfhvvwl9ar833i1ztnghj7k9zkrvrw5e8ykd2bueemddgcygwci3q12u4fu07ivxm1i7tw50wog7n9mu1pirdj0cg188mbvdf4axxpgc98udh71kxnu9i56yrm207msqrtl0hj44mvoibt4nanvenr06hpq9h9bg"
}

Pair Response

{
  "name": "POS",
  "deviceAliasKey": "syi2vm59le3zf7r9og29ezz12xin95vxhewuzdhu0c4cqizeu9d3yvs8rhn60el4eqr4iq6qozrguyw7rgrgqiec6abb9ftygfhvvwl9ar833i1ztnghj7k9zkrvrw5e8ykd2bueemddgcygwci3q12u4fu07ivxm1i7tw50wog7n9mu1pirdj0cg188mbvdf4axxpgc98udh71kxnu9i56yrm207msqrtl0hj44mvoibt4nanvenr06hpq9h9tq",
  "merchantUID": "string",
  "branchUID": "string",
  "pinCode": "string",
  "clientBoxes": [
    "https://pay.sensepass.com/c_EG9RW3DMJ4WDRF7KFN5A0ICSB0UU16"
  ]
}

Create Dynamic QR

API for creating a dynamic QR without using SensePass tags.

API Interface

Create Device

POST https://api.sensepass.com/api/devices/create

API for creating a device without using SensePass tags.

Request Body

Name
Type
Description

apiKey*

string

Location or Merchant API key

posName*

string

The name of the register, this value will be shown in merchant dashboard and partners dashboard

deviceAliasKey is the device ID created for the tag.

{
  "name": "POS",
  "deviceAliasKey": "syi2vm59le3zf7r9og29ezz12xin95vxhewuzdhu0c4cqizeu9d3yvs8rhn60el4eqr4iq6qozrguyw7rgrgqiec6abb9ftygfhvvwl9ar833i1ztnghj7k9zkrvrw5e8ykd2bueemddgcygwci3q12u4fu07ivxm1i7tw50wog7n9mu1pirdj0cg188mbvdf4axxpgc98udh71kxnu9i56yrm207msqrtl0hj44mvoibt4nanvenr06hpq9h9tq",
  "merchantUID": "string",
  "branchUID": "string",
  "clientBoxes": [
    "https://pay.sensepass.com/c_EG9RW3DMJ4WDRF7KFN5A0ICSB0UU16"
  ]
}
{
    // Response
}
{
    // Response
}

Examples

Creating a new device ID for a tag

{
  "apiKey": "a1b2c3d4e5f6g7h8",
  "posName": "NewYorkBranchPos"
}

Response

{
  "name": "POS",
  "deviceAliasKey": "syi2vm59le3zf7r9og29ezz12xin95vxhewuzdhu0c4cqizeu9d3yvs8rhn60el4eqr4iq6qozrguyw7rgrgqiec6abb9ftygfhvvwl9ar833i1ztnghj7k9zkrvrw5e8ykd2bueemddgcygwci3q12u4fu07ivxm1i7tw50wog7n9mu1pirdj0cg188mbvdf4axxpgc98udh71kxnu9i56yrm207msqrtl0hj44mvoibt4nanvenr06hpq9h9tq",
  "merchantUID": "string",
  "branchUID": "string",
  "clientBoxes": [
    "https://pay.sensepass.com/c_EG9RW3DMJ4WDRF7KFN5A0ICSB0UU16"
  ]
}
Subsciption callbacks
See here our Authentication page
See our payment flow chart here
See our transaction status flow here
Credit Card iFrame
See here our Authentication page
See our transaction status flow here
See here our Authentication page
See our payment flow chart here
See our transaction status flow here

Fetch a subscription

Fetch a subscription by subscription ID.

It is required to send one authentication header, only one header key is required for the request in the example below

Get the subscription details and its paid transactions.

GET https://api.sensepass.com/api/subscription/:subscriptionUid

Path Parameters

Name
Type
Description

subscriptionUid

string

bf8b7e01-466d-4996-b9a2-fc0880923359

Headers

Name
Type
Description

deviceId

string

2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm

merchantApiKey

string

xvRKKxOWAYbTH2yKQLlzkta2eovvkzlzTW98NcA9KVfwrOF22GA7bBOHHAeooQrmKelv0TU3Q7c8wiJgTQweKCbXR5ohC6JtCygJ

branchApiKey

string

mQzMLLSpqjRZfWBgQcAej5Dus7HHvmRsSsrN6FYoeWWUAehm3RjD596pZb9gfrxx4jQOP2MCQgoLaaU9SAdlzVsWnR63ZETqALpn

{
    "id": "bf8b7e01-466d-4996-b9a2-fc0880923359",
    "active": true,
    "created": "2023-05-29T15:33:36.278Z",
    "updated": "2023-05-29T15:34:38.641Z",
    "expires": null,
    "start_date": "2023-06-01T11:00:00.000Z",
    "interval": "1month",
    "status": "active",
    "customer": {},
    "payments": [
        {
            "TransactionNumber": "d3d4f01b6e0ecb01e40f2ac3a9d223a1f64ca80afbf3dbfea732fc89",
            "date": "2023-05-29T15:34:24.701Z",
            "amount": "10",
            "baseAmount": "10",
            "currency": "USD",
            "status": 5,
            "statusName": "Transaction Approved",
            "timeoutDate": "2023-05-29T15:49:26.809Z",
            "maxInstallments": 1,
            "reason": null,
            "methodType": 0,
            "paymentProcessRequestID": "7DZ9KO003XRN51E4RHRML25",
            "confirmation": {
                "approvedBy": "Credit Card",
                "dateApproval": "2023-05-29T15:34:33.241Z",
                "approvalDate": "2023-05-29T15:34:33.241Z",
                "paymentType": "Regular",
                "sensePassReferenceId": "sm0tgjpcjitbd9gfodhi",
                "providerId": "jDPPZyn8zdGtBcKUP4EbxTfwy62j+JShtQGDlbwx4/c=",
                "confirmationNumberNumeric": 16660218953577,
                "authNumber": null,
                "acquirer": null,
                "voucher": null,
                "referenceNumber": null,
                "requestID": "7DZ9KO003XRN51E4RHRML25",
                "confirmationNumber": "166-60218953577",
                "fullConfirmationCode": "166-60218953577",
                "cardType": "VISA",
                "lastFourDigits": "4580",
                "cardMask": "458045******4580",
                "expiration": "1234",
                "cardExpiration": "1234",
                "installments": 1,
                "extraDetails": {
                    "email": null
                }
            },
            "confirmationNumber": "166-60218953577",
            "confirmations": [
                {
                    "approvedBy": "Credit Card",
                    "dateApproval": "2023-05-29T15:34:33.241Z",
                    "approvalDate": "2023-05-29T15:34:33.241Z",
                    "paymentType": "Regular",
                    "sensePassReferenceId": "sm0tgjpcjitbd9gfodhi",
                    "providerId": "jDPPZyn8zdGtBcKUP4EbxTfwy62j+JShtQGDlbwx4/c=",
                    "confirmationNumberNumeric": 16660218953577,
                    "authNumber": null,
                    "acquirer": null,
                    "voucher": null,
                    "referenceNumber": null,
                    "requestID": "7DZ9KO003XRN51E4RHRML25",
                    "confirmationNumber": "166-60218953577",
                    "fullConfirmationCode": "166-60218953577",
                    "cardType": "VISA",
                    "lastFourDigits": "4580",
                    "cardMask": "458045******4580",
                    "expiration": "1234",
                    "cardExpiration": "1234",
                    "installments": 1,
                    "extraDetails": {
                        "email": null
                    }
                }
            ]
        }
    ]
}

Refer to the Subscritption entity at Subscription Model for additional information.

Update a Transaction

Updating transaction amount

Flow:

  1. The transaction must be created with "readyForPayment": false flag first

  2. The customer can see the transaction page and can't choose any payment method

  3. The platform calls PATCH API to update transaction details including "amount" field, this API can be invoke multiple times

  4. The platform calls PATCH API with "readyForPayment" = true , which allows the customer to choose a payment method and pay - without having to refresh the page or tap again

This flow is useful for POS who would like to create an initial transaction object with zero amount and update the total amount and other fields during the products scanning proccess, or any other flow where there is a requirement to create transaction once, and update it's amount and data later.

The customer will be allowed to make payment only after "readyForPayment" API will be called

Step 1 - Creating a transaction in Setup state

POST

https://api.sandbox.sensepass.com/api/transactions/init

{
    "amount": 100,
    "currency": "USD",
    "isCent": true,
    "readyForPayment": false,
    "deviceId": "YOUR-DEVICE-ID"
} 

Step 2 - Updating transaction Data

PATCH

https://api.sandbox.sensepass.com/api/transactions/250b859e1fb5b162d476f67dcc9ef9f0e2cb3a9412d13a610412d769

{
    "amount": 550,
    "currency": "USD",
    "isCent": true,
    "deviceId": "YOUR-DEVICE-ID",
    "products": [
      {
        "name": "Shirt",
        "quantity": 1,
        "amount": 190,
        "discount": 0,
        "vat": 0
      },
      {
        "name": "Service Fee",
        "quantity": 1,
        "amount": 10,
        "discount": 0,
        "vat": 0
      }
    ]
} 

Step 3 - Allowing user to make payments

PATCH

https://api.sandbox.sensepass.com/api/transactions/250b859e1fb5b162d476f67dcc9ef9f0e2cb3a9412d13a610412d769

{
    "amount": 550,
    "currency": "USD",
    "isCent": true,
    "deviceId": "YOUR-DEVICE-ID",
    "products": [
      {
        "name": "Shirt",
        "quantity": 1,
        "amount": 190,
        "discount": 0,
        "vat": 0
      },
      {
        "name": "Service Fee",
        "quantity": 1,
        "amount": 10,
        "discount": 0,
        "vat": 0
      }
    ],
    "readyForPayment": true
} 

Updating transaction fields

  1. reason

  2. products

  3. posData

  4. metadata

  5. clientPhoneNumber

  6. clientEmail

  7. readyForPayment

Example

PATCH

https://api.sandbox.sensepass.com/api/transactions/250b859e1fb5b162d476f67dcc9ef9f0e2cb3a9412d13a610412d769

{
  "reason": "New Reason",
  "posData": {
    "a": "b"
  },
  "metadata": {
    "x": "y"
  },
  "deviceId": "YOUR-DEVICE-ID"
}

Customer Input

API for retrieving input from consumer using SensePass Tags and EMV devices.

API Interface

Get customer input

POST https://api.sensepass.com/api/transactions/customer-input

For terminal agent invoke use this endpoint: http://localhost:8003/api/transactions/customer-input

Request Body

Name
Type
Description

deviceId*

string

unique device ID provided by SensePass

inputs*

array

Example - Simple Questions

{
  "deviceId": "Your-Device-ID",
  "inputs": [
    {
      "type": "email",
      "question": "Please input your email address"
    },
    {
      "type": "phone",
      "minimumLength": 10,
      "question": "Please input your phone number"
    }
  ]
}

Example - Yes/No Questions

{
  "deviceId": "Your-Device-ID",
  "inputs": [
    {
      "type": "boolean",
      "question": "Please verify your email address is a@b.c",
      "acceptText": "Yes",
      "rejectText": "No"
    }
  ]
}

Clear all questions on device

Clear customer input

POST https://api.sensepass.com/api/transactions/customer-input/reset

For terminal agent invoke use this endpoint:

http://localhost:8003/api/transactions/customer-input/reset

Request Body

Name
Type
Description

deviceId*

string

unique device ID provided by SensePass

{
}
{
    // Response
}
{
    // Response
}

Receipts

Token Migration

SensePass Token Migration Process

The SensePass token migration process allows merchants to securely transfer customer payment information for tokenization.

This process involves the merchant sending a structured Excel file, which contains sensitive customer data such as credit card numbers, expiration dates, and other relevant information.

The process can be completed in two distinct workflows:

Workflow 1: Generating New Tokens

  1. File Submission: The merchant submits an Excel file following the prescribed format available on our documentation page. This file should include all required customer data fields.

  2. Tokenization by SensePass: Upon receiving the file, SensePass processes the data by generating new, unique tokens for each credit card entry. These tokens are securely mapped to the original payment information within the SensePass system.

  3. File Return: SensePass returns the processed file to the merchant. This file will contain the newly generated tokens, replacing the original credit card numbers, ensuring that sensitive data is securely handled.

Workflow 2: Using Merchant-Specified Tokens

  1. File Submission: The merchant submits an Excel file in the standard format, including the existing tokens that they wish to retain. The file should also include the corresponding credit card numbers and other required customer data fields.

  2. Token Matching by SensePass: SensePass processes the file by matching the provided tokens to the corresponding payment information within the system. This allows for the creation of identical tokens within the SensePass environment, ensuring seamless continuity for the merchant.

  3. File Return: After processing, SensePass returns the file to the merchant with the specified tokens mapped to the original data, ensuring that the migration is completed without altering the token structure.

Excel File Template

Security and Compliance

SensePass follows stringent security protocols to ensure the safe handling of sensitive customer information throughout the token migration process.

All data is encrypted during transfer and processing, adhering to SOC 2 and PCI DSS standards.

Credit by Credit Card

API to credit (transfer money from merchant to customer) by credit card token.

API Interface

Credit API

POST https://api.sensepass.com/api/transactions/credit

Request Body

Name
Type
Description

token*

string

Credit card token - Required

refundAmount

number

The credit amount (cents) - Required

Authentication Request Body fields

errorCode = 0 indicating successful credit operation.

On error see "errorMessage" field which describes the error cause.

{
  "errorMessage": null,
  "errorCode": 0,
  "refundConfirmation": "063-LlgKAzfRL",
  "approvedBy": "PayPal",
  "refundBy": "PayPal",
  "dateApproval": "2019-12-19T09:47:59.105Z",
  "result": "Approved",
  "providerId": "z+n1opZ+RFn50fstklvWoOsovKIY5AUfsrVdGsO653c=",
  "transaction": {
    "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
    "date": "2019-12-19T09:47:59.105Z",
    "amount": 1234.56,
    "currency": "USD",
    "status": 0,
    "businessId": 144
  }
}
{
    // Response
}
{
    // Response
}

Example

Basic request example to credit $1.23 using Device ID:

{
  "token": "YOUR-TOKEN",
  "refundAmount": 123,
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm"
}

Basic request example to credit $100.01 using Location API Key or Merchant API key:

{
  "token": "YOUR-TOKEN",
  "refundAmount": 10001,
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm"
}

Flow Chart

Transaction Status Flow

Real-time product information update

This flow is useful for POS who would to send an API call on each cart update event, this will allow the customer to see the order information in realtime on the EMV Pinpad device and on SensePass tag.

Step 1 - Send product information on every cart change

POST

Step 2 - Call Init as usual once the POS is ready to accept payment (Sync/Async)

POST

Installation

Getting Started

  1. Ensure your system meets the mentioned requirements

  2. Login to SensePass Partners

  3. Navigate to "Developers" -> "Terminal Agent"

  1. Download the latest version of Terminal Agent software using the download link on the partners page

  2. Click on the green button "Download config file"

Installation

  1. Double click on the EXE file in your downloads folder and start the installation process

  2. Click on "I agree" and click "Install"

  1. Setup will complete with this message:

  1. Move the config.json file from #5 to this location:

C:\Program Files (x86)\SensePass Ltd\Terminal Agent

  1. Open the Services app (Run -> services.msc)

  2. Look for "SensePass-Agent-V2", right click -> Restart

Pairing

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0,
  "clientEmail": "a@b.com",
  "clientPhoneNumber": "+12545870720",
  "paymentProcessRequestID": "06c20474-bf85-4310-aa72-b39e40f9c7e2",
  "extraDetails": {
    "addressData": {
      "billingAddress": {
        "firstName": "John",
        "lastName": "Doe",
        "country": "USA",
        "state": "NY",
        "street": "Baker",
        "city": "New York",
        "zipcode": "102030"
      }
    }
  }
}

subscription ID received from the response

The following fields can be updated using the PATCH method based on :

Array of

See Transactions entity schema:

{
  "success": true,
  "error": null,
  "results": [
    {
      "type": "email",
      "question": "Please input your email address",
      "input": "a@b.com"
    },
    {
      "type": "phone",
      "minimumLength": 10,
      "question": "Please input your phone number",
      "input": "1234567890"
    }
  ]
}    
{
    // Response
}
{
    // Response
}

Token can be created using the .

OR

Transaction Entity
Payment request with receipt generated by the POS
Payment request with receipt generated by SensePass
Tokenization flow
See here our Authentication page
See our payment flow chart here
See our transaction status flow here
{
    "products": [
        {
            "amount": 123,
            "discount": 0,
            "name": "First",
            "quantity": 4,
            "posIdentifier": "100001",
            "vat": 0
        },
        {
            "amount": 111,
            "discount": 0,
            "name": "Second",
            "quantity": 2,
            "posIdentifier": "invalid",
            "vat": 2
        }
    ],
    "timeout": "1000",
    "currency": "USD",
    "isCent": true,
    "amount": 1900,
    "readyForPayment": false,
} 
{
    "products": [
        {
            "amount": 123,
            "discount": 0,
            "name": "First",
            "quantity": 4,
            "posIdentifier": "100001",
            "vat": 0
        },
        {
            "amount": 111,
            "discount": 0,
            "name": "Second",
            "quantity": 2,
            "posIdentifier": "invalid",
            "vat": 2
        }
    ],
    "timeout": "1000",
    "currency": "USD",
    "isCent": true,
    "amount": 1900,
    "clientPhoneNumber": "789454223",
    "clientEmail": "customerEmail@gmail.com"
} 
Customer Input Model

Usage

Terminal Agent works as a proxy to all SensePass cloud API describes in this docs.

In addition, Terminal agent allows you to use specific API's created for the Terminal Agent software.

Authentication

Stroing and sending Device ID in the request body is not required for all API requests, Terminal Agent stores and will append this data to your requests automatically.

Web Server

Instead of calling our cloud API (api.sensepass.com / api.sandbox.sensepass.com) - just change the base URL of your requests to http://localhost:8003/

Example: http://localhost:8003/api/transactions/init

The schema of this requets is identical to the cloud API.

Get Device ID

Terminal Agent expose an API to get the paired device ID.

Usage Flow:

  1. Call GET request to: http://localhost:8003/api/devices Without any request payload

  2. Reponse will return immediately with the device ID

Example

URL: http://localhost:8003/api/devices

Response body:

{
    "deviceId": "1orrpzqmx2b6w5l7iw23nnrm86v7yivoor5a6p9bdxc6zy0ahck64waepnofwxlfrlhx8ifi6cja5qs7c1neiuik911y8ayq6lru6q1plqyrqrbyrhrjitwx4hlyjlitwdsqt1b9wjwayk43s8o42a02x5oj9o44oxof3isbqozbdys4v4abytztg31cj12xicol08fgmssgd3dmvtpfuowiblekpxkk0k4395ljot8fs7fnf9rlluaz4x3f7aov"
}

Create a Transaction
http://localhost:8003/api/transactions/products/update
http://localhost:8003/api/transactions/init/sync
http://localhost:8003/api/transactions/init
Please continue to the pairing page

Settlement

API for retrieving transactions settlements by date

POST https://api.sensepass.com/api/settlements/all

Request Body

Name
Type
Description

deviceId

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

apiKey

string

Merchant ID provided by SensePass (For Web based Transactions) - Required if deviceId is empty

startDate*

string

2024-01-01T12:00:00Z

endDate*

string

2024-02-01T12:00:00Z

status

string

settled/expired/voided

paymentMethod

string

Sensepass payment method name

currency

string

currency Iso code

pagination.limit

number

limit the number of records returned (between 1 and 1000)

pagination.offset

number

skip N amount of records

orderBy

string

column to sort the results by:

default: submitDate

filter[]

FilterData

filter query rows by array of conditions

FilterData

Name
Type
Description

parmeter

KeyValue

any custom data to filter by: E.G: "name":"Joe"

operator

string

Example Request

{
   "startDate": "2024-01-01T00:00:00Z",
    "endDate": "2024-06-01T00:00:00Z",
    "apikey": "myApiKey",
    "pagination": {
        "limit": "40",
        "offset": "0"
    },
    "orderBy": "settlementAmount",
    "filter": [{"accountId": "1000635", "operator": "!="}, {"age": "10", "operator": ">"}  ]    
}

Response

Pagination data Settlement Report Model

{ "pagination": {
    "returnedRecords": 2,
    "totalRecords": 2
    "isPartialResult": "false"
  },
  "data": [
    {
        "status": "settled",
        "paymentMethod": "Authorize.Net",
        "settlementAmount": "10.21",
        "fee": null,
        "submitDate": "2024-03-27T13:29:07.200Z",
        "settlementDate": "2024-01-04T05:06:18.377Z",
        "transactionNumber": "c7bc37546cf53aa42fa4e2838bbda9cd355e99e680a7715fc4d85dc6",
        "pmTransId": "120012947718",
        "cardType": "MasterCard",
        "settlementCurrency": "USD"
    },
    {
        "status": "expired",
        "paymentMethod": "Authorize.Net",
        "settlementAmount": "12.79",
        "fee": null,
        "submitDate": "2024-03-27T13:29:07.404Z",
        "settlementDate": "2023-12-28T07:40:19.838Z",
        "transactionNumber": "4afa7ca11746f1e9b89ee05b56db6463728752a2a486893a6f44766a",
        "pmTransId": "120012495576",
        "cardType": "MasterCard",
        "settlementCurrency": "USD"
    }
    ]
{
}

Synchronous Payment

Terminal Agent expose synchronous payment request call that reduce the integration time and logics.

Usage Flow:

  1. DeviceId field is not required - Terminal agent will append it automatically

  2. Cancelling the payment request can be done using cancelling the HTTP request from #1

  3. On final result (Approve, timeout or Cancel) - you will get response to this request

Example

URL: http://localhost:8003/api/transactions/init/sync

Request Body:

{
    "amount": 100,
    "timeOut": 500,
    "currency": "USD",
    "isCent": true
} 

Response body:

{
    "TransactionNumber": "1dde6de24cb4b96678517350c075a3e89a4103ed3132b3444ee055ed",
    "date": "2024-04-17T19:50:33.588Z",
    "amount": "1",
    "baseAmount": "1",
    "currency": "USD",
    "status": 5,
    "statusName": "Transaction Approved",
    "timeoutDate": "2024-04-17T19:58:53.820Z",
    "maxInstallments": 1,
    "reason": null,
    "paymentCommit": {
        "messsage": "Please Commit this payment in 7200 seconds",
        "secondsToCommit": 7200,
        "commitLink": "https://api.sandbox.sensepass.com/api/transactions/commitPayment/1dde6de24cb4b96678517350c075a3e89a4103ed3132b3444ee055ed"
    },
    "methodType": 0,
    "businessId": "91878198955101",
    "businessName": "SensePass",
    "pos": "SensePass",
    "businessOwnerPhone": "113654",
    "businessCountry": "USA",
    "businessCity": "A",
    "businessState": "B",
    "businessStreet": "NY",
    "businessAddress": "NY",
    "locale": {
        "language": "en"
    },
    "products": [],
    "productsSum": {
        "allAmountSum": "0.00",
        "allTipSum": "NaN",
        "allVatSum": "0.00",
        "allTotalSum": "0.00",
        "allDiscountSum": "0.00",
        "allDiscountedAmountSum": "0.00"
    },
    "paymentProcessRequestID": "5330731519",
    "confirmation": {
        "approvedBy": "Shift4 Sandbox",
        "dateApproval": "2024-04-17T19:50:44.964Z",
        "approvalDate": "2024-04-17T19:50:44.964Z",
        "paymentType": "Regular",
        "sensePassReferenceId": "d4t9xyubad5geoj1c2yc",
        "paymentMethodName": "Credit Card (Sensepass PCI)",
        "providerId": "bmU4Ip5koVvi8harpkh5WW50BEQj7FpdNJhWkTMEbqQ=",
        "authNumber": null,
        "acquirer": null,
        "voucher": null,
        "referenceNumber": null,
        "requestID": "5330731519",
        "amount": 1,
        "confirmationNumber": "297-OK522Z",
        "fullConfirmationCode": "297-OK522Z",
        "providerName": "Shift4 Sandbox",
        "cardType": "VISA",
        "lastFourDigits": "1111",
        "cardMask": "411111******1111",
        "expiration": "1234",
        "cardExpiration": "1234",
        "installments": 1,
        "paymentMethod": "Credit Card",
        "Credit Card": {
            "cardType": "VISA",
            "lastFourDigits": "1111",
            "mask": "411111******1111",
            "expiration": "1234"
        },
        "extraDetails": {
            "email": null
        }
    },
    "confirmationNumber": "297-OK522Z",
    "confirmations": [
        {
            "approvedBy": "Shift4 Sandbox",
            "dateApproval": "2024-04-17T19:50:44.964Z",
            "approvalDate": "2024-04-17T19:50:44.964Z",
            "paymentType": "Regular",
            "sensePassReferenceId": "d4t9xyubad5geoj1c2yc",
            "paymentMethodName": "Credit Card (Sensepass PCI)",
            "providerId": "bmU4Ip5koVvi8harpkh5WW50BEQj7FpdNJhWkTMEbqQ=",
            "authNumber": null,
            "acquirer": null,
            "voucher": null,
            "referenceNumber": null,
            "requestID": "5330731519",
            "amount": 1,
            "confirmationNumber": "297-OK522Z",
            "fullConfirmationCode": "297-OK522Z",
            "providerName": "Shift4 Sandbox",
            "cardType": "VISA",
            "lastFourDigits": "1111",
            "cardMask": "411111******1111",
            "expiration": "1234",
            "cardExpiration": "1234",
            "installments": 1,
            "paymentMethod": "Credit Card",
            "Credit Card": {
                "cardType": "VISA",
                "lastFourDigits": "1111",
                "mask": "411111******1111",
                "expiration": "1234"
            },
            "extraDetails": {
                "email": null
            }
        }
    ],
    "balance": 1,
    "paymentMethodImages": {},
    "clientPhoneNumber": null,
    "clientEmail": null
}

Get Last Transaction Status

in event of error or closed connection, you can use this API to fetch the current status of the last transaction created.

Usage Flow:

  1. Call GET request to: http://localhost:8003/api/transactions/last Without any request payload

  2. DeviceId field is not required - Terminal agent will append it automatically

Example

URL: http://localhost:8003/api/transactions/last

Response body:

{
    "TransactionNumber": "1dde6de24cb4b96678517350c075a3e89a4103ed3132b3444ee055ed",
    "date": "2024-04-17T19:50:33.588Z",
    "amount": "1",
    "baseAmount": "1",
    "currency": "USD",
    "status": 5,
    "statusName": "Transaction Approved",
    "timeoutDate": "2024-04-17T19:58:53.820Z",
    "maxInstallments": 1,
    "reason": null,
    "paymentCommit": {
        "messsage": "Please Commit this payment in 7200 seconds",
        "secondsToCommit": 7200,
        "commitLink": "https://api.sandbox.sensepass.com/api/transactions/commitPayment/1dde6de24cb4b96678517350c075a3e89a4103ed3132b3444ee055ed"
    },
    "methodType": 0,
    "businessId": "91878198955101",
    "businessName": "SensePass",
    "pos": "SensePass",
    "businessOwnerPhone": "113654",
    "businessCountry": "USA",
    "businessCity": "A",
    "businessState": "B",
    "businessStreet": "NY",
    "businessAddress": "NY",
    "locale": {
        "language": "en"
    },
    "products": [],
    "productsSum": {
        "allAmountSum": "0.00",
        "allTipSum": "NaN",
        "allVatSum": "0.00",
        "allTotalSum": "0.00",
        "allDiscountSum": "0.00",
        "allDiscountedAmountSum": "0.00"
    },
    "paymentProcessRequestID": "5330731519",
    "confirmation": {
        "approvedBy": "Shift4 Sandbox",
        "dateApproval": "2024-04-17T19:50:44.964Z",
        "approvalDate": "2024-04-17T19:50:44.964Z",
        "paymentType": "Regular",
        "sensePassReferenceId": "d4t9xyubad5geoj1c2yc",
        "paymentMethodName": "Credit Card (Sensepass PCI)",
        "providerId": "bmU4Ip5koVvi8harpkh5WW50BEQj7FpdNJhWkTMEbqQ=",
        "authNumber": null,
        "acquirer": null,
        "voucher": null,
        "referenceNumber": null,
        "requestID": "5330731519",
        "amount": 1,
        "confirmationNumber": "297-OK522Z",
        "fullConfirmationCode": "297-OK522Z",
        "providerName": "Shift4 Sandbox",
        "cardType": "VISA",
        "lastFourDigits": "1111",
        "cardMask": "411111******1111",
        "expiration": "1234",
        "cardExpiration": "1234",
        "installments": 1,
        "paymentMethod": "Credit Card",
        "Credit Card": {
            "cardType": "VISA",
            "lastFourDigits": "1111",
            "mask": "411111******1111",
            "expiration": "1234"
        },
        "extraDetails": {
            "email": null
        }
    },
    "confirmationNumber": "297-OK522Z",
    "confirmations": [
        {
            "approvedBy": "Shift4 Sandbox",
            "dateApproval": "2024-04-17T19:50:44.964Z",
            "approvalDate": "2024-04-17T19:50:44.964Z",
            "paymentType": "Regular",
            "sensePassReferenceId": "d4t9xyubad5geoj1c2yc",
            "paymentMethodName": "Credit Card (Sensepass PCI)",
            "providerId": "bmU4Ip5koVvi8harpkh5WW50BEQj7FpdNJhWkTMEbqQ=",
            "authNumber": null,
            "acquirer": null,
            "voucher": null,
            "referenceNumber": null,
            "requestID": "5330731519",
            "amount": 1,
            "confirmationNumber": "297-OK522Z",
            "fullConfirmationCode": "297-OK522Z",
            "providerName": "Shift4 Sandbox",
            "cardType": "VISA",
            "lastFourDigits": "1111",
            "cardMask": "411111******1111",
            "expiration": "1234",
            "cardExpiration": "1234",
            "installments": 1,
            "paymentMethod": "Credit Card",
            "Credit Card": {
                "cardType": "VISA",
                "lastFourDigits": "1111",
                "mask": "411111******1111",
                "expiration": "1234"
            },
            "extraDetails": {
                "email": null
            }
        }
    ],
    "balance": 1,
    "paymentMethodImages": {},
    "clientPhoneNumber": null,
    "clientEmail": null
}

Socket.IO Websockets

Implement Socket.IO client on your platform and listen to this URL:

Production - https://api.sensepass.com?id=id_<Device_Id>

Sandbox - https://api.sandbox.sensepass.com?id=id_<Device_Id>

Listen to "message" event to get notifcations about the transaction for a specific device.

Call POST request to: Use the same schema as -

Terminal Agent expose an API to recover from network issue while using the,

Reponse will return immediately according to schema

Read here about Socket.IO:

status/paymentMethod/settlementAmount/fee/submitDate/settlementDate/transactionNumber/pmTransId/cardType
'=', '!=', '<', '<=', '>', '>='
http://localhost:8003/api/transactions/init/sync
Create a transaction
Sync payment API
Transaction Status
https://socket.io/docs/

Post Message

Post messsge events are sent to client side using the browser API.

Code example:

const childWindow = document.getElementById('sensepass-iframe').contentWindow;
window.addEventListener('message', message => {
    // Handle message
});

Payload Example - Approved Transaction

{
    "type": "transaction",
    "payload": {
        "transaction": {
            "TransactionNumber": "6736b8abd2faa15d7f4137a64d45e62a486f2fdc5238c5eda3a8bf38",
            "date": "2024-10-22T09:03:26.906Z",
            "amount": "2",
            "baseAmount": "2",
            "currency": "USD",
            "status": 5,
            "statusName": "Transaction Approved",
            "timeoutDate": "2024-10-29T10:03:27.124Z",
            "maxInstallments": 1,
            "reason": null,
            "methodType": 0,
            "businessName": "Barak .inc",
            "pos": "Barak .inc",
            "businessOwnerPhone": "888888",
            "businessCountry": "UNITED STATES",
            "businessCity": "Pan",
            "businessState": "QC",
            "businessStreet": "St.Peter",
            "businessHouseNumber": 5,
            "businessAddress": "Pan, St.Peter 5",
            "businessLocaleName": "IL",
            "branchNumber": "888",
            "products": [],
            "productsSum": {
                "allAmountSum": "0.00",
                "allTipSum": "NaN",
                "allVatSum": "0.00",
                "allTotalSum": "0.00",
                "allDiscountSum": "0.00",
                "allDiscountedAmountSum": "0.00"
            },
            "isNativeApp": false,
            "isSensePassPCI": true,
            "confirmation": {
                "approvedBy": "Klarna Sandbox",
                "dateApproval": "2024-10-22T09:03:44.405Z",
                "approvalDate": "2024-10-22T09:03:44.405Z",
                "paymentType": "Regular",
                "sensePassReferenceId": "2yqrlzxnmddfxjz5gq0l",
                "paymentMethodCode": 26,
                "paymentMethodName": "Klarna",
                "paymentMethodLogo": "https://pay.sandbox.sensepass.com/publicAssets/payment-method/klarna-white.png",
                "providerId": "r2ywtY+rigPVLZj0Bay7Qe+d03tHJk8lEzfdzonj7Hs=",
                "requestID": "2acdcfcb-8c63-4841-8426-cededd311f99",
                "amount": 2,
                "confirmationNumber": "273-2acdcfcb-8c63-4841-8426-cededd311f99",
                "fullConfirmationCode": "273-2acdcfcb-8c63-4841-8426-cededd311f99",
                "cardType": null,
                "lastFourDigits": null,
                "expiration": null,
                "cardExpiration": null,
                "paymentMethod": "Klarna",
                "Klarna": {},
                "extraDetails": {},
                "providerName": "Klarna Sandbox"
            },
            "paymentProcessRequestID": "2acdcfcb-8c63-4841-8426-cededd311f99",
            "confirmationNumber": "273-2acdcfcb-8c63-4841-8426-cededd311f99",
            "confirmations": [
                {
                    "approvedBy": "Klarna Sandbox",
                    "dateApproval": "2024-10-22T09:03:44.405Z",
                    "approvalDate": "2024-10-22T09:03:44.405Z",
                    "paymentType": "Regular",
                    "sensePassReferenceId": "2yqrlzxnmddfxjz5gq0l",
                    "paymentMethodCode": 26,
                    "paymentMethodName": "Klarna",
                    "paymentMethodLogo": "https://pay.sandbox.sensepass.com/publicAssets/payment-method/klarna-white.png",
                    "providerId": "r2ywtY+rigPVLZj0Bay7Qe+d03tHJk8lEzfdzonj7Hs=",
                    "requestID": "2acdcfcb-8c63-4841-8426-cededd311f99",
                    "amount": 2,
                    "confirmationNumber": "273-2acdcfcb-8c63-4841-8426-cededd311f99",
                    "fullConfirmationCode": "273-2acdcfcb-8c63-4841-8426-cededd311f99",
                    "cardType": null,
                    "lastFourDigits": null,
                    "expiration": null,
                    "cardExpiration": null,
                    "paymentMethod": "Klarna",
                    "Klarna": {},
                    "extraDetails": {},
                    "providerName": "Klarna Sandbox"
                }
            ],
            "hasAccountingProcessor": true,
            "balance": 2,
            "clientPhoneNumber": null,
            "clientEmail": null
        }
    }
}

Payload Example - Cancelled Transaction

{
    "type": "transaction",
    "payload": {
        "transaction": {
            "TransactionNumber": "8921dc842847880d08a30e11a4784ffae59933a3674b2dce9e84d00d",
            "date": "2024-10-22T09:04:59.369Z",
            "amount": "5",
            "baseAmount": "5",
            "currency": "USD",
            "status": 9,
            "statusName": "Canceled",
            "timeoutDate": "2024-10-29T10:04:59.617Z",
            "maxInstallments": 1,
            "reason": null,
            "methodType": 0,
            "businessName": "Barak .inc",
            "pos": "Barak .inc",
            "businessOwnerPhone": "888888",
            "businessCountry": "UNITED STATES",
            "businessCity": "Pan",
            "businessState": "QC",
            "businessStreet": "St.Peter",
            "businessHouseNumber": 5,
            "businessAddress": "Pan, St.Peter 5",
            "businessLocaleName": "IL",
            "branchNumber": "888",
            "products": [],
            "productsSum": {
                "allAmountSum": "0.00",
                "allTipSum": "NaN",
                "allVatSum": "0.00",
                "allTotalSum": "0.00",
                "allDiscountSum": "0.00",
                "allDiscountedAmountSum": "0.00"
            },
            "isNativeApp": false,
            "isSensePassPCI": true,
            "clientPhoneNumber": null,
            "clientEmail": null
        }
    }
}

SDK & iFrames

Flow Charts

Payment Flow

The flow chart below describes the typical payment flow for POS and E-commerce.

API Notifications

There are multiple options to get notifications about the transaction status changes:

  1. Callback

  2. Web sockets (Socket.IO)

  3. Post message event on the client side

Notifications Interface

All of the notifications are conforms to Transaction Entity interface.

See the full interface model here:

Notification Example:

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": 1234.56,
  "currency": "ILS",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf",
      "settlement": {
        "status": 2, // 0=processing, 1=pending, 2=done
        "created": "2019-12-19T09:47:59.105Z", // will be updated upon status change
        "confirmation": "091239831" // only exists once status = 2 (done)
      }
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf",
    "settlement": {
      "status": 2, // 0=processing, 1=pending, 2=done
      "created": "2019-12-19T09:47:59.105Z", // will be updated upon status change
      "confirmation": "091239831" // only exists once status = 2 (done)
    }
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}

Transaction Model

API

Embed your website/checkout-page with our payments widget using our web-component or iframe SDK.

Sample App

The SDK exposes a few methods to let you operate the iFrame in various ways.

Script

Security

  1. The frontend uses client ID that does not have permissions to payment except for initalizing the SDK

Using the JS API

Step 1 - Configuration

Create a global variable in your front-end website called SensePassFrontEndSDK.

Set the following configuration for the sandbox or production environment:

const spClient = SensePassFrontEndSDK.config({
   mode: "sandbox", // "sandbox" | "production"
   debug: true, // optional for logs
   visualizer: true, // optional visual logs, requires HTML with id="sensepass-front-end-visualizer"
   clientId: "aee8d2cdc1cb...", // Client ID
   methodType: "manual_capture", // type for the transaction, defaults to "manual_capture", enum: "manual_capture" | "tokenize" | "authorize"
   payButtonId: "my-payment-button" // id for the payment-button (element) the customer will click to start the payment process
});

Create an HTML element with the id sensepass-front-end.

Step 2 - Initiate the iFrame element

Initiate the iframe with the init method:

const sensepass = spClient.init();

You can also handle the SDK client from the global variable, e.g. SensePassFrontEndSDK.init()

  • There is an optional argument for the spClient.init(iframeContainerEl) to let you set the iframe's container-element directly. This is a replacement option for the element by id search for the sensepass-front-end value.

Step 3 - Style the frame dimensions (optional)

You can skip this implementation when using version 1.1.0 (beta)

Use the method frameDimensions to get the iframe's width & height value (in pixels). Assuming you have an element <div id="sensepass-front-end"></div> you may get its iFrame (as its first child element) and apply the following callback's dimensions:

const spFrontEndContainerEl = document.getElementById("sensepass-front-end");
const spFrontEndIframeEl = spFrontEndContainerEl.firstElementChild;
sensepass.frameDimensions((payload: any) => {
   if (payload) {
      const height = payload.height;
      const width = payload.width;
      spFrontEndIframeEl.style.height = `${height}px`;
      spFrontEndIframeEl.style.width = `${width}px`;
   }
});

Step 4 - Listen to callback events

Using the above example, you may hook on to the following callbacks aswell:

const callback = payload => console.log(payload);
sensepass.paymentSelected(callback); // get event for the payment method's selection
sensepass.paying(callback); // get event for the payment method in its paying-process
sensepass.paymentMethodValidationStatus(callback); // if a payment method has a validatable state, always updates you on it.
sensepass.error(callback); // get various error messages for the payment attempts, transaction status and more...

Step 5 - Pay button event

Use the pay method to let the payment method trigger its payment request:

sensepass.pay(callback); // get a JSON of the transaction's final state

billingAddress object is optional

sensepass.pay(callback, 
{ 
    amount: 1099,   //Transaction amount in Cents (10.99 USD)
    currency: "USD",
    billingAddress: { //Optional
	city: "New York",
	email: "john@doe.com",
	firstName: "John",
	lastName: "Doe",
	street: "Baker St",
	state: "NY",
	zipcode: "12345",
	mobilePhone: "123456789",
	country: "US"
    }
});

Step 6 - Commit payment from your backend (Backend verification)

Simulator

JavaScript UI SDK

SensePass Front-end SDK allows front-end websites to control SensePass's wide variety of a payment methods through a simple UI (iFrame).

Supported Payment Methods

  1. Credit Cards

  2. Apple Pay - No integration and authentication is required with Apple

  3. Google Pay - No integration and authentication is required with Google

  4. PayPal

  5. Venmo

  6. ACH

  7. Affirm

  8. Amazon Pay

  9. Bit (IL locale)

SensePass SDK enables you fast integration with all the payment methods listed above without having to whitelist your domain for Apple and Google

SDK Flow

  1. Initiate the SensePass client with your clientId

  2. Listen to SDK events on the front-end

  3. Call sensepass.pay() on form submission on the front-end

  4. On successful callback from the SDK - get the transactionNumber

Security

  1. The frontend uses client ID that does not have permissions to payment except for initalizing the SDK

API

Custom SDK Style

style selected elements & general themes

Customizable themes

When configuring the SDK, you may set the following code as the configuration object:

Download and edit the following themes you wish to style on your own:

  1. Save your themes in a hosting site of your choosing and set their URL in the config JSON.

You can play around with the SDK in

iFrame SDK

Legacy industry standard, using an iframe embedded widget to handle payments SDK.


Add the following SDK and add it to your front-end website's scripts: https://js.sensepass.com/scripts/sensepass-front-end@1.0.9.sdk.js

<html>
<head>
    <script src="" type="application/javascript"></script>
</head>
</html>

SensePass Elements

Latest industry standard of , making our widget native to your web-page. No unnecessary pop-ups, easy-to-handle UI (CSS) & faster load-times thanks to native script caching.


Add the following SDK and add it to your front-end website's scripts: https://js.sensepass.com/scripts/sensepass-front-end@1.1.0.sdk.js

<html>
<head>
    <script src="" type="application/javascript"></script>
</head>
</html>

The backend uses device ID / Merchant API Key / Branch API key for calling the

Pay button event - For manual capture transaction type -

Sandbox playground:

Production playground:

Add the SensePass's javascript SDK to your website's scripts ().

Call from your backend to the API /transactions/:transactionNumber/commit with the transactionNumber to capture the payment, see for further details

The backend uses device ID / Merchant API Key / Branch API key for calling the

See the

Customizing is possible only in the initial step of the configuration of SensePass's SDK client. If unfimiliar with the configuration step, refer to the step.

Material theme:

SensePass theme:

Use the to set you custom text and other UI configurations.

You may test your themes on our playground:

SensePass's Front-end Playground website
web-components
commit API
see our docs here
See full details here
https://js.sandbox.sensepass.com
https://js.sensepass.com
Front-end SDK
Commit Transaction
See here full the SDK API Flow
commit API
API Page
const spClient = SensePassFrontEndSDK.config({
   mode: "sandbox", // "sandbox" | "production"
   debug: true, // optional for logs
   visualizer: true, // optional visual logs, requires HTML with id="sensepass-front-end-visualizer"
   clientId: 'aee8d2cdc1cb...', // a SensePass's "clientId"
   methodType: "manual_capture", // type for the transaction, defaults to "manual_capture", enum: "manual_capture" | "tokenize"
   theme: { // optional theme for various packages
	/** angular material provides extensive documentation on customizing their theme
	* you can find it at: https://material.angular.io/guide/theming */
	material: "https://pay.sandbox.sensepass.com/publicAssets/themes/custom-sample-material.theme.css", // sample for a customized material theme
	sensepassEcommerce: "https://pay.sandbox.sensepass.com/publicAssets/themes/custom-sample-ecommerce.theme.css", // sample for a customized sensepass theme
	paymentMethodGrid: "horizontal", // horizontal | vertical style of the payment options
	config: {} // a configuration object for specific payment methods text/animations
   }
})
SDK Theme Config Model

Authentication

Multiple authentication options are available, based on your use case:

POS

Authentication fields: deviceId

Only one field is required for authentication - deviceId, this field represents the unique identifier of the POS in SensePass network.

Device ID can be generated using the "match" API (Pairing) or using SensePass Partner platform.

E-Commerce Location API key

Authentication fields: apiKey

Location API key identifies the merchant and the location, Location API key is the recommended option for e-commerce.

E-Commerce Merchant API key (Deprecated)

Authentication fields: apiKey + branchNumber

Merchant API key requires branchId field to be provided.

Creating Authentication Keys

All of the keys types can be generated using our API or using or Partners Dashboard:

  1. Location API key: Developer -> Branch API -> New

  2. Merchant API Key: Developer -> Merchant API -> New

  3. Device Id: POS/Register -> New

Examples

DeviceId Authentication

URL: /transactions/init

Request Body:

{
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm"
}

Merchant API Key Authentication

URL: /transactions/init

Request Body:

{
  "apiKey": "hjfkf942tiwgkf4w89253rhfgdjnkkf9823qrndcsg",
  "branchNumber": "12"
}

Location API Key Authentication

URL: /transactions/init

Request Body:

{
  "apiKey": "hg8t9wwtgehdfjk394oitrjgknfgfknglfsfs43213vbnhf"
}
Config
https://pay.sandbox.sensepass.com/publicAssets/themes/material.theme.css
https://pay.sandbox.sensepass.com/publicAssets/themes/ecommerce.theme.css
See Authenticating page for examples

POS (In-Store)

SensePass currently supports 20 POS systems and we continue to add more POS to our network.

  • Microsoft Dynamics 365 (D365)

  • Microsoft Dynamics 365 Business Central (D365 Business Central)

  • RMH

  • RMH iPOS

  • Oracle Micros X-Store

  • Oracle Netsuite NSPOS

  • Oracle Netsuite ERP

  • Oracle Netsuite SCIS

  • VRP

  • Lightspeed R (previously Vend)

  • Shopify POS

  • Anthology - Student Management

  • Aptos

  • Dimension Computer

  • NCR

  • Prism RBS - POS + MPOS

  • PAR

  • Vela POS

  • SABX POS

  • Storis

Transaction Status Flow

Green and red status are final, further transition to another status is not possible.

https://js.sensepass.com

The flow chart below describes the possible transitions between Transaction status, see "status" field in

#receipt-entity

E-commerce iFrame

E-commerce iFrame is useful for e-commerce website - the website displays the iFrame as part of the checkout page to enable customer to pay with multiple payment methods.

This iFrame enables fast integration to any website with minimal coding and enables you to get SensePass updates and new features seamlessly.

Flows supported

  1. Capture, Authorization and Tokenization payment types

  2. Products summary

  3. Receipt

  4. Invoice

  5. Manual Capture

Supported Payment Methods

Usage

  1. From the create trasnaction API - get the value of transactionPage.consumerPage

Regular display

transactionPage.consumerPage.regular for full size view

Medium display

transactionPage.consumerPage.medium

Medium view without the QR

Small display

transactionPage.consumerPage.small

Smaller view without the QR and without the header

Receipts Model

This model represents all the required data for receipt handlind once the transaction is approved.

There are 3 possible options available for the POS/E-Commerce platform:

  1. Sensepass generate the receipt using the #receipt-info-entity model, the receipt will be presented to the consumer and to saved in SensePass Merchant dashboard

  2. POS generates the receipt and will send it to SensePass on transaction approved, the receipt will be presented to the consumer and to saved in SensePass Merchant dashboard

  3. No receipt handling is required

Multiple options can be selected in the same location and merchant, these options are in the transaction level.

Receipt Model

This model is referenced in "receipt" field of #creating-new-transaction request body

field
type
description

mode

number

1 (GenerateReceipt) = generates a receipt using the given configuration. 2 (POSProvidesReceipt) = pos is responsible to send the receipts to the provided endpoint after the transation/'s creation. 3 (NoReceipt) = does not generate any receipt. null/undefined = a null/undefined value will default the receipt configuration from its branch definition.

accountingProvider

number

accounting service provider for the receipts to be processed, required if mode is "1" (GenerateReceipt), "2" (POSProvidesReceipt) or a null value. 1 (Rivhit) 2 (ICount) 3 (QuickBook) 4 (SensePass) 5 (Priority)

receiptInfo

object

Receipt Info Model

Receipt info model is referenced in "receiptInfo" field of #receipt-entity

field
type
description

customerId

string

example: 123456789

firstName

string

example: John

lastName

string

example: Doe

address

string

example: 144 Begin Dw

city

string

example: Tel Aviv

zipCode

string

example: 90745

socialID

string

example: 123456789

phoneNumber

string

example: 2124567890

languageCode

string

[ he, en, ru ]

currencyCode

string

[ ILS, USD, EUR, RUB ]

email

string

example: john@doe.com

discount

number

example: 0

vat

boolean

example: true

Receipt Notifications Model

This model represents the recipients that will receive receipt by email and SMS.

Receipt notifications model is referenced in "receiptNotifications" field of Creating a new transaction object (Payment Request) request body

field
type
description

email

array

example:

sms

array

example:

POS iFrame

POS iFrame allows the POS platform to show an iFrame that contains multiple flows with a single API call, without implementing multiple API's for each flow.

Flows supported

  1. Cancel transaction

  2. Send SMS message to consumer

  3. Manual credit card number entry

  4. QR display for consumer scanning

  5. Timeout logics

  6. SensePass Tag pairing

Usage

  1. From the create transaction API - get the value of transactionPage.merchantPage.POS

Example:

3. Show in the POS an iFrame with the URL

JS post message events,

Callback events,

Socket.IO events,

All SensePass payment methods,

Please see

See receipt info object entity:

4. to be notified about approval, timeout and errors

["a@example.com"]
["9295522135"]
see here the full list
Create a transaction
our full documentation and examples for e-commerce iFrame
see our docs here
see our docs here
see our docs here
{
    "TransactionNumber": "5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a",
    "date": "2023-01-15T15:54:10.736Z",
    "amount": "12",
    "baseAmount": "12",
    "currency": "ILS",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2023-01-15T16:04:11.141Z",
    "methodType": 0,
    "businessId": "1",
    "businessName": "SensePass IL",
    "pos": "SensePass IL",
    "businessOwnerPhone": "0505555555",
    "businessCountry": "Israel",
    "businessCity": "Tel Aviv",
    "businessState": "misisipi",
    "businessStreet": "Menachem Begin",
    "businessAddress": "Tel Aviv, Menachem Begin 0",
    "branchNumber": "144",
    "branchId": "144",
    "branch": {
        "number": "144"
    },
    "receiptPending": true,
    "productSumMismatch": true,
    "paymentMethodData": {
        "PaymentType": "Bit",
        "directAppLinks": {
            "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a",
            "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a",
            "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a"
        }
    },
    "transactionPage": {
        "consumerPage": {
            "regular": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a",
            "medium": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a?viewMode=medium",
            "small": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a?viewMode=small"
        },
        "merchantPage": {
            "creditCard": {
                "small": "https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a?viewMode=small",
                "regular": "https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a"
            },
            "POS": {
                "regular": "https://pos.sandbox.sensepass.com?mode=transaction&transactionEventId=961ddd23-8c30-4f01-850c-dc19348a48ff-7d792564-ec08-4ae0-83b0-86d4841be055"
            }
        }
    }
}
#receipt-info-entity
Create a transaction
Listen to transaction status events
#invoice-entity
Invoice Model
Invoice Model
#invoice-entity
#invoice-entity

Invoice Model

This model represents the URL of the invoice, the invoice will be presented to the consumer before the payment processing.

Invoice Model

This model referenced in "invoice" field of request body.

field
type
description

type

string

File extension name [ pdf, jpg, png ]

url

string

example: http://someDomain.com/invoice1.pdf

#creating-new-transaction
Product Model
Product Model
Product Model

SDK Theme Config Model

customize payment method's texts and other UI parameters

This model represents all the required data for displaying data on the SensePass Dashboard backoffice.

You must use this structure:

{
  "creditCard": {
    "animation": "expand" | "one-line" | "none",
    "customText": {
      "direction": "rtl" | "ltr",
      "fields": {
        "cardNumber": {
          "label": "Card Number",
          "placeholder": "Credit Card",
          "hint": "Digits",
          "defaultHint": "Full Card Number",
          "errors": {
            "required": "Card Number is Mandatory",
            "cardTypeLength": {
              "minLengthStart": "Must be Over",
              "minLengthEnd": "Digits",
              "maxLengthStart": "Must be Under",
              "maxLengthEnd": "Digits",
              "lengthsStart": "Must be:",
              "lengthsSplit": "or",
              "lengthsEnd": "Digits"
            }
          }
        },
        "expiration": {
          "label": "Expiration",
          "placeholder": "Month / Year",
          "hint": "MM/YY",
          "errors": {
            "required": "Expiration Date is Mandatory",
            "cardExpiration": {
              "invalidDateFormat": "Date Invalid, Should Be MM/YY",
              "monthRange": "Month Should Be Between 1 - 12",
              "yearExpiration": "The Year You've Set Expired",
              "monthExpiration": "The Month You've Set Expired This Year"
            }
          }
        },
        "securityCode": {
          "label": "CVV",
          "placeholder": "CVV/CVC",
          "hint": {
            "amex": "digits, front of the card",
            "default": "digits, back of the card"
          },
          "defaultHint": "Security Code",
          "errors": {
            "required": "CVC is Mandatory",
            "securityCodeLength": {
              "lengthShouldBe": "must be",
              "digits": "digits"
            }
          }
        },
        "socialID": {
          "label": "Document ID",
          "placeholder": "Document ID",
          "hint": "Document ID",
          "errors": {
            "required": "Document ID is Mandatory",
            "minlength": "5 Digits Minimum",
            "maxlength": "20 Digits Maximum"
          }
        },
        "zipCode": {
          "label": "Zip Code",
          "placeholder": "Zip Code",
          "hint": "address associated to your card",
          "errors": {
            "required": "Zip Code is Mandatory",
            "minlength": "0 Digits Minimum",
            "maxlength": "9 Digits Maximum"
          }
        },
        "email": {
          "label": "Email",
          "placeholder": "John@domain.com",
          "hint": "Email",
          "errors": {
            "required": "Email is Mandatory",
            "minlength": "5 Characters Minimum",
            "maxlength": "50 Characters Maximum"
          }
        },
        "mobilePhone": {
          "label": "Mobile Phone",
          "placeholder": "000-000-0000",
          "hint": "Mobile Phone",
          "errors": {
            "required": "Mobile Phone is Mandatory",
            "minlength": "6 Digits Minimum",
            "maxlength": "15 Digits Maximum"
          }
        },
        "installments": "Installments",
        "fullName": {
          "label": "Full Name",
          "placeholder": "Full Name",
          "hint": "First & Last names",
          "errors": {
            "required": "Full Name is Mandatory",
            "pattern": "Full Name must ONLY be letters",
            "minlength": "4 Characters Minimum",
            "maxlength": "50 Characters Maximum"
          }
        },
        "saveCard": {
          "label": "Save this card"
        }
      }
    }
  }
}

Description of the parameters required for various payment options configurations.

field
type
description

creditCard

object

credit card ui-data orientation

creditCard.animation

enum

options for animating the selected payment method display:w "expand" / "one-line" / "none"

creditCard.customText

object

credit card's customizable texts

creditCard.customText.direction

enum

options for the text direction: "ltr" | "rtl". (left-to-right / right-to-left)

creditCard.customText.fields

object

credit card fields with options to edit their text. keep in mind to handle various languages.

creditCard.customText.fields[MODEL_FIELD]

model

Basic Payment Request

Basic request example to create a new transaction.

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm",
  "returnURL": "https://merchantDomain.com/thankYouPage",
  "cancelURL": "https://merchantDomain.com/cart",
  "callbackURL": "https://merchantDomain.com/sensepass/callbackEndPoint"
}

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

apiKey*

string

Unique API provided by SensePass, unique for each location of your merchant

returnURL

string

URL to redirect consumer after Success or Error

cancelURL

string

URL to redirect consumer on cancel event from consumer

callbackURL

string

URL to Callback API - SensePass will call this API with full Transaction Entity for every status change about this transaction

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

SDK Credit Card Field Model

customize credit card texts

This model represents all the required data for customizing the text for the SDK's credit card form field.

{
  "cardNumber": {
    "label": "Card Number",
    "placeholder": "Credit Card",
    "hint": "Digits",
    "defaultHint": "Full Card Number",
    "errors": {
      "required": "Card Number is Mandatory",
      "cardTypeLength": {
        "minLengthStart": "Must be Over",
        "minLengthEnd": "Digits",
        "maxLengthStart": "Must be Under",
        "maxLengthEnd": "Digits",
        "lengthsStart": "Must be:",
        "lengthsSplit": "or",
        "lengthsEnd": "Digits"
      }
    }
  },
  "expiration": {
    "label": "Expiration",
    "placeholder": "Month / Year",
    "hint": "MM/YY",
    "errors": {
      "required": "Expiration Date is Mandatory",
      "cardExpiration": {
        "invalidDateFormat": "Date Invalid, Should Be MM/YY",
        "monthRange": "Month Should Be Between 1 - 12",
        "yearExpiration": "The Year You've Set Expired",
        "monthExpiration": "The Month You've Set Expired This Year"
      }
    }
  },
  "securityCode": {
    "label": "CVV",
    "placeholder": "CVV/CVC",
    "hint": {
      "amex": "digits, front of the card",
      "default": "digits, back of the card"
    },
    "defaultHint": "Security Code",
    "errors": {
      "required": "CVC is Mandatory",
      "securityCodeLength": {
        "lengthShouldBe": "must be",
        "digits": "digits"
      }
    }
  },
  "socialID": {
    "label": "Document ID",
    "placeholder": "Document ID",
    "hint": "Document ID",
    "errors": {
      "required": "Document ID is Mandatory",
      "minlength": "5 Digits Minimum",
      "maxlength": "20 Digits Maximum"
    }
  },
  "zipCode": {
    "label": "Zip Code",
    "placeholder": "Zip Code",
    "hint": "address associated to your card",
    "errors": {
      "required": "Zip Code is Mandatory",
      "minlength": "0 Digits Minimum",
      "maxlength": "9 Digits Maximum"
    }
  },
  "email": {
    "label": "Email",
    "placeholder": "John@domain.com",
    "hint": "Email",
    "errors": {
      "required": "Email is Mandatory",
      "minlength": "5 Characters Minimum",
      "maxlength": "50 Characters Maximum"
    }
  },
  "mobilePhone": {
    "label": "Mobile Phone",
    "placeholder": "000-000-0000",
    "hint": "Mobile Phone",
    "errors": {
      "required": "Mobile Phone is Mandatory",
      "minlength": "6 Digits Minimum",
      "maxlength": "15 Digits Maximum"
    }
  },
  "installments": "Installments",
  "fullName": {
    "label": "Full Name",
    "placeholder": "Full Name",
    "hint": "First & Last names",
    "errors": {
      "required": "Full Name is Mandatory",
      "pattern": "Full Name must ONLY be letters",
      "minlength": "4 Characters Minimum",
      "maxlength": "50 Characters Maximum"
    }
  },
  "saveCard": {
    "label": "Save this card"
  }
}

Description of the parameters required for various payment options configurations.

field
type
description

label

string

label of the field

placeholder

string

placeholder while the field is empty

hint

string | object

hint for the field's use

defaultHint

string

hint to default before user interaction

errors

object

mapping the display-keys of various errors

errors.required

string

required field error message

errors.minlength

string

minimum character length error message

errors.maxlength

string

maximum character length error message

Field specific parameters.

field
type
description

securityCode.hint.amex

string

hint for Amex's 4 digits once the credit card field detects an amex-type-card

securityCode.hint.default

string

hint for every card's 3 digits, that is not detected as Amex

cardNumber.errors.cardTypeLength

object

specific object keys to build an error message to clarify the credit card's length:

expiration.errors.cardExpiration

object

securityCode.errors.securityCodeLength

object

Callback/Webhook

Adding callback URL using "callbackURL" field to request body enables you to get POST request from SensePass on any transaction update events.

In event of communication error from SensePass to your server - SensePass will retry multiple times to call your server will the callback URL over a period of days.

Make sure the URL provided in "callbackURL" is fully accessible from the internet and does not contain local IP or private DNS.

SensePass IP's are dynamic - Limiting your endpoint to specific IP address is not possible.

Simple request example to create new transaction with callback URL data.

URL: /transactions/init

Request Body:

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Security - HMAC Signature

HMAC (Hash-based Message Authentication Code) signature authentication for callbacks is a security mechanism used to ensure the integrity and authenticity of a message between two systems.

This authentication logic will enables you to verify that the callback API call was originated by SensePass.

HMAC Verification steps:

  1. Extract "HMAC-Random-Key" header from the callback API request

  2. Concat the header from #1 to the request body

  3. Perform HMAC 256 calculation with the concatenated string and using your secret HMAC key

  4. Compare the result from #3 against the value of the request header "HMAC-Authorization"

Retries

Our system expects for 200-299 status code as an indication for a successful callback handling.

Failure to get these status codes triggers retries logic of 6 attempts with these intervals:

  1. 15 seconds

  2. 60 seconds

  3. 120 seconds

  4. 600 seconds

  5. 2000 seconds

  6. 32000 seconds

Callbacks with GET method

By default all the callbacks are sent with JSON body and POST method, it is possible to choose GET method callback without request body.

Callback with GET method will be sent with TransactionNumber as query param.

URL: /transactions/init

Request Body for GET callbacks:

This API call will be sent to this URL:

https://google.com/callback/api/callback?TransactionNumber=573942fsdqe90342k304242&callbackType=transaction_status

Product Model

This model represent the full details about the items in the ticket including sub-products.

Product Model

Metadata Model

This model represents all the required data for displaying data on the SensePass Dashboard backoffice.

You must use this structure:

Metadata Model

field model for editting a credit card form field text .

See Transactions entity schema:

It is required to implement a POST endpoint on your server based on the same interface as

Name
Type
Description

See Transactions entity schema:

This model referenced in "products" field of request body

field
type
description

This model is referenced in "metadata" parameter of request body

field
type
description
"minLengthStart": "Must be Over",
"minLengthEnd": "Digits",
"maxLengthStart": "Must be Under",
"maxLengthEnd": "Digits",
"lengthsStart": "Must be:",
"lengthsSplit": "or",
"lengthsEnd": "Digits"
"invalidDateFormat": "Date Invalid, Should Be MM/YY",
"monthRange": "Month Should Be Between 1 - 12",
"yearExpiration": "The Year You've Set Expired",
"monthExpiration": "The Month You've Set Expired This Year"
"lengthShouldBe": "must be",
"digits": "digits"
{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "callbackURL": "https://google.com/callback/api/callback"
}

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

deviceId

string

Terminal unique device ID provided by SensePass (For Device based Transactions) - Required if apiKey is empty

callbackURL

string

URL to your POST endpoint

Interface: #get-transaction-object-by-transaction-number

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": 1234.56,
  "currency": "ILS",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}
{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "callbackURL": "https://google.com/callback/api/callback",
  "callbackMethod": "GET"
}

name

string

example: Coca-Colla

Name of the product

quantity

number

example: 100

Quantity of products

amount

number

example: 3499

Amount/Cost of a single product

discount

number

example: 3499

Discount amount of a signle product

vat

number

example: 100

VAT (Value Added Tax) / Tax, not percentage-based, of a signle product

posIdentifier

string

example: 1234A

POS Identifier for this product

itemNumber

number

example: 0

Receipt ID - Required for receipt generation

productUrl

string

example: https://your-store.com/products/1234

Product URL

productImageUrl

string

example: https://your-store.com/products/images/main.png

Product Image URL

subProducts

objects

Same as Product Entity: #product-entity

// metadata must be an array of objects with key-value pairs
"metadata": [
    {
        // mandatory static key-value - do not change this
        "key": "genericDisplay",
        // array of your sections
        "value": [
            {
                // your title for the section
                "sectionLabel": "Hello world",
                "values": [
                    {
                        "label": "Foo",
                        "value": "Bar"
                    },
                    ...// the rest of the label-value object pairs
                ]
            },
            ...// the rest of the sectionLabel-values object pairs
        ]
    }
]

metadata

array

must contain array of key-value pairs

metadata[0].key

string

must be genericDisplay

metadata[0].value

array

must be array or sectionLabel-values pairs

metadata[0].value[0].sectionLabel

string

title to display in the SensePass dashboard's transaction information

metadata[0].value[0].values

array

must be array of label-value pairs. example: {"label": "foo", "value": "bar"}

SDK Credit Card Field Model
#get-transaction-object-by-transaction-number
#creating-new-transaction
#creating-new-transaction

Payment Commit Model

Payment commit is a mechanisim that allows SensePass to get acknowledgement from the POS or e-commerce website that the settlement event identified and processed by the POS or e-commerce website.

This entity will be included in #transaction-entity only for "Approved" status (settlement).

You are required to parse this entity and check whether the flag "isPaymentCommitted" (see below) is "true", in this case call "commitLink" URL with GET method, without any additional headers or query params.

Calling this API will mark the transaction as "Payment Committed".

Payment Commit Model

This model is referenced in "paymentCommit" field of #transaction-entity response body

field
type
description

message

string

example: Payment commit is enabled for this transaction

Human readable message about the status of the payment commit

isPaymentCommitted

boolean

example: false

Flag indicating whether the commit is performed

secondsToCommit

number

example: 60

Remaining time in seconds to commit this payment

commitLink

string

example: https://api.sensepass.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf

URL of the API to call in GET method in order to mark this transaction as payment committed

Payment Details Model

This model represent the payment details as an input for creating a transaction.

Payment Details Model

This model referenced in "paymentDetails" field of #creating-new-transaction request body

field
type
description

creditCard

Object

Credit Card information

Credit Card Model

field
Required
type
description

cardNumber

string

example: 4580111111111111

Credit Card Number

expiration

string

example: 12/34 Credit card expiration MM/YY

cvv

string

example: 123 Credit card CVV

socialId

string

example: 123456782 Card holder social ID (IL only)

cardHolderZipCode

string

example: 09231 Card holder ZIP code

cardHolderBillingAddress

string

example: Paul and Mary Moore, 1313 E Main St, Portage Card holder billing street address

#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
#transaction-entity
Transaction Model
#transaction-entity
#transaction-entity

Transaction Page Model

This model represents the required data to redirect the consumer to the transaction page to complete the payment.

Transaction Page Model

This model referenced in "transactionPage" field of #transaction-entity response body.

field
type
description

qrURL

string

example: https://pay.sensepass.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872

SensePass unique Transaction Page - Responsive page for desktop and mobile

iOSLink

Deprecated

Deprecated

androidLink

Deprecated

Deprecated

Subscription Model

This model represents subscription method type & its related data for a new transaction creation.

Subscription Model

This model is referenced in the "subscription" field of the Transaction Model object.

Note: Subscription will create recurring payments for the transaction sum accornding to its set interval, due date (which increments with each interval) and expiration date (which stops the subscription).

field
type
required
default
example
description

interval

enum

false

"1month"

"14day", "1month", "1year"

Increment value for the due date of the payment

dueDate

date

false

null

2023-01-01T12:00:00Z

Designated date for which a payment attempt be made

expiration

date

false

null

2024-01-01T12:00:00Z

Available on status = 2 (done)

SMS Payment Request

SMS Payment Request enables you to send a payment request to a consumer remotely, without asking the consumer any confidential information like credit card number.

The SMS message will be sent from SensePass servers, all of the countries globally are supported.

For delivery status - See "SMS" field in #transaction-entity

Request Body:

{
  "timeOut": 600,
  "amount": 5500,
  "isCent": true,
  "currency": "USD",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm",
  "returnURL": "https://merchantDomain.com/thankYouPage",
  "cancelURL": "https://merchantDomain.com/cart",
  "callbackURL": "https://merchantDomain.com/sensepass/callbackEndPoint",
  "clientPhoneNumber": "+155555551234"
}

Customizing message format

Full customization of the SMS message including variables can be done using "customSmsText" field in the "/transactions/init" API.

Request Body:

{
  "timeOut": 600,
  "amount": 5500,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "clientPhoneNumber": "+155555551234",
  "customSmsText": "%%businessName%% asks you for %%amount%%"
}

Available variables:

  1. businessName: Merchant name

  2. locationName: Location name

  3. amount: Transaction amount including currency

  4. link: Full URL to payment request page

  5. reason: Reason field of the transaction

  6. expiration: Transaction expiration date formatted

Using variables:

Add %% before and after the name of the variable.

Examples:

  1. %%businessName%% asks you to pay

  2. Hi, you got payment request from %%businessName%%, %%locationName%% of %%amount%% - %%reason%%. Please click here to pay: %%link%%

Creating a new transaction object (Payment Request)

POST /transactions/init

This API creates new payment request based on the fields below.

Request Body

Name
Type
Description

amount*

number

The required amount for this transaction (Cents).

If products are a part of the transaction - they are all summed up & calculated via the following formula:

(amount + vat - discount) * quantity e.g. (10 + 1.7 - 1) * 2.

isCent

boolean

Determines if Amount represents in cents or not

timeOut

number

Time until the transaction will be timed out (seconds)

currency*

string

[ USD, CAD, ILS, EUR, RUB ]

apiKey*

string

Unique API provided by SensePass, unique for each location of your merchant

clientPhoneNumber

string

SMS message will be sent to this consumer number for SMS payment

returnURL

string

URL to redirect consumer after Success or Error

cancelURL

string

URL to redirect consumer on cancel event from consumer

callbackURL

string

URL to Callback API - SensePass will call this API with full Transaction Entity for every status change about this transaction

See Transactions entity schema: #transaction-entity

{
  "TransactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "date": "2019-12-19T09:47:59.105Z",
  "amount": "1234.56",
  "currency": "USD",
  "status": 0,
  "statusName": "Transaction Approved",
  "pos": "POS 3, Branch Tel Aviv",
  "posReceiptsEndpoint": "http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj",
  "posData": {
    "foo": "bar",
    "hello": [
      "world"
    ]
  },
  "businessName": "Coffee Bar",
  "businessId": 144,
  "timeoutDate": "2019-12-19T09:47:59.105Z",
  "paymentMethodData": {
    "PaymentType": "Bit",
    "directAppLinks": {
      "iOSLink": "paymentsBIT://www.bitpay.co.il/app/bitcom-info",
      "androidLink": "intent://www.bitpay.co.il/app/bitcom-info;scheme=bit;package=com.bnhp.payments.paymentsapp;end",
      "qrURL": "https://www.bitpay.co.il/app/bitcom-info"
    }
  },
  "SMS": "Sent",
  "paymentCommit": {
    "messsage": "Payment commit is enabled for this transaction",
    "isPaymentCommitted": false,
    "secondsToCommit": 60,
    "commitLink": "https://pay.sensepass-api.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf"
  },
  "products": [
    {
      "name": "Coffee",
      "quantity": 2,
      "amount": 100,
      "discount": 0,
      "posIdentifier": "1234A"
    },
    {
      "name": "Beer",
      "quantity": 1,
      "amount": 600,
      "discount": 0,
      "posIdentifier": "1234B"
    }
  ],
  "productSumMismatch": true,
  "confirmations": [
    {
      "paymentType": "Regular",
      "confirmationNumber": "063-d9j09YsY1",
      "fullConfirmationCode": "063-d9j09YsY1",
      "dateApproval": "2019-12-19T09:47:59.105Z",
      "installments": 1,
      "paymentMethodName": "PayPal",
      "approvedBy": "PayPal",
      "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
      "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
      "authNumber": "123213dsf13111",
      "referenceNumber": "1778298289",
      "acquirer": "Visa",
      "voucher": "yyyAbnlmlfm1323",
      "lastFourDigits": "8858",
      "sensePassReferenceId": "34e209ea8b24cc831cf"
    }
  ],
  "confirmation": {
    "paymentType": "Regular",
    "confirmationNumber": "063-d9j09YsY1",
    "fullConfirmationCode": "063-d9j09YsY1",
    "dateApproval": "2019-12-19T09:47:59.105Z",
    "installments": 1,
    "paymentMethodName": "PayPal",
    "approvedBy": "PayPal",
    "providerId": "uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=",
    "requestID": "a4dbf66e-d3f1-4a29-baf7-2591424a9a0c",
    "authNumber": "123213dsf13111",
    "referenceNumber": "1778298289",
    "acquirer": "Visa",
    "voucher": "yyyAbnlmlfm1323",
    "lastFourDigits": "8858",
    "sensePassReferenceId": "34e209ea8b24cc831cf"
  },
  "transactionPage": {
    "iOSLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "androidLink": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872",
    "qrURL": "https://mbeta.sensepass-api.com/orderSummary/027e4e48d59fdbe83f5a78cab62a53c676b7f111fa9d0ee0a36d1872"
  },
  "balance": 0
}
{
    // Response
}
{
    // Response
}

Update a subscription

Update the subscription item to pause, resume or cancel its due payments.

Subscription with status canceled can't be updated.

Status

These are the available values for the status parameter in the request body.

status
description

active

default value that sets the subscription to active status

paused

pauses the subscription untill set back to active

canceled

canceles the subscription indefinitly

Only one header key is required for the request in the example below

Update subscription's status

PATCH https://api.sensepass.com/api/subscription/:subscriptionUid

available status values are: active, paused, canceled

Path Parameters

Name
Type
Description

subscriptionUid

string

bf8b7e01-466d-4996-b9a2-fc0880923359.

Headers

Name
Type
Description

deviceId*

string

2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm

branchApiKey*

string

mQzMLLSpqjRZfWBgQcAej5Dus7HHvmRsSsrN6FYoeWWUAehm3RjD596pZb9gfrxx4jQOP2MCQgoLaaU9SAdlzVsWnR63ZETqALpn

merchantApiKey*

string

xvRKKxOWAYbTH2yKQLlzkta2eovvkzlzTW98NcA9KVfwrOF22GA7bBOHHAeooQrmKelv0TU3Q7c8wiJgTQweKCbXR5ohC6JtCygJ

Request Body

Name
Type
Description

status*

string

active,paused,canceled

Refer to the Subscritption entity at Subscription Model for additional information.

Confirmation Model

This model represents settlement data from the proccessor and SensePass, the entity contains all the required data for accounting reports.

Confirmation Model

This model is referenced in "confirmations" field of #transaction-entity response body.

Note: Multiple confirmations objects can be related to one transaction, for example after a refund or in a split payment scenario.

field
type
description

confirmationNumber

string

example: 063-d9j09YsY1

Reference ID of the settlement

dateApproval

date

example: 2019-12-19T09:47:59.105Z

Settlement Date

paymentMethodName

string

example: PayPal

Payment Provider Name

approvedBy

string

example: PayPal

Payment Acquirer

providerId

string

example: uGfNuwEGiP18SUnTUEo1/atTdesDnhDhZ/8i7G9NAEg=

Payment Provider ID

requestID

string

example: a4dbf66e-d3f1-4a29-baf7-2591424a9a0c

Provider's Request ID

referenceNumber

string

example: 1778298289

Provider's Payment Reference Number

authNumber

string

example: 123213dsf13111

Provider's Payment Authorization Number

(For credit cards only)

acquirer

string

example: Visa

Provider's Payment Acquirer (For credit cards only)

voucher

string

example: AX09421

Provider's Payment Voucher (For credit cards only)

lastFourDigits

string

example: 8858

Credit Card Last 4 Digits (For credit cards only)

cardExpiration

string

example: 01/26 MM/YY Credit card expiration date (For credit cards only)

installments

number

example: 1

Payment Installments

sensePassReferenceId

string

example: 34e209ea8b24cc831cf

SensePass ReferenceId ID

settlement

object

Subscription callbacks

SensePass sends callbacks about any change regarding subscription item.

Callback Structure

  1. "parentTransaction" field was added for subscriptions, this field represents the orginal subscription transaction information

Callback example

{
    "TransactionNumber": "926868c423s1f582de89c1fa3b43ad7de2bb745c17f27d5d30c37e65",
    "date": "2024-05-05T14:45:29.673Z",
    "amount": "10",
    "baseAmount": "10",
    "currency": "USD",
    "status": 5,
    "statusName": "Transaction Approved",
    "timeoutDate": "2024-05-05T14:46:27.536Z",
    "maxInstallments": 1,
    "reason": null,
    "methodType": 0,
    "businessId": "715288992006428",
    "businessName": "Merchant Name",
    "pos": "Merchant",
    "businessOwnerPhone": "4233434789342",
    "businessCountry": "United States",
    "businessCity": "NY",
    "businessState": "NY",
    "businessStreet": "14 Ave.",
    "businessAddress": "NY",
    "businessLocaleName": "USA",
    "branchNumber": "1",
    "branchId": "1",
    "branch": {
        "number": "1",
        "rules": {}
    },
    "locale": {
        "name": "USA",
        "currency": "USD",
        "timezone": "America/New_York",
        "timezoneNumber": "-5",
        "phoneNumberPrefix": "1",
        "countryIso": "US",
        "language": "en"
    },
    "metadata": {
        "receiptMode": "3",
        "receiptSaveUid": "975d3b8c-3c08-4dfc-a4f6-8b077f75164e"
    },
    "products": [],
    "productsSum": {
        "allAmountSum": "0.00",
        "allTipSum": "NaN",
        "allVatSum": "0.00",
        "allTotalSum": "0.00",
        "allDiscountSum": "0.00",
        "allDiscountedAmountSum": "0.00"
    },
    "parentTransaction": {
        "TransactionNumber": "ff836e3fe344e4566483f9bd242fe62bb8d04fdfed3cc2c68f3ccc9f",
        "date": "2024-03-18T21:00:34.554Z",
        "amount": "178390",
        "baseAmount": "10",
        "currency": "USD",
        "status": 5,
        "statusName": "Transaction Approved",
        "timeoutDate": "2024-03-18T21:02:34.623Z",
        "maxInstallments": 1,
        "reason": null,
        "methodType": 5,
        "locale": {
            "language": "en"
        },
        "subscription": {
            "id": "3e8101b7-4aac-4578-acbb-fd4f2e328a98",
            "active": true,
            "created": "2024-03-18T21:00:34.595Z",
            "updated": "2024-05-05T14:45:27.536Z",
            "expires": null,
            "count": 18461,
            "failure": 333,
            "success": 18127,
            "start_date": "2024-05-01T10:45:00.000Z",
            "interval": "1minute",
            "intervalObj": {
                "amount": 1,
                "unit": "minute"
            },
            "status": "active",
            "customer": {}
        },
        "paymentProcessRequestID": "ec36e27f-4945-4607-8088-eaa75927cb76",
        "paymentMethodImages": {}
    },
    "paymentProcessRequestID": "10186870604",
    "confirmation": {
        "approvedBy": "Cardknox Sandbox",
        "dateApproval": "2024-05-05T14:45:30.767Z",
        "approvalDate": "2024-05-05T14:45:30.767Z",
        "paymentType": "Regular",
        "sensePassReferenceId": "rv3t47ofka376obsrhyd",
        "paymentMethodCode": 25,
        "paymentMethodName": "Credit Card (Sensepass PCI)",
        "paymentMethodLogo": "https://pay.sandbox.sensepass.com/publicAssets/payment-method/cardknox.png",
        "providerId": "6wMjGG7cJ5KPTvzLOXKTIJjwdREImIsJGNpmGckfBiU=",
        "requestID": "10186870604",
        "amount": 10,
        "confirmationNumber": "174-69844A",
        "fullConfirmationCode": "174-69844A",
        "providerName": "Cardknox Sandbox",
        "cardType": "VISA",
        "lastFourDigits": "1111",
        "cardMask": "444433******1111",
        "expiration": "0127",
        "cardExpiration": "0127",
        "paymentMethod": "Credit Card",
        "Credit Card": {
            "cardType": "VISA",
            "lastFourDigits": "1111",
            "mask": "444433******1111",
            "expiration": "0127"
        },
        "extraDetails": {
            "email": null
        }
    },
    "confirmationNumber": "174-69844A",
    "confirmations": [
        {
            "approvedBy": "Cardknox Sandbox",
            "dateApproval": "2024-05-05T14:45:30.767Z",
            "approvalDate": "2024-05-05T14:45:30.767Z",
            "paymentType": "Regular",
            "sensePassReferenceId": "rv3t47ofka376obsrhyd",
            "paymentMethodCode": 25,
            "paymentMethodName": "Credit Card (Sensepass PCI)",
            "paymentMethodLogo": "https://pay.sandbox.sensepass.com/publicAssets/payment-method/cardknox.png",
            "providerId": "6wMjGG7cJ5KPTvzLOXKTIJjwdREImIsJGNpmGckfBiU=",
            "requestID": "10186870604",
            "amount": 10,
            "confirmationNumber": "174-69844A",
            "fullConfirmationCode": "174-69844A",
            "providerName": "Cardknox Sandbox",
            "cardType": "VISA",
            "lastFourDigits": "1111",
            "cardMask": "444433******1111",
            "expiration": "0127",
            "cardExpiration": "0127",
            "paymentMethod": "Credit Card",
            "Credit Card": {
                "cardType": "VISA",
                "lastFourDigits": "1111",
                "mask": "444433******1111",
                "expiration": "0127"
            },
            "extraDetails": {
                "email": null
            }
        }
    ],
    "balance": 10,
    "clientPhoneNumber": null,
    "clientEmail": null,
    "callbackType": "transaction_status"
}

Transaction Model

Transaction Model

This model is referenced in the response of #creating-new-transaction

field
type
description

TransactionNumber

string

example: 14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c

The transaction number of the new transaction created

date

date

example: 2019-12-19T09:47:59.105Z

Creation date of this transaction entity

amount

string

example: "1234.56"

Amount of this this transaction entity

currency

string

[ USD, CAD, ILS, EUR, RUB ]

status

number

Current transaction Status of this transaction: * Initialize (0) - New Transaction * TapDetected (1) - At least one user tapped his mobile device * UserApproved (2) - A user approved the payment details for this transaction, the transaction not approved yet * UserDeclined (3) - A user declined the payment details for this transaction, it's not a final status, waiting for other users to approve * ProccessingPayment (4) - SensePass GW proccessing the payment using the providers and waiting for approval * TransactionApproved (5) - SensePass GW approved this transaction, confirmation Data will be sent using Web Socket messaging service * TransactionDeclined (6) - SensePass GW decline this transaction according to provider decision * TransactionFailed (7) - Transaction Failed * TransactionTimeout (8) - Transaction Timeout * TransactionCancel (9) - Transaction Cancel * WaitingForTap (10) - Waiting For Tap * TransactionRefund (11) - Transaction Refund * TransactionProcessingRefund (12) - Transaction Processing Refund * TransactionPartiallyRefunded (13) - Transaction Partially Refunded

* Transaction Setup (14) - Transaction not ready for Payment (before update)

statusName

string

example: Transaction Approved

Friendly Status Description

pos

string

example: POS 3, Branch Tel Aviv

The terminal name associated for this transaction

posReceiptsEndpoint

string

example: http://pay.sensepass-api.com/api/invoicesReceipts/receipt/save/hofai3478o8o78o4s849j3920ckj

The endpoint for the pos's receipts to be handled by the selected mode in the transaction's creation

posData

objects

businessName

string

example: Coffee Bar

The business name associated for this terminal

businessId

number

example: 144

The business ID associated to this terminal

timeoutDate

date

example: 2019-12-19T09:47:59.105Z Timeout date for this transaction

SMS

string

paymentCommit

object

products

object

productSumMismatch

boolean

Informs if the sum of all products are not equal to the transaction's amount

confirmations

object

transactionPage

object

confirmation

Deprecated

Deprecated field

paymentMethodData

Deprecated

Deprecated field

subscription

object

parentTransaction

object

additionalData

object

SOAP and XML

All of our API's are organized around REST, accepts JSON request body and JSON response.

We also provide SOAP and XML Adapters for our REST API, using the same interface and entities.

The adapters are dynamic and will support all our future releases and endpoints.

SOAP Adapter

Settlement Model

This model represents settlement status & final-confrimation value from the proccessor, the entity contains all the required data for accounting reports.

Settlement Model

Note: One settlement object can be related to each confirmation in a transaction.

Settlements are polled by SensePass, therefore a callback/socket-message will be fired once its asserted as complete (status = 2)

Additional Data Model

This model represents additional data that can be sent to the processor, currently only used by Klarna.

Example

Basic example of "additionalData" object sent in the Transactions/Init request body

Customer Input Model

Payment Commit

Payment commit is a mechanisim that allows SensePass to get acknowledgement from the POS or e-commerce website that the payment approval event identified and processed by the POS or e-commerce website.

This entity will be included in transaction-entity only for "Approved" status.

You are required to parse this entity and check whether the flag "isPaymentCommitted" (see below) is "true", in this case call "commitLink" URL with GET method, without any additional headers or query params. Calling this API will mark the transaction as "Payment Committed".

Payment Commit Model

This model is referenced in "paymentCommit" field of transaction-entity response body

Terminal Agent

Terminal Agent is a SensePass software designed to connect platforms to SensePass network with a range of EMV pinpads and to simplify the integration process, allowing for quick setup and deployment.

Terminal Agent also works as a proxy to all SensePass cloud API describes in this portal.

In addition, Terminal agent allows you to use specific API's created for the Terminal Agent software to reduce the integration time.

Advantages:

  1. Pairing of tags and EMV devices is already implemented

    Terminal Agent handles the pairing process for all types of terminals and tags using SensePass UI

  2. Storing API keys, Device ID's and EMV ID's is already implemented

    Terminal Agent stores all the credentials and authentication keys and append them automatically to all of your requests

  3. Implementing Web-sockets or Callback endpoint is already implemented

  4. Integrating using Terminal Agent enables you to support new features and releases without any change on your end

    Most of the new features that will be released to our API will be available to you seamlessly by updating the Terminal Agent software on the POS, without having to change one line of code on your platform

  5. Integration with the Cancel API is already implemented

  6. Realtime product update already implemented for EMV Pinpad and SensePass tags Terminal Agent detects product update API calls and creates a "Setup" transaction with the product information, once the POS is ready to accept a payment - an "Init" call should be sent as usual without any additional params. Terminal Agent detects the relation between the previous "Setup" transaction and makes all the API calls transparently.

  7. Terminal Agent software is already certified by SensePass

    Integration using Terminal Agent reduces most of the certifcation process for your platform

System Requirements: Operating System: Compatible with Windows 7, 8, 10, and newer versions.

Synchronous payment request

Terminal Agent expose synchronous payment request call that reduce the integration time and logics.

Usage Flow:

  1. DeviceId field is not required - Terminal agent will append it automatically

  2. Cancelling the payment request can be done using cancelling the HTTP request from #1

  3. On final result (Approve, timeout or Cancel) - you will get response to this request

Last Transaction Status

in event of error or closed connection, you can use this API to fetch the current status of the last transaction created.

Usage Flow:

  1. Call GET request to: http://localhost:8003/api/transactions/last Without any request payload

  2. DeviceId field is not required - Terminal agent will append it automatically

Terminal Agent Key Features

  • Reduces the intergation time: Pairing, cancelling request and working with websockets logics are already embeded inside terminal agent

  • Compatibility with Various Pinpads: Terminal Agent supports a wide array of EMV pinpad models and manufacturers, enhancing its utility in diverse environments.

  • Easy Integration: Designed for effortless setup, enabling quick deployment across multiple terminals.

  • Real-time Monitoring: Ensures continuous operation with live monitoring capabilities.

  • Automatic Updates: Keeps the system up-to-date with the latest features and security patches without manual intervention.

For delivery status - See "SMS" field in

subscription ID received from the response

The callback endpoint can be configured using "callbackURL" field on of subscriptions.

Main model structure is identical to

"parentTransaction.subscription" field was added with the subscription object, according to

Any data (object/array/string/number etc...) received in "posData" field in

SMS delivery status, see "clientPhoneNumber" field in

See payment commit object entity:

See product object entity:

See confirmation object entity:

See transaction page entity:

see subscription object entity:

parent transaction with method type: Subscription/Authorization/Tokenization.

Any additional data that may be sent to the processor

This model is referenced in the "settlement" field of the object.

field
type
description

Currently the data passed in the Additional Data Model is sent to klarna as EMD (extra merchant data), as of now, we support the passing of the following fields: "other_delivery_address" and "trip_reservation_details", the data can be seen also in the Klarna docs here:

This model is referenced in "inputs" field of request body

field
type
required
description
Name
Type
Description

Terminal Agent internal logic works with Socket.IO websockets securely, according to SensePass interface and returns to your platform

Terminal Agent detects the cancel event of the HTTP request for and calls internally to the "Cancel" API in order to revoke the pending payment request

Call POST request to: Use the same schema as -

Terminal Agent expose an API to recover from network issue while using the,

Reponse will return immediately according to schema

"Init" API
transaction status model
Subscription Model

status

enum

example: 2 1 = approved, 2 = settled Successful state of a settlement polling attempt

confirmation

string

example: 091239831

Final confirmation value from the processor for the transaction

created

date

example: 2019-12-20T09:47:59.105Z

Available on status = 2 (done)

"additionalData": {
    "trip_reservation_details": {
        "min_age": 18,
        "max_age": 60
    },
    "other_delivery_address": {
        "shipping_method": "store pick-up",
        "shipping_type": "normal"
    }
}

type

string

true

email, shipping_address, first_name, last_name, postal_code, phone, text, boolean

minimumLength

integer

false

example: 2

maximumLength

integer

false

example: 5

question

string

true

example: Please input email address

acceptText

string

false

Relevant for type=boolean, Label of the accept button

rejectText

string

false

Relevant for type=boolean, Label of the reject button

message

string

example: Payment commit is enabled for this transaction

Human readable message about the status of the payment commit

isPaymentCommitted

boolean

example: false

Flag indicating whether the commit is performed

secondsToCommit

number

example: 60

Remaining time in seconds to commit this payment

commitLink

string

example: https://api.sensepass.com/api/transactions/commitPayment/ec2dc489d161aa27a803f48bcf5ffcf

URL of the API to call in GET method in order to mark this transaction as payment committed

Settlement Model
Subscription Model
Additional Data Model
Confirmation Model
Customer Input
#transaction-entity
Transaction Model
#creating-new-transaction
#creating-new-transaction
#payment-commit-entity
#product-entity
Confirmation Model
Transaction Page Model

XML

The interaces are identical to our exisitng REST interfaces.

Endpoints

API URL: https://api.sensepass.com/api-xml/

API URL: https://api.sandbox.sensepass.com/api-xml/

Example for Creating a new transaciton

URL: https://api.sandbox.sensepass.com/api-xml/transactions/init

Method: POST

Request Body

<?xml version="1.0" encoding="ISO-8859-1"?>
<data>
    <amount>7000</amount>
    <timeOut>500</timeOut>
    <currency>USD</currency>
    <isCent>true</isCent>
    <deviceId>Your-Device-ID</deviceId>
    <products>
        <name>Product1</name>
        <quantity>1</quantity>
        <amount>3500</amount>
        <discount>0</discount>
    </products>
    <products>
        <name>Product2</name>
        <quantity>1</quantity>
        <amount>3500</amount>
        <discount>0</discount>
    </products>
</data>

Response Body

<root>
    <TransactionNumber>2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2</TransactionNumber>
    <date>2024-05-16T12:56:11.765Z</date>
    <amount>70</amount>
    <baseAmount>70</baseAmount>
    <currency>USD</currency>
    <status>0</status>
    <statusName>Initialize</statusName>
    <timeoutDate>2024-05-16T13:04:31.914Z</timeoutDate>
    <paymentCommit>
        <messsage>Payment commit is enabled for this transaction</messsage>
    </paymentCommit>
    <methodType>0</methodType>
    <businessId>127438685431131</businessId>
    <businessName>SensePass</businessName>
    <pos>POS 1</pos>
    <businessOwnerPhone>09852133</businessOwnerPhone>
    <businessCountry>USA</businessCountry>
    <businessCity>AA</businessCity>
    <businessState>NY</businessState>
    <businessStreet>14th</businessStreet>
    <businessHouseNumber>12</businessHouseNumber>
    <businessAddress>NY</businessAddress>
    <businessLocaleName>USA</businessLocaleName>
    <branchNumber>3</branchNumber>
    <branchId>3</branchId>
    <branch>
        <number>3</number>
    </branch>
    <locale>
        <name>Canada</name>
        <currency>CAD</currency>
        <timezone>Canada/Eastern</timezone>
        <timezoneNumber>-5</timezoneNumber>
        <phoneNumberPrefix>1</phoneNumberPrefix>
        <countryIso>CA</countryIso>
        <language>en</language>
    </locale>
    <products>
        <name>Product1</name>
        <amount>35</amount>
        <discount>0</discount>
        <discountedAmount>35</discountedAmount>
        <vat>0</vat>
        <quantity>1</quantity>
        <total>35</total>
    </products>
    <products>
        <name>Product2</name>
        <amount>35</amount>
        <discount>0</discount>
        <discountedAmount>35</discountedAmount>
        <vat>0</vat>
        <quantity>1</quantity>
        <total>35</total>
    </products>
    <productsSum>
        <allAmountSum>70.00</allAmountSum>
        <allTipSum>NaN</allTipSum>
        <allVatSum>0.00</allVatSum>
        <allTotalSum>70.00</allTotalSum>
        <allDiscountSum>0.00</allDiscountSum>
        <allDiscountedAmountSum>70.00</allDiscountedAmountSum>
    </productsSum>
    <paymentMethodImages/>
    <transactionPage>
        <qrURL>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2</qrURL>
        <consumerPage>
            <description>Consumer Payment Page</description>
            <regular>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2</regular>
            <medium>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?viewMode=medium</medium>
            <small>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?viewMode=small</small>
        </consumerPage>
        <merchantPage>
            <creditCard>
                <description>Credit Card iFrame for consumer payment</description>
                <small>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</small>
                <regular>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</regular>
                <default>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</default>
            </creditCard>
            <paymentPage>
                <description>Payment Page for associate payment - The Payment details will not be saved</description>
                <regular>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?oneTime=true</regular>
                <medium>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?viewMode=medium&amp;oneTime=true</medium>
                <small>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?viewMode=small&amp;oneTime=true</small>
            </paymentPage>
            <POS>
                <description>POS iFrame for merchants</description>
                <regular>https://pos.sandbox.sensepass.com?mode=transaction&amp;transactionEventId=8cb3ce3c-7518-4ec4-8643-3d5fe04f466e-0a493dde-7e7c-4f6f-aabc-1b3d148a3156</regular>
            </POS>
        </merchantPage>
    </transactionPage>
    <paymentMethodData>
        <PaymentType>Bit</PaymentType>
        <directAppLinks>
            <iOSLink>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f73e4379d9e90179f92ec60cd589267a104eb2</iOSLink>
            <androidLink>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f73e4379d9e90179f92ec60cd589267a104eb2</androidLink>
            <qrURL>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f73e4379d9e90179f92ec60cd589267a104eb2</qrURL>
        </directAppLinks>
    </paymentMethodData>
</root>

Example for Fetching Transaction Status

URL: https://api.sandbox.sensepass.com/api-xml/transactions/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2

Method: GET

Request Body

<?xml version="1.0" encoding="ISO-8859-1"?>
<data>
    <deviceId>Your-Device-ID</deviceId>
</data>

Response Body

<root>
    <TransactionNumber>2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2</TransactionNumber>
    <date>2024-05-16T12:56:11.765Z</date>
    <amount>70</amount>
    <baseAmount>70</baseAmount>
    <currency>USD</currency>
    <status>0</status>
    <statusName>Initialize</statusName>
    <timeoutDate>2024-05-16T13:04:31.914Z</timeoutDate>
    <maxInstallments>1</maxInstallments>
    <reason/>
    <methodType>0</methodType>
    <businessId>127438685431131</businessId>
    <businessName>SensePass</businessName>
    <pos>POS 1</pos>
    <businessOwnerPhone>09852133</businessOwnerPhone>
    <businessCountry>USA</businessCountry>
    <businessCity>AA</businessCity>
    <businessState>NY</businessState>
    <businessStreet>14th</businessStreet>
    <businessHouseNumber>12</businessHouseNumber>
    <businessAddress>NY</businessAddress>
    <businessLocaleName>USA</businessLocaleName>
    <locale>
        <language>en</language>
    </locale>
    <products>
        <name>Product1</name>
        <description/>
        <productType>0</productType>
        <amount>35</amount>
        <posIdentifier/>
        <discount>0</discount>
        <discountedAmount>35</discountedAmount>
        <vat>0</vat>
        <quantity>1</quantity>
        <total>35</total>
    </products>
    <products>
        <name>Product2</name>
        <description/>
        <productType>0</productType>
        <amount>35</amount>
        <posIdentifier/>
        <discount>0</discount>
        <discountedAmount>35</discountedAmount>
        <vat>0</vat>
        <quantity>1</quantity>
        <total>35</total>
    </products>
    <productsSum>
        <allAmountSum>70.00</allAmountSum>
        <allTipSum>NaN</allTipSum>
        <allVatSum>0.00</allVatSum>
        <allTotalSum>70.00</allTotalSum>
        <allDiscountSum>0.00</allDiscountSum>
        <allDiscountedAmountSum>70.00</allDiscountedAmountSum>
    </productsSum>
    <paymentMethodImages/>
    <clientPhoneNumber/>
    <clientEmail/>
    <transactionPage>
        <merchantPage>
            <creditCard>
                <small>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</small>
                <regular>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</regular>
                <default>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</default>
            </creditCard>
        </merchantPage>
    </transactionPage>
</root>
Create a Transaction
Docs about our SOAP Adapter
https://docs.klarna.com/api/extra-merchant-data/
synchronous response
Synchronous Payment API
http://localhost:8003/api/transactions/init/sync
Create a transaction
See full docs about sync payment request
Sync payment API
Transaction Status
See full docs about last transaction status API

Customer Shipping/Billing Details Model

This model represents customer shipping/billing details that the merchant/platform shares with SensePass in order for SensePass to send this information to the payment methods to simplify the payment flows without having the consumer to type this information.

Shipping/Billing Model

field
type
description

title

string

Customer’s Title

given_name

string

Customer's given name

family_name

string

Customer's family name

email

string

Customer’s email address

country

string

Customer’s country

city

string

Customer’s city

street_address

string

Customer’s street address

street_address2

string

Customer’s street address. Second Line.

phone

string

Phone number. Preferably a mobile phone number.

postal_code

string

Customer’s postal code. Validation according to Universal Postal Union addressing systems.

region

string

Customer’s region or state - Mandatory for US and AU market. Validations according to ISO 3166-2 format, e.g. OH, NJ, etc.

Partner API

See our Partner API documentation here:

Testing

Credit Cards

All of these credit cards works with any future expiration and CVV.

PayPal

Venmo

Please use your real Venmo account - you won't be charge in SensePass sandbox environment.

Trustly

  1. Tap on Trustly button in the payment page

  2. Search for "Demo" and choose any demo bank

  3. Type any user and passoword

  4. Click Pay

ACH

Sezzle

Klarna

Alipay

  1. Tap on Alipay button in the payment page

  2. Choose "No" - the app does not installed

  3. Enter any phone number in the second field and click on the blue button

  4. Click again on the blue button to confirm

  5. Enter any 6 digits

  6. Click on the red circle on the top right corner

Affirm

Phone Number - 9106064853

OTP - 123456

Sepa (Nuvei)

Italy Iban - DE86120300001019407863

Germany IBAN - DE89370400440532013000

Mercad Pago (d.local)

Mexico and Chile

Username - TESTQWG1JLOB

Email - test_user_68912416@testuser.com

Argentina (Direct)

Username - TESTUSER1254153477

Password - iFzPp6HFxV

Email - test_user_1254153477@testuser.com

OTP - 680627

Cardknox AVS

All of the above credit cards works with these AVS values.

Zipcode
Street

11111

111

111111111

111

11111

999

111111111

999

99999

111

Pairing

Configuration

  1. Double click on "SensePass Configurator" icon on your desktop, if you can't find it - open your browser with this URL: http://localhost:3031

Make sure you are using Chrome or Edge with the latest version installed

  1. This screen will be shown:

Location - Choose the current location for your POS, adding locations to this list can be performed using the Partners platform

EMV - Choose the required pinpad type

POS Name - friendly name for the POS that will be shown in the merhcnat dashboard to recognize your payments

Pairing Code - the (XXX-XXX-XXX) code that is shown below the QR code on the SensePass tag

Click on the "Continue" button and close the window after the succesful pairing message presented.

All set !

SOAP

The adapter converts SOAP requests to JSON body, send it to our existing API and converts back the JSON response to SOAP envelope.

Our SOAP adapter is dynamic and will support all our future releases and endpoints.

The interaces are identical to our exisitng REST interfaces.

Endpoints

API URL: https://api.sensepass.com/api-soap/

API URL: https://api.sandbox.sensepass.com/api-soap/

Example for Creating a new transaciton

URL: https://api.sandbox.sensepass.com/api-soap/transactions/init

Method: POST

Request Body

Response Body

Example for Fetching Transaction Status

URL: https://api.sandbox.sensepass.com/api-soap/transactions/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2

Method: GET

Request Body

Response Body

This model is referenced in the "billingAddress" field and "shippingAddress" field of the .

Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
Brand
Number
Comments
User
Password
Routing Number
Accounting Number
Accounting Name
Card Number
Mobile
OTP Code
PIN
Expiration
CVV
Name
Address
Mobile
OTP

Amex

370000000000002

Amex

370276000431054

Amount should be higher than $10

Discover

6011000000000012

Discover

6011208703331119

Amount should be higher than $10

JCB

3088000000000017

Diners Club / Carte Blanche

38000000000006

VISA

4007000000027

VISA

4012888818888

VISA

4111-1111-1111-1111

VISA

4444-3333-2222-1111

Amount should be higher than $10

MasterCard

5424000000000015

MasterCard

2223000010309703

MasterCard

2223000010309711

MasterCard

5454545454545454

Amount should be higher than $10

sb-4ckmy3035527@personal.example.com

Jt17!9DX

056008849

123456789

Any

4242424242424242

(929) 552-3221

123123

2605

Any

Any

Any

Any

US - 5712657204 IT - 393339741231 UK - 4408082580300 DE - 4901761428434

Enter any value

Creating a transaction
https://app.swaggerhub.com/apis-docs/SensePass3/Partners-API/1.1.3
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <SensePass>
            <amount>7000</amount>
            <timeOut>500</timeOut>
            <currency>USD</currency>
            <isCent>true</isCent>
            <deviceId>Your-Device-ID</deviceId>
            <products>
                <name>Product1</name>
                <quantity>1</quantity>
                <amount>3500</amount>
                <discount>0</discount>
            </products>
            <products>
                <name>Product2</name>
                <quantity>1</quantity>
                <amount>3500</amount>
                <discount>0</discount>
            </products>
        </SensePass>
    </soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <SensePass>
            <TransactionNumber>2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2</TransactionNumber>
            <date>2024-05-16T12:56:11.765Z</date>
            <amount>70</amount>
            <baseAmount>70</baseAmount>
            <currency>USD</currency>
            <status>0</status>
            <statusName>Initialize</statusName>
            <timeoutDate>2024-05-16T13:04:31.914Z</timeoutDate>
            <paymentCommit>
                <messsage>Payment commit is enabled for this transaction</messsage>
            </paymentCommit>
            <methodType>0</methodType>
            <businessId>127438685431131</businessId>
            <businessName>SensePass</businessName>
            <pos>POS 1</pos>
            <businessOwnerPhone>09852133</businessOwnerPhone>
            <businessCountry>USA</businessCountry>
            <businessCity>AA</businessCity>
            <businessState>NY</businessState>
            <businessStreet>14th</businessStreet>
            <businessHouseNumber>12</businessHouseNumber>
            <businessAddress>NY</businessAddress>
            <businessLocaleName>USA</businessLocaleName>
            <branchNumber>3</branchNumber>
            <branchId>3</branchId>
            <branch>
                <number>3</number>
            </branch>
            <locale>
                <name>Canada</name>
                <currency>CAD</currency>
                <timezone>Canada/Eastern</timezone>
                <timezoneNumber>-5</timezoneNumber>
                <phoneNumberPrefix>1</phoneNumberPrefix>
                <countryIso>CA</countryIso>
                <language>en</language>
            </locale>
            <products>
                <name>Product1</name>
                <amount>35</amount>
                <discount>0</discount>
                <discountedAmount>35</discountedAmount>
                <vat>0</vat>
                <quantity>1</quantity>
                <total>35</total>
            </products>
            <products>
                <name>Product2</name>
                <amount>35</amount>
                <discount>0</discount>
                <discountedAmount>35</discountedAmount>
                <vat>0</vat>
                <quantity>1</quantity>
                <total>35</total>
            </products>
            <productsSum>
                <allAmountSum>70.00</allAmountSum>
                <allTipSum>NaN</allTipSum>
                <allVatSum>0.00</allVatSum>
                <allTotalSum>70.00</allTotalSum>
                <allDiscountSum>0.00</allDiscountSum>
                <allDiscountedAmountSum>70.00</allDiscountedAmountSum>
            </productsSum>
            <paymentMethodImages/>
            <transactionPage>
                <qrURL>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2</qrURL>
                <consumerPage>
                    <description>Consumer Payment Page</description>
                    <regular>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2</regular>
                    <medium>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?viewMode=medium</medium>
                    <small>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?viewMode=small</small>
                </consumerPage>
                <merchantPage>
                    <creditCard>
                        <description>Credit Card iFrame for consumer payment</description>
                        <small>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</small>
                        <regular>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</regular>
                        <default>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</default>
                    </creditCard>
                    <paymentPage>
                        <description>Payment Page for associate payment - The Payment details will not be saved</description>
                        <regular>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?oneTime=true</regular>
                        <medium>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?viewMode=medium&amp;oneTime=true</medium>
                        <small>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?viewMode=small&amp;oneTime=true</small>
                    </paymentPage>
                    <POS>
                        <description>POS iFrame for merchants</description>
                        <regular>https://pos.sandbox.sensepass.com?mode=transaction&amp;transactionEventId=8cb3ce3c-7518-4ec4-8643-3d5fe04f466e-0a493dde-7e7c-4f6f-aabc-1b3d148a3156</regular>
                    </POS>
                </merchantPage>
            </transactionPage>
            <paymentMethodData>
                <PaymentType>Bit</PaymentType>
                <directAppLinks>
                    <iOSLink>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f73e4379d9e90179f92ec60cd589267a104eb2</iOSLink>
                    <androidLink>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f73e4379d9e90179f92ec60cd589267a104eb2</androidLink>
                    <qrURL>https://pay.sandbox.sensepass.com/orderSummary/2214cd9462fc815935f73e4379d9e90179f92ec60cd589267a104eb2</qrURL>
                </directAppLinks>
            </paymentMethodData>
        </SensePass>
    </soap:Body>
</soap:Envelope>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <SensePass>
            <deviceId>Your-Device-ID</deviceId>
        </SensePass>
    </soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <SensePass>
            <TransactionNumber>2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2</TransactionNumber>
            <date>2024-05-16T12:56:11.765Z</date>
            <amount>70</amount>
            <baseAmount>70</baseAmount>
            <currency>USD</currency>
            <status>0</status>
            <statusName>Initialize</statusName>
            <timeoutDate>2024-05-16T13:04:31.914Z</timeoutDate>
            <maxInstallments>1</maxInstallments>
            <reason/>
            <methodType>0</methodType>
            <businessId>127438685431131</businessId>
            <businessName>SensePass</businessName>
            <pos>POS 1</pos>
            <businessOwnerPhone>09852133</businessOwnerPhone>
            <businessCountry>USA</businessCountry>
            <businessCity>AA</businessCity>
            <businessState>NY</businessState>
            <businessStreet>14th</businessStreet>
            <businessHouseNumber>12</businessHouseNumber>
            <businessAddress>NY</businessAddress>
            <businessLocaleName>USA</businessLocaleName>
            <locale>
                <language>en</language>
            </locale>
            <products>
                <name>Product1</name>
                <description/>
                <productType>0</productType>
                <amount>35</amount>
                <posIdentifier/>
                <discount>0</discount>
                <discountedAmount>35</discountedAmount>
                <vat>0</vat>
                <quantity>1</quantity>
                <total>35</total>
            </products>
            <products>
                <name>Product2</name>
                <description/>
                <productType>0</productType>
                <amount>35</amount>
                <posIdentifier/>
                <discount>0</discount>
                <discountedAmount>35</discountedAmount>
                <vat>0</vat>
                <quantity>1</quantity>
                <total>35</total>
            </products>
            <productsSum>
                <allAmountSum>70.00</allAmountSum>
                <allTipSum>NaN</allTipSum>
                <allVatSum>0.00</allVatSum>
                <allTotalSum>70.00</allTotalSum>
                <allDiscountSum>0.00</allDiscountSum>
                <allDiscountedAmountSum>70.00</allDiscountedAmountSum>
            </productsSum>
            <paymentMethodImages/>
            <clientPhoneNumber/>
            <clientEmail/>
            <transactionPage>
                <merchantPage>
                    <creditCard>
                        <small>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</small>
                        <regular>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</regular>
                        <default>https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/2214cd9462fc815935f43e4379d9e90179f92ec60cd589267a104eb2?component=landing&amp;viewMode=eyJoaWRlU2F2ZUNhcmQiOnRydWV9</default>
                    </creditCard>
                </merchantPage>
            </transactionPage>
        </SensePass>
    </soap:Body>
</soap:Envelope>
LogoIntroduction | Cardknox
Check cardknox documentation for additional information if necessary

Manual Capture (deprecated)

THIS METHOD WILL BE DEPRECATED IN FAVOR OF A NEW ONE

Please refer to Commit Transaction for the new version.

Manual capture allows creating a transaction and call capture request later.

Manual capture is useful for making a payment and updating the payment details later.

Create a Transaction

Call "transactions/init" in order to create a capture request and add the "methodType" field with "manual_capture".

URL: /api/transactions/Init

Request Body:

{
  "timeOut": 600,
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "methodType": "manual_capture"
}

Response body:

{
    "TransactionNumber": "5f3275249792ee75b41322e636617ee039e2e1a49cc80c11f2177233",
    "date": "2022-08-14T10:09:05.810Z",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2022-08-14T10:19:05.872Z",
    "paymentCommit": {
        "messsage": "Payment commit is enabled for this transaction"
    },
    "businessId": "339978940107456",
    "businessName": "Coffee Bar",
    "pos": "POS 1",
    "businessOwnerPhone": "3587292",
    "businessCountry": "US",
    "businessCity": "Virginia Beach",
    "businessStreet": "123 Street",
    "businessAddress": "123 Street, Virginia Beach",
    "branchNumber": "1",
    "branchId": "1",
    "transactionPage": {
        "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233",
        "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5f3275249792ee75b41322e636617ee039e2e1a49cc80c27f2177233"
    },
    "paymentDetails": {
        "type": "ManualCapture"
    }
}

The consumer tap the sticker, or get the payment link through e-mail or SMS, and choose a payment method.

Capture

You may add metadata to the request with the key "metadata", follow Metadata Model for further instructions.

URL: /api/transactions/{transactionNumber}/capture

Request Body:

{
  amount: number; // required
  deviceId: string; // required
  currency: string; // optional: 'USD' | 'ILS' | 'CAD'
  reason: string;
  clientPhoneNumber: string;
  clientName: string;
  clientEmail: string;
  products: ProductEntity[];
}

Here is an example:

{
  "amount": 200,
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm"
}

Response body:

{
    "success": true,
    "transactionNumber": "dff8c53f80b25527666a5935b56fc431d8a68cc82e53234d907103d2",
    "transactionStatus": "TransactionApproved",
    "confirmation": {
        "fullConfirmationCode": "166-60202801955",
        "confirmationNumber": "166-60202801955",
        "approvedBy": "AuthorizeNet Sandbox",
        "providerId": "jDPPZyn8zdGtBcKUP4EbxTfwy62j+JShtQGDlbwx4/c=",
        "dateApproval": "2022-10-20T17:34:31.778Z",
        "approvalDate": "2022-10-20T17:34:31.778Z",
        "paymentMethodName": "Credit Card",
        "lastFourDigits": "1111",
        "cardExpiration": "1234"
    },
    "cardMask": ""
}

The capture request can only be called once, see for multi capture flow.

See here the full docs of

Tokenization flow
creating a transaction

Credit Card iFrame

Credit Card iFrame enables you to display iFrame in your checkout page or in your POS software in order to get sensitive credit card details without having to certify your website or software to PCI.

SensePass are PCI Level 1 certified.

Flows supported

  1. Capture

  2. Tokenization

  3. Authorization

Usage

  1. From the create transaction API - get the value of transactionPage.merchantPage.creditCard.default

Example of Transaction Response

{
    "TransactionNumber": "5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a",
    "date": "2023-01-15T15:54:10.736Z",
    "amount": "12",
    "baseAmount": "12",
    "currency": "ILS",
    "status": 0,
    "statusName": "Initialize",
    "timeoutDate": "2023-01-15T16:04:11.141Z",
    "methodType": 0,
    "businessId": "1",
    "businessName": "SensePass IL",
    "pos": "SensePass IL",
    "businessOwnerPhone": "0505555555",
    "businessCountry": "Israel",
    "businessCity": "Tel Aviv",
    "businessState": "misisipi",
    "businessStreet": "Menachem Begin",
    "businessAddress": "Tel Aviv, Menachem Begin 0",
    "branchNumber": "144",
    "branchId": "144",
    "branch": {
        "number": "144"
    },
    "receiptPending": true,
    "productSumMismatch": true,
    "paymentMethodData": {
        "PaymentType": "Bit",
        "directAppLinks": {
            "iOSLink": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a",
            "androidLink": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a",
            "qrURL": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a"
        }
    },
    "transactionPage": {
        "consumerPage": {
            "regular": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a",
            "medium": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a?viewMode=medium",
            "small": "https://pay.sandbox.sensepass.com/orderSummary/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a?viewMode=small"
        },
        "merchantPage": {
            "creditCard": {
                "small": "https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a?viewMode=small",
                "regular": "https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a",
                "default": "https://api.sandbox.sensepass.com/api/transactions/sensepass-pci/credit-card/5a961cebd09a1c07c76e36d810c4049878de6b7134fcd7e00fa2ed5a?component=landing"
            },
            "POS": {
                "regular": "https://pos.sandbox.sensepass.com?mode=transaction&transactionEventId=961ddd23-8c30-4f01-850c-dc19348a48ff-7d792564-ec08-4ae0-83b0-86d4841be055"
            }
        }
    }
}

Show the page using iFrame and listen for post message events or callback, see here

Create a transaction
Transaction Events docs

Commit Transaction

Backend verification step to complete the payment

This API call must be performed from your backend and not through the JS in the frontend.

Backend verification step to complete the payment

POST https://api.sensepass.com/api/transactions/:transactionNumber/commit

Authentication options:

Device ID / Merchant API Key + Branch Number / Branch API key

Path Parameters

Name
Type
Description

transactionNumber*

String

transaction number of the ready-transaction

"pay" callback from the SDK contains the transaction number for this API call

Request Body

Name
Type
Description

deviceId

String

location's device id - required if no api key

methodType*

Enum

manual_capture or tokenize or authorize

apiKey

String

merchant/location api key

branchNumber

String

required if merchant api key is used.

e.g. 123

callbackURL

String

URL (POST/GET) to receive transaction changes

metadata

Array

currency

String

Defaults to location's locale.

USD | CAD | EUR | ILS (etc)

Required for manual_capture transactions

amount

Amount in cents.

Required for manual_capture or authorize transactions

products

Array

receipt

Object

posData

Object

Any object/array you'd like to receive using the callback URL

{
    "success": true,
    "transactionNumber": "a4e22734c3f0bae26d8b6e422f71a221f3c7b55c8619e4f338c689f9",
    "transactionStatus": "TransactionApproved",
    "paymentDetails": {
        "type": "Tokenize",
        "paymentMethod": "Credit Card",
        "created": "2023-08-21T13:21:06.407Z",
        "token": "nraag50tyb3i7woz4vt76x4drt72ejs9yjgm7ia3xoc8nx3ywpxxtrzk0dgvkw41ozkqhqi6ozlidmj7i37c4th3db08423fz1evpzpcheoplmvbugen5xf9vxn9i2phlk9hviq3me5a4rko0jykcpj7dzj3337uxzrovff8w3orwrag6kq0luyqgpadts53tazllt70guj1kiuibmgh8mw3m0jeunq7bxjf9cdtnksdgat5gfgwm9umgvjb9ddqp"
    },
    "confirmation": {
        "approvedBy": "Cardknox Sandbox",
        "dateApproval": "2023-08-21T13:21:06.434Z",
        "approvalDate": "2023-08-21T13:21:06.434Z",
        "paymentType": "Regular",
        "sensePassReferenceId": "av7e3z4rgqa9jhaqjlqs",
        "paymentMethodCode": 25,
        "paymentMethodName": "Credit Card",
        "paymentMethodLogo": "https://pay.sandbox.sensepass.com/publicAssets/payment-method/cardknox.png",
        "sourceProvider": {
            "name": "Credit Card",
            "code": 1
        },
        "providerId": "6wMjGG7cJ5KPTvzLOXKTIJjwdREImIsJGNpmGckfBiU=",
        "authNumber": "fh7s94jf8s",
        "acquirer": "hfs7048f4",
        "voucher": "hf7s08opdg",
        "referenceNumber": "ajsh795giyd",
        "amount": 0,
        "confirmationNumber": "174-30243A",
        "fullConfirmationCode": "174-30243A",
        "providerName": "Cardknox Sandbox",
        "cardType": "VISA",
        "lastFourDigits": "1111",
        "cardMask": "411111******1111",
        "expiration": "1234",
        "cardExpiration": "1234",
        "installments": 1,
        "paymentMethod": "Credit Card",
        "Credit Card": {
            "cardType": "VISA",
            "lastFourDigits": "1111",
            "mask": "411111******1111",
            "expiration": "1234"
        },
        "extraDetails": {
            "email": "john@doe.org"
        }
    }
}

Example - Manual Capture Response

{
    "success": true,
    "transactionNumber": "a4e22734c3f0bae26d8b6e422f71a221f3c7b55c8619e4f338c689f9",
    "transactionStatus": "TransactionApproved",
    "paymentDetails": {
        "type": "Manual_Capture"
    },
    "confirmation": {
        "approvedBy": "Cardknox Sandbox",
        "dateApproval": "2023-08-21T13:21:06.434Z",
        "approvalDate": "2023-08-21T13:21:06.434Z",
        "paymentType": "Regular",
        "sensePassReferenceId": "av7e3z4rgqa9jhaqjlqs",
        "paymentMethodCode": 25,
        "paymentMethodName": "Credit Card",
        "paymentMethodLogo": "https://pay.sandbox.sensepass.com/publicAssets/payment-method/cardknox.png",
        "sourceProvider": {
            "name": "Credit Card",
            "code": 1
        },
        "providerId": "6wMjGG7cJ5KPTvzLOXKTIJjwdREImIsJGNpmGckfBiU=",
        "authNumber": "fh7s94jf8s",
        "acquirer": "hfs7048f4",
        "voucher": "hf7s08opdg",
        "referenceNumber": "ajsh795giyd",
        "amount": 0,
        "confirmationNumber": "174-30243A",
        "fullConfirmationCode": "174-30243A",
        "providerName": "Cardknox Sandbox",
        "cardType": "VISA",
        "lastFourDigits": "1111",
        "cardMask": "411111******1111",
        "expiration": "1234",
        "cardExpiration": "1234",
        "installments": 1,
        "paymentMethod": "Credit Card",
        "Credit Card": {
            "cardType": "VISA",
            "lastFourDigits": "1111",
            "mask": "411111******1111",
            "expiration": "1234"
        },
        "extraDetails": {
            "email": "john@doe.org"
        }
    }
}

Example - Tokenize Response

{
    "success": true,
    "transactionNumber": "a4e22734c3f0bae26d8b6e422f71a221f3c7b55c8619e4f338c689f9",
    "transactionStatus": "TransactionApproved",
    "paymentDetails": {
        "type": "Tokenize",
        "paymentMethod": "Credit Card",
        "created": "2023-08-21T13:21:06.407Z",
        "token": "nraag50tyb3i7woz4vt76x4drt72ejs9yjgm7ia3xoc8nx3ywpxxtrzk0dgvkw41ozkqhqi6ozlidmj7i37c4th3db08423fz1evpzpcheoplmvbugen5xf9vxn9i2phlk9hviq3me5a4rko0jykcpj7dzj3337uxzrovff8w3orwrag6kq0luyqgpadts53tazllt70guj1kiuibmgh8mw3m0jeunq7bxjf9cdtnksdgat5gfgwm9umgvjb9ddqp"
    },
    "confirmation": {
        "approvedBy": "Cardknox Sandbox",
        "dateApproval": "2023-08-21T13:21:06.434Z",
        "approvalDate": "2023-08-21T13:21:06.434Z",
        "paymentType": "Regular",
        "sensePassReferenceId": "av7e3z4rgqa9jhaqjlqs",
        "paymentMethodCode": 25,
        "paymentMethodName": "Credit Card",
        "paymentMethodLogo": "https://pay.sandbox.sensepass.com/publicAssets/payment-method/cardknox.png",
        "sourceProvider": {
            "name": "Credit Card",
            "code": 1
        },
        "providerId": "6wMjGG7cJ5KPTvzLOXKTIJjwdREImIsJGNpmGckfBiU=",
        "authNumber": "fh7s94jf8s",
        "acquirer": "hfs7048f4",
        "voucher": "hf7s08opdg",
        "referenceNumber": "ajsh795giyd",
        "amount": 0,
        "confirmationNumber": "174-30243A",
        "fullConfirmationCode": "174-30243A",
        "providerName": "Cardknox Sandbox",
        "cardType": "VISA",
        "lastFourDigits": "1111",
        "cardMask": "411111******1111",
        "expiration": "1234",
        "cardExpiration": "1234",
        "installments": 1,
        "paymentMethod": "Credit Card",
        "Credit Card": {
            "cardType": "VISA",
            "lastFourDigits": "1111",
            "mask": "411111******1111",
            "expiration": "1234"
        },
        "extraDetails": {
            "email": "john@doe.org"
        }
    }
}

Example - Authorization Response

{
    "success": true,
    "transactionNumber": "cb3934c8e1be2f1c0bd171105e1b5a4e69a133dd2788d8cf02320142",
    "transactionStatus": "TransactionApproved",
    "paymentDetails": {
        "type": "Authorize",
        "created": "2024-01-03T11:01:10.403Z",
        "token": "o7nmy73bofjrioyuinvdu49qjm00xgb98c7j7d5fpcqm6t9lb7zc6pzpeckp7oron4e336ee4ad9hr650ktz2qt1glbfaf8mp2mvc79negly0rvlpx3pyi7a7696lac3bc29ytb7g6af8a8os1cbvgxf18xk8ozh0lyn7p0myqvurn786jxyf8f0vjhdsgx2840t4esry5nfaf6c93jgaj73iqmpypzsvdolyd0s7v0hh2u4j08u8pmol83xr7y1",
        "authNumber": null,
        "acquirer": null,
        "voucher": null,
        "referenceNumber": null,
        "requestID": "10126600836",
        "approvedBy": "Cardknox Sandbox"
    }
}

Example - Decline

{
    "success": false,
    "transactionNumber": "02b80210dce0b648384e512554a1688b66734c25100b0d3914d93375",
    "transactionStatus": "TransactionDeclined",
    "error": "Invalid Card"
}

Metadata Model
Product Model

Receipt Notifications Model

This model represent the list of Email and SMS addresses for sending receipts.

Receipt Notifications Model

This model referenced in "receiptNotifications" field of #creating-new-transaction request body

field
type
description

email

Array

Email Recipients example: ["a@example.com"]

sms

Array

SMS Recipients example: ["9295522135"]

Receipt Model

Models

These models are part of request and response:

Create a transaction
Receipts Model
Invoice Model
Product Model
Payment Commit Model
Confirmation Model
Settlement Model
Subscription Model
Transaction Page Model
Transaction Model

Settlement Report Model

field
type
description

status

string

settled/voided/expired

paymentMethod

string

paymentMethod name

settlementAmount

number

settled transaction amount

fee

number

submitDate

date

transaction date

settlementDate

date

settlement date

transactionNumber

string

sensepass unique identifier

pmTransId

string

payment method identifier

cardType

string

settlementCurrency

string

See

Settlement flow here

Postman

Import the Postman file provided below to gain access to a comprehensive collection of requests for all our payment workflows.

This detailed set of requests will enable you to explore, test, and understand each aspect of our payment flows.

Read here about Postman:

https://www.postman.com
36KB
SensePass Public API.postman_collection.json
9KB
Template-BrainTree.xlsx
Consumer page
SMS Message example
Regular SIze
Medium Size
Small Size
Consumer page
Regular SIze
Medium Size
Small Size
SMS Message example