Device Integration

🚧

EMV Certification Requirement

This page is specifically intended for ISVs doing their own device integration, which requires EMV certification no matter the API environment. For more information, make sure to revisit PayConex™ and Decryptx®.

For more information and the comprehensive list of Bluefin P2PE certified devices, check out:

This page can also be used for educational purposes to demonstrate how the device P2PE encrypted payloads and parameters would be included in the V4 API request from scratch.

Here, we briefly cover some of the most common transactions as simple sale transactions with the deviceProfile of PAX_A80:

For more on Decryptx®, see Decryptx® Introduction.

📘

PAX_A80

We use PAX_A80 in the following examples as it is the most generic model type for PAX payment payloads.

Card Present Endpoints

API EndpointMethodDescription
/api/v4/accounts/{accountId}/payments/device-storePOSTStore a card from a device (card verification/COF transaction)
/api/v4/accounts/{accountId}/payments/device-salePOSTProcess a sale transaction
/api/v4/accounts/{accountId}/payments/device-authPOSTProcess an authorization transaction
/api/v4/accounts/{accountId}/payments/device-creditPOSTProcess a credit transaction
/api/v4/accounts/{accountId}/payments/device-forcePOSTProcess a force transaction

📘

Note

PayConexâ„¢ Card Present endpoints are prefixed with device-* since Card Present transactions are executed directly on the device. This naming convention also aligns well with the use case of MOTO Transactions.

Again, before processing CP transactions within our PayConex™ Gateway, it is crucial for Decryptx® to extract and decrypt the sensitive P2PE data that was previously acquired and encrypted at the POS. To do this, devices use an advanced encryption method known as SRED. With that in mind, all of the examples below contain the required "card" field that is encrypted at the POS.

Request Parameters

In a nutshell, here are some essential device parameters for the V4 API with most of these used in the examples below. For the comprehensive list of CP parameters, refer to API References.

ParameterTypeRequiredDescriptionExample
transactionIdstringfalseUse a pre-fetched transaction identifier in case there is a communication error or similar during the ongoing transaction. This is a 12-digit numeric value padded with zeros. See Initializing a Transaction."000000001861"
descriptionstringfalseTransaction description."USB Device Purchase - #1".
customerobjectfalseCustomer-related data relevant to the transaction.See customer.
shippingAddressobjectfalseThis is the address to which the goods or services purchased by the customer are delivered.See shippingAddress.
traceobjectfalseAdditional custom tracing information such as cashier, clientIp sourceIp, customId, timestamp, etc.See Transaction Metadata Trace and Processing a Sale for usage.
rulesobjecttrueTransaction rules such as allowPartial, allowDuplicate where allowPartial enables partial authorizations on a per-transaction basis and allowDuplicate allows duplicate transactions by overriding the account settings. See Rules.{
"allowPartial": true,
"allowDuplicate": true,
"disableCVVCheck": false,
"disableAVSCheck": false
}
tenderTypestringtrueThe payment tender type that you are submitting. During a sale, whether it's credit card, debit card, EBT, FSA (healthcare expenses) or other means. Possible enums are: [ "CREDIT", "DEBIT", "EBT", "FSA" ]."CREDIT"
posProfilestringtrueThe type of point of sale. See Point of Sale Profiles."ATTENDED_ON_PREM_POS"
deviceProfilestringtrueThe type of device used to run a transaction. See Device Profiles."PAX_A80"
entryModestringtrueStands for any kind of card entry mode. See Entry Modes."KEYED"
credentialOnFileobjectfalseMIT/CITs parameters. Note that only the scheduleIndicator field is allowed, as CP transactions are always customer-initiated. See CITs and MITs. Enums: [ SCHEDULED, UNSCHEDULED ]{
"scheduleIndicator": "UNSCHEDULED"
}
tlvstringfalse (depending on entryMode)Tag length value (TLV) is a data encoding scheme.9F26086F520F4F3B...
pinBlockobjectfalse (only for for PIN-capable devices)A block of data consisting of PIN and KSN used to encapsulate a PIN during processing. See Device Profiles for PIN-capable devices.{
"pin": "1234567890123456",
"ksn": "FFFF9876540002400195"
}
ebtobjectfalseFor this field to be used, tenderType must be EBT. It specifies the kind of EBT including the following types:
- CASH(cash sale)
- FOOD(food sale)
- VOUCHER(voucher sale)
Note that the voucherNumber is required when the type is VOUCHER.
{
"type": "VOUCHER",
"voucherNumber": "1212"
}
deviceobjecttrue (required for CP transactions)The device data information to match the deviceProfile.See below.
cardobjecttrueThe card's p2pe and masked credentials.See below.
cvmobjectfalseThe CVM (Cardholder Verification Method) information is included exclusively for the card issuers with the EMV standards for chip card transactions. Signatures are also used for printing receipts.See below.
savePaymentbooleanfalseInclude the bfTokenReference and shieldConexToken in response for reissuing payments. The PayConexâ„¢ token is not required to be used within 10 minutes as it is vaulted and does not expire by default in this case.true

