Merchant

This section includes APIs for:

  • Merchant onboarding
  • Store onboarding
  • TPN onboarding
  • Managing merchant-level configurations (e.g., whitelisting)

Onboarding With Templates

What are Templates?

Templates allow you to preconfigure parameters tailored to specific merchant verticals, making the onboarding process faster and more consistent.

For example, when onboarding restaurant merchants, you can configure parameters specific to restaurants (e.g., tax settings, payment options, etc.) and save them as a reusable template.

These templates can be applied to other similar merchants in the future, streamlining onboarding for similar use cases.

Creating Templates

Templates must be created in the portal.

Once created, they can be assigned to merchants during onboarding using the Merchant Onboarding API.

IndicatorDescription
*Mandatory
#Pre-defined values shared in these documents

API Details

API Request URL

ObjectsURLs
Sandbox URLhttps://externalapi.ipospays.tech/v1/onboardmerchant (opens in a new tab)
Production URLhttps://externalapi.ipospays.com/v1/onboardmerchant (opens in a new tab)

API Reference

onboardmerchant ( API )

FieldDescription
merchantDataMandatory object: This object contains the following information:

- Merchant DBA
- Email ID
- First name
- Last name
- Address
- Zip code
- Phone number
- EBT info (optional)
storeDataMandatory object: This object contains the following information:

- Store DBA
- Email ID
- First name
- Last name
- Address
- Zip code
- Phone number
- Merchant category code, etc.
tpnDataMandatory object: This object contains the following information:

- Device manufacturer
- Device model
- Routing type
- Application sign
- BIN number
- Assigned template
- Processor information

The onboardmerchant API request contains 3 primary objects:

Request Parameters

Header Authorization – Request Parameters

ObjectsDescription
AuthorizationAPI KEY <your-api-key-value>
Content-Typeapplication/json

Body – Request Parameters

  • merchantData ( Obj )
ParameterTypeDescription
dba *StringMerchant DBA name

Format: Alphanumeric, special chars
Allowed special chars
Length: min – 2, max – 35 characters
Example value: Starbucks
firstName *stringMerchant First Name

Format: Alphabets
Length: min – 2, max – 50 characters
Example value: Michel
lastName (Optional)stringMerchant Last Name

Format: Alphabets
Length: min – 1, max – 12 characters
Example value: Jackson
email *stringMerchant Email Id

Format: E-mail id
Length: min – 6, max – 255 characters
Example value: example@testmail.com
addressLine1 *stringMerchant address line 1

Format: Alphanumeric, special chars
Allowed special chars
Length: min – 2, max – 35 characters
addressLine2 (Optional)stringMerchant address line 2

Format: Alphanumeric, special chars
Allowed special chars
Length: min – 2, max – 35 characters
zipCode *NumbersMerchant Zip Code

Format: xxxxx
Length: 5 digits required
Note: City & State info will be stored based on given Zip-code value
phoneNumber *NumbersMerchant Contact Phone Number

Format: xxxxxxxxxx
Length: min – 10, max – 12
ebt (Optional)stringEBT value (is optional)

Format: Alphanumeric
Length: 7 chars required
isoAgentReference (Optional)stringISO Agent Reference

Format: Alphanumeric
Length: min – 1, max – 15 characters
isoMerchant (Optional)stringMerchant Reference

Format: Alphanumeric
Length: min – 1, max – 6 characters
merchantLogoUrlstringMerchant Logo image url

Format: http / https url
ISDcode *stringISD code number

Format: +xxx
Length: min – 2, max – 4
Allowed special chars: +
  • storeData ( Obj )
ParameterTypeDescription
mccCode# *NumericMerchant category code

Format: xxxx
Length: 4 digits required
firstName *stringStore manager / owner first name

Format: Alphabets
Length: min – 2, max – 50 characters
Example value: Michel
lastName (Optional)stringStore manager / owner last name

Format: Alphabets
Length: min – 1, max – 12 characters
Example value: Jackson
dba *StringStore DBA name

Format: Alphanumeric, special chars
Allowed special chars
Length: min – 2, max – 35 characters
Example value: Starbucks
addressLine1 *stringStore address info line 1

Format: Alphanumeric, special chars
Allowed special chars
Length: min – 2, max – 35 characters
addressLine2 (Optional)stringStore address info line 2

Format: Alphanumeric, special chars
Allowed special chars
Length: min – 2, max – 35 characters
zipCode *NumbersStore located Zip-code

Format: xxxxx
Length: 5 digits required
Note: City & State info will be stored based on given Zip-code value
email *stringStore Email Id

Format: e-mail id
Length: min – 6, max – 255 characters
Example value: example@testmail.com
phoneNumber *NumbersStore Phone number

Format: xxxxxxxxxx
Length: min – 10, max – 12
ISDcode *stringISD code number

Format: +xxx
Length: min – 2, max – 4
Allowed special chars: +
  • tpnData ( Obj )
ParameterTypeDescription
deviceManufacturer *StringDevice manufacturer information

Format: Alphabets
Values: Cloud POS, Android Phone, WizardPOS, Kozen
Note: pre-defined inputs as per doc
deviceModel# *StringDevice model information

