Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 118 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...

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...

Loading...

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.

Our API also supports SOAP and XML.

Payment Methods

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

See our full payment methods list here

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.

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:

Merchant API Key Authentication

URL: /transactions/init

Request Body:

Location API Key Authentication

URL: /transactions/init

Request Body:

{
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm"
}
{
  "apiKey": "hjfkf942tiwgkf4w89253rhfgdjnkkf9823qrndcsg",
  "branchNumber": "12"
}
{
  "apiKey": "hg8t9wwtgehdfjk394oitrjgknfgfknglfsfs43213vbnhf"
}

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.

Our API also supports SOAP and XML.

Payment Methods

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

See our full payment methods list here

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.

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

Integrations

POS Integrations
E-Commerce Integrations

Examples for e-commerce

Examples for POS (In-Store)

Receipts

Payment request with receipt generated by the POSPayment request with receipt generated by SensePass

SDK & iFrames

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

Payment Flows

Flow Charts

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.

Other Flows

Simulator

Sandbox playground: https://js.sandbox.sensepass.com

Production playground: https://js.sensepass.com

Transaction Status Flow

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

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

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:

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

OR

Payment Flow

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

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

Models

These models are part of request and response:

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.

Read here about Socket.IO:

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 !

{
    "deviceId": "1orrpzqmx2b6w5l7iw23nnrm86v7yivoor5a6p9bdxc6zy0ahck64waepnofwxlfrlhx8ifi6cja5qs7c1neiuik911y8ayq6lru6q1plqyrqrbyrhrjitwx4hlyjlitwdsqt1b9wjwayk43s8o42a02x5oj9o44oxof3isbqozbdys4v4abytztg31cj12xicol08fgmssgd3dmvtpfuowiblekpxkk0k4395ljot8fs7fnf9rlluaz4x3f7aov"
}
{
    "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": "[email protected]"
} 
http://localhost:8003/api/transactions/products/update
http://localhost:8003/api/transactions/init/sync
http://localhost:8003/api/transactions/init
Create a transaction
Receipts Model
Invoice Model
Product Model
Payment Commit Model
Confirmation Model
Settlement Model
Subscription Model
Transaction Page Model
Transaction Model
https://socket.io/docs/
Please continue to the pairing page

Payment Methods

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

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

Credit Cards (27)

  • 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

  • Blink

  • Viva

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
}

All merchants must adhere to the Google Pay APIs Acceptable Use Policy and accept the terms defined in the Google Pay API Terms of Service.

Google Pay is a trademark of Google LLC.

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": "[email protected]",
      "discount": 0,
      "vat": true
    }
  },
  "receiptNotifications": {
    "email": [
      "[email protected]"
    ],
    "sms": [
      "9295522135"
    ]
  }
}

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"
  ]
}

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": "[email protected]",
      "discount": 0,
      "vat": true
    }
  },
  "receiptNotifications": {
    "email": [
      "[email protected]"
    ],
    "sms": [
      "9295522135"
    ]
  }
}

Additional Data Model

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

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: https://docs.klarna.com/api/extra-merchant-data/

Example

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

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

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

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

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)

field
type
description

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)

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

9KB
Template-BrainTree.xlsx
Open

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.

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

Docs about our SOAP Adapter

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

Name
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

Settlement Report Model

See Settlement flow here

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

Migration to SensePass Elements

When using the SDK with SensePass Elements, onboarding with Apple Pay enables paying without a intermediate pop-up.

Installing a fresh SDK

Follow the documentation for installing SensePass element SDK:


Upgrading from SDK Version 1.0.9/1.1.0 (or below)

  1. Update the SensePass SDK javascript link to version 1.1.1 (or above). For example: if your’e using https://js.sensepass.com/scripts/[email protected] -> you should update it to https://js.sensepass.com/scripts/[email protected] .

  2. Update your configuration object with a key string payButtonId and a value string of your choosing, for example:

    const paymentElementId = "my-payment-button";
    const spSdkConfig = {
       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: paymentElementId // id for the payment-button (element) the customer will click to start the payment process
    };
  3. Update your HTML element that invokes the pay method from the SDK with an id attribute and value from step #2, e.g. id="my-payment-button".


Onboarding your domain for Apple Pay

  1. Send SensePass the domain(s) you’ll use Apple Pay on. For example: - www.my-store.com - my-subdomain.my-store.com - my-other-store.com

  2. Open public access from your website(s) to a file from the base path of your url. For example: - https://www.my-store.com/.well-known/apple-developer-merchantid-domain-association.txt. * This will let Apple validate your domain is associated with SensePass’s Apple account.

  3. Receive from SensePass the apple-developer-merchantid-domain-association.txt file(s) and store them in your website(s). * SensePass will send you the file(s) in a .zip named to match it’s domain. Make sure to store the .zip content in its correct website.

  4. Inform SensePass all apple-developer-merchantid-domain-association.txt file(s) are stored and publicly accessible.

  5. Receive confirmation from SensePass that your domain(s) are Apple Pay ready.

Its very important to store the files & inform SensePass ASAP because the file(s) can expire.

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

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 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

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 request body

field
type
description

email

Array

Email Recipients example: ["[email protected]"]

sms

Array

SMS Recipients example: ["9295522135"]

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

API Interface

Cancelling a pending transaction object (Payment Request)

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

Path Parameters

Name
Type
Description

Authentication Request Body fields

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

Authentication Request Body fields

Flow Chart

Transaction Status Flow

Custom SDK Style

style selected elements & general themes

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.

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. Material theme:

  2. SensePass theme:

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

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