device

Device metadata for the PayConexâ„¢ Gateway and payment processor.

ParameterTypeRequiredDescriptionExample
typestringfalseThe type of device."A920"
serialstringtrueThe device serial number."0820617507"
appstringfalseThe app where the transaction is run."BluePOS"
appVersionstringfalseThe app version."1.0.3"
osVersionstringfalseThe OS version of the device."Paydroid 6.3"
capabilitiesstringfalseValue based on EMV tag 9F33. Only used for MSR and keyed transactions. See Device Profiles."E0F8C8"
terminalRefNumstringfalseTypically used to store a reference number associated with a terminal device, such as a point-of-sale (POS) terminal, during a transaction. This reference number can help identify the specific terminal used for processing the transaction."1849f62aa367dee4"
modestringfalseMode for ISV integration: [ "standalone", "semi-integrated" ]"standalone".

card

ParameterTypeDescriptionExample
expirystringThe expiration date of the card."1222".
p2peobjectThe P2PE data block.See below.
maskedobjectThe masked pan, track1, track2 data.See below.

p2pe

These are all of the encrypted P2PE blocks that can be used.

ParameterTypeDescriptionExample
ksnstringEncrypted KSN"FFFF9876540002400195"
panstringEncrypted PAN"B3804311123638D"
cvvstringEncrypted CVV block"BC53B84FA4B8F12C"
track1stringTrack1 data"A5F6CC974A943B3804311123638DB514ED6B113BAD13DF7FDED0B5B32ABE528E404CA40DC1BD4F8C7BA15DCEFE5EC56C0BC6A7F970FB872B"
track2stringTrack2 data"0FE17E517D242848D8B01784C38D9914D82A48B298CDEC49301256CE720ED4B73A7E32FBC9922C15"
cardTracksstringCombination of track1 and track2 data and, preferably, additional discretionary data that is included in the card tracks. It replaces both track1 and track2 parameters, so the cardTrackscannot be used in combination with those. Intended for swipe transactions."02A600C0170018008292;4444********1111=****B3EFF7213793C0DFD61361BD6FE31E61B48CE4242C6A68E7000000000000000000000000000000000000000054313430393030303036629949960E00022001A2E35DDD"

masked

These are the masked values from the POS.

ParameterTypeExample
panstring"444433******1111"
track1string"%*5415********4444^TEST/BLUEFIN^****************?"
track2string";6011********3331=****************?"

cvm

📘

Note

As outlined in the table above, the CVM (Cardholder Verification Method) information is included exclusively for the card issuers with the EMV standards for chip card transactions. Signatures are also used for printing receipts.
With this parameter provided, the PayConex system modifies the transaction via PATCH which then becomes available as transaction metadata via GET.

ParameterTypeDescriptionExample
methodstringType of CVM including [ SIGNATURE, OFFLINE_PIN, ONLINE_PIN, NO_CVM_REQUIRED ]"SIGNATURE"
signaturestringVector-based signature format: this format is used to capture and store handwritten signatures digitally. This signature can be captured on the device if supported. This property is required when the CVM method is SIGNATURE."0,65535^22,26^23,30^22,33^21,36^20,39^20,43^19,46^18,49^17,53^16,56^16,59^16,62^16,66^16,69^0,65535^8,48^8,45^11,44^14,42^17,40^20,39^0,65535^32,59^35,60^38,58^41,56^44,53^46,49^48,46^47,43^44,43^40,44^37,46^34,49^32,53^31,56^30,59^29,62^30,66^32,69^36"

method

EnumerationDescription
SIGNATUREThe cardholder's signature is used for verification and printing the receipt.
OFFLINE_PINThe cardholder enters their PIN, and the PIN verification is processed offline by the terminal.
ONLINE_PINThe cardholder enters their PIN, and the PIN goes off to the Processor and is verified online with the issuer.
NO_CVM_REQUIREDNo cardholder verification method is needed for the transaction (e.g., for small, contactless transactions).