Values: P1, P3, P5, Q2, QD2, QD3, QD4, QD5, QD6, Cloud POS, Tap on phone
Note: pre-defined inputs as per doc
tpnApplicationSign# *stringApplication signature information

Format: Alphabets
Values: CRDT
Note: pre-defined inputs as per doc
tpnAssignTemplate (Optional)stringAssign template information

Format: Alphanumeric
Length: min – 5, max – 30 characters
tpnRoutingType# *stringRouting type information

Format: Alphabets
Values: SIMPLE
Default value: SIMPLE
defaultLabel (Optional)stringDefault label value

Format: Alphanumeric
Length: 18 chars required

Device Model and Manufacturer Conditions

The device model and manufacturer are conditional. For example, the P1 model is available only under the Kozen manufacturer. Refer to the table below for supported device models and their respective manufacturers.

Device ManufacturerDevice Model
Kozen *P1, P3, P5, P8, P12
Wizer POS *Q2, QD2, QD3, QD4, QD5, QD6
Cloud POS *Cloud POS
Android Phone *Tap on Phone
Apple *Apple Pay

Processor Details

Each processor has a unique set of required and optional fields. Below is a breakdown of the input structure for each processor.

  • Processor: TSYS
FieldTypeDescription
tpnProcessor *ObjectNote: object name as specified in doc
processorName *stringProcessor name

Format: Alphabets
Values: TSYS
Note: pre-defined inputs as per doc
profileId *stringProfile Id value – with fee or without fee

Values: 01 – with fee, 02 – without fee
Note: pre-defined inputs as per doc
Mid *NumbersMid input value

Length: 12 digits required
Agent *NumbersAgent input value

Length: 6 digits required
Chain *NumbersChain input value

Length: 6 digits required
Store *NumbersStore input value

Length: 4 digits required
TermNo *NumbersTerm Number input value

Length: 4 digits required
TermId *stringTerm Id input value

Format: Alphanumeric
Length: 8 chars required
ABA_NoNumbersABA_No input value

Length: 9 digits required
Agent_FIIDAlphanumericType: String (SETT.Agent)

Format: Alphanumeric
Length: 4 chars required
dsGroupstringdsGroup input value

Format: Alphanumeric
Length: min:1, max:30 chars required
tpnBin *NumbersTPN Bin input value

Length: 6 digits required
  • Processor: PNWX (Paynetworx)
FieldTypeDescription
tpnProcessor *ObjectNote: object name as specified in doc
processorName *StringFormat: Alphabets

Values: PNWX
Note: pre-defined inputs as per doc
profileId *stringValues: 01 – with fee, 02 – without fee

Note: pre-defined inputs as per doc
AccessTokenUser *stringFormat: Alphanumeric

Length: min – 25, max – 50 characters
AccessTokenPassword *stringFormat: Alphanumeric

Length: min – 25, max – 50 characters
  • Processor: CKNX (Cardknox)
FieldTypeDescription
tpnProcessor *ObjectNote: object name as specified in doc
processorName *StringFormat: Alphabets

Values: CKNX
Note: pre-defined inputs as per doc
profileId *stringValues: 01 – with fee, 02 – without fee

Note: pre-defined inputs as per doc
apiKey *stringLength: max – 45 characters
  • Processor: ZCRD (Z Credit)
FieldTypeDescription
tpnProcessor *ObjectNote: object name as specified in doc
processorName *StringFormat: Alphabets

Values: ZCRD
Note: pre-defined inputs as per doc
profileId *stringProfile id value with fee or without fee

Values: 01 – with fee, 02 – without fee
Note: pre-defined inputs as per doc
TerminalNumber *NumbersTerminal number input value

Length: max – 16
Password *StringPassword input value

Length: max – 16
Track2 *StringTrack2 input value

Format: Alphanumeric
Length: max – 18
  • Processor: FDRC (Fiserv North)
FieldTypeDescription
tpnProcessor *ObjectNote: object name as specified in doc
processorName *StringFormat: Alphabets

Values: FDRC
Note: pre-defined inputs as per doc
tpnBin *NumbersTPN Bin input value

Length: 6 digits required
Mid *StringMid input value

Length: max – 15 characters
Format - Alphanumeric
TermId *StringTerm Id input value

Length: max – 15 characters
Format - Alphanumeric
GroupId *StringGroup Id input value

Length: max – 15 characters
Format - Alphanumeric
EcommURLStringThis field contains a URL value
  • Processor: WPAY (WorldPay)
FieldTypeDescription
TermId *NumbersTerm Id input value

Length: max – 3 characters
Format - Numeric
Mid *NumbersMid input value

Length: max – 13 characters
Format - Numeric
BankId *NumbersBank Id input value

Length: max – 4 characters
Format - Numeric
  • Processor: ELVN (Elavon)
FieldTypeDescription
TermId *NumbersTerm Id input value

Length: max – 16 characters
Format - Numeric
Mid *NumbersMid input value

Length: min 10 to max 12 chars
Format - Numeric
BankNo *NumbersBank Number input value

Length: max – 6 characters
Format - Numeric
  • Processor : FDOH (Fiserv Omaha)
FieldTypeDescription
TermId *NumbersTerm Id input value

