Scan
Overview
The Scan Command is used to initiate a barcode scanning transaction between an ECR and a Moneris terminal. This command enables the ECR to request the terminal to scan one or more barcodes and return the scanned data in a structured response.
NOTE
For idempotent transactions, only the last scanned item is returned due to storage limitations.
Request Structure
| Element | Type | Description | Size | Required |
|---|---|---|---|---|
| apiVersion | String | API version number | V20 | Required |
| istConfigCode | String | Moneris provided integration configuration code | V50 | Required |
| dataId | String | Merchant defined unique identifier for the data object | V50 | Required |
| dataTimestamp | String | Date and time of the request (YYYY-MM-DD HH:MM:SS) | F19 | Required |
| data | Object | Object that contains all transaction requests | — | — |
| request | Array | Contains data applicable to transaction request | — | — |
| idempotencyKey | String | Unique transaction identifier to avoid duplicate request | V50 | Required |
| linkId | String | ID used to group related transactions | V50 | Optional |
| terminalId | String | Destination Terminal ID | F8 | Optional |
| userName | String | Unique identifier for clerk / user | V30 | Optional |
| customIdData | String | Custom field | V50 | Optional |
| action | String | "scan" | V50 | Required |
| progressStatus | String | If value is set to "True", terminal will return progress to ECR. Note: This feature is only available on Direct Integration. | V5 | Optional |
| barcodeType | String | List of supported barcode formats to be scanned | V50 | Optional |
Request example
{
"apiVersion": "3.0",
"istConfigCode": "example_istConfigCode",
"dataId": "example_dataId",
"dataTimestamp": "1969-12-31 23:59:59",
"data": {
"request": [
{
"idempotencyKey": "example_idempotencyKey",
"action": "scan"
}
]
}
}Response Structure
| Element | Type | Description | Size | Required |
|---|---|---|---|---|
| apiVersion | String | API version number | V20 | Required |
| statusCode | String | Status code for the overall transaction request | V4 | Required |
| status | String | Description of the statusCode | V50 | Required |
| dataId | String | Merchant defined unique identifier for the data object | V50 | Required |
| dataTimestamp | String | Date and time of the request (YYYY-MM-DD HH:MM:SS) | F19 | Required |
| data | Object | Object that contains all transaction requests | — | — |
| response | Array | Contains data applicable to transaction request | — | — |
| idempotencyKey | String | Unique transaction identifier to avoid duplicate request | V50 | Required |
| linkId | String | ID used to group related transactions | V50 | Optional |
| action | String | "scan" | V50 | Required |
| statusCode | String | Status code for individual request | V4 | Required |
| status | String | Description of the individual statusCode | V50 | Required |
| completed | String | "true" or "false" | V5 | Required |
| barcode | Array | — | — | |
| data | String | Scanned data of the barcode | V200 | Conditional |
| format | String | List of supported barcode formats to be scanned | V50 | Optional |
| sessionCounter | String | Track what sequence the barcode was scanned | V3 | Required |
Response example
{
"apiVersion": "3.0",
"statusCode": "example_statusCode",
"status": "example_status",
"dataId": "example_dataId",
"dataTimestamp": "1969-12-31 23:59:59",
"data": {
"response": [
{
"idempotencyKey": "example_idempotencyKey",
"statusCode": "example_statusCode",
"status": "example_status",
"completed": "true",
"action": "scan",
"barcode": [
{
"data": "example_barcode_data",
"format": "example_barcode_format",
"sessionCounter": "example_sessionCounter"
},
{
"data": "example_barcode_data",
"format": "example_barcode_format",
"sessionCounter": "example_sessionCounter"
}
]
}
]
}
}Errors
If your response contains errors, visit the Errors page for a detailed description of each one.