Getting Device Profiles

For CP transactions, it is helpful to list all the device profiles associated with your PayConexâ„¢ account. This way, you can validate the capabilities of every device profile available to you.

Point of sale profiles and entry modes are also applied in combination with device profiles.

GET /api/v4/device-profiles

*Required Scopes: pcx:device_profile:read

Here are the tables based on the GET response and the devices respective model group.

PAX

Device NameParser Device TypeCapabilitiesEMV ContactlessPrintingDisplayTax CapableCapture Card DataPIN Capable
PAX_S300genericE0F8C8truetruetruetruetruetrue
PAX_S500genericE0F8C8truetruetruetruetruetrue
PAX_Q20LgenericE0F8C8truetruetruetruetruetrue
PAX_D190LgenericE0F8C8truetruetruetruetruetrue
PAX_D210SgenericE0F8C8truetruetruetruetruetrue
PAX_D220LgenericE0F8C8truetruetruetruetruetrue
PAX_A30genericE0F8C8truetruetruetruetruetrue
PAX_A35genericE0F8C8truefalsetruetruetruetrue
PAX_A77genericE0F8C8truefalsetruetruetruetrue
PAX_A80genericE0F8C8truetruetruetruetruetrue
PAX_A800genericE0F8C8truetruetruetruetruetrue
PAX_A920genericE0F8C8truetruetruetruetruetrue
PAX_A920PROgenericE0F8C8truetruetruetruetruetrue
PAX_A920MAXgenericE0F8C8truetruetruetruetruetrue
PAX_A3700genericE0F8C8truefalsetruetruetruetrue
PAX_A6650genericE0F8C8truefalsetruetruetruetrue
PAX_Q10LgenericE0F8C8truefalsetruetruetruetrue
PAX_ARIES6genericE0F8C8truefalsetruetruetruetrue
PAX_ARIES8genericE0F8C8truefalsetruetruetruetrue
PAX_IM30genericE0F8C8truefalsetruetruetruetrue

IDTECH

Device NameParser Device TypeCapabilitiesEMV ContactlessPrintingDisplayTax CapableCapture Card DataPIN Capable
IDTECHidtechC00000falsefalsefalsefalsetruefalse
IDTECH_EMVidtech600000truefalsefalsefalsetruefalse
IDTECH_M130idtechC00000falsefalsefalsefalsetruefalse
IDTECH_KEYED_ONLYidtech800000falsefalsefalsefalsetruefalse
IDTECH_SWIPED_ONLYidtech400000falsefalsefalsefalsetruefalse

IDYNAMO_5

Device NameParser Device TypeCapabilitiesEMV ContactlessPrintingDisplayTax CapableCapture Card DataPIN Capable
IDYNAMO_5generic400800falsefalsefalsefalsetruefalse
IDYNAMO_5_GEN_IIgeneric400800falsefalsefalsefalsetruefalse
IDYNAMO_5_GEN_IIIgeneric400800falsefalsefalsefalsetruefalse

WISEPAD

Device NameParser Device TypeCapabilitiesEMV ContactlessPrintingDisplayTax CapableCapture Card DataPIN Capable
WISEPAD_2generic60F8C8truefalsetruetruetruetrue
WISEPAD_W300generic60F8C8truefalsetruetruetruetrue

INGENICO

Device NameParser Device TypeCapabilitiesEMV ContactlessPrintingDisplayTax CapableCapture Card DataPIN Capable
INGENICO_GENERICgenericE0F8C8truetruetruetruetruetrue
INGENICO_IPP350genericE0F8C8truetruetruetruetruetrue

Other

Device NameParser Device TypeCapabilitiesEMV ContactlessPrintingDisplayTax CapableCapture Card DataPIN Capable
QUANTUMPAY_150generic400000falsefalsefalsetruetruefalse
SHUTTLE_MAGSWIPEgeneric402000falsefalsefalsefalsetruefalse

🚧

Note

In order for the PayConexâ„¢ Gateway to determine which device profile to use, it is critical that a particular device name as deviceProfile is specified to run a CP transaction, varying based on the device model. The same device profile property is also used for registering a device. See Device Management.

API Examples

Keyed Transaction with CVV

POST /api/v4/accounts/{accountId}/payments/device-sale