You may test your themes on our playground:

Processor Data Model

This model represents additional data that can be sent to the processor, currently used by Sola, TSYS and Stripe.

field
type
description
field name at processor

Example

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

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 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 response body

field
type
description

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. Add the SensePass's javascript SDK to your website's scripts ().

  2. Initiate the SensePass client with your clientId

  3. Listen to SDK events on the front-end

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

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

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

Security

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

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

API

See the

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 response body.

field
type
description

platformOrderNumber

string

order number

Sola: xPONum Tsys: PurchaseOrderNumber

taxIndicator

string

tax indicator

Tsys: Invoice.TaxIndicator

unitOfMeasure

string

unit of measurement of a product

Tsys: LineItem.UnitOfMeasure

shippingAmount

string

shipping amount

Tsys: Invoice.ShippingAmount

extendedAmount

string

extended amount of a product

Tsys: LineItem.ExtendedAmount

totalTax

string

total amount of tax

Sola: xTax

payload

object

key value pairs that will be sent to Stripe as metadata in the payment - https://docs.stripe.com/metadata

Stripe: metadata

"processorData": {
    "unitOfMeasure": "kg",
    "totalTax": "3",
    "payload": {
        "request_id": "d20f2b44-72c2-41de-80cc-d79452ae1a43",
        "ip_address": "161.239.206.69"
    },
    
}
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
   }
})
Config
https://pay.sandbox.sensepass.com/publicAssets/themes/material.theme.css
https://pay.sandbox.sensepass.com/publicAssets/themes/ecommerce.theme.css
SDK Theme Config Model
https://js.sensepass.com

transactionNumber*

String

Transaction number to cancel

deviceId*

String

Device ID of the transaction

{
  "status": 200,
  "status_message": "Transaction Was Canceled"
}
Refund a transaction
See here our Authentication page
See here our Authentication page
See our payment flow chart here
See our transaction status flow here
{
  "status": 200,
  "status_message": "Transaction Was Canceled"
}
{
    // Response
}
{
    // Response
}
{
    // Response
}

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

Name
Type
Description

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

Authentication Request Body fields

See here our Authentication page

errorCode = 0 indicating successful refund 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 of Successful Refund

{
  "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
  }
}

Example of Unsuccessful Refund

{
    "errorMessage": "refund operation declined by Processor",
    "errorCode": 22,
    "transaction": null,
    "refundConfirmation": null,
    "dateApproval": null,
    "result": "Declined",
    "providerId": null,
    "approvedBy": null,
    "refundBy": null,
    "amount": null
}

Refund Request Examples

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

{
  "transactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm"
}

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

{
  "transactionNumber": "14a4334a32c852aeb0cfae52cbff1314649da7f175a8e140b35c147c",
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm"
}

Flow Chart

See our payment flow chart here

Transaction Status Flow

See our transaction status flow here

Synchronous Payment

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

Usage Flow:

  1. Call POST request to: http://localhost:8003/api/transactions/init/sync Use the same schema as - Create a transaction

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

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

  4. 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
}

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

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

  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"
}

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

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

  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

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

  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. Call POST request to: http://localhost:8003/api/transactions/init/sync Use the same schema as - Create a transaction

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

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

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

See full docs about sync payment request

Last Transaction Status

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

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

  3. Reponse will return immediately according to Transaction Status schema

See full docs about last transaction status API

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.

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)

Customer Input Model

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

field
type
required
description

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

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

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

See

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.

Elements SDK

Complete your checkout process with a list of payment options. From easy-to-use ones like Apple Pay, Google Pay and PayPal (etc), to buy-now-pay-later ones like Klarna, Sezzle, Affirm and more.

Quick demo

Check out our demo page to see the flow in action.

This is a checkout page example with the Elements SDK.


Configuration

You can copy-paste the (relevant) following HTML code to your checkout page to get going.

  • Note that the current widget configuration is set up to use the mock client-id - and replace it with yours.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SensePass Elements SDK</title>
    <!-- Set the SensePass SDK script -->
    <script src="https://js.sensepass.com/scripts/[email protected]"></script>
</head>
<body style="width: 25rem; margin: 0 auto">
    <!-- Top Payment Button -->
    <button id="primary-payment-button" onclick="handlePaymentButtonClick()">Complete Payment (primary)</button>
    <!-- SensePass Elements Container -->
    <div id="sensepass-front-end"></div>
    <!-- Bottom Payment Button -->
    <button id="secondary-payment-button" onclick="handlePaymentButtonClick()">Complete Payment (secondary)</button>
    <script>
        // Configure the SDK
        const spClient = SensePassFrontEndSDK.config({
            mode: "sandbox", // "sandbox" | "production"
            debug: true,
            clientId: "SensePassSDKGeneralClientId",
            methodType: "manual_capture", // "manual_capture" | "authorize" | "tokenize"
            theme: {
                paymentMethodGrid: "vertical" // "horizontal" | "vertical" | "vertical-b"
            },
            payButtonId: ['primary-payment-button', 'secondary-payment-button'], // Array of button IDs
        });
        // Initialize the SDK
        const sensepass = spClient.init();
        // Event: Payment method selected
        sensepass.paymentSelected(payload => console.log('Payment method selected:', payload));
        // Event: Payment in progress
        sensepass.paying(payload => console.log('Payment in progress:', payload));
        // Event: Payment method validation status
        sensepass.paymentMethodValidationStatus(payload => console.log('Payment validation status:', payload));
        // Event: Error occurred
        sensepass.error(payload => console.error('SDK Error:', payload));

        function handlePaymentButtonClick() {
            // Call the pay method when button is clicked
            sensepass.pay(payload => console.log('Payment result:', payload),
                {
                    amount: 1299, // Amount in cents (12.99 USD)
                    currency: "USD",
                    billingAddress: {
                        city: "New York",
                        email: "[email protected]",
                        firstName: "John",
                        lastName: "Doe",
                        street: "123 Demo St",
                        state: "NY",
                        zipcode: "10001",
                        mobilePhone: "5551234567",
                        country: "US"
                    }
                }
            );
        }
    </script>