Length: max – 16 characters
Format - Numeric
Mid *NumbersMid input value

Length: min 10 to max 12 chars
Format - Numeric
GroupId *NumbersGroup Id input value

Length: max – 15 characters
Format - Alphanumeric

Response Parameters

Variable NameDescription
message *Contains information about Success / Failure of request
dataContains information about the response data based on the request on success
errorsContains information about the errors based on the request input on failure

Onboarding / Creation of Merchant, Store, and TPN

This section provides a detailed overview of the API process for onboarding merchants, stores, and TPNs. It covers the request methods, required parameters, and expected responses for different onboarding scenarios. You'll find structured guidelines on API request formatting, including headers, request body parameters, and sample JSON request and response structures for both successful and failed attempts

Request Method

ObjectDescription
MethodPOST

Header Authorization Info

ObjectDescription
Authorizationapi-key <your-api-key-value>
Content-Typeapplication/json

Pre-defined Input Field – Values and Description

  • Processor Name details ( Field & Descriptions )
FieldDescription
TSYSTSYS processor
PNWXPNWX processor
CKNXCKNX processor
ZCRDZCRD processor
FDRCFDRC processor
WPAYWPAY processor
ELVNELVN processor
FDOHFDOH processor
  • Device Manufacturer details ( Field & Descriptions )
Device ModelManufacturer
Q2WizarPOS
QD2WizarPOS
QD3WizarPOS
QD4WizarPOS
QD5WizarPOS
QD6WizarPOS
P1Kozen
P3Kozen
P5Kozen
P8Kozen
P12Kozen
Cloud POSCloud POS
Tap On PhoneAndroid Phone
Apple PayApple

Routing Type details ( Field & Descriptions )

  • Application Signature details ( Field & Descriptions )
FieldDescription
SIMPLESIMPLE type
CRDTCredit Debit

EBT placement rules:

  • If you add ebt under merchantData → applies to all stores.
  • If you add ebt under storeData → applies to that specific store only.
  • If you include ebt in both places → the system will use the storeData value.
Header
{
    Authorization: API-Key value
    content-type: application/json
}
Body
{
    "merchantData": 
    {
        "dba": "Merchant DBA name",
        "email": "Merchant e-mail Id",
        "firstName": "Merchant first name",
        "lastName": "Merchant last name - optional",
        "addressLine1": "Merchant address line 1",
        "addressLine2": "Merchant address line 2 - optional",
        "zipCode": "Merchant zip code",
        "ISDcode": "Country ISD code",
        "phoneNumber": "Merchant phone number",
        "ebt": "EBT info",   // If provided here under 'merchantData', this EBT information will apply to all stores. If provided under 'storeData', it will apply only to that specific store. If included in both, the system will prioritize 'storeData'.
        "isoAgentReference": "ISO agent reference info",
        "isoMerchant": "ISO Merchant reference info",
        "merchantLogoUrl": "Merchant Logo Url"
    },
 
    "storeData": 
    {
        "dba": "Store DBA name",
        "email": "Store e-mail Id",
        "mccCode": "Pre-defined merchant category code",
        "firstName": "Store manager first name",
        "lastName": "Store manager last name - optional",
        "addressLine1": "Store address line 1",
        "addressLine2": "Store address line 2 - optional",
        "zipCode": "Store zip code",
        "ISDcode": "Country ISD code",
        "phoneNumber": "Store phone number",
        "ebt": "EBT info",   //If provided under 'storeData', it will apply only to that specific store.
    },
 
    "tpnData": 
    {
        "deviceManufacturer": "Device manufacturer – refer to documentation",
        "deviceModel": "Device Model Id – refer to documentation",
        "tpnApplicationSign": "TPN application sign – refer to documentation",
        "tpnRoutingType": "TPN routing type",
        "tpnBin": "BIN Number",
        "defaultLabel": "Default label details",
        "tpnAssignTemplate": "Assign template",
        "tpnProcessor": {	// Refer to documentation for valid processor names and their profiles
                "processorName": "Processor name",
                "profile": [ 
                // Array of values – refer to documentation for profile request details 
                           ]    
                        }
    }
}

Processor-Specific Data Formats

The reference for processor request information in the tpnData object is provided below.