{
  "credentialOnFile": {
    "scheduleIndicator": "UNSCHEDULED"
  },
  "tenderType": "CREDIT",
  "entryMode": "KEYED",
  "posProfile": "ATTENDED_ON_PREM_POS",
  "deviceProfile": "PAX_A80",
  "amounts": {
    "currency": "USD",
    "total": "27.50"
  },
  "card": {
    "expiry": "1230",
    "p2pe": {
      "cvv": "BC53B84FA4B8F12C",
      "ksn": "FFFF9876540002400195",
      "pan": "B3804311123638D"
    },
    "masked": {
      "pan": ""
    }
  },
  "device": {
    "type": "A920",
    "serial": "0820617507",
    "app": "BluePOS",
    "appVersion": "1.0.0",
    "osVersion": "PayDroid 6.3",
    "capabilities": "E0F8C8"
  }
}

*Required Scopes: pcx:payments:*, pcx:payments:device:*, pcx:payments:device:sale

EMV Debit

POST /api/v4/accounts/{accountId}/payments/device-sale

{
  "rules": {
    "allowPartial": true
  },
  "amounts": {
    "additionalFee": "0.00",
    "cashback": "2.00",
    "currency": "USD",
    "gratuity": "0.00",
    "surcharge": "0.00",
    "total": "25.00"
  },
  "card": {
    "expiry": "1230",
    "masked": {
      "pan": "444433******1111",
      "track2": ";444433******1111=**************?"
    },
    "p2pe": {
        "ksn": "FFFF9876540002400195",
        "pan": "B3804311123638D",
        "track2": "0FE17E517D242848D8B01784C38D9914D82A48B298CDEC49301256CE720ED4B73A7E32FBC9922C15"
    }
  },
  "device": {
    "app": "BluePOS",
    "appVersion": "0-22-4-dev-debug",
    "mode": "standalone",
    "osVersion": "22:5.1.1",
    "serial": "0820619992",
    "type": "A920"
  },
  "deviceProfile": "PAX_A80",
  "entryMode": "CONTACT",
  "pinBlock": {
    "ksn": "FFFF3D3D3D0005600161",
    "pin": "B2E7B2D1F0EB2E21"
  },
  "posProfile": "ATTENDED_ON_PREM_POS",
  "tenderType": "DEBIT",
  "tlv": "9F26086F520F4F3B45A7989F2701809F370430A92D3E9F3602007B950580800480009C010082021C009F3303E0F8C89F34034203009A032105245F2A0208409F02060000000030009F03060000000000009F3501225F3401015F24032212319F100706010A03A0A8009F1A0208408407A00000000310104F07A00000000310109F0607A00000000310109F0702FF009F0902008C9F1E0830383230363137359F3901059F4104000000019F530146"
}

*Required Scopes: pcx:payments:*, pcx:payments:device:*, pcx:payments:device:sale

Contactless

POST /api/v4/accounts/{accountId}/payments/device-sale

{
  "amounts": {
    "currency": "USD",
    "total": "10.02"
  },
  "entryMode": "CONTACTLESS",
  "card": {
    "expiry": "1231",
    "masked": {
      "pan": "444433******1111",
      "track2": ";444433******1111=**************?"
    },
    "p2pe": {
      "ksn": "FFFF9876540002400195",
      "pan": "B3804311123638D",
      "track2": "0FE17E517D242848D8B01784C38D9914D82A48B298CDEC49301256CE720ED4B73A7E32FBC9922C15"
    }
  },
  "device": {
    "app": "BluePOS",
    "appVersion": "0-18-1-dev-debug",
    "capabilities": "E00808",
    "mode": "standalone",
    "osVersion": "23:6.0",
    "serial": "1350024677",
    "type": "A920"
  },
  "deviceProfile": "PAX_A80",
  "posProfile": "ATTENDED_ON_PREM_POS",
  "tenderType": "CREDIT",
  "tlv": "9F26086F520F4F3B45A7989F2701809F370430A92D3E9F3602007B950580800480009C010082021C009F3303E0F8C89F34034203009A032105245F2A0208409F02060000000030009F03060000000000009F3501225F3401015F24032212319F100706010A03A0A8009F1A0208408407A00000000310104F07A00000000310109F0607A00000000310109F0702FF009F0902008C9F1E0830383230363137359F3901059F4104000000019F530146"
}

*Required Scopes: pcx:payments:*, pcx:payments:device:*, pcx:payments:device:sale