</body>
</html>

Payment Data

Example of the SDK's "pay" callback payload (sets the payment for commit)

{
  "TransactionNumber": "7f943e53476a3efcc263d0f975a01c45a6118fc55852efde8dad7227",
  "status": 20
}

Customization

This code sample demonstrates how to customize the appearance of the Elements Widget's payment buttons/elements. Set this object in our SDK configuration to apply your custom theme.

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

  1. Material theme: https://pay.sandbox.sensepass.com/publicAssets/themes/material.theme.css

  2. SensePass theme: https://pay.sandbox.sensepass.com/publicAssets/themes/ecommerce.theme.css

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

  4. Use the SDK Theme Config Model to set you custom text and other UI configurations.

SensePassFrontEndSDK.config({
   // ...,
   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
   }
})

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

  6. JS post message events, see our docs here

  7. Callback events, see our docs here

  8. Socket.IO events, see our docs here

Supported Payment Methods

All SensePass payment methods, see here the full list

Usage

  1. Create a transaction

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

Regular display

transactionPage.consumerPage.regular for full size view

Regular SIze

Medium display

transactionPage.consumerPage.medium

Medium view without the QR

Medium Size

Small display

transactionPage.consumerPage.small

Smaller view without the QR and without the header

Small Size

Please see our full documentation and examples for e-commerce iFrame

Metadata Model

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

You must use this structure:

// 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 Model

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

field
type
description

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"}

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

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

Headers

Name
Type
Description

Request Body

Name
Type
Description

Refer to the Subscritption entity at for additional information.

Get Last Transaction Status

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

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

  3. Reponse will return immediately according to schema

Example

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

Response body:

Credit by Credit Card

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

Token can be created using the .

API Interface

Credit API

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

Request Body

Name
Type
Description

Authentication Request Body fields

errorCode = 0 indicating successful credit operation.

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

Example

Basic request example to credit $1.23 using Device ID:

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

Flow Chart

Transaction Status Flow

Post Message

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

Code example:

Payload Example - Approved Transaction

Payload Example - Cancelled Transaction

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

See Transactions entity schema:

Example - Simple Questions

Example - Yes/No Questions

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

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

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

Example of Transaction Response

Product Model

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

Product Model

This model referenced in "products" field of request body

field
type
description
const childWindow = document.getElementById('sensepass-iframe').contentWindow;
window.addEventListener('message', message => {
    // Handle message
});
{
    "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
        }
    }
}
{
    "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
        }
    }
}
Subsciption callbacks

active

default value that sets the subscription to active status

paused

pauses the subscription untill set back to active

canceled

canceles the subscription indefinitly

subscriptionUid

string

bf8b7e01-466d-4996-b9a2-fc0880923359.

subscription ID received from the Create a Transaction response

deviceId*

string

2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm

branchApiKey*

string

mQzMLLSpqjRZfWBgQcAej5Dus7HHvmRsSsrN6FYoeWWUAehm3RjD596pZb9gfrxx4jQOP2MCQgoLaaU9SAdlzVsWnR63ZETqALpn

merchantApiKey*

string

xvRKKxOWAYbTH2yKQLlzkta2eovvkzlzTW98NcA9KVfwrOF22GA7bBOHHAeooQrmKelv0TU3Q7c8wiJgTQweKCbXR5ohC6JtCygJ

status*

string

active,paused,canceled

Subscription Model
{
    "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
}
Sync payment API
Transaction Status
{
    "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"
            }
        }
    }
}
Create a transaction
Transaction Events docs

token*

string

Credit card token - Required

refundAmount

number

The credit amount (cents) - Required

{
    // Response
}
{
    // Response
}
{
  "token": "YOUR-TOKEN",
  "refundAmount": 123,
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm"
}
{
  "token": "YOUR-TOKEN",
  "refundAmount": 10001,
  "apiKey": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o038o58jv1rznif3o1tr6xsb1rm"
}
Tokenization flow
See here our Authentication page
See our payment flow chart here
See our transaction status flow here
{
  "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
  }
}

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

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

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.

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:

Transaction Model

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
}

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.

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

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".

See here the full docs of creating a transaction

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": ""
}

deviceId*

string

unique device ID provided by SensePass

inputs*

array

Array of Customer Input Model

{
    // Response
}
{
  "deviceId": "Your-Device-ID",
  "inputs": [
    {
      "type": "email",
      "question": "Please input your email address"
    },
    {
      "type": "phone",
      "minimumLength": 10,
      "question": "Please input your phone number"
    }
  ]
}
{
  "deviceId": "Your-Device-ID",
  "inputs": [
    {
      "type": "boolean",
      "question": "Please verify your email address is [email protected]",
      "acceptText": "Yes",
      "rejectText": "No"
    }
  ]
}

deviceId*

string

unique device ID provided by SensePass

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

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 Model

measurementUnit

string

example: oz

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

subscription ID received from the response

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.

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. Create a transaction

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