For TSYS Processor
"tpnProcessor":
{
    "processorName": "TSYS",
    "profile":
    [
        {
        "profileId": "01", 
        "Mid": "Mid number info",
        "Agent": "Agent number info",
        "Chain": "Chain number info",
        "Store": "Store number info",
        "TermNo": "Term Number info",
        "TermId": "TermId number info",
        "ABA_No": "ABA Number details",
        "Agent_FIID": "Agent FIID info",
        "dsGroup": "ds group info"			
        },
        {
        "profileId": "02", 
        "Mid": "Mid number info",
        "Agent": "Agent number info",
        "Chain": "Chain number info",
        "Store": "Store number info",
        "TermNo": "Term Number info",
        "TermId": "TermId number info",
        "ABA_No": "ABA Number details",
        "Agent_FIID": "Agent FIID info",
        "dsGroup": "ds group info"						
        }                            
    ]
}
For PNWX Processor
"tpnProcessor":
{
    "processorName": "PNWX",
    "profile":
    [
        {
        "profileId": "01", 
        "AccessTokenUser":"Access token user",
        "AccessTokenPassword":"Access token password"
        },
        {
        "profileId": "02", 
        "AccessTokenUser":"98984949484985",
        "AccessTokenPassword":"98e98e9e88888"
        }
    ]
}
For CKNX Processor
"tpnProcessor":
{
    "processorName": "CKNX",
    "profile":
    [
        {
        "profileId": "01", 
        "apiKey": "apikey"
        },
        {
        "profileId": "02", 
        "apiKey": "apikey"
        }                            
    ]
}
For ZCRD Processor
"tpnProcessor":
{
    "processorName": "ZCRD",
    "profile":
    [
        {
        "profileId": "01", 
        "TerminalNumber": "Terminal Number",
        "Password": "password info",
        "Track2": "Track2 info"
        },
        {
        "profileId": "02",
        "TerminalNumber": "Terminal Number",
        "Password": "password info",
        "Track2": "Track2 info"
        }                            
    ]
}
For FDRC Processor
"tpnProcessor":
{
    "processorName": "FDRC",
    "profile":
    [
        {
        "profileId": "01", 
        "Mid": "Mid number info",
        "TermId": "TermId number info",
        "GroupId": "Group Number info"
        },
        {
        "profileId": "02", 
        "Mid": "Mid number info",
        "TermId": "TermId number info",
        "GroupId": "Group Number info"
        }                            
    ]
}
For WPAY Processor
"tpnProcessor":
{
    "processorName": "WPAY",
    "profile":
    [
        {
        "profileId": "01", 
           "TermId": "TermId number info", 
           "Mid": "Mid number info",
           "BankId": "BankId number info"
        },
        {
        "profileId": "02", 
            "TermId": "TermId number info",
            "Mid": "Mid number info",
            "BankId": "BankId number info"
        }                            
    ]
}
For FDOH Processor
"tpnProcessor":
{
    "processorName": "FDOH",
    "profile":
    [
        {
        "profileId": "01", 
           "TermId": "TermId number info", 
           "Mid": "Mid number info",
           "GroupId": "GroupId number info"
        },
        {
        "profileId": "02", 
            "TermId": "TermId number info",
            "Mid": "Mid number info",
            "GroupId": "GroupId number info"
        }                            
    ]
}

Sample JSON Response – Merchant-Store-TPN Creation

On Success - HTTP Response Status: 200
{
    "message": "Merchant onboard successfully",
    "data": 
    {
    "merchantId": "Merchant Id",
    "storeId": "Store Id",
    "tpn": " TPN Number"
    "tpnId" :
    }
}
On Failure - HTTP Response Status: 400
{
    "message": "Merchant onboard failure",
    "errors": [
        {
            "code": "error_code",
            "message": "error_message",
            "param": "error_on_input_field",
        },
        {
            "code": "already_exists",
            "message": "Given merchant dba name input is already exists",
            "param": "merchantData.dba",
        },
	  ... 
              ]
}
On Authorization Failure - HTTP Response Status: 401
{
    "message": "Access denied, invalid authorization token!",
    "errors": []
}

Sample JSON Request – Store-TPN Creation

Header
{
    Authorization: api-key <your-api-key-value>
    content-type: application/json
}
Body
{
    "merchantData": {
        "merchantId": "API responded Merchant Id"
    },
    "storeData": {
        "dba": "Store DBA name",
        "email": "Store e-mail ID",
        "mccCode": "Pre-defined merchant category code",
        "firstName": "Store manager first name",
        "lastName": "Store manager last name - optional",
        "addressLine1": "Store address line 1",
        "addressLine2": "Store address line 2 - optional",
        "zipCode": "Store ZIP code",
        "ISDcode": "Country ISD code",
        "phoneNumber": "Store phone number",
        "ebt": "EBT info" 
        // If provided under 'merchantData', this EBT information will apply to all stores.
        // If provided under 'storeData', it will apply only to the specific store.
        // If included in both, the system will prioritize 'storeData'.
    },
    "tpnData": {
        "deviceManufacturer": "Device manufacturer – refer to documentation",
        "deviceModel": "Device Model ID – refer to documentation",
        "tpnApplicationSign": "TPN application sign – refer to documentation",
        "tpnRoutingType": "TPN routing type",
        "tpnBin": "BIN number",
        "defaultLabel": "Default label details",
        "tpnAssignTemplate": "Assign template",
        "tpnProcessor": {
            // Refer to the documentation for processor names and corresponding profiles
            "processorName": "Processor name",
            "profile": [
                // Array values – refer to the documentation for profile request details
            ]
        }
    }
}

Sample JSON Response – Store-TPN Creation

On Success - HTTP Response Status: 200
{
    "message": "Store onboard successfully",
    "data": {
        "merchantId": "Merchant Id",
        "storeId": "Store Id",
        "tpn": " TPN Number"
            }
}
On Failure - HTTP Response Status: 400
{
    "message": "Store onboard failure",
    "errors": [
        {
            "code": "error_code",
            "message": "error_message",
            "param": "error_on_input_field"
        },
        {
            "code": "already_exists",
            "message": "Given store dba name input is already exists",
            "param": "storeData.dba"
        },
	  ... 
             ]
}
On Authorization Failure - HTTP Response Status: 401
{
    "message": "Access denied, invalid authorization token!",
    "errors": []
}

