# Frequently Asked Questions

# How can I start using Lego?

  • Signup for a Reseller account at https://st.poynt.net This is our staging environment.
  • Check you have access to Poynt HQ - our Reseller Management Portal
  • Open the page : lego-st.poynt.net (opens new window) or lego-ci.poynt.net (opens new window) and chose the organization assigned to you.
  • Start developing your first adapter
  • Make sure that you have a test POS terminal with Poynt OS with the test merchant account, right EMV configuration file and right keys

# How can I test my test adapter working good?

  • Develop your test adapter
  • Deploy it
  • Perform a transaction with your test POS terminal
  • Enter the Serial number of your POS terminal to see transaction logs
  • Check transaction logs if transaction goes through your host and got approved

# What should I do if my test adapter is not working good?

  • Check if your POS terminal has the right O.S and EMV Config version
  • Check if your POS terminal has the right keys
  • Check if the Lego adapter is correctly defined in Poynt HQ
  • Check transaction logs to see if there is any error message
  • Check if transaction hits your server. If not, check the URL defined in the end point
  • If there is a timeout from host, check timeout parameters are correctly defined in the Lego
  • If your host is always giving a negative response, check your host configuration (ie NII is correct, brand simulators are up)
  • Check if the response message from your server was received and parsed correctly

# Which communication protocols does Lego support?

Lego supports following communication protocols :

  • HTTP
  • TCP
  • SSL over TCP

# Which messaging protocols does Lego support?

Lego supports following messaging protocols :

  • Visa Gen II
  • ISO8583
  • JSON
  • XML

# Which transaction types does Lego support ?

Lego supports by default the all the well-known transaction types :

  • Authorization
  • Capture
  • Adjustment
  • Void
  • Refund
  • Balance Inquiry
  • Card Verification
  • Exchange Rate
  • Verify Step up
  • Pay Notification Webhook
  • Cash


You can add your own custom transaction type to Lego.

# Which acceptance methods does Lego support?

Lego supports following acceptance methods :

  • EMV chip
  • EMV contactless
  • Contactless MSR
  • Mag-stripe
  • Keyed/Manual Entry
  • Virtual Terminal in HQ (web)
  • Virtual Terminal in iOS / mobile

# How can I see the details of a transaction on the Lego?

After performing a transaction, you need to enter Serial Number of your device to reach out to the transaction details. Alternatively you can also enter the request id of the transaction. You will see all logs including authorization request and response messages.

# How does Lego distinguish which adapter should be used?


We might have multiple adapters defined in the Lego framework. For instance , we need to use X adaptor to do POC, but we are sure there is another Y adapter. How does our dev terminal use our new adapter?

Each merchant is associated with a single adapter in the database. Adapter id assigned to your merchant can be updated through Poynt HQ.

# Which api can I use to show specific/custom display messages on the POS screen based on acquirer response codes?


For instance, I want to show "Expired Card", "Insufficient Funds", etc.

You can use $PROCESSOR_RESPONSE.setStatusMessage('your msg') to return the decline message to be displayed.

# Can POS terminal show custom message for approved transactions?

Lego flow does not show any custom message when there is approval. Approval code can be saved in the processor response, and will be included in the receipt if printed but other than that, our POS UI does not display it.

# Can I use different POS terminals with Lego framework?

You can use any terminal (whether Poynt or a different vendor) as far as the terminal runs Poynt Operating System and connects to the Poynt Gateway to go to acquirer.

# Can I add dynamically new fields to the receipt?

Poynt HQ provides the ability to define custom fields in the Store Settings -->Reseller Fields. These fields are the list of fields in the transaction’s “processorOptions” map that should be printed on the receipt so the lego adapter can put anything you want in the processor options.

For example, to add tax number in the receipt, do following :

  • Define the field in the Poynt HQ Store Settings (i.e ‘tax no’)
  • In the adapter you put a value in this field like $TRANSACTION.getProcessorOptions().put('tax no', '123456')

# Can I define custom on-boarding data in Poynt HQ ? For example, if I want to define Alternate MID or TID, how can I do it?

You can define custom fields using ProcessorFields menu on the Lego. These fields will automatically shown in the Mission Control where you can assign values. You can also assign default values to these fields.

# I am getting an exception as Error: Failed to evaluate script: TypeError: null has no such function "toString"

Some fields might have NULL values for certain transaction types. For example track2 data comes as NULL in a referenced refund transaction. Please make sure to make a NULL check before processing a field (like converting the field to string with “toString“).

# Why don’t I see full transaction data in Capture and Void transactions?

Capture and Void transactions are child transaction of parent authorization and the processor host already have transaction information it needs.

# Can I get Card Number and Track 2 data in the clear format in a transaction?

As per PCI, both Card Number and Track2 data should be encrypted. You will see them masked like track2data=masked). But you can see first 6 digit and last 4 digit of the card number like numberFirst6=476173, numberLast4=0135

# Why am I getting an error during decryption of PIN and Card Number in my host?

Please check if your device has the right keys. Please also check if you are using the right Key Serial Number (KSN). There are 2 KSNs in the system.$TRANSACTION.getFundingSource().getVerificationData().getKeySerialNumber() is KSN for PIN key and $TRANSACTION.getFundingSource().getCard().getKeySerialNumber() is KSN for card number.

# How can I understand if a transaction is an MSR or Fallback transaction?

$TRANSACTION.getFundingSource().getEntryDetails().getEntryMode().name() === 'TRACK_DATA_FROM_MAGSTRIPE' shows that it is an MSR transaction. $TRANSACTION.getFundingSource().getEntryDetails().getEntryMode().name() === 'TRACK_DATA_FROM_MAGSTRIPE' and $TRANSACTION.getFundingSource().getEntryDetails().geticcFallback == TRUE shows that it is a fallback transaction.

# Why can’t I get Serial Number in a manual entry transaction?

Manual entry transactions are performed with the Virtual Terminal application. And this is not a hardware-based application and don’t have the device data like Serial Number.

# What is the difference between “SALE” and “AUTHORIZE“ transaction action types?

When you do a Purchase transaction, it may come to the acquirer host in 2 different ways : $TRANSACTION.getAction().name() == "SALE" or $TRANSACTION.getAction().name() == "AUTHORIZE". If transaction action is “AUTHORIZE“, it must be captured before it can be settled. If it is “SALE“, it must not be captured before it can be settled. To get the transaction type as “SALE“ or “AUTHORIZE“ from the terminal, default purchase action should be set to the “SALE“ or “AUTHORIZE“ in the Store settings of the merchant.

# I am performing the transaction on the POS but it doesn’t hit my host.

Please check if the transport protocol (HTTP, HTTPS, TCP, SSL over TCP) and endpoints (test and production) are correctly configured in Lego.

# I am getting timeout from my host.

Please check if the connect timeout and read timeout are correctly configured in Lego. You may need to increase timeout values if needed.

# I am always getting authorization decline from my host.

Transaction may be configured with the wrong NII causing the host to switch to wrong host. Please check NII values for different brands in Poynt HQ.

# I can’t see EMV data in the logs.

EMV data is displayed in clear format only if your merchant is in the CI environment. For ST and production environments, it is displayed as masked.

Last Updated: 12/15/2020, 3:34:35 PM