Example:

{
    "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"
            }
        }
    }
}

3. Show in the POS an iFrame with the URL

4. Listen to transaction status events to be notified about approval, timeout and errors

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"
    }
    ]
{
}

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 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

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

deviceAliasKey is the device ID created for the tag.

Examples

Creating a new device ID for a tag

Attaching a tag to existing device ID

Pair Response

New EMV terminal Creation

EMV terminal creation response

status/paymentMethod/settlementAmount/fee/submitDate/settlementDate/transactionNumber/pmTransId/cardType
'=', '!=', '<', '<=', '>', '>='
Create a Transaction

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

emvTerminalType

string

create an EMV Terminal for the matched device. choose a type out of sensepass supported devices: Dejavoo Clover Adyen Verifone Flex CloudIM KCP VIVA

agentConfig

JSONObject

key value pair of emv terminal specific settings

{
  "pinCode": "111-222-333",
  "apiKey": "a1b2c3d4e5f6g7h8",
  "posName": "NewYorkBranchPos"
}
{
  "pinCode": "111-222-333",
  "apiKey": "a1b2c3d4e5f6g7h8",
  "posName": "NewYorkBranchPos",
  "deviceId": "rti3vm59le3zf7r9og29ezz12xin95vxhewuzdhu0c4cqizeu9d3yvs8rhn60el4eqr4iq6qozrguyw7rgrgqiec6abb9ftygfhvvwl9ar833i1ztnghj7k9zkrvrw5e8ykd2bueemddgcygwci3q12u4fu07ivxm1i7tw50wog7n9mu1pirdj0cg188mbvdf4axxpgc98udh71kxnu9i56yrm207msqrtl0hj44mvoibt4nanvenr06hpq9h9bg"
}
{
  "name": "POS",
  "deviceAliasKey": "syi2vm59le3zf7r9og29ezz12xin95vxhewuzdhu0c4cqizeu9d3yvs8rhn60el4eqr4iq6qozrguyw7rgrgqiec6abb9ftygfhvvwl9ar833i1ztnghj7k9zkrvrw5e8ykd2bueemddgcygwci3q12u4fu07ivxm1i7tw50wog7n9mu1pirdj0cg188mbvdf4axxpgc98udh71kxnu9i56yrm207msqrtl0hj44mvoibt4nanvenr06hpq9h9tq",
  "merchantUID": "string",
  "branchUID": "string",
  "pinCode": "string",
  "clientBoxes": [
    "https://pay.sensepass.com/c_EG9RW3DMJ4WDRF7KFN5A0ICSB0UU16"
  ]
}    
{
  "apiKey": "a1b2c3d4e5f6g7h8",
  "posName": "NewPosWithTerminal",
  "emvTerminalType": "KCP"
}    
{
    "name": "NewPosWithTerminal",
    "deviceAliasKey": "syi2vm59le3zf7r9og29ezz12xin95vxhewuzdhu0c4cqizeu9d3yvs8rhn60el4eqr4iq6qozrguyw7rgrgqiec6abb9ftygfhvvwl9ar833i1ztnghj7k9zkrvrw5e8ykd2bueemddgcygwci3q12u4fu07ivxm1i7tw50wog7n9mu1pirdj0cg188mbvdf4axxpgc98udh71kxnu9i56yrm207msqrtl0hj44mvoibt4nanvenr06hpq9h9tq",
    "agentUUID": "xwj88sclyblma09lnu49857gn6iva2"
}    
{
  "name": "POS",
  "deviceAliasKey": "syi2vm59le3zf7r9og29ezz12xin95vxhewuzdhu0c4cqizeu9d3yvs8rhn60el4eqr4iq6qozrguyw7rgrgqiec6abb9ftygfhvvwl9ar833i1ztnghj7k9zkrvrw5e8ykd2bueemddgcygwci3q12u4fu07ivxm1i7tw50wog7n9mu1pirdj0cg188mbvdf4axxpgc98udh71kxnu9i56yrm207msqrtl0hj44mvoibt4nanvenr06hpq9h9tq",
  "merchantUID": "string",
  "branchUID": "string",
  "pinCode": "string",
  "clientBoxes": [
    "https://pay.sensepass.com/c_EG9RW3DMJ4WDRF7KFN5A0ICSB0UU16"
  ]
}
{
    // Response
}
{
    // Response
}

Subscription callbacks

SensePass sends callbacks about any change regarding subscription item.

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

Callback Structure

  1. Main model structure is identical to transaction status model

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

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

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"
}
Settlement Model

SMS Payment Request

SMS Message example

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.

For delivery status - See "SMS" field in

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

For delivery status - See "SMS" field in

See Transactions entity schema:

{
  "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.

Please see the full invoice model here: Invoice Model

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

See invoice object entity:

See Transactions entity schema:

{
  "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
}

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

See Transactions entity schema:

{
  "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 Method Level Model

Level 2 or Level 3 interface for payment methods

This model represents common validation parameters that will be sent to the processor for Level 2 or 3 validation once enabled in the Partner's site or sent in the transaction's creation process.

Examples

Level 2 example object sent in the Transactions/Init request body

{
  //...
  "level": {
    "value": 2,
    "transactionId": "10",
    "tax": {
      "amount": "0.01"
    }
  }
}

Level 3 example object sent in the Transactions/Init request body

{
  //...
  "level": {
    "value": 3,
    "transactionId": "10",
    "invoiceCode": "INV001",
    "productsCode": "1010",
    "shipping": {
      "zipCode": "90000",
      "amount": "1.02",
      "dutyAmount": "0.01"
    },
    "tax": {
      "amount": "0.01",
      "details": [
        {
          "type": "test",
          "amount": "0.01",
          "rate": "1.00",
          "category": "VAT"
        }
      ]
    },
    "discount": {
      "amount": "0.01"
    },
    "customer": {
      "govtVatId": "Customer VAT"
    }
  }
}
Field
Type
Level
Constraint

value

enum

2 | 3

value 2 or 3

transactionId

string

2 | 3

invoiceCode

string

3

productsCode

string

3

shipping

object

3

shipping.zipCode

string

3

valid zip/postal code

shipping.amount

string

3

decimal, e.g. "1.02"

shipping.dutyAmount

string

3

decimal, e.g. "1.02"

tax

object

2 | 3

tax.amount

string

2 | 3

decimal, e.g. "1.02"

tax.details

array

3

tax.details[n]

object

3

tax.details[n].type

string

3

tax.details[n].amount

string

3

decimal, e.g. "1.02"

tax.details[n].rate

string

3

decimal, e.g. "1.02"

tax.details[n].category

string

3

discount

object

3

discount.amount

string

3

decimal, e.g. "1.02"

customer

object

3

customer.govtVatId

string

3


Payment method constraints

Coastal Pay

Field
Type
Level
Constraint

tax.details[n].category

enum

3

values:

tax.details[n].rate

range

3

min: "0", max: "100"

Required Product Model with the (minimum) following keys for Level 3: "posIdentifier", "name", "measurementUnit", "quantity", "amount", "itemNumber".

API | SensePassdocs.sensepass.com

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.

Please see the full invoice model here:

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

Name
Type
Description

See Transactions entity schema:

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:

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

See Transactions entity schema:

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: [email protected]

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

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

Name
Type
Description

See Transactions entity schema:

Callback/Webhook

Adding callback URL using "callbackURL" field 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

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

Name
Type
Description

See Transactions entity schema:

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

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:

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

See Transactions entity schema:

Basic Payment Request

Basic request example to create a new transaction.

URL: /transactions/init

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

See Transactions entity schema:

[
    "SERVICE",
    "DUTY",
    "VAT",
    "ALTERNATE",
    "NATIONAL TAXEXEMPT"
]
Logo

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:

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

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": "Tokenize"
    }
}

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:

{
  "timeOut": 600,
  "amount": 3000,
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "methodType": "Capture+Tokenize"
}

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": "Capture+Tokenize"
    }
}

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:

{
    "apiKey": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
    "creditCardDetails": [
        {
            "cardNumber": "4580458045804580",
            "cardExpiration": "12/34",
            "securityCode": "567"
        },
        {
            "cardNumber": "4580458045804580",
            "cardExpiration": "12/34",
            "securityCode": "567"
        }
    ]
}

Response body:

[
    {
        "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"
    }
]

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:

{
    "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"
}

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:

{
  "amount": 200,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "token": "kkAl8zuss9men3mvu6rp4fhuwppek9yht6vn8r9z3kza6hyzfmnm"
}

Request Body for Authroize.net token:

{
  "amount": 200,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jv1rznif3o1tr6xsb1rm",
  "tokenSource": "Authorize.net",
  "tokenData": {
      "profile_id": "12345",
      "payment_id": "55555"
  }
}

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": "",
    "token": "kkAl8zuss9men3mvu6rp4fhuwppek9yht6vn8r9z3kza6hyzfmnm"
}

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:

{
  "deviceId": "2ooeww5ufzg3nkuf8a10g15i5epu8o58jvrznif3o1tr6xsb1rm",
  "token": "fd269cce79496def3add8157511d2571562221641140aa5edc870ea7fc4ebad"
}

Response:

{
    "success": true,
    "message": "The token is valid",
    "AVS": {
        "code": "NNN",
        "message": "Address: No Match & 5 Digit Zip: No Match"
    },
    "CVV": {
        "code": "M",
        "message": "Match"
    }
} 

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": [
      "[email protected]"
    ],
    "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"
}
Transaction Model
Transaction Model
Transaction Model
Transaction Model
Transaction Model
Transaction Model
Invoice Model
Transaction Model
Transaction Model
Transaction Model
Transaction Model
Transaction Model
{
  "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"
  }
}

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

See invoice object entity: Invoice Model

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
}
Invoice Model
Transaction Model
{
  "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"
    ]
  },
}

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
}
Transaction Model
{
  "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": "[email protected]",
  "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 ]

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
}
Transaction Model
{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "posData": {
    "customerName": "John",
    "hello": [
      "world"
    ]
  },
}

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
}
Transaction Model
{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm"
}

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
}
Transaction Model

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: [email protected]

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

URL: /transactions/init

Request Body:

{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "clientEmail": "[email protected]",
  "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 ]

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 ]

See Transactions entity schema: Transaction Model

{
  "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
}