Sample JSON Request – TPN Creation

Header
{
    "Authorization": "api-key <your-api-key-value>",  // Replace with your actual API key
    "Content-Type": "application/json"                // Specifies that the request body is in JSON format
}
Body
{
    "merchantData": {
        "merchantId":"API responded Merchant Id"
    },
    "storeData": {
        "storeId":"API responded Store Id"
    },
    "tpnData": {
        "deviceManufacturer": "Device manufacturer – refer document",
        "deviceModel": "Device Model Id – refer document",
        "tpnApplicationSign": "TPN application sign – refer document",
        "tpnRoutingType": "TPN routing type",
        "tpnBin": "BIN Number",
        "defaultLabel": "default label details",
        "tpnAssignTemplate": "Assign template",
        "tpnProcessor": {	// refer below document for each processor name with profiles
        	"processorName": "processor name",
            	“profile”: [ 
// array values, refer below doc for profile request info 
]
        }
    }
}

Sample JSON Response – TPN Creation

On Success - HTTP Response Status: 200
{
    "message": "TPN onboard success",
    "data": {
        "merchantId": "Merchant Id",
        "storeId": "Store Id",
        "tpn": " TPN Number"
    }
}
On Failure - HTTP Response Status: 400
{
    "message": "TPN onboard failure",
    "errors": [
        {
            "code": "error_code",
            "message": "error_message",
            "param": "error_on_input_field"
        },
        {
            "code": "mandatory_field",
            "message": "Device model input is mandatory",
            "param": "tpnData.deviceModel"            
        },
	  ... 
    ]
}
On Authorization Failure - HTTP Response Status: 401
{
    "message": "Access denied, invalid authorization token!",
    "errors": []
}

Response Parameters – JSON sample

HTTP Response Status: 401 (Unauthorized Access)
{
	message: "Unauthorized Access / Forbidden",
    }
HTTP Response Status: 200 (OK)
{
    "message": "Merchant created successfully",
    "data": {
        // Contains the response data returned after successful merchant creation
    }
}
HTTP Response Status: 400 (Bad Request)
{
    "code": "error-code",       // Unique identifier representing the error type
    "message": "error-message", // Human-readable description of the error
    "param": "error-on-field"   // Field or parameter that caused the error
}

Edit Merchant

This API allows you to enable, disable, or configure merchant-level features.

Currently supported:

  • Domain Whitelisting — Restricts access to specific, approved domains to enhance security and prevent unauthorized usage.

Authentication

To use this API, you must first generate an authentication token using your API Key and Secret Key.

  • Retrieve the token from the Auth-Token endpoint

  • Include the token in the Authorization header for all requests

Domain Whitelisting

This feature allows you to control which domains are permitted to interact with merchant services by explicitly defining allowed origin URLs.

Enable / Configure Domain Whitelisting
{
  "merchantId": "merchId-12-chars",
  "whitelistDomains": {
    "originUrls": [
      "https://example.com",
      "https://store.example.com"
    ]
  }
}

To disable domain whitelisting, send an empty list of domains:

Disable Domain Whitelisting
{
  "merchantId": "merchId-12-chars",
  "whitelistDomains": {
    "originUrls": []
  }
}

Header Parameters

ParameterTypeDescription
AuthorizationstringToken used to authenticate the API request and grant access to protected merchant resources

Body Parameters

ParameterTypeRequiredDescription
merchantId *stringYesUnique identifier of the merchant for whom the feature is being configured
whitelistDomains *objectYesConfiguration object for domain whitelisting

whitelistDomains Object

ParameterTypeRequiredDescription
originUrls *arrayYesList of allowed domain URLs. Only these domains will be permitted access

Response

Success (200) - Returned when the configuration is successfully applied.

ParameterTypeDescription
messagestringProvides additional context about the success status
statusCodenumberHTTP status code indicating success
request_idstringUnique identifier for the API request (useful for debugging and tracking)
timestampstringTime when the response was generated (ISO 8601 format)

Validation Error (422) - Returned when the request payload contains invalid or missing data.

ParameterTypeDescription
messagestringProvides details about the validation error
status_codenumberHTTP status code indicating validation failure
request_idstringUnique identifier for the API request
timestampstringTime when the response was generated (ISO 8601 format)

Merchant Not Found (404) - Returned when the specified merchantId does not exist.

ParameterTypeDescription
messagestringIndicates that the merchant was not found
statusCodenumberHTTP status code
request_idstringUnique identifier for the API request
timestampstringTime when the response was generated (ISO 8601 format)

Not Authorized (401) - Returned when authentication fails due to a missing, invalid, or expired token.

ParameterTypeDescription
messagestringDetails about the authorization failure
responseCodestringInternal response code for authorization errors
statusCodenumberHTTP status code
request_idstringUnique identifier for the API request
timestampstringTime when the response was generated (ISO 8601 format)

Store

The following APIs allow you to manage store-level operations:

  • Onboard Store and TPN (Terminal Processing Number)

  • Enable or Disable ACH Payments

If you require additional functionality or custom parameters, please contact your Dejavoo representative.

Add Store

This API is used to add a store under an existing merchant and assign a TPN (device/terminal configuration).

Request

{  "merchantData": {
    "merchantId": "<merchantId>"
  },
  "storeData": {
    "mccCode": "<mccCode>",
    "firstName": "<firstName>",
    "lastName": "<lastName>",
    "dba": "<DBA>",
    "addressLine1": "<addressLine1>",
    "addressLine2": "<addressLine2>",
    "zipCode": “<zipCode>”,
    "email": "<email>",
    "phoneNumber": “<phoneNumber>”,
    "ISDcode": "<ISDcode>"
  },
  "tpnData": {
    "deviceManufacturer": "<deviceManufacturer>",
    "deviceModel": "<deviceModel>",
    "tpnApplicationSign": "<tpnApplicationSign>",
    "tpnRoutingType": "<tpnRoutingType>",
    "tpnBin": "<tpnBin>",
    "defaultLabel": "<defaultLabel>",
    "tpnAssignTemplate": "<tpnAssignTemplate>",
    "tpnProcessor": {
      "processorName": "TSYS",
      "profile": [
        {
          "profileId": "01",
          "Mid": "Mid number info",
          "Agent": "Agent number info",
          "Chain": "Chain number info",
          "Store": "Store number info",
          "TermNo": "Term Number info",
          "TermId": "TermId number info",
          "ABA_No": "ABA Number details",
          "Agent_FIID": "Agent FIID info",
          "dsGroup": "ds group info"
        },
        {
          "profileId": "02",
          "Mid": "Mid number info",
          "Agent": "Agent number info",
          "Chain": "Chain number info",
          "Store": "Store number info",
          "TermNo": "Term Number info",
          "TermId": "TermId number info",
          "ABA_No": "ABA Number details",
          "Agent_FIID": "Agent FIID info",
          "dsGroup": "ds group info"
        }
      ]
    }
  }}

Device Compatibility

Device model and manufacturer must match supported combinations:

Device ManufacturerSupported Models
KozenP1, P3, P5, P8, P12
Wizer POSQ2, QD2, QD3, QD4, QD5, QD6
Cloud POSCloud POS
Android PhoneTap on Phone
AppleApple Pay

TPN Processor

Each processor requires a specific payload structure.

  • Example shown above: TSYS Processor

  • For other processors (PNWX, CKNX, ZCRD, FDRC, WPAY, ELVN), use their respective predefined payload formats.

Header Parameters

ParameterTypeDescription
AuthorizationstringToken used to authenticate the API request

Body Parameters

  • merchantData
ParameterTypeRequiredDescription
merchantId*stringYesUnique identifier of the merchant
  • storeData
ParameterTypeRequiredDescription
mccCode*stringYesMerchant Category Code (4 digits)
firstName*stringYesStore owner/manager first name
lastNamestringNoStore owner/manager last name
dba*stringYesStore DBA name
addressLine1*stringYesStore address line 1
addressLine2stringNoStore address line 2
zipCode*stringYes5-digit ZIP code (auto-maps city/state)
email*stringYesStore email address
phoneNumber*stringYesStore phone number
ISDcode*stringYesInternational dialing code (e.g., +1)
ebtstringNoOptional EBT configuration value
  • tpnData
ParameterTypeRequiredDescription
deviceManufacturer*stringYesDevice manufacturer (predefined values only)
deviceModel*stringYesDevice model (must match manufacturer)
tpnApplicationSign*stringYesApplication type (e.g., CRDT)
tpnRoutingType*stringYesRouting type (default: SIMPLE)
tpnBinstringNoBIN configuration
defaultLabelstringNoDefault label (max 18 characters)
tpnAssignTemplatestringNoTemplate assignment
tpnProcessor*objectYesProcessor-specific configuration
  • tpnProcessor
ParameterTypeRequiredDescription
processorName*stringYesProcessor name (e.g., TSYS)
profile*arrayYesList of processor profiles
  • profile Object
ParameterTypeRequiredDescription
profileId*stringYesProfile identifier
Mid*stringYesMerchant ID
Agent*stringYesAgent number
Chain*stringYesChain number
Store*stringYesStore number
TermNo*stringYesTerminal number
TermId*stringYesTerminal ID
ABA_NostringNoABA number
Agent_FIIDstringNoAgent FIID
dsGroupstringNoDS group

Response

Success (200)
{
  "message": "Store onboard successfully",
  "data": {
    "merchantId": "Merchant Id",
    "storeId": "Store Id",
    "tpn": " TPN Number",
    "tpnId": "TPN Id"
  }
}

Error Responses

Status CodeDescription
400Bad Request
401Unauthorized

Edit Store

This API allows you to enable or disable features at the store level for an existing merchant.

Currently supported: Bank Payments (ACH)

Authentication

Use the Auth-Token endpoint to generate a token using your API Key and Secret Key. Include the token in the Authorization header for all requests.

Bank Payments (ACH)

Use this API to enable or disable bank (ACH) payments for a store.

Supported processors:

  • Payroc

  • Paya

Enable ACH