{
  "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:

{
  "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"
}
Transaction Model

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

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

Interface:

See Transactions entity schema: Transaction Model

{
  "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

Payment request with products

Consumer page

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.

In addition, the products information will be visible in the merchant back office.

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

See product object entity:

See Transactions entity schema: Transaction Model

{
  "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
}

Pay by Credit Card

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

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 Credit Card iFrame

API Interface

Pay by credit card

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

Authentication Request Body fields

See here our Authentication page

This API only support merchant API authentication - See Authenticating page for examples

Request Body

Name
Type
Description

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

See Transactions entity schema: Transaction 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
}

Examples

Basic request example to pay using credit card

{
  "deviceId": "93sa20e3b9c05d0670f00924a5384185aa4e5fe913b71014",
  "amount": 500,
  "currency": "USD",
  "reason": "Invoice of December 2023",
  "creditCardDetails": {
    "cardNumber": "375510190366075",
    "cardExpiration": "12/34",
    "securityCode": "0123"
  }
}

Response

{
  "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"
}

Transaction Status Flow

See our transaction status flow here

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 Receipts Model 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 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

See receipt info object entity:

Receipt Info Model

Receipt info model is referenced in "receiptInfo" field of Receipts Model

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: [email protected]

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 request body

field
type
description

email

array

example:

sms

array

example:

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": "[email protected]",
          "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

field model for editting a credit card form field text .

Transaction Model

Transaction Model

This model is referenced in the response of

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)

*TransactionAuthorizeVoided (15) - Authorize Transaction was voided *ProcessingAuthorizeVoided (16) - Processing void for Authorize Transaction

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

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

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

SMS delivery status, see "clientPhoneNumber" field in

paymentCommit

object

See payment commit object entity:

products

object

See product object entity:

productSumMismatch

boolean

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

confirmations

object

See confirmation object entity:

transactionPage

object

See transaction page entity:

confirmation

Deprecated

Deprecated field

paymentMethodData

Deprecated

Deprecated field

subscription

object

see subscription object entity:

parentTransaction

object

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

additionalData

object

Any additional data that may be sent to the processor

level

object

Level related data that will be sent to the processor

processorData

object

Any additional data that may be sent to the processor

SensePass Elements Demojs.sandbox.sensepass.com

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.

Receipt full documentation:

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:

Field
Value

"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:

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

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:

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

See Transactions entity schema:

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:

This API call will be sent to this URL:

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

API

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

Jump to it

Sample App

You can play around with the SDK in

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

Script

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/[email protected]

iFrame SDK (Deprecated)

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/[email protected]

SensePass Express

Speed up the checkout process with the user's shipping & billing information available after they complete the payment process.

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.


Implement the following Express SDK by adding it to your front-end website's scripts: https://js.sensepass.com/scripts/[email protected]

Security

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

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

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:

Payment Response:

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

Step 2 - Initiate the iFrame element

Initiate the iframe with the init method:

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:

Step 4 - Listen to callback events

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

Step 5 - Pay button event

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

Pay button event - For manual capture transaction type -

billingAddress object is optional

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

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

Request Body:

Customizing message format

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

Request Body:

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

See Transactions entity schema:

Express SDK

Speed up the checkout process with Apple Pay, Google Pay, PayPal and the customer's billing & shipping information.

Quick demo

Check out our demo page to see the flow in action.

This is a checkout page example with the Express SDK with the billing & shipping information filled and the order is ready to place.

The payment options responded with the customer's information used to speed up the checkout process.


Configuration

You can copy-paste the (relevant) following HTML code to your checkout page to get going.

  • Note that the current widget configuration is set up to use the mock client-id - and replace it with yours.


Payment Data

Example of a response after paying with Google Pay

Customization

This code sample demonstrates how to customize the appearance of the Express Widget's payment buttons. Save & link this file in your HTML after the widget's script to ensure styles are applied.

The widget's internal CSS provides basic styling. This file allows you to override and enhance it.

Key selectors:

  • .payment-btn: The main button element.

  • .payment-logo: The tag for the payment method logo.

  • .payment-label: The tag for the payment method text label.

You can also target specific payment methods using the part attribute:

  • [part="paypal"]

  • [part="applepay"]

  • [part="googlepay"]

Metadata Model
SDK Credit Card Field Model
{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "receipt": {
    "mode": 2
  },
  "receiptNotifications": {
    "email": [
      "[email protected]"
    ],
    "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"
}
Receipts Model
{
  "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"
}
{
  "timeOut": 600,
  "amount": 5500,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "clientPhoneNumber": "+155555551234",
  "customSmsText": "%%businessName%% asks you for %%amount%%"
}

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

For delivery status - See "SMS" field in Transaction Model

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
}
SMS Message example
Transaction Model
Transaction Model
Logo
Product Model
<html>
<head>
    <script src="https://js.sensepass.com/scripts/[email protected]" type="application/javascript"></script>
</head>
</html>
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: "SensePassSDKGeneralClientId", // 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
});
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>SensePass Express SDK</title>
    <!--Set the SDK script-->
    <script src="https://js.sensepass.com/scripts/[email protected]"></script>
</head>
<body>
    <sp-ecom-sdk-express></sp-ecom-sdk-express>

    <script>
        // Wait for the custom element to be defined
        customElements.whenDefined('sp-ecom-sdk-express').then(() => {
            const widget = document.querySelector('sp-ecom-sdk-express');
            
            // Initialize the widget with your configuration
            widget.props = {
                clientId: "SensePassSDKGeneralClientId", // location's client-id
                amount: "12.99",
                currency: "USD",
                logs: true, // enable SDK console logs
                methodType: "manual_capture", // or "authorize" | "tokenize"
                mode: "sandbox", // or "production"
                cssUrl: "https://js.sensepass.com/express-sdk.css", // download to customize your own css
                // Event handlers
                onReady: (detail) => console.log('SDK Ready:', detail),
                onShow: (detail) => console.log('Payment Shown:', detail),
                onPay: (detail) => console.log('Payment Data:', detail), // finalize the payment in your backend (commit request)
                onError: (detail) => console.error('Payment Error:', detail)
            };
        });
    </script>