Payroc ACH
{
  "storeI1d": "storeId-12-chars",
  "achDetails": {
    "achStatus": true,
    "achProcessorName": "Payroc",
    "payrocDetails": {
      "clientId": "123456"
    }
  }
}
Paya ACH
{
  "storeId": "storeId-12-chars",
  "achDetails": {
    "achStatus": true,
    "achProcessorName": "Paya",
    "payaDetails": {
      "isMandatoryCheck": true,
      "terminalSettings": {
        "web": "1234",
        "tel": "5678",
        "ppd": "9012",
        "ccd": "3456"
      }
    }
  }
}

Disable ACH

{
  "storeId": "storeId-12-chars",
  "achDetails": {
    "achStatus": false
  }
}

Header Parameters

ParameterTypeDescription
AuthorizationstringToken used to authenticate and authorize the request

Body Parameters

ParameterTypeRequiredDescription
storeId*stringYesUnique identifier of the store
achDetails*objectYesACH configuration details

achDetails Object

ParameterTypeRequiredDescription
achStatus*booleanYesControls ACH state (true = enable, false = disable)
achProcessorNamestringConditionalRequired when enabling ACH (Paya or Payroc)

Payroc Configuration

ParameterTypeDescription
clientIdstringUnique client identifier provided by Payroc

Paya Configuration

ParameterTypeDescription
isMandatoryCheckbooleanEnables mandatory ACH field validation
terminalSettingsobjectConfiguration for ACH transaction types

terminalSettings

ParameterDescription
webWeb transaction configuration
telTelephone (TEL) transaction configuration
ppdPrearranged Payment & Deposit configuration
ccdCorporate Credit/Debit configuration

Response

Success (200)

ParameterTypeDescription
messagestringSummary of the response
statusCodenumberHTTP status code
request_idstringUnique request identifier for tracking
timestampstringResponse timestamp (ISO 8601 format)

Error Responses

Status CodeDescription
400Bad Request
403Not Authorized
404Store Not Found
422Validation Error
500Internal Server Error

TPN

This API allows you to add a TPN under an existing merchant and store, update TPN parameters required for device onboarding and integration, and retrieve TPN details.

If you require additional parameters or custom configurations, contact your Dejavoo representative.

Add TPN

This API is used to add a TPN under an existing Merchant and Store by submitting merchant, store, device, and processor configuration details.

Request
{
  "merchantData": {
    "merchantId": "<merchantId>"
  },
  "storeData": {
    "storeId": "<storeId>"
  },
  "tpnData": {
    "deviceManufacturer": "<deviceManufacturer>",
    "deviceModel": "<deviceModel>",
    "tpnApplicationSign": "<tpnApplicationSign>",
    "tpnRoutingType": "<tpnRoutingType>",
    "tpnBin": "<tpnBin>",
    "defaultLabel": "<defaultLabel>",
    "tpnAssignTemplate": "<tpnAssignTemplate>",
    "tpnProcessor": {
      "processorName": "TSYS",
      "profile": [
        {
          "profileId": "01",
          "Mid": "Mid number info",
          "Agent": "Agent number info",
          "Chain": "Chain number info",
          "Store": "Store number info",
          "TermNo": "Term Number info",
          "TermId": "TermId number info",
          "ABA_No": "ABA Number details",
          "Agent_FIID": "Agent FIID info",
          "dsGroup": "ds group info"
        },
        {
          "profileId": "02",
          "Mid": "Mid number info",
          "Agent": "Agent number info",
          "Chain": "Chain number info",
          "Store": "Store number info",
          "TermNo": "Term Number info",
          "TermId": "TermId number info",
          "ABA_No": "ABA Number details",
          "Agent_FIID": "Agent FIID info",
          "dsGroup": "ds group info"
        }
      ]
    }
  }
}

Device Manufacturer & Model Mapping

The device model must correspond to the correct manufacturer.

ManufacturerSupported Models
KozenP1, P3, P5, P8, P12
WizarPOSQ2, QD2, QD3, QD4, QD5, QD6
Cloud POSCloudPOS
Android PhoneTap on Phone
AppleApple Pay

TPN Processor Configuration

Each processor requires a specific payload structure.

TSYS Processor
"tpnProcessor": {
  "processorName": "TSYS",
  "profile": [
    {
      "profileId": "01",
      "Mid": "Mid number info",
      "Agent": "Agent number info",
      "Chain": "Chain number info",
      "Store": "Store number info",
      "TermNo": "Term Number info",
      "TermId": "TermId number info",
      "ABA_No": "ABA Number details",
      "Agent_FIID": "Agent FIID info",
      "dsGroup": "ds group info"
    }
  ]
}

Key Fields

  • profileId: "01" (with fee), "02" (without fee)

  • Mid: 12-digit merchant ID

  • Agent, Chain: 6 digits

  • Store, TermNo: 4 digits

  • TermId: 8-character alphanumeric

PNWX (Paynetworx) Processor
"tpnProcessor": {
  "processorName": "PNWX",
  "profile": [
    {
      "profileId": "01",
      "AccessTokenUser": "Access token user",
      "AccessTokenPassword": "Access token password"
    }
  ]
}
CKNX (Cardknox) Processor
"tpnProcessor": {
  "processorName": "CKNX",
  "profile": [
    {
      "profileId": "01",
      "apiKey": "apikey"
    }
  ]
}
ZCRD (Z Credit) Processor
"tpnProcessor": {
  "processorName": "ZCRD",
  "profile": [
    {
      "profileId": "01",
      "TerminalNumber": "Terminal Number",
      "Password": "password info",
      "Track2": "Track2 info"
    }
  ]
}
FDRC (Fiserv North) Processor
"tpnProcessor": {
  "processorName": "FDRC",
  "profile": [
    {
      "profileId": "01",
      "Mid": "Mid number info",
      "TermId": "TermId number info",
      "GroupId": "Group Number info"
    }
  ]
}
WPAY (WorldPay) Processor
"tpnProcessor": {
  "processorName": "WPAY",
  "profile": [
    {
      "profileId": "01",
      "TermId": "TermId number info",
      "Mid": "Mid number info",
      "BankId": "BankId number info"
    }
  ]
}
ELVN (Elavon) Processor
"tpnProcessor": {
  "processorName": "ELVN",
  "profile": [
    {
      "profileId": "01",
      "TermId": "TermId number info",
      "Mid": "Mid number info",
      "BankNo": "Bank Number Info"
    }
  ]
}

Header Parameters

ParameterTypeDescription
AuthorizationstringBearer token used for authentication

Body Parameters (Summary)

FieldTypeRequiredDescription
merchantData*objectYesMerchant details
storeData*objectYesStore details
tpnData*objectYesTPN configuration
Response (200)
{
  "message": "TPN onboard success",
  "data": {
    "merchantId": "Merchant Id",
    "storeId": "Store Id",
    "tpn": "TPN Number",
    "tpnId": "TPN Id"
  }
}

Edit TPN

This API allows you to enable/disable specific features at the TPN level

Currently Supported - Enable/disable SPIn integration and configure the integration type and mode.

Request Examples

Enable SPIn (Cloud Mode)
{
  "tpnId": "abcdef123456",
  "integrationDetails": {
    "integrationType": "spin",
    "spinMode": "cloud",
    "isvName": "iPOSpays",
    "deviceModel": "P1"
  }
}
Enable SPIn (Local Mode)
{
  "tpnId": "abcdef123456",
  "integrationDetails": {
    "integrationType": "spin",
    "spinMode": "local"
  }
}
Disable SPIn
{
  "tpnId": "abcdef123456",
  "integrationDetails": {
    "integrationType": "none"
  }
}

Header Parameters

ParameterTypeDescription
AuthorizationstringToken used to authenticate the request. Must include permissions to modify SPIN features for the specified merchant

Body Parameters

ParameterTypeRequiredDescription
tpnId*stringYesUnique Terminal Profile Number identifying the terminal device
integrationDetails*objectYesConfiguration object defining integration behavior

integrationDetails Object

ParameterTypeRequiredDescription
integrationType*stringYesType of integration. Determines required fields and behavior. Allowed values: spin, none
spinModestringConditionalRequired when integrationType = spin. Allowed values: cloud, local
isvNamestringConditionalRequired for SPIN cloud integrations when applicable
deviceModelstringConditionalRequired for SPIN cloud when device-specific configuration is needed

Response

Enable SPIN (Local Mode) / Disable SPIN — 200
{
  "message": "Success",
  "statusCode": 200,
  "request_id": "request-id",
  "timestamp": "ISO-8601"
}
Enable SPIN (Cloud Mode) — 200
{
  "spinData": {
    "registerId": "",
    "authKey": ""
  },
  "message": "Success",
  "statusCode": 200,
  "request_id": "request-id",
  "timestamp": "ISO-8601"
}

Error Responses

  • 400 — Bad Request
FieldTypeDescription
messagestringDescription of the error
statusCodenumberHTTP status code
request_idstringRequest identifier
timestampstringISO 8601 timestamp
  • 401 — Unauthorized
FieldTypeDescription
messagestringAuthentication or authorization failure
statusCodenumberHTTP status code
request_idstringRequest identifier
timestampstringISO 8601 timestamp
  • 404 — TPN Not Found
FieldTypeDescription
messagestringIndicates the TPN was not found
statusCodenumberHTTP status code
request_idstringRequest identifier
timestampstringISO 8601 timestamp
  • 422 — Validation Error
FieldTypeDescription
messagestringValidation failure details
statusCodenumberHTTP status code
request_idstringRequest identifier
timestampstringISO 8601 timestamp

Get TPN Details

Use this API to retrieve OTP, Auth Token, SPIn details, and integration type.

Request
{
  "tpnId": "abcdef123456",
  "dataFields": ["OTP", "AUTH_TOKEN", "INTEGRATION_TYPE"]
}
Response (200)
{
  "data": {
    "oneTimePasscode": "123456",
    "auth_token": "token-value",
    "integration_type": "spinCloud",
    "spinDetails": {
      "registerId": "",
      "authKey": ""
    }
  },
  "status_code": 200,
  "request_id": "IPOS-20250216120000-ABC123",
  "timestamp": "2025-02-16T12:00:00.000Z"
}