</body>
</html>
{
  "code": 27,
  "method": "googlepay",
  "timestamp": "2025-09-30T15:18:14.701Z",
  "transactionNumber": "1c3ff55c9d299cddbcc6d6fd929c63c1628bc25be2ab2c4c0cf87db9",
  "billingInformation": {
    "fullName": "Card Holder Name",
    "firstName": "Card",
    "lastName": "Holder Name",
    "addressLine1": "1600 Amphitheatre Parkway",
    "addressLine2": "",
    "city": "Mountain View",
    "state": "CA",
    "postalCode": "94043",
    "country": "US",
    "email": "[email protected]"
  },
  "shippingInformation": {
    "fullName": "US User",
    "firstName": "US",
    "lastName": "User",
    "addressLine1": "1600 Amphitheatre Parkway1",
    "addressLine2": "",
    "city": "Mountain View",
    "state": "CA",
    "postalCode": "94043",
    "country": "US",
    "email": "[email protected]"
  }
}
const sensepass = spClient.init();
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`;
   }
});
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...
sensepass.pay(callback); // get a JSON of the transaction's final state
sensepass.pay(callback, 
{ 
    amount: 1099,   //Transaction amount in Cents (10.99 USD)
    currency: "USD",
    billingAddress: { //Optional
	city: "New York",
	email: "[email protected]",
	firstName: "John",
	lastName: "Doe",
	street: "Baker St",
	state: "NY",
	zipcode: "12345",
	mobilePhone: "123456789",
	country: "US"
    }
});
Elements SDK
Express SDK
SensePass's Front-end Playground website
web-components
web-components
commit API
see our docs here
See full details here
<html>
<head>
    <script src="https://js.sensepass.com/scripts/[email protected]" type="application/javascript"></script>
</head>
</html>
<html>
<head>
    <script src="https://js.sensepass.com/scripts/[email protected]" type="application/javascript"></script>
</head>
</html>
Transaction status
Transaction status
Transaction status
Transaction status
{
  "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"
}

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

Interface: Transaction status

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
}
{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm",
  "callbackURL": "https://google.com/callback/api/callback",
  "callbackMethod": "GET"
}
Transaction Model
Transaction status
["[email protected]"]
["9295522135"]
Receipts Model
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>SensePass Express SDK</title>
    <!--Set the SDK script-->
    <script src="https://js.sensepass.com/scripts/[email protected]"></script>
</head>
<body>
    <!--Set the SDK element-->
    <sp-ecom-sdk-express></sp-ecom-sdk-express>

    <script>
        // Wait for the custom element to be defined
        customElements.whenDefined('sp-ecom-sdk-express').then(() => {
            const widget = document.querySelector('sp-ecom-sdk-express');
            
            // Initialize the widget with your configuration
            widget.props = {
                clientId: "SensePassSDKGeneralClientId", // location's client-id
                amount: "12.58",
                currency: "USD",
                logs: true, // enable SDK console logs
                methodType: "manual_capture", // or "authorize" | "tokenize"
                mode: "sandbox", // or "production"
                cssUrl: "https://js.sensepass.com/express-sdk.css", // download to customize your own css
                // Event handlers
                onReady: (detail) => console.log('SDK Ready:', detail),
                onShow: (detail) => console.log('Payment Shown:', detail),
                onPay: (detail) => console.log('Payment Data:', detail), // finalize the payment in your backend (commit request)
                onError: (detail) => console.error('Payment Error:', detail)
            };
        });
    </script>
</body>
</html>
{
  "code": 27,
  "method": "googlepay",
  "timestamp": "2020-02-20T20:20:20.202Z",
  "transactionNumber": "1c3ff55c9d299cddbcc6d6fd929c63c1628bc25be2ab2c4c0cf87db9",
  "billingInformation": {
    "fullName": "Card Holder Name",
    "firstName": "Card",
    "lastName": "Holder Name",
    "addressLine1": "1600 Amphitheatre Parkway",
    "addressLine2": "",
    "city": "Mountain View",
    "state": "CA",
    "postalCode": "94043",
    "country": "US",
    "email": "[email protected]"
  },
  "shippingInformation": {
    "fullName": "US User",
    "firstName": "US",
    "lastName": "User",
    "addressLine1": "1600 Amphitheatre Parkway1",
    "addressLine2": "",
    "city": "Mountain View",
    "state": "CA",
    "postalCode": "94043",
    "country": "US",
    "email": "[email protected]"
  }
}
/* Logo-only style with light background for visibility */
.payment-btn {
    position: relative;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    padding: 12px 20px;
    min-height: 48px;
    background-color: #ffffff;
    border: 1px solid #e0e0e0;
    border-radius: 6px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    transition: all 0.2s ease;
}

.payment-logo {
    height: 24px;
    width: auto;
    max-width: 120px;
    object-fit: contain;
}

/* Hide the text label to show logo only */
.payment-label {
    display: none;
}

/* Hover state */
.payment-btn:hover:not([disabled]) {
    border-color: #c0c0c0;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    background-color: #f9f9f9;
}

/* Disabled state */
.payment-btn[disabled] {
    opacity: 0.5;
    cursor: not-allowed;
    background-color: #f5f5f5;
}

/* Show spinner overlay when button is not clickable (canPay = false) - initialization loading */
.payment-btn:not([data-can-pay="true"]) {
    position: relative;
}

.payment-btn:not([data-can-pay="true"])::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(255, 255, 255, 0.5);
    z-index: 10;
    border-radius: inherit;
}

.payment-btn:not([data-can-pay="true"])::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 24px;
    height: 24px;
    margin: -12px 0 0 -12px;
    border: 3px solid #e0e0e0;
    border-top: 3px solid #007bff;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
    z-index: 11;
}

/* Payment processing state - different visual treatment */
.payment-btn[data-processing="true"] {
    position: relative;
    background-color: white;
    cursor: not-allowed;
    opacity: 1;
}

/* Disabled state when other payment is processing */
.payment-btn[data-other-processing="true"] {
    opacity: 0.5;
    cursor: not-allowed;
}

.payment-btn[data-processing="true"]::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: transparent;
    backdrop-filter: blur(3px);
    z-index: 10;
    border-radius: inherit;
}

/* Add green spinner for processing state */
.payment-btn[data-processing="true"]::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 24px;
    height: 24px;
    margin: -12px 0 0 -12px;
    border: 3px solid #e0e0e0;
    border-top: 3px solid #28a745;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
    z-index: 12;
}

/* Spinner keyframes */
@keyframes spin {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

/* Pulse animation for processing state */
@keyframes pulse {
    0%, 100% {
        opacity: 0.1;
    }
    50% {
        opacity: 0.3;
    }
}

/* Bright pulse animation for processing state */
@keyframes pulseBright {
    0%, 100% {
        opacity: 0.6;
    }
    50% {
        opacity: 1;
    }
}


/* Optional: Specific styling for individual payment methods */

/* PayPal - slightly smaller logo */
[part="paypal"] .payment-logo {
    background-color: #ffffff;
}

/* Apple Pay - ensure good contrast */
[part="applepay"] {
    background-color: #ffffff;
}

/* Google Pay - ensure good contrast */
[part="googlepay"] {
    padding-top: 8px;
    padding-bottom: 8px;
}

[part="googlepay"] .payment-logo {
    height: 32px;
}
Subscription Model
Additional Data Model
Payment Method Level Model
Processor Data Model
Payment Commit Model
Product Model
Confirmation Model
Transaction Page Model
Transaction Model

Payment request with products

Consumer page

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.

In addition, the products information will be visible in the merchant back office.

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

See product object entity:

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

See Transactions entity schema: Transaction Model

{
  "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:

Regular SIze

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

Medium Size

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

Small Size

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.

See full information about callbacks logic here: Callback

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.

See the full interface model here: Transaction Entity

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
}

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": "[email protected]",
    "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

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

Name
Type
Description

Authentication Request Body fields

See Transactions entity schema:

Schema

Full Transaction Entity schema:

Flow Chart

Transaction Status Flow

Fetch Multiple Transactions

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

Body

Name
Type
Description

FilterData

Name
Type
Description

Example Request

Body

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.

See our docs regarding

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.

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

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. At least one successful payment has been made (if there aren't any successful payments, use endpoint to release the remaining credit).

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

Path Parameters

Name
Type
Description

Request Body:

Response body:

"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": "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"
}
Transaction Events
Tokenization API
Void
Product Model

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
        }
    ]
}
See here our Authentication page
See our payment flow chart here
See our transaction status flow here
Transaction Model
Transaction Model
{
  "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": "[email protected]",
  "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"
      }
    }
  }
}
Create a transaction
Create a transaction
Create a transaction
Create a transaction
Create a transaction
Create a transaction
Creating a new transaction object (Payment Request)
Create a transaction
Create a transaction
Create a transaction

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": "[email protected]"
        }
    }
}

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": "[email protected]"
        }
    }
}

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": "[email protected]"
        }
    }
}

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"
}

Create a transaction

API for creating new payment requests, this API create .

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

See Transactions entity schema:

Examples

Basic request example to create a new transaction.

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

Schema

Full Transaction Entity schema:

Flow Chart

Transaction Status Flow

Express Pay Widget Demojs.sandbox.sensepass.com
Metadata Model
Product Model
Receipt Model

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

For delivery status - See "SMS" field in Transaction Model

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

See invoice object entity: Invoice Model

receipt

object

Used for present receipt for the consumer after the payment

See receipt object entity: Receipts Model

emailConfig.paymentRequest.language

string

[ en, he, ru ]

receiptNotifications

object

Receipt Notifications

entity: Receipt Notifications

products

object

Products information

See product object entity: Product Model

metadata

object

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

billingAddress

object

Customer's billing address entity: Customer Billing Details Model

shippingAddress

object

Customer's shipping address entity: Customer Shipping Details Model

paymentDetails

object

Payment details Input

entity: Payment Details Model

hideAmount

boolean

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

additionalData

object

Any additional data that may be sent to the processor Additional Data Model

approvalMessage

string

Message to appear in the header of confirmation page

authorizationText

string

Message to appear on tokenized transactions . default value is:

I authorize {{businessName}} to process future payments

orderId

string

Order ID you can send which will be shown on the payment request/invoice emails (according to Merchant/Location Settings).

invoiceId

string

Invoice ID you can send which will be shown on the payment request/invoice emails (according to Merchant/Location Settings).

level

object

Payment method Level 2 or 3 requirements: Payment Method Level Model

{
  "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
}
{
  "timeOut": 600,
  "amount": 200,
  "isCent": true,
  "currency": "USD",
  "deviceId": "2ooeww5ufzg3nkuf8a10gu5n695yolixlbgb042o03to9bxfkr7t815i5epu8o58jv1rznif3o1tr6xsb1rm"
}
Transaction Entity
See here our Authentication page
See our payment flow chart here
See our transaction status flow here
Transaction Model
Transaction Model
Logo