Extensions for Financial Services (XFS)

XFS4IoT Specification

2026-04 Preview

April 28, 2026

This CEN Workshop Agreement has been drafted and approved by a Workshop of representatives of interested parties, the constitution of which is indicated in the foreword of this Workshop Agreement.

The formal process followed by the Workshop in the development of this Workshop Agreement has been endorsed by the National Members of CEN but neither the National Members of CEN nor the CEN-CENELEC Management Centre can be held accountable for the technical content of this CEN Workshop Agreement or possible conflicts with standards or legislation.

This CEN Workshop Agreement can in no way be held as being an official standard developed by CEN and its Members.

This CEN Workshop Agreement is publicly available as a reference document from the CEN Members National Standard Bodies.

CEN members are the national standards bodies of Austria, Belgium, Bulgaria, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Iceland, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Norway, Poland, Portugal, Republic of North Macedonia, Romania, Serbia, Slovakia, Slovenia, Spain, Sweden, Switzerland, Turkey and United Kingdom.

Warning

This document is not a CEN Workshop Agreement. It is distributed for review and comment. It is subject to change without notice and may not be referred to as a CEN Workshop Agreement.

Recipients should notify the committee of any relevant patent rights of which they are aware and to provide supporting documentation.

EUROPEAN COMMITTEE FOR STANDARDIZATION
COMITÉ EUROPÉEN DE NORMALISATION
EUROPÄISCHES KOMITEE FÜR NORMUNG

Management Centre: rue de Stassart, 36 B-1050 Brussels

© 2026 CEN All rights of exploitation in any form and by any means reserved worldwide for CEN national Members.

Table of Contents

1 - Foreword

XFS4IoT has been identified as a successor to XFS 3.x to meet the following requirements:

  1. Replace the XFS and J/XFS standards in the marketplace.
  2. Target industries – Retail Banking.
  3. Operating System Agnostic and Technology and Language Adaptable.
  4. Multi-Vendor – Able to run common core high level functionality on multiple vendors hardware, while providing access to finer level device API granularity.
  5. Flexibility – enabling new hardware topologies, device types and functionality to be rapidly adapted.
  6. Support end to end application level security.
  7. Should not prevent the use of a low resource computing environment.
  8. Provide a good developer experience by providing a well-documented API that is easy to learn, is quick to market and reduces risk by exposing an unambiguous interface.
  9. Leverage existing standards.

Within the overall requirements specified in the Charter, the opportunity has been taken to solve some of the issues with the 3.x interface while retaining all the same functionality:

  1. Binary data structures makes adding new functionality difficult due to compatibility issues, leading to multiple redundant versions of the same command appearing in many of the existing device classes. To resolve this, a flexible text based approach has been adopted including the wide use of default parameters.
  2. Compound devices have been difficult for applications to implement, particularly cash recycling. Addition of other shared functionality such as end to end security would make the use of compound devices more prevalent. Compound devices are removed in XFS4IoT, a single service can support as many interfaces as required to support its requirements.

Migration from and to 3.x is a major consideration to support adoption of XFS4IoT. While a lot of duplication has been removed (for example the Card Reader interface has fewer commands and events defined than the equivalent 3.x IDC specification), all the same IDC commands and events can be implemented. In some cases, this is achieved by having shared common commands such as Common.Status which replaces all the 3.x WFS_INF_XXX_STATUS commands.

2 - API

This chapter defines the API functionality and messages. It defines the XFS4IoT API including but not limited to:

  • System Architecture
  • Message Definition
  • End to End Security

XFS4IoT defines a system consisting of services provided by one or more vendors. Each service can support one or more interfaces as required to meet the requirements of the device or function it supports, so for example a Cash Recycling device will need the following interfaces to supply all the device's functionality:

  • Common, which defines functionality common to all devices
  • CashManagement, which defines functionality common to all cash handling devices
  • CashAcceptor, which defines functionality common to all cash accepting devices
  • CashDispenser, which defines functionality common to all cash dispensing devices
  • Storage, which defines functionality common to devices which store items

Additional interfaces can be added as required for example KeyManagement to support encryption key management.

The following sections describe how clients and services create connections and send messages to each other.

2.1 - References

ID Description
api-1 JSON (https://www.json.org/)
api-2 XFS Interface Specification, End to End (E2E) for XFS/XFS4IoT Programmer's Reference
api-3 The WebSocket Protocol (https://datatracker.ietf.org/doc/html/rfc6455)
api-4 JSON Schema 2020-12 (https://json-schema.org)
api-5 JSON Pointer (https://datatracker.ietf.org/doc/html/rfc6901)
api-6 Tags for Identifying Languages (https://datatracker.ietf.org/doc/html/rfc5646)
api-7 JSON Merge Patch (https://datatracker.ietf.org/doc/html/rfc7386)

2.2 - WebSockets Connections

Multiple services can be supplied by multiple vendors. This standard doesn't require coordination between these different vendors, or between the service publishers and the service client. It is possible to operate a system with components from multiple hardware vendors, and with third party applications, without the prior knowledge of any party.

This specification covers an environment using WebSockets (ref. api-3) to communicate between services and applications, either on a single machine or across a network.

This section covers both the process for publishing a service such that it can be discovered, and the discovery process used by the service client.

There is also a clear definition of responsibility for each component in the system, including when there are dependencies between components. There are no shared components required to coordinate the system.

The underlying network can use any protocol that supports WebSockets such as IPv4 or IPv6. Nothing in this document requires any particular underlying protocol.

2.2.1 - Overview

In this standard there are two types of "endpoint"; publisher and service. Each endpoint, of either type, is published by a single software/hardware vendor. A publisher endpoint is used for service discovery, to discover service endpoints. A single service endpoint can expose multiple "services", where each service typically represents a single piece of hardware. A single machine (or a single IP address) may expose multiple publisher and service endpoints from different vendors. A "client" application may consume multiple services from multiple service endpoints on the same machine, or across multiple machines.

On startup of the machine, any software services attempt to claim access to individual network ports using the underlying operating system mechanism. Ports are claimed sequentially from a known sequence. Each port becomes an endpoint that can publish multiple services from a single vendor.

A client application will attempt to connect to each port on a machine in the known sequence to get a list of all active publisher endpoints. For each publisher endpoint it then exchanges JSON messages across WebSockets with URIs using a known format to recover a list of services published by that endpoint. Once it has a full list of services it can use WebSocket connections to communicate with each service to perform whichever actions are required.

2.2.2 - Uniform Resource Identifier (URI)

This section describes the Uniform Resource Identifiers used in XFS4IoT.

2.2.2.1 - URI Format

Communication with service publishers and services will be through distinct URIs which will use the following format:

wss://machinename:portnumber/xfs4iot/v1.0/servicename

This URI consists of the following components:

URI Component Description
wss:// or ws:// The protocol id for secure WebSockets. See Network Protocol.
machinename The identification of the machine publishing endpoints. See Machine Identification.
portnumber The port number discovered through the initial service discovery process. See Port Sequence.
xfs4iot A literal string. The inclusion of this part identifies standard XFS4IoT services published on this URI. It allows the possibility of a single vendor publishing standard and non-standard proprietary services on the same port. Any standard service URI will start with this string. Any non-standard service's URI must not start with this string.
v1.0 The version of the protocol being used by this service. This may be updated to support services with different protocol versions in future versions of the specification and allows support for multiple versions of the specification on the same machine and endpoint.

Note that most future changes to the XFS4IoT specification will be done in a non-breaking, backwards and forwards compatible way. For example, optional fields will be added to JSON messages when required and will have no impact on the protocol. This means that changes to the version field of the URI will be very rare. It will only be changed if there is a breaking, incompatible change or a fundamental change to the API. Because of this there won't be any need for complex version negotiation between the client and the service. The client will simply attempt to open the version of the API that it supports.
servicename This will be included in the URI to allow different services to be identified on the same port. services will normally match individual devices. The exact service name is discovered during service discovery and is vendor dependent. The format of the service name shouldn't be assumed. The only URI that doesn't include a service name is the service discovery URI.

For example, a service discovery URI might be:

  • wss://terminal321.atmnetwork.corporatenet:443/xfs4iot/v1.0
  • wss://192.168.21.43:5848/xfs4iot/v1.0

Service URI might be:

  • wss://terminal321.atmnetwork.corporatenet:443/xfs4iot/v1.0/maincashdispenser
  • wss://192.168.21.43:5848/xfs4iot/v1.0/cardreader1

The URI will be case sensitive and lower case.

2.2.2.2 - Network Protocol

The WebSocket protocol defines two URI schemes, wss and ws that are used for encrypted and unencrypted connections. All connections in XFS4IoT should use the wss scheme using TLS encryption to secure network connections. The only exception will be when the network connection between the client and service can be physically secured, for example inside an ATM enclosure. In that case it will be possible to use clear communication without TLS encryption and it is the responsibility of the hardware vendor to ensure that this is sufficient.

  • Encrypted connections are identified by the wss:// protocol specifier.
  • Unencrypted connections are identified by the ws:// protocol specifier.

Where TLS is used, the service will be protected by a mutually trusted server side certificate as part of the TLS protocol. This complete certificate chain must be mutually trusted by the client and service.

Establishing and managing the certificates between the service and the client is outside of the scope of this specification but trust must be in place. This might be achieved using a public third party certificate authority that issues TLS certificates. Alternatively it might be achieved using a bank's own internal CA. It shouldn't depend on a private Certificate Authority or certificates issued by a vendor, which might limit access to the service.

A wss connection with invalid certificates will be invalid and will be rejected by both the client and the service.

2.2.2.3 - Machine Identification

Machines publishing services are identified by URIs. Machines exposing endpoints can be identified by an IP address or by a DNS name.

Either the IP address or DNS name for a machine must be known by the client for the client to connect. This would probably be a configuration setting for the application and would need to be known by the organization setting up the application, but this configuration is outside the scope of this document.

2.2.2.4 - Port Sequence

Services will be published on a sequence of IP ports consisting of port 80 or 443 followed by the ports 5846 to 5856 inclusive. Hence the full sequence of ports will be 12 ports as,

80 or 443, 5846, 5847, 5848, ... 5855, 5856

Port 80 will only be used with HTTP/WS. Port 443 will only be used with HTTPS/WSS. All other ports may be used with either or both HTTP/WS and HTTPS/WSS.

Port 80 and 443 are the standard ports for HTTP and HTTPS and have the advantage that they are likely to be open on firewalls. The correct port will be used to match the protocol - 80 for HTTP/WS and 443 for HTTPS/WSS. Other ports are flexible and can be used for either protocol by the Service Publisher.

The port range 5846-5856 is semi-randomly selected in the 'user' range of the port space as defined by ICANN/IANA. This range is currently unassigned by IANA.

2.2.3 - Service Publishing

Service publishers will negotiate access to resources and publish services using the following process.

2.2.3.1 - Free Endpoint Port Discovery

On startup each service publisher must attempt to connect to the first port in the port sequence. It will use the underlying OS and network stack to attempt to bind to this port.

All network access must go through the normal underlying OS mechanism. One service publisher must not block another publisher from accessing the network.

If the underlying OS reports that the port is already in use the service publisher will repeat the same process with the next port in the port sequence. This will be repeated until a port is successfully bound to, or all ports in the sequence have been tried.

If no available port can be found the service publisher will have failed to start. How this failure is handled by the service publisher is undefined.

It's important that a single hardware vendor doesn't use up multiple ports, since this could lead to all the ports being blocked so that other publishers can't get a free port. Therefore any single hardware vendor must publish all services on a single port, determined dynamically as above.

Note: A service publisher will only fail to find a free port if more than 12 different hardware vendors are attempting to publish services from the same machine. This should be unusual.

2.2.3.2 - Handling Incoming Connections

Once a service publisher has successfully bound to a port it must handle connection attempts. It will accept all connections from any clients without filtering attempts. Security around connections will be handled after a connection has been established.

Note: This document does not cover restrictions on connections to services or managing permissions for connections, such as limiting connections to certain machines or sub-nets. This would normally be under the control of the machine deployer and can be controlled through normal firewall settings and network configuration.

Incoming connection attempts will specify a specific URI using the normal WebSocket process. The service publisher will allow connections to valid URIs as defined in this spec and track which URI each connection was made to.

The initial connection will be to the URI wss://machinename:port/xfs4iot/v1.0. This connection will then be used to list/discover individual services using the process outlined in Service Endpoint Discovery.

2.2.4 - Service Discovery

A client application must be able to discover and open a connection to each service that it will use. It does this in two steps; firstly, through publisher endpoint discovery, then through service discovery for each service endpoint. It will do this through the following process.

2.2.4.1 - Publisher Endpoint Discovery

The client will enumerate endpoints by attempting to open a WebSocket connection to the following URL on each port in the Port sequence.

wss://machinename:portnumber/xfs4iot/v1.0

The client will continue to enumerate publisher endpoints by repeating for each port number in the port sequence until all ports have been tried.

The client will also start service endpoint discovery on the open connection. There is no requirement for the order of opening ports and discovering services. All ports connections may be created first followed by service discovery, or port enumeration and service discovery may continue in parallel.

If the connection attempt to any port fails then the application will attempt error handling for network issues, machine powered off, etc. The details of error handling are left up to the client.

2.2.4.2 - Service Endpoint Discovery

Once a connection has been established between the client and each publisher endpoint, the client will discover the services published by sending a service discovery command and receiving messages in the usual way as described in Message Types.

GeneratedDiagram

The only command sent to the publisher endpoint will be ServicePublisher.GetServices.

The publisher will acknowledge the command.

The command will be followed by zero or more ServicePublisher.ServiceDetailEvent messages, then complete with a completion message. Each event and the completion message will contain the following payload:

{
  "payload": {
    "vendorName": "<Name of hardware/software vendor>",
    "services": [
      {
        "serviceURI": "wss://machinename:port/xfs4iot/v1.0/<servicename1>"
      },
      {
        "serviceURI": "wss://machinename:port/xfs4iot/v1.0/<servicename2>"
      }
    ]
  }
}

The service endpoint URI will be returned as a serviceURI property.

A publisher service may be designed to send one URI per message, or it may group URI together into a smaller number of messages. The publisher should try and send messages to report on each URI as soon as each URI is known. It's possible a publisher will know the complete set of URI when they're requested and can send them all at once in one or more messages. Alternatively, the URI may not be known straight away, for example if an IP address or port is being dynamically allocated. In that case the publisher service would delay sending events for unknown URI until the full URI is known.

Having each URI reported only once means that a client can connect to each URI reported in events without having to track which URI have already been connected to. This simplifies the client. Alternatively, a client may wait for the completion message and a full set of URI before attempting to connect. This would be simpler to implement but might be slower to start up.

The completion message will contain every URI that the publisher service is aware of.

The publisher service will follow the above process to publish all URI that it's aware of. It will not suppress URI based on device status or service status.

For example, a device might be powered off, in the process of powering on, or powered on but have a hardware fault that makes it impossible to use. In all cases the publisher service will publish the URI anyway. The client can't assume anything about the device based on the URI. It will always need to query the service at the URI for its status to know more.

Events should be sent as soon as a URI is known by the publisher - the event doesn't mean or imply that the URI is currently available or can be connected to - that error handling must be performed by the client.

Note: Even if the publisher service could know that a URI was valid at the time that it sends the event, the client can't know that the URI is still valid when it attempts to use the URI. It could have failed between querying and connecting. So the client has to handle errors, timeouts and retrying when connecting to the URI.

The client may then attempt to open a WebSocket connection to each of the returned URI. The client will handle connection failures and timeouts by repeating the attempts to connect such that the service has a reasonable amount of time to start up.

Each service will endeavor to accept connections as quickly as possible during startup and restarts. Some devices are physically slow to start up, but software should be able to start relatively quickly. So, for example, a cash recycler device might be able to accept a connection within a few seconds of power being applied, but the physical hardware can take several minutes to reset. Once a connection has been accepted a service may continue to report device as starting until the device is physically started and ready. While starting, any command on the connection other than Common.Status will fail with sequenceError.

Each connection will be used to communicate with a single service. The service will then be queried for details about that service, such as the type of service or device that it represents and the messages and interfaces that it supports.

The connection to the service will be kept open for as long as the service is in use. Details of the service lifetime are covered elsewhere.

The returned URI is a full URI including the machine name and port. It is possible that these values will be different to the service discovery URI - each service may be on a different machine, a different IP address, and a different port. The port is also independent of the discovery port range. It can be any port number.

The service URI values will have the same version number as the service discovery URI version number. Different versions of the API will not be mixed.

If a client wants to open multiple different API version numbers then it should perform service discovery against each of the possible version URI strings.

The client may close the publisher connection once it has completed service discovery, or it may keep the connection open. This will have no effect on the behavior of services.

2.3 - Messages

XFS4IoT services are accessed using messages passed over a WebSocket Interface. The messages are JSON formatted data Ref. api-1 defined using JSON Schema 2020-12 Ref. api-4.

2.3.1 - Message Definition

All messages follow the same JSON structure consisting of the following properties:

Property Property Type Required
header object
payload object, null

As illustrated in the example below.

{
    "header": {
    },
    "payload": {
    }
}

2.3.2 - Header Definition

The header contains properties common to all messages as well as properties specific to a message type.

Additional properties are not allowed.

Property Property Type Required
type string
name string
version string
requestId integer
timeout integer
status string, null
completionCode string, null
errorDescription string, null

The following example illustrates the header for a Common.Status command message.

{
    "header": {
        "type": "command",
        "name": "Common.Status",
        "version": "1.0",
        "requestId": 12345,
        "timeout": 1000
    }
}

2.3.2.1 - type Property

2.3.2.2 - name Property

The message name, for example Common.Status.

2.3.2.3 - version Property

The message version, for example 1.0.

2.3.2.4 - requestId Property

Unique request identifier supplied by the client used to correlate the command message with acknowledge, event and completion messages. The client will supply values between 1 and 4294967295 inclusive (the maximum value of a 32 bit unsigned integer), incrementing with each command. The maximum value has been chosen for broad implementation compatibility. When the maximum value is reached the client must wrap the value back to 1. The service will check that the requestId does not conflict with a currently executing or queued command request from the same client and return status invalidRequestID if it does.

Unsolicited messages do not have a requestId.

2.3.2.5 - timeout Property

This property is only applicable to command messages.

Timeout in milliseconds for the command to complete. If set to 0, the command will not timeout but can be canceled.

Default: 0

2.3.2.6 - status Property

This property is only applicable to acknowledge messages.

If null, the command has been accepted for execution and will complete with a completion message. Otherwise, this property can be one of the following values:

  • invalidMessage - The JSON in the message is invalid and can't be parsed.
  • invalidRequestID - The requestId on the command is invalid. This could be because the value is not an integer, has a zero value, has not been incremented, exceeds the maximum value, or because a command with the same requestId from the same client connection is already queued or is executing.
  • tooManyRequests - The service has currently received and queued more requests than it can process.

Default: null

2.3.2.7 - completionCode Property

This property is only applicable to completion messages.

If null, the command completed successfully. Otherwise, the property will contain one of the following values:

  • commandErrorCode - Check the errorCode property for the command specific error code.
  • canceled - Canceled using the Common.Cancel command.
  • timeOut - Timed out after the client specified timeout.
  • deviceNotReady - The device is not ready or timed out.
  • hardwareError - An error occurred on the device.
  • internalError - An internal inconsistency or other unexpected error occurred.
  • invalidCommand - The command is not supported by the service.
  • unsupportedCommand - The command is valid for the interface but is not supported by the service or device.
  • invalidData - The command message contains invalid data.
  • userError - The user is preventing proper operation of the device.
  • unsupportedData - The command message contains data that is valid for the interface command but is not supported by the service or device.
  • fraudAttempt - The user is attempting a fraudulent act on the device.
  • sequenceError - The command request is not valid at this time or in the device's current state.
  • authorizationRequired - The command request cannot be performed because it requires authorization.
  • noCommandNonce - The value of the nonce stored in the hardware was cleared, for example by a power failure.
  • invalidToken - The security token is invalid.
  • invalidTokenNonce - The value of the nonce in the security token does not match the stored value.
  • invalidTokenHMAC - The value of the HMAC in the security token is incorrect.
  • invalidTokenFormat - The token format version value is not recognized, or the token format is somehow invalid.
  • invalidTokenKeyNoValue - The key used for the HMAC for a token has not been loaded and the token cannot be validated.
  • notEnoughSpace - There is not enough space on the storage.

If the value is commandErrorCode, the payload errorCode property contains the command specific completion error code.

Default: null

2.3.2.8 - errorDescription Property

This property is only applicable to completion messages for which the completionCode value is neither canceled or timeOut.

If not null, this contains additional vendor dependent information to assist with problem resolution. The format of this string should not be relied on.

Default: null

2.3.3 - Payload Definition

The XFS4IoT interface specifications detail the payload content for the command, event, completion and unsolicited messages.

If not null, the payload cannot be empty. It must contain at least one property.

2.3.3.1 - Additional Properties

It is possible to include additional properties not defined by the specification. This can be useful in some cases and is allowed as long as those additional properties do not impact the proper functioning of the service or client.

For example, it may be useful to include properties with extra debugging information such as human readable error messages or hardware specific error codes.

Any additional property not defined by this specification and not recognized by the service or the client will be ignored.

Ignoring an unknown property will have no effect on the standard behavior of the service or client. There will be no requirement to use undefined additional properties.

The service or client may use undefined additional properties for whatever purpose they require. Dependance on undefined additional properties will mean the client or service is non-standard and may impact interoperability.

When non-standard properties are used there is a risk that the same name could be used by different implementations, causing unexpected behaviors. Implementors should reduce the risk of this name clash by using a company name or code as a prefix for the property name. For example, a company called "Acme" might add the "acmeHardwareError" and "acmeLogMessage" properties.

2.4 - Message Types

XFS4IoT supports the following message types.

type Direction Description
command client to service Message sent to the service to perform a command.
acknowledge service to client Message from the service indicating if the command is valid and queued.
event service to client Intermediate message from the service indicating progress of the command.
completion service to client Message from the service indicating the command is complete.
unsolicited service to client Message from the service unrelated to a command.

2.4.1 - Command Messages

The start of a command will be initiated by the client with a command message, requesting the service performs the specified action. The message uses the standard header properties with type set to command.

The requestId is given by the client and allows the client to link messages sent in response to the command back to the original command. For example, the completion message for this command will contain the same requestId.

The requestId must be between 1 and 4294967295 inclusive (the maximum value of a 32 bit unsigned integer), incrementing with each command. When the maximum value is reached the client must wrap the value back to 1. The client is responsible for ensuring that each requestId is unique for a single connection. They do not have to be unique across connections. The request is identified by a combination of the requestId and the connection.

The service will remember the last requestId and reject any requestId for a new command which is lower or equal to the previous requestId, except when the previous requestId was at the maximum value of 4294967295, in which case a requestId of 1 is allowed. Other than that the service will not track the requestId.

Examples of commands with payloads are shown in the example sequence.

2.4.2 - Acknowledge Messages

As soon as the service has received and parsed the command message it will send an acknowledge message to indicate that the command message has been received and queued. This will normally include the requestId so that the client can identify which command it relates to (unless an error occurs which prevents the requestId being included). The message uses the standard header properties with type set to acknowledge.

Sending the acknowledge message immediately allows the client to handle network errors and lost messages more quickly. It can set a short timeout and expect to receive the acknowledge within that timeout, and continue with error handling if it does not.

Receiving the acknowledge message does not give any guarantees about what the service will do with the command, or even that it can be executed. Any errors will be reported in the completion message for the command, not in the acknowledge.

If for any reason the service does not accept and queue the command request, the acknowledge message header status property will indicate the reason. When this occurs, the acknowledge message is the final message related to the command request.

Examples of acknowledge messages are shown in the example sequence.

2.4.3 - Event Messages

During the processing of the command the service can send multiple solicited events, as defined in the interface chapters. This is used to inform the client when something significant happens that it may need to react to, like a card being inserted or a key being pressed.

Each solicited event will contain the original requestId in the header, and will only be sent on the connection that the original command was received on, so that individual solicited events can be linked to the original command by the client.

For compatibility with future specification changes, and to permit custom extensions by service implementors, the client should ignore any events that it does not recognize.

Examples of event messages are shown in the example sequence.

2.4.4 - Completion Messages

If a command is accepted, there will be one completion message. If an acknowledge message with an error code is returned to the command message then the command will not be executed, and no completion message will be sent.

The message uses the standard header properties with type set to completion. The completion message will contain the requestId from the original command message, so that the client can link the message back to the command. After the completion message for a command has been sent with a particular requestId, no more messages will be sent with that requestId.

Each completion message will contain as much information as possible to avoid requiring extra events. For example, when a command is used to fetch information from the service then the information will be included in the completion message. When a command results in particular information, like reading a card, then that information is included in the completion message. The exact information included in each completion message is defined in the interface document that defines that completion message.

Examples of completion messages are shown in the example sequence.

After a command message has been received and associated acknowledge sent, the completion code, either success or an error code, will be included in the completion message for that command. The interface chapter may define command specific error codes that are valid for each completion message. No other error codes will be returned by the service for the completion message.

The completion message payload completionCode property contains one of the values defined in Completion Codes.

When an error occurs, optional vendor specific information may be included in the errorDescription property.

2.4.5 - Unsolicited Event Messages

The service will also send unsolicited events to the client to signal events that can happen at any time, independent of command handling. These can happen before, during, or after any command handling. The message uses the standard header properties with type set to unsolicited.

To allow clients to react to events quickly, unsolicited messages should be sent as soon as possible. For example, it should avoid queuing events until after the current command has been processed if it does not have to.

Since unsolicited events are not linked to command handling, they do not have a requestId. The event header will not contain a requestId property. Unsolicited events are also broadcast to all clients, on all open connections.

Each interface chapter defines the unsolicited events relevant to the interface.

For compatibility with future specification changes, and to permit custom extensions by service implementors, the client should ignore any events that it does not recognize.

Examples of unsolicited messages are shown in the example sequence.

2.5 - Command Processing

Once a service has been discovered (see Service Endpoint Discovery) and a connection created the client can send command messages to the service. Commands may cause the service to perform actions that are entirely software based, such as returning the current status, or they may cause actions to be performed by hardware, such as opening a shutter.

The sequence of messages passed between the service and the client is the same for all commands, independent of the command or interface being used.

Services may also send unsolicited events directly to the client. This can happen at any time that the service connection is open. This could be during the processing of a command, or between commands.

The following sections provide information on various topics related to command processing:

  • Standard command processing flow
  • Command queuing
  • Commands cancellation
  • Example flow

2.5.1 - Standard Sequence

The normal command message sequence will be as follows, note this example has multiple solicited and unsolicited events:

GeneratedDiagram

All parts will be passed as standard messages as defined in the Messages section.

2.5.2 - Command Queuing

Some commands can be executed in parallel. For example, a status command that returns the current status can always be executed immediately even if another long running command is being executed. Other commands may be blocked from parallel execution by mechanical or other restraints. For example, it's probably impossible to accept a card and capture a card at the same time on most card readers.

As far as possible, services will attempt to execute commands in parallel. In particular, all commands that simply return information should be executed immediately even if other commands are in progress. It is up to the client to synchronize status information with ongoing actions.

When it's not possible to execute a command immediately then commands will be queued and executed as soon as possible.

The acknowledge message is always sent before the command is queued.

GeneratedDiagram

Queued commands will normally be dequeued and executed in the order received. It is valid to execute queued commands in a different order to that received.

If the condition that caused a command to be queued clears, the command nearest the front of the queue that is blocked by that condition will be dequeued and executed ahead of any other commands nearer the front of the queue.

For example, if while idle, an Encrypting Pin Pad service receives the following command requests in the order listed:

  1. Keyboard.DataEntry
  2. Crypto.CryptoData
  3. Keyboard.PinEntry
  4. Crypto.Digest

The service executes in parallel the Keyboard.DataEntry and Crypto.CryptoData commands as one uses the Pin Pad and the other uses the encryptor. The Keyboard.PinEntry and Crypto.Digest commands are added to the queue in that order. If the Crypto.CryptoData command completes before the Keyboard.DataEntry command, the service will execute the Crypto.Digest command as the encryptor is available while keeping the Keyboard.PinEntry command on the queue as the Pin Pad is still in use by the Keyboard.DataEntry command.

The order of execution would therefore be:

  1. Keyboard.DataEntry
  2. Crypto.CryptoData
  3. Crypto.Digest
  4. Keyboard.PinEntry

2.5.3 - Cancelation

A client can use the Common.Cancel command to attempt cancelation of one, multiple or all queued or executing commands at any time.

The Common.Cancel command adheres to the standard command message flow. That is, the client must assign it a unique requestId when sending the command message, and the service will send both acknowledge and completion messages using that requestId. The service will not send any event messages related to the Common.Cancel command requestId.

The Common.Cancel command can only be used to cancel requests associated with the client connection on which the command is sent. That is, one client cannot cancel another client's requests.

The Common.Cancel command itself cannot be canceled. Similarly, a requestId that does not match a queued or executing command requestId will have no effect.

The Common.Cancel will complete immediately. It will not wait until the completion messages of the specified request(s) have been sent.

Completion of the Common.Cancel command does not imply when the commands requested to cancel will complete. Nor does it imply those commands will be canceled and complete with completionCode of canceled.

Clients should expect that, at some future point, commands may complete with a completionCode other than canceled. For example, device state prevents the command canceling forcing it to complete as if no cancel request had been received.

The service will always cancel queued commands which have not started executing.

The service must send completion messages, for any command requests being canceled, after the completion message for the Common.Cancel command has been sent.

The client should not attempt to cancel any one requestId more than once as it is the responsibility of the service to maintain the cancel requested state of a command until the command completes. Sending multiple requests to cancel the same command will have no effect.

2.5.4 - Example Command Request Message Sequence

GeneratedDiagram

2.6 - Message Versions

All messages types are assigned version numbers to enable evolution of individual messages.

The major version number of a completion message will always be the same as the major version number of the command message it is associated with, however, the minor version numbers can be different. If the major number of one of these message types changes changes, the major number of the other will be updated to match even if there are no changes or only minor changes to the other message type.

If a new version of a command message has a property which has an associated capability property, the service must implement, at a minimum, the version of the Common.Capabilities command that includes the associated capability property. This will allow the client to decide whether to use the command message property and the value it should be set to.

Each release of the specification defines the message version numbers of the command, acknowledge, event, completion and unsolicited messages included in that release of the specification. The specification number is different from the message version numbers. If a message definition does not change from one release of the specification to the next, the message version number will remain the same.

2.6.1 - Version Numbers

Message version numbers have the form X.Y where X and Y are non-negative integers, and do not contain leading zeroes. X is the major version and Y is the minor version. The major and minor version numbers are incremented according to the scope of change described in the following sections.

The major version must be greater than 0. If a minor change is made, the minor version is incremented and the major version remains the same. If a major change is made, the major version is incremented and the minor version is reset to 0. For example, 1.1 -> 1.2 -> ... -> 1.10 -> 2.0.

The major and minor version numbers are incremented according to the scope of change described in the following sections.

2.6.1.1 - Major Version Numbers

Major version X (X.y) numbers will be incremented in the specification if any backwards incompatible changes are introduced to the command, event, unsolicited or completion messages. It may also include minor level changes.

Major version increments represent a new command, event or unsolicited message. While there will likely be similarities with the previous major version, this is not guaranteed.

Major version increments allow:

  • Removal of command message properties.
  • Change of definition of command message properties.
  • Change of definition of completion message properties.
  • Change of definition of event message properties.
  • New event messages which cannot be ignored by the client.

2.6.1.2 - Minor Version Numbers

Minor version Y (x.Y) numbers will be incremented in the specification if new, backwards compatible functionality is introduced to the command, event, completion or unsolicited message. It will also be incremented if any message property is marked as deprecated. It may be incremented if substantial new functionality or improvements are introduced where backwards compatibility is maintained.

Minor version increments allow:

  • Additional command message properties.
  • Additional completion, event and unsolicited message properties.
  • New event messages which can be ignored by the client.

Additional command message properties must be optional. If omitted, the command behavior must be as defined in minor version 0 of the major version of the command message. If included, additional properties may change the behavior of the command. Clients that included additional command message properties that change behavior should therefore handle these behavioral changes.

For additional completion, event and unsolicited message properties, clients should expect that new properties may be added and if not required, ignored. That is, clients should not break because they do not recognize additional properties.

2.6.2 - Version Number Selection

Version number selection occurs after the client connection has been established with the service. The client is responsible for determining and setting version compatibility using the Common.GetInterfaceInfo and Common.SetVersions commands. These commands should be used before any other command to ensure the service sends message versions compatible with the client. If the client does not use the Common.SetVersions command the service may send message versions which are incompatible with the client. By default, the service will for each client connection, use the lowest available major version of each message it supports.

If incompatible the client must handle the incompatibilities, possibly by not using incompatible commands. If this is not an option, the client should close the connection and not use the service.

The following sequence demonstrates use of the Common.GetInterfaceInfo command to identify the command, event (including unsolicited) versions supported by the service, and the client use of the Common.SetVersions command to inform the service of the event versions that should be sent for the connection on which the command is sent.

GeneratedDiagram

2.6.3 - Version Evolution Example

The following table depicts an example evolution of a command, an event and an unsolicited event.

Evolution command event completion unsolicited
Initial 1.0
propA
1.0
propA
1.0
propA
1.0
propA
Minor update
- command property added
- completion unchanged
1.1
propA
propB
1.0
propA
1.0
propA
1.0
propA
Minor update
- event property added
1.1
propA
propB
1.1
propA
propB
1.0
propA
1.0
propA
Major update
- completion property removed
- command unchanged
- unsolicited property removed
- unsolicited property added
2.0
propA
propB
1.1
propA
propB
2.0
propB
2.0
propB

2.6.4 - Extending Enumeration Values

Extending an enumeration value is a breaking change as existing clients will not be coded to handle the new enumeration value. A breaking change to a message requires the message major version number be incremented.

Where possible the specification will avoid breaking changes. To support this, if the additional enumeration value is related to an existing enumeration value:

  • An additional property with name originalNameX will be added to the message definition, where originalName is the original name of the property and X is the next available index. Indices will be non-negative integers and start at 2.

  • The message minor version number will be incremented. This indicates the change is backwards compatible.

  • The original property definition will be set as deprecated indicating it may be removed in a subsequent major revision of the message.

  • Service implementations which implement the message version that defines the additional property will, if the original property is required, always include both originalName and originalNameX properties.

Existing clients will be unaffected by the additional property as the original property will still be included in the message. New or updated clients can be written to use any of the previous related properties. If a client does not have a use for a new enumeration value, it can continue to use one of the previously defined related properties.

For example, if version 1.0 of a message defines a device property with enumeration values:

  • online, offline, hardwareError, userError

And a new enumeration value is added:

  • fraudAttempt

This relates to the existing, less specific, userError value, the new enumeration value could be added to the device2 property in minor increment version 1.1 of the message. In this case when reporting the new enumeration value, version 1.1 of the message will include both:

{
  "device": "userError",
  "device2": "fraudAttempt"
}

2.7 - Configuration

Services may support service specific configuration. To allow clients to retrieve detailed information about the configuration items supported by the service, configuration is defined using JSON schema [Ref. api-4]. This gives clients access to the configuration item names, types, constraints and hierarchy as well as other annotation information such as default values, examples and descriptions.

If descriptions are included these:

  • Must be US English (en-US).
  • Must be as concise as possible. Vendor documentation must still be used when descriptions are long or complex.
  • May have basic Markdown formatting, e.g., bold, italic, ordered and unordered lists.

2.7.1 - Configuration Schema

As configuration is service specific, it is outside the scope of this specification to define the schema.

Clients must use the Common.GetConfigurationSchema command to retrieve the service specific schema.

Clients can then parse the schema definition to identify the configuration items supported by the service then use the Common.GetConfiguration and Common.SetConfiguration commands to get, set and delete configuration as required.

To prevent clients including configuration not supported by the service, the schema must use "unevaluatedProperties": false to reject any configuration properties not explicitly defined. This removes the potential for a client to expect specific behavior from the service that the service does not support.

When defining configuration items, it is recommended that configuration items be nested in objects representing the interfaces they configure. If vendor specific, the configuration options should be nested in objects specific to the vendor. This allows for a more organized and maintainable configuration structure that is less likely to clash with other vendor service implementations.

The following example schema demonstrates a configuration schema that could be returned from a service which supports the CashDispenser interface:

{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "unevaluatedProperties": false,
    "properties": {
        "cashDispenser": {
            "description": "Cash dispenser interface configuration.",
            "type": ["object", "null"],
            "default": null,
            "minProperties": 1,
            "unevaluatedProperties": false,
            "properties": {
                "acme": {
                    "description": "Acme vendor specific configuration.",
                    "type": ["object", "null"],
                    "default": null,
                    "minProperties": 1,
                    "properties" : {
                        "maxDispenseItems": {
                            "description": "Maximum number of items that can be dispensed.",
                            "type": ["integer", "null"],
                            "minimum": 10,
                            "maximum": 100,
                            "default": 50
                        },
                        "clearTransportOnStartup": {
                            "description": "Specifies whether the Service Provider will test the device at
start-up and clear any media found in the transport. Valid values are:\n- 'reject'- The reject bin.\n-
'retract' - The retract bin.\n- 'present' - To default output position.",
                            "type": ["string", "null"],
                            "enum": ["reject", "retract", "present"],
                            "default": "reject"
                        }
                    }
                }
            }
        }
    }
}

2.7.2 - Configuration Command Use

The following sequence diagram demonstrates use of the configuration commands with the example schema:

GeneratedDiagram

2.8 - End to End Security

A key priority for XFS4IoT is to improve security of the entire environment where XFS is used. This means securing not only the interface between the service and the device, or the interface between the client and the service, but providing security all the way from one end of an operation to the other.

For example, during a cash dispense operation, the transaction will first be authorized by an authorizing host which represents the owner of the cash in the device. That host will communicate through various other systems to the client application, the client application will communicate with the XFS4IoT service and the service will finally communicate with the device. Any part of that process is vulnerable to an attack which could lead to the wrong amount of cash being dispensed. XFS4IoT has been designed to block attacks at any point between the authorizing host and the dispenser hardware.

Details of end-to-end (E2E) security are covered in the generic E2E security specification [Ref. api-2] shared between XFS3.x and XFS4IoT. Generic and specific E2E tokens are defined in that specification. The tokens are passed to commands and returned in events which are documented in this specification, such as with CashDispenser.Dispense

There are specific commands to support E2E security which are covered by this specification, including Common.GetCommandNonce and Common.ClearCommandNonce

Not all commands that could require E2E security are currently covered. When E2E security is being enforced by a device, sensitive commands with no token defined will be blocked from executing. This is required to avoid any way of bypassing security. For example, the cash CashDispenser.Dispense command has a token format defined but the CashDispenser.TestCashUnits command does not. For security, CashDispenser. TestCashUnits must be blocked from dispensing cash, otherwise an attacker could simply replace the CashDispenser. Dispense with calls to CashDispenser.TestCashUnits. Restrictions are documented for each affected command.

2.9 - Service Reset

A reset command is used to attempt to reset the primary device(s) back to a known good state. This will typically be the power-on initial state. Primary devices are those which determine the device state.

The service will not attempt to reset ancillary devices used by the service, e.g., a service which utilizes an ancillary device to control lights will not reset the ancillary device but may use it to switch off only those lights associated with the service.

A reset command:

  • Should be used if a Common.ErrorEvent event is received, and the action indicates a reset is required.
  • May be used when the Common.ErrorEvent action indicates either clear or maintenance manual intervention is required. However, the client should avoid over use of this command if the command repeatedly fails.
  • Is not intended to be used when the service indicates the device state is online.

If a service implements multiple interface specific reset commands, clients should only use one. That is clients should not use each available reset command.

3 - Service Publisher Interface

This chapter defines the Service Publisher interface functionality and messages.

3.1 - Command Messages

3.1.1 - ServicePublisher.GetServices

Command sent to the service discovery port to identify services exposed by this publisher.

This command can be used while in Vendor Mode.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "vendorName": "ACME ATM Hardware GmbH", "services": [{ "serviceURI": "wss://ATM1:123/xfs4iot/v1.0/CardReader" }] }
Properties

vendorName

Freeform string naming the hardware vendor.

Type: string
Required

services

Array of one or more services exposed by the publisher. This property is null if no services available.

Type: array (object), null
Default: null

services/serviceURI

The URI which can be used to contact this individual service.

Type: string
Format: URI
Required

Event Messages

3.2 - Event Messages

3.2.1 - ServicePublisher.ServiceDetailEvent

Details of one or more services published by this endpoint.

Event Message

Payload, Version 2.0, Required
{ "vendorName": "ACME ATM Hardware GmbH", "services": [{ "serviceURI": "wss://ATM1:123/xfs4iot/v1.0/CardReader" }] }
Properties

vendorName

Freeform string naming the hardware vendor.

Type: string
Required

services

Array of one or more services exposed by the publisher. This property is null if no services available.

Type: array (object), null
Default: null

services/serviceURI

The URI which can be used to contact this individual service.

Type: string
Format: URI
Required

4 - Common Interface

This chapter defines the Common interface functionality and messages.

4.1 - Command Messages

4.1.1 - Common.GetInterfaceInfo

This command returns information related to the interfaces supported by the service.

Clients must, prior to use of any other commands, use this command to determine which interfaces, commands and message versions are supported by the service.

Client applications must, prior to use of any other commands, use the Common.SetVersions command to establish the event and unsolicited event message versions received from the service are those the client can handle.

As this command is fundamental to successful communication between the client and service, it is not subject to the same versioning rules as other commands. Command and completion messages will remain at version 1.x.

This command can be used while in Vendor Mode.

Command Message

Payload, Version 1.0
This message does not define any properties.

Completion Message

Payload, Version 1.0
{ "commands": { "CardReader.ReadRawData": { "versions": ["1.3", "2.1", "3.0"] }, "CardReader.Move": See commands/CardReader.ReadRawData properties }, "events": { "CardReader.MediaInsertedEvent": { "versions": ["1.3", "2.1", "3.0"] }, "CardReader.MediaRemovedEvent": See events/CardReader.MediaInsertedEvent properties }, "maximumRequests": 0 }
Properties

commands

The commands supported by the service.

Type: object
Required

commands/CardReader.ReadRawData (example name)

A command name.

Type: object
Name Pattern: ^[0-9A-Za-z]*\.[0-9A-Za-z]*$

commands/CardReader.ReadRawData/versions

The versions of the command supported by the service. There will be one item for each major version supported. The minor version number qualifies the exact version of the message the service supports.

Type: array (string)
Pattern: ^[1-9][0-9]*\.([1-9][0-9]*|0)$
Required

events

The events and unsolicited events supported by the service. May be null if no events are supported.

Type: object, null
Default: null

events/CardReader.MediaInsertedEvent (example name)

An event name.

Type: object
Name Pattern: ^[0-9A-Za-z]*\.[0-9A-Za-z]*$

events/CardReader.MediaInsertedEvent/versions

The versions of the event supported by the service. There will be one item for each major version supported. The minor version number qualifies the exact version of the message the service supports.

Type: array (string)
Pattern: ^[1-9][0-9]*\.([1-9][0-9]*|0)$
Required

maximumRequests

Specifies the maximum number of requests which can be queued by the service. This will be 0 if the maximum number of requests is unlimited.

Type: integer
Minimum: 0
Default: 0

Event Messages

None

4.1.2 - Common.SetVersions

This command sets the major version of the event and unsolicited message types the client wants the service to send.

Clients can only set message versions reported by the Common.GetInterfaceInfo command.

If a client requests this command multiple times on the same connection:

  • The effect is cumulative. That is, message versions sent by the service are the union of all uses of this command.
  • The version of a message specified in the last use of this command replaces any previously set version of that message.

Versions are set only for the client connection on which the command is received.

This command can be used while in Vendor Mode.

Command Message

Payload, Version 2.0, Required
{ "events": { "CardReader.MediaInsertedEvent": 1, "CardReader.MediaRemovedEvent": See events/CardReader.MediaInsertedEvent } }
Properties

events

The events or unsolicited events for which versions are being set.

Type: object
MinProperties: 1
Required

events/CardReader.MediaInsertedEvent (example name)

The major version of the event that the service should send.

Type: integer
Minimum: 1
Name Pattern: ^[0-9A-Za-z]*\.[0-9A-Za-z]*$

Completion Message

Payload, Version 2.0
This message does not define any properties.

Event Messages

None

4.1.3 - Common.Status

This command is used to obtain the overall status of the service. The status includes common status information and can include zero or more interface specific status objects, depending on the interfaces the service supports. It may also return vendor-specific status information.

This command can be used while in Vendor Mode.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 3.0
{ "common": { "device": "online", "devicePosition": "notInPosition", "powerSaveRecoveryTime": 10, "antiFraudModule": "ok", "exchange": "active", "endToEndSecurity": "enforced", "persistentDataStore": { "remaining": 0 } }, "cardReader": { "media": "unknown", "security": "notReady", "chipPower": "unknown", "chipModule": "ok", "magWriteModule": "ok", "frontImageModule": "ok", "backImageModule": "ok", "dispenser": "ok", "dispenserTransport": "ok", "shutter": "closed" }, "cashAcceptor": { "intermediateStacker": "empty", "stackerItems": "customerAccess", "banknoteReader": "ok", "dropBox": true, "positions": [{ "position": "inLeft", "shutter": "closed", "positionStatus": "empty", "transport": "ok", "transportStatus": "empty" }] }, "cashDispenser": { "intermediateStacker": "empty", "positions": [{ "position": "outDefault", "shutter": "closed", "positionStatus": "empty", "transport": "ok", "transportStatus": "empty" }] }, "cashManagement": { "dispenser": "ok", "acceptor": "ok" }, "check": { "acceptor": "ok", "media": "present", "toner": "full", "ink": "full", "frontImageScanner": "ok", "backImageScanner": "ok", "mICRReader": "ok", "stacker": "empty", "rebuncher": "empty", "mediaFeeder": "notEmpty", "positions": { "input": { "shutter": "closed", "positionStatus": "empty", "transport": "ok", "transportMediaStatus": "empty", "jammedShutterPosition": "notJammed" }, "output": See check/positions/input properties "refused": See check/positions/input properties } }, "mixedMedia": { "modes": { "cashAccept": true, "checkAccept": true } }, "keyManagement": { "encryptionState": "ready", "certificateState": "unknown" }, "keyboard": { "autoBeepMode": { "activeAvailable": false, "inactiveAvailable": false } }, "textTerminal": { "keyboard": "on", "keyLock": "on", "displaySizeX": 0, "displaySizeY": 0 }, "printer": { "media": "unknown", "paper": { "upper": "unknown", "lower": "unknown", "external": "unknown", "aux": "unknown", "aux2": "unknown", "park": "unknown", "vendorSpecificPaperSupply": "unknown" }, "toner": "unknown", "ink": "unknown", "lamp": "unknown", "mediaOnStacker": 7, "paperType": { "upper": "unknown", "lower": "unknown", "external": "unknown", "aux": "unknown", "aux2": "unknown", "park": "unknown", "exampleProperty1": "unknown", "exampleProperty2": See printer/paperType/exampleProperty1 }, "blackMarkMode": "unknown" }, "barcodeReader": { "scanner": "on" }, "biometric": { "subject": "present", "capture": false, "dataPersistence": "persist", "remainingStorage": 0 }, "camera": { "media": { "room": "ok", "person": "ok", "exitSlot": "ok", "cameraExit02": "ok" }, "cameras": { "room": "ok", "person": "ok", "exitSlot": "ok", "cameraExit02": See camera/media/cameraExit02 }, "pictures": { "room": 0, "person": 0, "exitSlot": 0, "cameraExit02": 0 }, "mediaSize": { "room": 0, "person": 0, "exitSlot": 0, "cameraExit02": See camera/pictures/cameraExit02 } }, "lights": { "cardReader": { "right": { "flashRate": "off", "color": "red", "direction": "entry" }, "top": See lights/cardReader/right properties }, "pinPad": See lights/cardReader properties "notesDispenser": See lights/cardReader properties "coinDispenser": See lights/cardReader properties "receiptPrinter": See lights/cardReader properties "passbookPrinter": See lights/cardReader properties "envelopeDepository": See lights/cardReader properties "checkUnit": See lights/cardReader properties "billAcceptor": See lights/cardReader properties "envelopeDispenser": See lights/cardReader properties "documentPrinter": See lights/cardReader properties "coinAcceptor": See lights/cardReader properties "scanner": See lights/cardReader properties "contactless": See lights/cardReader properties "cardReader2": See lights/cardReader properties "notesDispenser2": See lights/cardReader properties "billAcceptor2": See lights/cardReader properties "statusGood": See lights/cardReader properties "statusWarning": See lights/cardReader properties "statusBad": See lights/cardReader properties "statusSupervisor": See lights/cardReader properties "statusInService": See lights/cardReader properties "fasciaLight": See lights/cardReader properties "vendorSpecificLight": See lights/cardReader properties }, "banknoteNeutralization": { "state": { "mode": "fault", "submode": "allSafeSensorsIgnored" }, "safeDoor": "fault", "safeBolt": "fault", "tilt": "fault", "light": "fault", "gas": "initializing", "temperature": "fault", "seismic": "fault", "customInputs": { "disableGas": { "inputState": "disabled" }, "oemDisableLight": See banknoteNeutralization/customInputs/disableGas properties }, "powerSupply": { "info": { "powerInStatus": "powering", "powerOutStatus": "powering", "batteryStatus": "full", "batteryChargingStatus": "charging" }, "powerSaveRecoveryTime": 10 }, "warnings": { "protectionArmingFault": false, "protectionDisarmingFault": false, "externalMainPowerOutage": false, "storageUnitLowPowerSupply": false, "armedAutonomous": false, "armedAlarm": false, "gasWarningLevel": false, "seismicActivityWarningLevel": false }, "errors": { "protectionEnablingFailure": false, "protectionDisarmingFailure": false, "storageUnitPowerSupplyFailure": false, "backupBatteryFailure": false, "gasCriticalLevel": false, "light": false, "tilted": false, "seismicActivityCriticalLevel": false } }, "auxiliaries": { "operatorSwitch": "run", "tamperSensor": "on", "internalTamperSensor": "on", "seismicSensor": "on", "heatSensor": "on", "proximitySensor": "present", "ambientLightSensor": "veryDark", "enhancedAudioSensor": "present", "bootSwitchSensor": "off", "consumerDisplaySensor": "off", "operatorCallButtonSensor": "off", "handsetSensor": "onTheHook", "headsetMicrophoneSensor": "present", "fasciaMicrophoneSensor": "off", "cabinetDoor": "closed", "safeDoor": "closed", "vandalShield": "closed", "cabinetFrontDoor": "closed", "cabinetRearDoor": "closed", "cabinetLeftDoor": "closed", "cabinetRightDoor": "closed", "openClosedIndicator": "closed", "audio": { "rate": "on", "signal": "keypress" }, "heating": "off", "consumerDisplayBacklight": "off", "signageDisplay": "off", "volume": 1, "UPS": { "low": true, "engaged": false, "powering": false, "recovered": false }, "audibleAlarm": "on", "enhancedAudioControl": "publicAudioManual", "enhancedMicrophoneControl": "publicAudioManual", "microphoneVolume": 1 }, "deposit": { "depTransport": "ok", "envDispenser": "ok", "printer": "ok", "toner": "full", "shutter": "closed", "depositLocation": "unknown" }, "vendorMode": { "service": "enterPending", "clients": [{ "appName": "ACME Monitoring app", "state": "enterPending" }] }, "vendorApplication": { "accessLevel": "notActive" }, "powerManagement": { "info": { "powerInStatus": "powering", "powerOutStatus": "powering", "batteryStatus": "full", "batteryChargingStatus": "charging" }, "powerSaveRecoveryTime": 10 } }
Properties

common

Status information common to all XFS4IoT services.

Type: object
Required

common/device

Specifies the state of the device or service. This property is required in Common.Status, but may be null in Common.StatusChangedEvent if it has not changed. Following values are possible:

  • online - The device or service is online. This is returned when the device is present and operational or the service is not associated with a device, e.g., a vendor mode / vendor application service.
  • offline - The device is offline (e.g., the operator has taken the device offline by turning a switch or breaking an interlock).
  • powerOff - The device is powered off or physically not connected.
  • noDevice - The device is not intended to be there, e.g. this type of self-service machine does not contain such a device or it is internally not configured.
  • hardwareError - The device is inoperable due to a hardware error.
  • userError - The device is present but a person is preventing proper device operation.
  • deviceBusy - The device is busy and unable to process a command at this time.
  • fraudAttempt - The device is present but is inoperable because it has detected a fraud attempt.
  • potentialFraud - The device has detected a potential fraud attempt and is capable of remaining in service. In this case the application should make the decision as to whether to take the device offline.
  • starting - The device is starting and performing whatever initialization is necessary. This can be reported after the connection is made but before the device is ready to accept commands. This must only be a temporary state, the service must report a different state as soon as possible. If an error causes initialization to fail then the state should change to hardwareError.

Type: string
Required

common/devicePosition

Position of the device. This property is null in Common.Status if position status reporting is not supported, otherwise the following values are possible:

  • inPosition - The device is in its normal operating position, or is fixed in place and cannot be moved.
  • notInPosition - The device has been removed from its normal operating position.
  • unknown - Due to a hardware error or other condition, the position of the device cannot be determined.

Type: string, null
Default: null

common/powerSaveRecoveryTime

⚠️ This property is deprecated.

Specifies the actual number of seconds required by the device to resume its normal operational state from the current power-saving mode. This value is 0 if the power-saving mode has not been activated. This property is null in Common.Status if power save control is not supported.

Type: integer, null
Minimum: 0
Default: null

common/antiFraudModule

Specifies the state of the anti-fraud module if available. This property is null in Common.Status if there is no anti-fraud module, otherwise the following values are possible:

  • ok - Anti-fraud module is in a good state and no foreign device is detected.
  • inoperable - Anti-fraud module is inoperable.
  • deviceDetected - Anti-fraud module detected the presence of a foreign device.
  • unknown - The state of the anti-fraud module cannot be determined.

Type: string, null
Default: null

common/exchange

Specifies the exchange state of the service. Exchange can used to perform a manual replenishment of a device and is entered by Storage.StartExchange and completed by Storage.EndExchange. This property is null in Common.Status if not supported, otherwise the following values are possible:

  • active - Exchange is active on this service. Commands which interact with the device may be rejected with an error code as appropriate.
  • inactive - Exchange is not active on this service.

Type: string, null
Default: null

common/endToEndSecurity

Specifies the status of end to end security support on this device. This property is null in Common.Status if E2E security is not supported by this hardware and any command can be called without a token, otherwise the following values are possible.

Also see Common.CapabilityProperties.endToEndSecurity.

  • notEnforced - E2E security is supported by this hardware but it is not currently enforced, for example because required keys aren't loaded. It's currently possible to perform E2E commands without a token.
  • notConfigured - E2E security is supported but not correctly configured, for example because required keys aren't loaded. Any attempt to perform any command protected by E2E security will fail.
  • enforced - E2E security is supported and correctly configured. E2E security will be enforced. Calling E2E protected commands will only be possible if a valid token is given.

Type: string, null
Default: null

common/persistentDataStore

Specifies the state of the persistent data store supported by the service.

This property is null in Common.Status if persistent data storage is not supported or in Common.StatusChangedEvent if it has not changed. It is recommended that a service only posts a Common.StatusChangedEvent based on this changing when significant changes occur to avoid too many trivial events being posted.

Type: object, null
Default: null

common/persistentDataStore/remaining

Specifies the number of Kilobytes remaining in the persistent data store. This value must be less than or equal to the persistent data store capacity.

Type: integer
Minimum: 0
Required

cardReader

Status information for XFS4IoT services implementing the CardReader interface. This will be null if the CardReader interface is not supported.

Type: object, null
Default: null

cardReader/media

Specifies the transport/exit position media state. This property will be null if the capability to report media position is not supported by the device (e.g., a typical swipe reader or contactless chip card reader), otherwise one of the following values:

  • unknown - The media state cannot be determined with the device in its current state (e.g. the value of device is noDevice, powerOff, offline or hardwareError.
  • present - Media is present in the device, not in the entering position, and not jammed. On a latched dip device, this indicates the card is accessible to the cardholder.
  • notPresent - Media is not present in the device and not at the entering position.
  • jammed - Media is jammed in the device; operator intervention is required.
  • entering - Media is at the entry/exit slot of a motorized device.
  • latched - Media is present in a latched dip device. For this device type, this is the only state in which chip communication or chip power control is allowed. Depending on configuration, the card may be physically latched or unlatched.

Type: string, null
Default: null

cardReader/security

Specifies the state of the security module. This property will be null if no security module is available, otherwise one of the following values:

  • notReady - The security module is not ready to process cards or is inoperable.
  • open - The security module is open and ready to process cards.

Type: string, null
Default: null

cardReader/chipPower

Specifies the state of the chip controlled by this service. Depending on the value of capabilities response, this can either be the chip on the currently inserted user card or the chip on a permanently connected chip card. This property will be null if the capability to report the state of the chip is not supported by the ID card unit device and will apply to contactless chip card readers, otherwise one of the following values:

  • unknown - The state of the chip cannot be determined with the device in its current state.
  • online - The chip is present, powered on and online (i.e. operational, not busy processing a request and not in an error state).
  • busy - The chip is present, powered on, and busy (unable to process a command at this time).
  • poweredOff - The chip is present, but powered off (i.e. not contacted).
  • noDevice - A card is currently present in the device, but has no chip.
  • hardwareError - The chip is present, but inoperable due to a hardware error that prevents it from being used (e.g., MUTE, if there is an unresponsive card in the reader).
  • noCard - There is no card in the device.

Type: string, null
Default: null

cardReader/chipModule

Specifies the state of the chip card module reader. This property will be null if reporting the chip card module status is not supported, otherwise one of the following values:

  • ok - The chip card module is in a good state.
  • inoperable - The chip card module is inoperable.
  • unknown - The state of the chip card module cannot be determined.

Type: string, null
Default: null

cardReader/magWriteModule

Specifies the state of the magnetic card writer. This property will be null if reporting the magnetic card writing module status is not supported, otherwise one of the following values:

  • ok - The magnetic card writing module is in a good state.
  • inoperable - The magnetic card writing module is inoperable.
  • unknown - The state of the magnetic card writing module cannot be determined.

Type: string, null
Default: null

cardReader/frontImageModule

Specifies the state of the front image reader. This property will be null if reporting the front image reading module status is not supported, otherwise one of the following values:

  • ok - The front image reading module is in a good state.
  • inoperable - The front image reading module is inoperable.
  • unknown - The state of the front image reading module cannot be determined.

Type: string, null
Default: null

cardReader/backImageModule

Specifies the state of the back image reader. This property will be null if reporting the back image reading module status is not supported, otherwise one of the following values:

  • ok - The back image reading module is in a good state.
  • inoperable - The back image reading module is inoperable.
  • unknown - The state of the back image reading module cannot be determined.

Type: string, null
Default: null

cardReader/dispenser

Specifies the state of the dispensing card units as one of the following values. This property will be null in Common.Status if no card dispensing functionality is supported and will also be null in Common.StatusChangedEvent if unchanged.

  • ok - All dispense card units present are in a good state.
  • state - One or more of the dispense card units is in a low, empty or inoperative condition. Items can still be dispensed from at least one of the card units.
  • stop - Due to a card unit failure dispensing is impossible. No items can be dispensed because all of the card units are in an empty or inoperative condition.
  • unknown - Due to a hardware error or other condition, the state of the card units cannot be determined.

Type: string, null
Default: null

cardReader/dispenserTransport

Specifies the state of the dispenserTransport mechanism as one of the following values. This property will be null in Common.Status if card dispensing functionality is not supported and will also be null in Common.StatusChangedEvent if unchanged.

  • ok - The dispenser transport is in a good state.
  • inoperative - The dispenser transport is inoperative due to a hardware failure or media jam.
  • unknown - Due to a hardware error or other condition, the state of the dispenser transport cannot be determined.

Type: string, null
Default: null

cardReader/shutter

Specifies the state of the shutter as one of the following values. This property will be null in Common.Status if the device has no shutter or shutter state reporting is not supported. It will also be null in Common.StatusChangedEvent if unchanged.

  • closed - The shutter is closed.
  • open - The shutter is opened.
  • jammed - The shutter is jammed.
  • unknown - Due to a hardware error or other condition, the state of the shutter cannot be determined.

Type: string, null
Default: null

cashAcceptor

Status information for XFS4IoT services implementing the CashAcceptor interface. This will be null if the CashAcceptor interface is not supported.

Type: object, null
Default: null

cashAcceptor/intermediateStacker

Supplies the state of the intermediate stacker. This property is null in Common.Status if the physical device has no intermediate stacker, otherwise the following values are possible:

  • empty - The intermediate stacker is empty.
  • notEmpty - The intermediate stacker is not empty.
  • full - The intermediate stacker is full. This may also be reported during a cash-in transaction where a limit specified by CashAcceptor.CashInStart has been reached.
  • unknown - Due to a hardware error or other condition, the state of the intermediate stacker cannot be determined.

Type: string, null
Default: null

cashAcceptor/stackerItems

This property informs the application whether items on the intermediate stacker have been in customer access. This property is null in Common.Status if the physical device has no intermediate stacker, otherwise the following values are possible:

  • customerAccess - Items on the intermediate stacker have been in customer access. If the device is a cash recycler then the items on the intermediate stacker may be there as a result of a previous cash-out operation.
  • noCustomerAccess - Items on the intermediate stacker have not been in customer access.
  • accessUnknown - It is not known if the items on the intermediate stacker have been in customer access.
  • noItems - There are no items on the intermediate stacker.

Type: string, null
Default: null

cashAcceptor/banknoteReader

Supplies the state of the banknote reader. This property is null in Common.Status if the physical device has no banknote reader, otherwise the following values are possible:

  • ok - The banknote reader is in a good state.
  • inoperable - The banknote reader is inoperable.
  • unknown - Due to a hardware error or other condition, the state of the banknote reader cannot be determined.

Type: string, null
Default: null

cashAcceptor/dropBox

The drop box is an area within the Cash Acceptor where items which have caused a problem during an operation are stored. This property specifies the status of the drop box. If true, some items are stored in the drop box due to a cash-in transaction which caused a problem. If false, the drop box is empty or there is no drop box. This property may be null if there is no drop box or its state has not changed in Common.StatusChangedEvent.

Type: boolean, null
Default: null

cashAcceptor/positions

Array of structures reporting status for each position from which items can be accepted. This may be null in Common.StatusChangedEvent if no position states have changed.

Type: array (object), null
Default: null

cashAcceptor/positions/position

Supplies the input or output position as one of the following values. If not specified, the default position applies. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

cashAcceptor/positions/shutter

Supplies the state of the shutter. This property is null in Common.Status if the physical position has no shutter, otherwise the following values are possible:

  • closed - The shutter is operational and is fully closed.
  • open - The shutter is operational and is open.
  • jammedOpen - The shutter is jammed, but fully open. It is not operational.
  • jammedPartiallyOpen - The shutter is jammed, but partially open. It is not operational.
  • jammedClosed - The shutter is jammed, but fully closed. It is not operational.
  • jammedUnknown - The shutter is jammed, but its position is unknown. It is not operational.
  • unknown - Due to a hardware error or other condition, the state of the shutter cannot be determined.

Type: string, null
Default: null

cashAcceptor/positions/positionStatus

The status of the input or output position. This property is null in Common.Status if the device is not capable of reporting whether items are at the position, otherwise the following values are possible:

  • empty - The position is empty.
  • notEmpty - The position is not empty.
  • unknown - Due to a hardware error or other condition, the state of the position cannot be determined.
  • foreignItems - Foreign items have been detected in the position.

Type: string, null
Default: null

cashAcceptor/positions/transport

Supplies the state of the transport mechanism. The transport is defined as any area leading to or from the position. This property is null in Common.Status if the device has no transport or transport state reporting is not supported, otherwise the following values are possible:

  • ok - The transport is in a good state.
  • inoperative - The transport is inoperative due to a hardware failure or media jam.
  • unknown - Due to a hardware error or other condition the state of the transport cannot be determined.

Type: string, null
Default: null

cashAcceptor/positions/transportStatus

Returns information regarding items which may be on the transport. If the device is a recycler device it is possible that the transport will not be empty due to a previous dispense operation. This property is null in Common.Status if the device has no transport or is not capable of reporting whether items are on the transport, otherwise the following values are possible:

  • empty - The transport is empty.
  • notEmpty - The transport is not empty.
  • notEmptyCustomer - Items which a customer has had access to are on the transport.
  • unknown - Due to a hardware error or other condition it is not known whether there are items on the transport.

Type: string, null
Default: null

cashDispenser

Status information for XFS4IoT services implementing the CashDispenser interface. This will be null if the CashDispenser interface is not supported.

Type: object, null
Default: null

cashDispenser/intermediateStacker

Supplies the state of the intermediate stacker. These bills are typically present on the intermediate stacker as a result of a retract operation or because a dispense has been performed without a subsequent present. This property is null in Common.Status if the physical device has no intermediate stacker, otherwise the following values are possible:

  • empty - The intermediate stacker is empty.
  • notEmpty - The intermediate stacker is not empty. The items have not been in customer access.
  • notEmptyCustomer - The intermediate stacker is not empty. The items have been in customer access. If the device is a recycler then the items on the intermediate stacker may be there as a result of a previous cash-in operation.
  • notEmptyUnknown - The intermediate stacker is not empty. It is not known if the items have been in customer access.
  • unknown - Due to a hardware error or other condition, the state of the intermediate stacker cannot be determined.

Type: string, null
Default: null

cashDispenser/positions

Array of structures for each position to which items can be dispensed or presented. This may be null in Common.StatusChangedEvent if no position states have changed.

Type: array (object), null
Default: null

cashDispenser/positions/position

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

cashDispenser/positions/shutter

Supplies the state of the shutter. This property is null in Common.Status if the physical position has no shutter, otherwise the following values are possible:

  • closed - The shutter is operational and is closed.
  • open - The shutter is operational and is open.
  • jammedOpen - The shutter is jammed, but fully open. It is not operational.
  • jammedPartiallyOpen - The shutter is jammed, but partially open. It is not operational.
  • jammedClosed - The shutter is jammed, but fully closed. It is not operational.
  • jammedUnknown - The shutter is jammed, but its position is unknown. It is not operational.
  • unknown - Due to a hardware error or other condition, the state of the shutter cannot be determined.

Type: string, null
Default: null

cashDispenser/positions/positionStatus

Returns information regarding items which may be at the output position. If the device is a recycler it is possible that the output position will not be empty due to a previous cash-in operation. This property is null in Common.Status if the device is not capable of reporting whether items are at the position, otherwise the following values are possible:

  • empty - The position is empty.
  • notEmpty - The position is not empty.
  • unknown - Due to a hardware error or other condition, the state of the position cannot be determined.

Type: string, null
Default: null

cashDispenser/positions/transport

Supplies the state of the transport mechanism. The transport is defined as any area leading to or from the position. This property is null in Common.Status if the device has no transport or transport state reporting is not supported, otherwise the following values are possible:

  • ok - The transport is in a good state.
  • inoperative - The transport is inoperative due to a hardware failure or media jam.
  • unknown - Due to a hardware error or other condition the state of the transport cannot be determined.

Type: string, null
Default: null

cashDispenser/positions/transportStatus

Returns information regarding items which may be on the transport. If the device is a recycler device it is possible that the transport will not be empty due to a previous cash-in operation. This property is null in Common.Status if the device has no transport or is not capable of reporting whether items are on the transport, otherwise the following values are possible:

  • empty - The transport is empty.
  • notEmpty - The transport is not empty.
  • notEmptyCustomer - Items which a customer has had access to are on the transport.
  • unknown - Due to a hardware error or other condition it is not known whether there are items on the transport.

Type: string, null
Default: null

cashManagement

Status information for XFS4IoT services implementing the CashManagement interface. This will be null if the CashManagement interface is not supported.

Type: object, null
Default: null

cashManagement/dispenser

Supplies the state of the storage units for dispensing cash. This may be null in Common.Status if the device is not capable of dispensing cash, otherwise the following values are possible:

  • ok - All storage units present are in a good state.
  • attention - One or more of the storage units is in a low, empty, inoperative or manipulated condition. Items can still be dispensed from at least one of the storage units.
  • stop - Due to a storage unit failure dispensing is impossible. No items can be dispensed because all of the storage units are empty, missing, inoperative or in a manipulated condition. This state may also occur when a reject/retract storage unit is full or no reject/retract storage unit is present, or when appLockOut is set to true on every storage unit which can be locked.
  • unknown - Due to a hardware error or other condition, the state of the storage units cannot be determined.

Type: string, null
Default: null

cashManagement/acceptor

Supplies the state of the storage units for accepting cash. This may be null in Common.Status if the device is not capable of accepting cash, otherwise the following values are possible:

  • ok - All storage units present are in a good state.
  • attention - One or more of the storage units is in a high, full, inoperative or manipulated condition. Items can still be accepted into at least one of the storage units.
  • stop - Due to a storage unit failure accepting is impossible. No items can be accepted because all of the storage units are in a full, inoperative or manipulated condition. This state may also occur when a retract storage unit is full or no retract storage unit is present, or when appLockIn is set to true on every storage unit which can be locked, or when items are to be automatically retained within storage units (see retainAction), but all of the designated storage units for storing them are full or inoperative.
  • unknown - Due to a hardware error or other condition, the state of the storage units cannot be determined.

Type: string, null
Default: null

check

Status information for XFS4IoT services implementing the Check interface. This will be null if the Check interface is not supported.

Type: object, null
Default: null

check/acceptor

Supplies the state of the overall acceptor storage units. This may be null in Common.StatusChangedEvent if the state has not changed. The following values are possible:

  • ok - All storage units present are in a good state.
  • state - One or more of the storage units is in a high, full or inoperative condition. Items can still be accepted into at least one of the storage units. The status of the storage units can be obtained through the Storage.GetStorage command.
  • stop - Due to a storage unit problem accepting is impossible. No items can be accepted because all of the storage units are in a full or in an inoperative condition.
  • unknown - Due to a hardware error or other condition, the state of the storage units cannot be determined.

Type: string, null
Default: null

check/media

Specifies the state of the media. This may be null in Common.Status if the capability to report the state of the media is not supported by the device, otherwise the following values are possible:

  • present - Media is present in the device.
  • notPresent - Media is not present in the device.
  • jammed - Media is jammed in the device.
  • unknown - The state of the media cannot be determined with the device in its current state.
  • position - Media is at one or more of the input, output and refused positions.

Type: string, null
Default: null

check/toner

Specifies the state of the toner or ink supply or the state of the ribbon of the endorser. This may be null in Common.Status if the physical device does not support endorsing or the capability to report the status of the toner/ink is not supported by the device, otherwise the following values are possible:

  • full - The toner or ink supply is full or the ribbon is OK.
  • low - The toner or ink supply is low or the print contrast with a ribbon is weak.
  • out - The toner or ink supply is empty or the print contrast with a ribbon is not sufficient any more.
  • unknown - Status of toner or ink supply or the ribbon cannot be determined with the device in its current state.

Type: string, null
Default: null

check/ink

Specifies the status of the stamping ink in the device. This may be null in Common.Status if the physical device does not support stamping or the capability to report the status of the stamp ink supply is not supported by the device, otherwise the following values are possible:

  • full - Ink supply in the device is full.
  • low - Ink supply in the device is low.
  • out - Ink supply in the device is empty.
  • unknown - Status of the stamping ink supply cannot be determined with the device in its current state.

Type: string, null
Default: null

check/frontImageScanner

Specifies the status of the image scanner that captures images of the front of the media items. This may be null in Common.Status if the physical device has no front scanner or the capability to report the status of the front scanner is not supported by the device, otherwise the following values are possible:

  • ok - The front scanner is OK.
  • fading - The front scanner performance is degraded.
  • inoperative - The front scanner is inoperative.
  • unknown - Status of the front scanner cannot be determined with the device in its current state.

Type: string, null
Default: null

check/backImageScanner

Specifies the status of the image scanner that captures images of the back of the media items. This may be null in Common.Status if the physical device has no back scanner or the capability to report the status of the back scanner is not supported by the device, otherwise the following values are possible:

  • ok - The back scanner is OK.
  • fading - The back scanner performance is degraded.
  • inoperative - The back scanner is inoperative.
  • unknown - Status of the back scanner cannot be determined with the device in its current state.

Type: string, null
Default: null

check/mICRReader

Specifies the status of the MICR code line reader. This may be null in Common.Status if the physical device has no MICR code line reader or the capability to report the status of the MICR code line reader is not supported by the device, otherwise the following values are possible:

  • ok - The MICR code line reader is OK.
  • fading - The MICR code line reader performance is degraded.
  • inoperative - The MICR code line reader is inoperative.
  • unknown - Status of the MICR code line reader cannot be determined with the device in its current state.

Type: string, null
Default: null

check/stacker

Supplies the state of the stacker (also known as an escrow). The stacker is where the media items are held while the application decides what to do with them. This may be null in Common.Status if the physical device has no stacker or the capability to report the status of the stacker is not supported by the device, otherwise the following values are possible:

  • empty - The stacker is empty.
  • notEmpty - The stacker is not empty.
  • full - The stacker is full. This state is set if the number of media items on the stacker has reached maxMediaOnStacker or some physical limit has been reached.
  • inoperative - The stacker is inoperative.
  • unknown - Due to a hardware error or other condition, the state of the stacker cannot be determined.

Type: string, null
Default: null

check/rebuncher

Supplies the state of the re-buncher (return stacker). The re-buncher is where media items are re-bunched ready for return to the customer. This may be null in Common.Status if the physical device has no re-buncher or the capability to report the status of the re-buncher is not supported by the device, otherwise the following values are possible:

  • empty - The re-buncher is empty.
  • notEmpty - The re-buncher is not empty.
  • full - The re-buncher is full. This state is set if the number of media items on the re-buncher has reached its physical limit.
  • inoperative - The re-buncher is inoperative.
  • unknown - Due to a hardware error or other condition, the state of the re-buncher cannot be determined.

Type: string, null
Default: null

check/mediaFeeder

Supplies the state of the media feeder. This value indicates if there are items on the media feeder waiting for processing via the Check.GetNextItem command. If null, the device has no media feeder or the capability to report the status of the media feeder is not supported by the device. This value can be one of the following values:

  • empty - The media feeder is empty.
  • notEmpty - The media feeder is not empty.
  • inoperative - The media feeder is inoperative.
  • unknown - Due to a hardware error or other condition, the state of the media feeder cannot be determined.

Type: string, null
Default: null

check/positions

Specifies the status of the input, output and refused positions. This may be null in Common.StatusChangedEvent if no position states have changed.

Type: object, null
MinProperties: 1
Default: null

check/positions/input

Specifies the status of the input position. This may be null in Common.StatusChangedEvent if no states have changed for the position.

Type: object, null
Default: null

check/positions/input/shutter

Specifies the state of the shutter. This property is null in Common.Status if the physical device has no shutter or shutter state reporting is not supported, otherwise the following values are possible:

  • closed - The shutter is operational and is closed.
  • open - The shutter is operational and is open.
  • jammed - The shutter is jammed and is not operational.
  • unknown - Due to a hardware error or other condition, the state of the shutter cannot be determined.

Type: string, null
Default: null

check/positions/input/positionStatus

The status of the position. This property is null in Common.Status if the physical device is not capable of reporting whether or not items are at the position, otherwise the following values are possible:

  • empty - The position is empty.
  • notEmpty - The position is not empty.
  • unknown - Due to a hardware error or other condition, the state of the position cannot be determined.

Type: string, null
Default: null

check/positions/input/transport

Specifies the state of the transport mechanism. The transport is defined as any area leading to or from the position. This property is null in Common.Status if the physical device has no transport or transport state reporting is not supported, otherwise the following values are possible:

  • ok - The transport is in a good state.
  • inoperative - The transport is inoperative due to a hardware failure or media jam.
  • unknown - Due to a hardware error or other condition, the state of the transport cannot be determined.

Type: string, null
Default: null

check/positions/input/transportMediaStatus

Returns information regarding items which may be present on the transport. This property is null in Common.Status if the physical device is not capable of reporting whether or not items are on the transport, otherwise the following values are possible:

  • empty - The transport is empty.
  • notEmpty - The transport is not empty.
  • unknown - Due to a hardware error or other condition it is not known whether there are items on the transport.

Type: string, null
Default: null

check/positions/input/jammedShutterPosition

Returns information regarding the position of the jammed shutter. This property is null in Common.Status if the physical device has no shutter or the reporting of the position of a jammed shutter is not supported, otherwise the following values are possible:

  • notJammed - The shutter is not jammed.
  • open - The shutter is jammed, but fully open.
  • partiallyOpen - The shutter is jammed, but partially open.
  • closed - The shutter is jammed, but fully closed.
  • unknown - The position of the shutter is unknown.

Type: string, null
Default: null

check/positions/output

Specifies the status of the output position. This may be null in Common.StatusChangedEvent if no states have changed for the position.

Type: object, null
Default: null

check/positions/refused

Specifies the status of the refused position. This may be null in Common.StatusChangedEvent if no states have changed for the position.

Type: object, null
Default: null

mixedMedia

Status information for XFS4IoT services implementing the MixedMedia interface. This will be null if the MixedMedia interface is not supported.

Type: object, null
Default: null

mixedMedia/modes

Specifies the state of the transaction modes supported by the service.

Type: object
MinProperties: 1
Required

mixedMedia/modes/cashAccept

Specifies whether transactions can accept cash. This property may be null if no change is required, or if its state has not changed in Common.StatusChangedEvent.

Type: boolean, null
Default: null

mixedMedia/modes/checkAccept

Specifies whether transactions can accept checks. This property may be null if no change is required, or if its state has not changed in Common.StatusChangedEvent.

Type: boolean, null
Default: null

keyManagement

Status information for XFS4IoT services implementing the KeyManagement interface. This will be null if the KeyManagement interface is not supported.

Type: object, null
Default: null

keyManagement/encryptionState

Specifies the state of the encryption module.

  • ready - The encryption module is initialized and ready (at least one key is imported into the encryption module).
  • notReady - The encryption module is not available or not ready due to hardware error or communication error.
  • notInitialized - The encryption module is not initialized (no master key loaded).
  • busy - The encryption module is busy (implies that the device is busy).
  • undefined - The encryption module state is undefined.
  • initialized - The encryption module is initialized and master key (where required) and any other initial keys are loaded; ready to import other keys. This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

keyManagement/certificateState

Specifies the state of the public verification or encryption key in the PIN certificate module.

  • unknown - The state of the certificate module is unknown or the device does not have this capability.
  • primary - All pre-loaded certificates have been loaded and that primary verification certificates will be accepted for the commands LoadCertificate or ReplaceCertificate.
  • secondary - Primary verification certificates will not be accepted and only secondary verification certificates will be accepted. If primary certificates have been compromised (which the certificate authority or the host detects), then secondary certificates should be used in any transaction. This is done by the commands LoadCertificate or ReplaceCertificate.
  • notReady - The certificate module is not ready. (The device is powered off or physically not present). This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

keyboard

Status information for XFS4IoT services implementing the Keyboard interface. This will be null if the Keyboard interface is not supported.

Type: object, null
Default: null

keyboard/autoBeepMode

Specifies whether automatic beep tone on key press is active or not. Active and inactive key beeping is reported independently.

Type: object
Required

keyboard/autoBeepMode/activeAvailable

Specifies whether an automatic tone will be generated for all active keys. This may be null in Common.StatusChangedEvent if unchanged.

Type: boolean, null
Default: null

keyboard/autoBeepMode/inactiveAvailable

Specifies whether an automatic tone will be generated for all inactive keys. This may be null in Common.StatusChangedEvent if unchanged.

Type: boolean, null
Default: null

textTerminal

Status information for XFS4IoT services implementing the TextTerminal interface. This will be null if the TextTerminal interface is not supported.

Type: object, null
Default: null

textTerminal/keyboard

Specifies the state of the keyboard in the text terminal unit. This property will be null in Common.Status if the keyboard is not available, otherwise one of the following values:

  • on - The keyboard is activated.
  • off - The keyboard is not activated.

Type: string, null
Default: null

textTerminal/keyLock

Specifies the state of the keyboard lock of the text terminal unit. This property will be null in Common.Status if the keyboard lock switch is not available, otherwise one of the following values:

  • on - The keyboard lock switch is activated.
  • off - The keyboard lock switch is not activated.

Type: string, null
Default: null

textTerminal/displaySizeX

Specifies the horizontal size of the display of the text terminal unit (the number of columns that can be displayed). This property will be null in Common.StatusChangedEvent if unchanged.

Type: integer, null
Minimum: 0
Default: null

textTerminal/displaySizeY

Specifies the vertical size of the display of the text terminal unit (the number of rows that can be displayed). This property will be null in Common.StatusChangedEvent if unchanged.

Type: integer, null
Minimum: 0
Default: null

printer

Status information for XFS4IoT services implementing the Printer interface. This will be null if the Printer interface is not supported.

Type: object, null
Default: null

printer/media

Specifies the state of the print media (i.e. receipt, statement, passbook, etc.) as one of the following values. This property will be null in Common.Status for journal printers or if the capability to report the state of the print media is not supported by the device:

  • unknown - The state of the print media cannot be determined with the device in its current state.
  • present - Media is in the print position, on the stacker or on the transport (i.e. a passbook in the parking station is not considered to be present). On devices with continuous paper supplies, this value is set when paper is under the print head. On devices with no supply or individual sheet supplies, this value is set when paper/media is successfully inserted/loaded.
  • notPresent - Media is not in the print position or on the stacker.
  • jammed - Media is jammed in the device.
  • entering - Media is at the entry/exit slot of the device.
  • retracted - Media was retracted during the last command which controlled media.

Type: string, null
Default: null

printer/paper

Specifies the state of paper supplies as one of the following values. Each individual supply state will be null in Common.Status if not applicable:

  • unknown - Status cannot be determined with device in its current state.
  • full - The paper supply is full.
  • low - The paper supply is low.
  • out - The paper supply is empty.
  • jammed - The paper supply is jammed.

Type: object, null
Default: null

printer/paper/upper

The state of the upper paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/lower

The state of the lower paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/external

The state of the external paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/aux

The state of the auxiliary paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/aux2

The state of the second auxiliary paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/park

The state of the parking station paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/vendorSpecificPaperSupply (example name)

The state of the additional vendor specific paper supplies. See paper for valid values.

Type: string, null
Default: null

printer/toner

Specifies the state of the toner or ink supply or the state of the ribbon. The property will be null in Common.Status if the capability is not supported by device, otherwise one of the following:

  • unknown - Status of toner or ink supply or the ribbon cannot be determined with device in its current state.
  • full - The toner or ink supply is full or the ribbon is OK.
  • low - The toner or ink supply is low or the print contrast with a ribbon is weak.
  • out - The toner or ink supply is empty or the print contrast with a ribbon is not sufficient any more.

Type: string, null
Default: null

printer/ink

Specifies the status of the stamping ink in the printer. The property will be null in Common.Status if the capability is not supported by device, otherwise one of the following:

  • unknown - Status of the stamping ink supply cannot be determined with device in its current state.
  • full - Ink supply in device is full.
  • low - Ink supply in device is low.
  • out - Ink supply in device is empty.

Type: string, null
Default: null

printer/lamp

Specifies the status of the printer imaging lamp. The property will be null in Common.Status if the capability is not supported by device, otherwise one of the following:

  • unknown - Status of the imaging lamp cannot be determined with device in its current state.
  • ok - The lamp is OK.
  • fading - The lamp should be changed.
  • inop - The lamp is inoperative.

Type: string, null
Default: null

printer/mediaOnStacker

The number of media on the stacker; applicable only to printers with stacking capability therefore null if not applicable.

Type: integer, null
Minimum: 0
Default: null

printer/paperType

Specifies the type of paper loaded as one of the following. Only applicable properties are reported. This may be null in Common.StatusChangedEvent if unchanged.

  • unknown - No paper is loaded, reporting of this paper type is not supported or the paper type cannot be determined.
  • single - The paper can be printed on only one side.
  • dual - The paper can be printed on both sides.

Type: object, null
Default: null

printer/paperType/upper

The upper paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/lower

The lower paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/external

The external paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/aux

The auxiliary paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/aux2

The second auxiliary paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/park

The parking station paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/exampleProperty1 (example name)

The additional vendor specific paper types. See paperType for valid values.

Type: string, null
Default: null

printer/blackMarkMode

Specifies the status of the black mark detection and associated functionality. The property is null if not supported.

  • unknown - The status of the black mark detection cannot be determined.
  • on - Black mark detection and associated functionality is switched on.
  • off - Black mark detection and associated functionality is switched off.

Type: string, null
Default: null

barcodeReader

Status information for XFS4IoT services implementing the Barcode Reader interface. This will be null if the Barcode Reader interface is not supported.

Type: object, null
Default: null

barcodeReader/scanner

Specifies the scanner status (laser, camera or other technology) as one of the following:

  • on - Scanner is enabled for reading.
  • off - Scanner is disabled.
  • inoperative - Scanner is inoperative due to a hardware error.
  • unknown - Scanner status cannot be determined.

Type: string
Required

biometric

Status information for XFS4IoT services implementing the Biometrics interface. This will be null if the Biometrics interface is not supported.

Type: object, null
Default: null

biometric/subject

Specifies the state of the subject to be scanned (e.g. finger, palm, retina, etc) as one of the following values:

  • present - The subject to be scanned is on the scanning position.
  • notPresent - The subject to be scanned is not on the scanning position.
  • unknown - The subject to be scanned cannot be determined with the device in its current state (e.g. the value of device is noDevice, powerOff, offline, or hwError).

This property is null if the physical device does not support the ability to report whether or not a subject is on the scanning position.

Type: string, null
Default: null

biometric/capture

Indicates whether scanned biometric data has been captured using the Biometric.Read and is currently stored and ready for comparison. This will be set to false when scanned data is cleared using the Biometric.Clear. This may be null in Common.StatusChangedEvent if unchanged.

Type: boolean, null
Default: null

biometric/dataPersistence

Specifies the current data persistence mode. The data persistence mode controls how biometric data that has been captured using the Biometric.Read will be handled. This property is null if the property persistenceModes is null or both properties persist and clear are false. The following values are possible:

  • persist - Biometric data captured using the Biometric.Read can persist until all sessions are closed, the device is power failed or rebooted, or the Biometric.Read is requested again. This captured biometric data can also be explicitly cleared using the Biometric.Clear or Biometric.Reset.
  • clear - Captured biometric data will not persist. Once the data has been either returned in the Biometric.Read or used by the Biometric.Match, then the data is cleared from the device.

Type: string, null
Default: null

biometric/remainingStorage

Specifies how much of the reserved storage specified by the capability templateStorage is remaining for the storage of templates in bytes. if null, this property is not supported.

Type: integer, null
Minimum: 0
Default: null

camera

Status information for XFS4IoT services implementing the Camera interface. This will be null if the Camera interface is not supported.

Type: object, null
Default: null

camera/media

Specifies the state of the recording media of the cameras as one of the following. For a device which stores images on a hard disk drive or other general-purpose storage, the relevant property will be null. This property may be null in Common.StatusChangedEvent if unchanged.

  • ok - The media is in a good state.
  • high - The media is almost full (threshold).
  • full - The media is full.
  • unknown - Due to a hardware error or other condition, the state of the media cannot be determined.

Type: object, null
Default: null

camera/media/room

Specifies the state of the recording media of the camera that monitors the whole self-service area. See media for valid values.

Type: string, null
Default: null

camera/media/person

Specifies the state of the recording media of the camera that monitors the person standing in front of the self-service machine. See media for valid values.

Type: string, null
Default: null

camera/media/exitSlot

Specifies the state of the recording media of the camera that monitors the exit slot(s) of the self-service machine. See media for valid values.

Type: string, null
Default: null

camera/media/cameraExit02 (example name)

Allows vendor specific cameras to be reported. The property name is the name of the camera.

Type: string, null
Name Pattern: ^camera[0-9A-Za-z]+$
Default: null

camera/cameras

Specifies the state of the cameras as one of the following. The relevant property will be null if not supported and this property may be null in Common.StatusChangedEvent if unchanged.

  • ok - The camera is in a good state.
  • inoperative - The camera is inoperative.
  • unknown - Due to a hardware error or other condition, the state of the camera cannot be determined.

Type: object, null
Default: null

camera/cameras/room

Specifies the state of the camera that monitors the whole self-service area. See cameras for valid values.

Type: string, null
Default: null

camera/cameras/person

Specifies the state of the camera that monitors the person standing in front of the self-service machine. See cameras for valid values.

Type: string, null
Default: null

camera/cameras/exitSlot

Specifies the state of the camera that monitors the exit slot(s) of the self-service machine. See cameras for valid values.

Type: string, null
Default: null

camera/pictures

Specifies the number of images stored on the recording media of the cameras. For a device which stores images on a hard disk drive or other general-purpose storage, the value of the relevant camera's property is 0. Properties may be null in Common.StatusChangedEvent if unchanged.

Type: object, null
Default: null

camera/pictures/room

Specifies the number of images stored on the recording media of the room camera.

Type: integer, null
Minimum: 0
Default: null

camera/pictures/person

Specifies the number of images stored on the recording media of the person camera.

Type: integer, null
Minimum: 0
Default: null

camera/pictures/exitSlot

Specifies the number of images stored on the recording media of the exit slot camera.

Type: integer, null
Minimum: 0
Default: null

camera/pictures/cameraExit02 (example name)

Allows vendor specific cameras to be reported. The property name is the name of the camera.

Type: integer, null
Minimum: 0
Name Pattern: ^camera[0-9A-Za-z]+$
Default: null

camera/mediaSize

Specifies the total size (kilobytes) of images stored on the recording media of the cameras. For a device which stores images on a hard disk drive or other general-purpose storage, the value of the relevant camera's property is 0.

Properties may be null in Common.StatusChangedEvent if unchanged or if the relevant camera is unavailable.

Type: object, null
MinProperties: 1
Default: null

camera/mediaSize/room

Specifies the total size (kilobytes) of images stored on the recording media of the room camera.

Type: integer, null
Minimum: 0
Default: null

camera/mediaSize/person

Specifies the total size (kilobytes) of images stored on the recording media of the person camera.

Type: integer, null
Minimum: 0
Default: null

camera/mediaSize/exitSlot

Specifies the total size (kilobytes) of images stored on the recording media of the exit slot camera.

Type: integer, null
Minimum: 0
Default: null

lights

Status information for XFS4IoT services implementing the Lights interface. This will be null if the Lights interface is not supported.

Type: object, null
Default: null

lights/cardReader

Card Reader Light. This property is null if not applicable.

Type: object, null
Default: null

lights/cardReader/right (example name)

Indicates the light position. It can be one of the following:

  • left - The left position.
  • right - The right position.
  • center - The center position.
  • top - The top position.
  • bottom - The bottom position.
  • front - The front position.
  • rear - The rear position.
  • default - The default position.
  • ^[a-zA-Z]([a-zA-Z0-9]*)$ - The vendor-specific position.

Type: object
MinProperties: 1
Name Pattern: ^left$|^right$|^center$|^top$|^bottom$|^front$|^rear$|^default$|^[a-zA-Z]([a-zA-Z0-9]*)$

lights/cardReader/right/flashRate

The light flash rate. This may be null in a Common.StatusChangedEvent if unchanged, otherwise one of the following values:

  • off - The light is turned off.
  • slow - The light is flashing slowly.
  • medium - The light is flashing at medium frequency.
  • quick - The light is flashing quickly.
  • continuous - The light is continuous (steady).

Type: string, null
Default: null

lights/cardReader/right/color

The light color. This property can be null if not supported, only supports a single color or in a Common.StatusChangedEvent if unchanged, otherwise one of the following values:

  • red - The light is red.
  • green - The light is green.
  • yellow - The light is yellow.
  • blue - The light is blue.
  • cyan - The light is cyan.
  • magenta - The light is magenta.
  • white - The light is white.

Type: string, null
Default: null

lights/cardReader/right/direction

The light direction. This property can be null if not supported or in a Common.StatusChangedEvent if unchanged, otherwise one of the following values:

  • entry - The light is indicating entry.
  • exit - The light is indicating exit.

Type: string, null
Default: null

lights/pinPad

Pin Pad Light. This property is null if not applicable.

Type: object, null
Default: null

lights/notesDispenser

Notes Dispenser Light. This property is null if not applicable.

Type: object, null
Default: null

lights/coinDispenser

Coin Dispenser Light. This property is null if not applicable.

Type: object, null
Default: null

lights/receiptPrinter

Receipt Printer Light. This property is null if not applicable.

Type: object, null
Default: null

lights/passbookPrinter

Passbook Printer Light. This property is null if not applicable.

Type: object, null
Default: null

lights/envelopeDepository

Envelope Depository Light. This property is null if not applicable.

Type: object, null
Default: null

lights/checkUnit

Check Unit Light. This property is null if not applicable.

Type: object, null
Default: null

lights/billAcceptor

Bill Acceptor Light. This property is null if not applicable.

Type: object, null
Default: null

lights/envelopeDispenser

Envelope Dispenser Light. This property is null if not applicable.

Type: object, null
Default: null

lights/documentPrinter

Document Printer Light. This property is null if not applicable.

Type: object, null
Default: null

lights/coinAcceptor

Coin Acceptor Light. This property is null if not applicable.

Type: object, null
Default: null

lights/scanner

Scanner Light. This property is null if not applicable.

Type: object, null
Default: null

lights/contactless

Contactless Reader Light. This property is null if not applicable.

Type: object, null
Default: null

lights/cardReader2

Card Reader 2 Light. This property is null if not applicable.

Type: object, null
Default: null

lights/notesDispenser2

Notes Dispenser 2 Light. This property is null if not applicable.

Type: object, null
Default: null

lights/billAcceptor2

Bill Acceptor 2 Light. This property is null if not applicable.

Type: object, null
Default: null

lights/statusGood

Status Indicator light - Good. This property is null if not applicable.

Type: object, null
Default: null

lights/statusWarning

Status Indicator light - Warning. This property is null if not applicable.

Type: object, null
Default: null

lights/statusBad

Status Indicator light - Bad. This property is null if not applicable.

Type: object, null
Default: null

lights/statusSupervisor

Status Indicator light - Supervisor. This property is null if not applicable.

Type: object, null
Default: null

lights/statusInService

Status Indicator light - In service. This property is null if not applicable.

Type: object, null
Default: null

lights/fasciaLight

Fascia Light. This property is null if not applicable.

Type: object, null
Default: null

lights/vendorSpecificLight (example name)

Additional vendor-specific lights.

Type: object, null
Default: null

banknoteNeutralization

The status of the banknote neutralization. If this property is null in Common.Status, banknote neutralization is not supported. It may be null in Common.StatusChangedEvent but that does not mean the interface is not supported, only that its properties haven't changed.

Type: object, null
Default: null

banknoteNeutralization/state

The state of the banknote neutralization. The client application can monitor and verify it before deciding to continue operations. This state can be specified more precisely by using the optional property submode

Type: object
Required

banknoteNeutralization/state/mode

The state of the banknote neutralization.

  • fault - A system fault occurred or due to a hardware error or other condition, the status cannot be determined.
  • armed - The protection is now armed.
  • disarmed - The protection is now disarmed.
  • neutralizationTriggered - The neutralization trigger occurred.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/state/submode

Additional information related to the current mode of the banknote neutralization. If this property is null, it is not applicable in the current context or it has not changed.

  • allSafeSensorsIgnored - Intentionally the protection is now partially armed in response to SetProtection "ignoreAllSafeSensors". All the safe sensors are ignored meanwhile the banknote neutralization in the Storage Unit remains armed.
  • armPending - The protection activation is intentionally delayed by configuration.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/safeDoor

The state of the safe door viewed by the sensors dedicated to the banknote neutralization.

  • fault - A fault has occurred on this sensor.
  • doorOpened - The door is opened.
  • doorClosed - The door is closed.
  • disabled - This sensor is disabled by configuration.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/safeBolt

The state of the safe bolt viewed by the sensors dedicated to the banknote neutralization.

  • fault - A fault has occurred on this sensor.
  • boltUnlocked - The bolt is unlocked.
  • boltLocked - The bolt is locked.
  • disabled - This sensor is disabled by configuration.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/tilt

Specifies the tilt state as one of the following values:

  • fault - A fault has occurred on this sensor.
  • notTilted - It is in normal operating position.
  • tilted - It has been tilted from its normal operating position.
  • disabled - This sensor is disabled by configuration.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/light

Specifies the light sensing as one of the following values:

  • fault - A fault has occurred on this sensor.
  • notConfigured - The light module is found but it is not enabled by configuration.
  • detected - Light is detected.
  • notDetected - No light is detected.
  • disabled - This sensor is disabled by configuration.

If the light module is not supported, null will be reported in Common.Status. This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/gas

Specifies the gas sensing as one of the following values:

  • initializing - The status is not available yet. It is important to mention that the warm-up and calibration of the gas sensor can take a few minutes.
  • fault - A fault has occurred on this sensor.
  • notConfigured - The gas module is found but it is not enabled by configuration.
  • notDetected - No gas detected.
  • partialWarningLevel - A warning level of gas is partially detected.
  • warningLevel - A warning level of gas is undoubtedly detected.
  • partialCriticalLevel - A critical level of gas is partially detected.
  • criticalLevel - A critical level of gas is undoubtedly detected.
  • disabled - This sensor is disabled by configuration.

If the gas module is not supported, null will be reported in Common.Status. This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/temperature

Specifies the temperature sensing as one of the following values:

  • fault - A fault has occurred on this sensor.
  • ok - The temperature is in the operating range.
  • tooCold - Too cold temperature.
  • tooHot - Too hot temperature.
  • disabled - This sensor is disabled by configuration.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/seismic

Specifies the seismic sensing in the banknote neutralization as one of the following values:

  • fault - A fault has occurred on this sensor.
  • notConfigured - The seismic sensor is found but it is not enabled by configuration.
  • notDetected - No seismic activity detected.
  • warningLevel - A warning level of seismic activity has been detected.
  • criticalLevel - A critical level of seismic activity has been detected.
  • disabled - This sensor is disabled by configuration.

If the seismic module is not supported, null will be reported in Common.Status. This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/customInputs

A list of state for one or more custom input accordingly to those defined in CustomInputs in Capabilities. If there is no available configured Custom inputs, null will be reported in Common.Status This may be null in Common.StatusChangedEvent if unchanged.

Type: object, null
Default: null

banknoteNeutralization/customInputs/disableGas (example name)

Describes what an input is capable of or can be configured to handle:

The following standard names are defined:

  • maintenance - Request the banknote neutralization to go in maintenance mode.
  • triggerNeutralization - Request the banknote neutralization to trigger the neutralization.
  • disableGas - Request the banknote neutralization to disable the gas detection.
  • disableSeismic - Request the banknote neutralization to disable the seismic detection.
  • disableSafeDoorAttack - Request the banknote neutralization to disable the safe door attack detection.

Additional non-standard input type names are also allowed:

  • oem[A-Z][a-zA-Z]* - a non standard input type name.

Type: object
Name Pattern: ^(maintenance|triggerNeutralization|disableGas|disableSeismic|disableSafeDoorAttack|oem[A-Z][a-zA-Z]*)$

banknoteNeutralization/customInputs/disableGas/inputState

Specifies the status of a custom input as one of the following values:

  • fault - A fault has occurred on the custom input, the status cannot be determined.
  • ok - The custom input is in a non-triggered state.
  • triggered - The custom input has been triggered.
  • disabled - The custom input is disabled by configuration.

Type: string
Default: "disabled"

banknoteNeutralization/powerSupply

Status information for XFS4IoT services implementing the PowerManagement interface. This will be null if the PowerManagement interface is not supported.

Type: object, null
Default: null

banknoteNeutralization/powerSupply/info

Information that can be generically applied to module providing power ranging from a simple non-rechargeable battery to a more complex device such as a UPS. This will be null if is not supported.

Type: object, null
Default: null

banknoteNeutralization/powerSupply/info/powerInStatus

Specify the input power or mains power status. Specified as one of the following:

  • powering - The input power source is live and supplying power to the power supply module.
  • noPower - The input power source is not supplying power to the power supply module.

This property may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/powerSupply/info/powerOutStatus

Specify the output power status. Specified as one of the following:

  • powering - The power supply module is supplying power to the connected devices.
  • noPower - The power supply module is not supplying power to the connected devices.

This property may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/powerSupply/info/batteryStatus

The charge level of the battery. Specified as one of the following:

  • full - The battery charge level is full, either the battery is new or fully charged for a rechargeable battery.
  • low - Although the battery level is still operational, this is an advance notice which should trigger a maintenance schedule without delay.
  • operational - The charge level is nominally between the levels "full" and "low".
  • critical - The battery level is no longer operational, this is an alert which should trigger maintenance without delay. Consider that the device may also not be powered properly.
  • failure - A battery fault detected. The device powered by the battery is no longer powered properly. Immediate maintenance should be performed. This may be a failure from the battery charging module for a rechargeable battery.

This property may be null in Common.StatusChangedEvent if unchanged or if the device does not have a battery.

Type: string, null
Default: null

banknoteNeutralization/powerSupply/info/batteryChargingStatus

The charging status of the battery. This will be null if the battery is not rechargeable. Specified as one of the following:

  • charging - The battery is charging power. When the battery is fully charged, the state changes to "notCharging" and the property BatteryStatus reports "full".
  • discharging - The battery is discharging power.
  • notCharging - The battery is not charging power.

This property may be null in Common.StatusChangedEvent if unchanged or if the battery is not rechargeable.

Type: string, null
Default: null

banknoteNeutralization/powerSupply/powerSaveRecoveryTime

Specifies the actual number of seconds required by the device to resume its normal operational state from the current power saving mode. This value is 0 if the power saving mode has not been activated. This property is null if power save control is not supported or Common.StatusChangedEvent if unchanged..

Type: integer, null
Minimum: 0
Default: null

banknoteNeutralization/warnings

This indicates warnings that require special attention but banknote neutralization is still operational. Each status is reflected by a boolean value which is true if the warning status is detected otherwise it is false.

Type: object, null
Default: null

banknoteNeutralization/warnings/protectionArmingFault

At least one banknote neutralization protection of a Storage Unit stayed disarmed after attempting to arm it.

Type: boolean
Default: false

banknoteNeutralization/warnings/protectionDisarmingFault

At least one banknote neutralization protection of a Storage Unit stayed armed after attempting to disarm it.

Type: boolean
Default: false

banknoteNeutralization/warnings/externalMainPowerOutage

A main power outage of the banknote neutralization occurred.

Type: boolean
Default: false

banknoteNeutralization/warnings/storageUnitLowPowerSupply

At least the power supply of one banknote neutralization of a Storage Unit is low.

Type: boolean
Default: false

banknoteNeutralization/warnings/armedAutonomous

The protection is armed but at least one banknote neutralization of a Storage Unit runs in an autonomous mode.

Type: boolean
Default: false

banknoteNeutralization/warnings/armedAlarm

The protection is armed but the banknote neutralization is in alarm mode.

Type: boolean
Default: false

banknoteNeutralization/warnings/gasWarningLevel

A warning level of gas is detected.

Type: boolean
Default: false

banknoteNeutralization/warnings/seismicActivityWarningLevel

A warning level of the seismic activity is detected.

Type: boolean
Default: false

banknoteNeutralization/errors

This indicates errors reflect reasons of failure requiring immediate attention. Each status is reflected by a boolean value which is true if the error status is detected otherwise it is false. If one of them is true, banknote neutralization no longer works under normal conditions and may no longer be fully operational.

Type: object, null
Default: null

banknoteNeutralization/errors/protectionEnablingFailure

A critical error occurred while arming it.

Type: boolean
Default: false

banknoteNeutralization/errors/protectionDisarmingFailure

A critical error occurred while disarming it.

Type: boolean
Default: false

banknoteNeutralization/errors/storageUnitPowerSupplyFailure

There is a failure of at least one banknote neutralization power supply of a Storage Unit.

Type: boolean
Default: false

banknoteNeutralization/errors/backupBatteryFailure

There is a failure of the backup battery.

Type: boolean
Default: false

banknoteNeutralization/errors/gasCriticalLevel

A critical level of gas is detected.

Type: boolean
Default: false

banknoteNeutralization/errors/light

Light is detected.

Type: boolean
Default: false

banknoteNeutralization/errors/tilted

At least one banknote neutralization unit has been tilted from its normal operating position.

Type: boolean
Default: false

banknoteNeutralization/errors/seismicActivityCriticalLevel

A critical level of the seismic activity is detected.

Type: boolean
Default: false

auxiliaries

Status information for XFS4IoT services implementing the Auxiliaries interface. This will be null if the Auxiliaries interface is not supported.

Type: object, null
Default: null

auxiliaries/operatorSwitch

Specifies the state of the Operator switch.

  • run - The switch is in run mode.
  • maintenance - The switch is in maintenance mode.
  • supervisor - The switch is in supervisor mode.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/tamperSensor

Specifies the state of the Tamper sensor.

  • off - There is no indication of a tampering attempt.
  • on - There has been a tampering attempt.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/internalTamperSensor

Specifies the state of the Internal Tamper Sensor for the internal alarm. This sensor indicates whether the internal alarm has been tampered with (such as a burglar attempt). Specified as one of the following:

  • off - There is no indication of a tampering attempt.
  • on - There has been a tampering attempt.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/seismicSensor

Specifies the state of the Seismic Sensor. This sensor indicates whether the terminal has been shaken (e.g. burglar attempt or seismic activity). Specified as one of the following:

  • off - The seismic activity has not been high enough to trigger the sensor.
  • on - The seismic or other activity has triggered the sensor.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/heatSensor

Specifies the state of the Heat Sensor. This sensor is triggered by excessive heat (fire) near the terminal. Specified as one of the following:

  • off - The heat has not been high enough to trigger the sensor.
  • on - The heat has been high enough to trigger the sensor.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/proximitySensor

Specifies the state of the Proximity Sensor. This sensor is triggered by movements around the terminal. Specified as one of the following:

  • present - The sensor is showing that there is someone present at the terminal.
  • notPresent - The sensor cannot sense any people around the terminal.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/ambientLightSensor

Specifies the state of the Ambient Light Sensor. This sensor indicates the level of ambient light around the terminal. Interpretation of this value is vendor-specific and therefore it is not guaranteed to report a consistent actual ambient light level across different vendor hardware. Specified as one of the following:

  • veryDark - The level of light is very dark.
  • dark - The level of light is dark.
  • mediumLight - The level of light is medium light.
  • light - The level of light is light.
  • veryLight - The level of light is very light.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/enhancedAudioSensor

Specifies the presence or absence of a consumer’s headphone connected to the Audio Jack. Specified as one of the following:

  • present - There is a headset connected.
  • notPresent - There is no headset connected.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/bootSwitchSensor

Specifies the state of the Boot Switch Sensor. This sensor is triggered whenever the terminal is about to be rebooted or shut down due to a delayed effect switch. Specified as one of the following:

  • off - The sensor has not been triggered.
  • on - The terminal is about to be rebooted or shutdown.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/consumerDisplaySensor

Specifies the state of the Consumer Display. Specified as one of the following:

  • off - The Consumer Display is switched off.
  • on - The Consumer Display is in a good state and is turned on.
  • displayError - The Consumer Display is in an error state.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/operatorCallButtonSensor

Specifies the state of the Operator Call Button as one of the following:

  • off - The Operator Call Button is released (not pressed).
  • on - The Operator Call Button is being pressed.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/handsetSensor

Specifies the state of the Handset, which is a device similar to a telephone receiver. Specified as one of the following:

  • onTheHook - The Handset is on the hook.
  • offTheHook - The Handset is off the hook.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/headsetMicrophoneSensor

Specifies the presence or absence of a consumer’s headset microphone connected to the Microphone Jack. Specified as one of the following:

  • present - There is a headset microphone connected.
  • notPresent - There is no headset microphone connected.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/fasciaMicrophoneSensor

Specifies the state of the fascia microphone as one of the following:

  • off - The Fascia Microphone is turned off.
  • on - The Fascia Microphone is turned on.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/cabinetDoor

Specifies the overall state of the Cabinet Doors. Cabinet Doors are doors that open up for consumables, and hardware that does not have to be in a secure place. Specified as one of the following:

  • closed - All Cabinet Doors are closed.
  • open - At least one of the Cabinet Doors is open.
  • locked - All Cabinet Doors are closed and locked.
  • bolted - All Cabinet Doors are closed, locked and bolted.
  • tampered - At least one of the Cabinet Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/safeDoor

Specifies the state of the Safe Doors. Safe Doors are doors that open up for secure hardware, such as the note dispenser, the security device, etc. Specified as one of the following:

  • closed - The Safe Doors are closed.
  • open - At least one of the Safe Doors is open.
  • locked - All Safe Doors are closed and locked.
  • bolted - All Safe Doors are closed, locked and bolted.
  • tampered - At least one of the Safe Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/vandalShield

Specifies the state of the Vandal Shield. The Vandal Shield is a door that opens up for consumer access to the terminal. Specified as one of the following:

  • closed - The Vandal Shield is closed.
  • open - The Vandal Shield is fully open.
  • locked - The Vandal Shield is closed and locked.
  • service - The Vandal Shield is in service position.
  • keyboard - The Vandal Shield position permits access to the keyboard.
  • partiallyOpen - The Vandal Shield is partially open.
  • jammed - The Vandal Shield is jammed.
  • tampered - The Vandal Shield has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/cabinetFrontDoor

Specifies the overall state of the Front Cabinet Doors. The front is defined as the side facing the customer/consumer. Cabinet Doors are doors that open up for consumables, and hardware that does not have to be in a secure place. Specified as one of the following:

  • closed - All front Cabinet Doors are closed.
  • open - At least one of the front Cabinet Doors is open.
  • locked - All front Cabinet Doors are closed and locked.
  • bolted - All front Cabinet Doors are closed, locked and bolted.
  • tampered - At least one of the front Cabinet Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/cabinetRearDoor

Specifies the overall state of the Rear Cabinet Doors. The rear is defined as the side opposite the side facing the customer/consumer. Cabinet Doors are doors that open up for consumables, and hardware that does not have to be in a secure place. Specified as one of the following:

  • closed - All rear Cabinet Doors are closed.
  • open - At least one of the rear Cabinet Doors is open.
  • locked - All rear Cabinet Doors are closed and locked.
  • bolted - All rear Cabinet Doors are closed, locked and bolted.
  • tampered - At least one of the rear Cabinet Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/cabinetLeftDoor

Specifies the overall state of the Left Cabinet Doors. The left is defined as the side to the left as seen by the customer/consumer. Cabinet Doors are doors that open up for consumables, and hardware that does not have to be in a secure place. Specified as one of the following:

  • closed - All left Cabinet Doors are closed.
  • open - At least one of the left Cabinet Doors is open.
  • locked - All left Cabinet Doors are closed and locked.
  • bolted - All left Cabinet Doors are closed, locked and bolted.
  • tampered - At least one of the left Cabinet Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/cabinetRightDoor

Specifies the overall state of the Right Cabinet Doors. The right is defined as the side to the right as seen by the customer/consumer. Cabinet Doors are doors that open up for consumables, and hardware that does not have to be in a secure place. Specified as one of the following:

  • closed - All right Cabinet Doors are closed.
  • open - At least one of the right Cabinet Doors is open.
  • locked - All right Cabinet Doors are closed and locked.
  • bolted - All right Cabinet Doors are closed, locked and bolted.
  • tampered - At least one of the right Cabinet Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/openClosedIndicator

Specifies the state of the Open/Closed Indicator as one of the following:

  • closed - The terminal is closed for a consumer.
  • open - The terminal is open to be used by a consumer.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/audio

Specifies the state of the Audio Indicator. This property is null if not applicable.

Type: object, null
Default: null

auxiliaries/audio/rate

Specifies the state of the Audio Indicator as one of the following values. This may be null in Common.StatusChangedEvent if unchanged.

  • on - Turn on the Audio Indicator.
  • off - Turn off the Audio Indicator.
  • continuous - Turn the Audio Indicator to continuous.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/audio/signal

Specifies the Audio sound as one of the following values. This may be null in Common.StatusChangedEvent if unchanged.

  • keypress - Sound a key click signal.
  • exclamation - Sound an exclamation signal.
  • warning - Sound a warning signal.
  • error - Sound an error signal.
  • critical - Sound a critical error signal.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/heating

Specifies the state of the internal heating as one of the following:

  • off - The internal heating is turned off.
  • on - The internal heating is turned on.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/consumerDisplayBacklight

Specifies the Consumer Display Backlight as one of the following:

  • off - The Consumer Display Backlight is turned off.
  • on - Consumer Display Backlight is turned on.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/signageDisplay

Specifies the state of the Signage Display. The Signage Display is a lighted banner or marquee that can be used to display information or an advertisement. Any dynamic data displayed must be loaded by a means external to the service. Specified as one of the following:

  • off - The Signage Display is turned off.
  • on - The Signage Display is turned on.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/volume

Specifies the value of the Volume Control. The value of Volume Control is defined in an interval from 1 to 1000 where 1 is the lowest volume level and 1000 is the highest volume level. The interval is defined in logarithmic steps, e.g. a volume control on a radio. Note: The Volume Control property is vendor-specific and therefore it is not possible to guarantee a consistent actual volume level across different vendor hardware. This property is null if not applicable.

Type: integer, null
Minimum: 1
Maximum: 1000
Default: null

auxiliaries/UPS

Specifies the state of the Uninterruptible Power Supply. This property is null if not applicable. Properties contained in this property may be null in Common.StatusChangedEvent if unchanged.

Type: object, null
Default: null

auxiliaries/UPS/low

The charge level of the UPS is low.

Type: boolean, null
Default: null

auxiliaries/UPS/engaged

The UPS is engaged.

Type: boolean, null
Default: null

auxiliaries/UPS/powering

The UPS is powering the system.

Type: boolean, null
Default: null

auxiliaries/UPS/recovered

The UPS was engaged when the main power went off.

Type: boolean, null
Default: null

auxiliaries/audibleAlarm

Species the state of the Audible Alarm device as one of the following:

  • off - The Alarm is turned off.
  • on - The Alarm is turned on.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/enhancedAudioControl

Specifies the state of the Enhanced Audio Controller. The Enhanced Audio Controller controls how private and public audio are broadcast when the headset is inserted into/removed from the audio jack and when the handset is off-hook/on-hook. In the following, Privacy Device is used to refer to either the headset or handset. The Enhanced Audio Controller state is specified as one of the following:

  • publicAudioManual - The Enhanced Audio Controller is in manual mode and is in the public state (i.e. audio will be played through speakers). Activating a Privacy Device (headset connected/handset off-hook) will have no impact, i.e. Output will remain through the speakers and no audio will be directed to the Privacy Device.
  • publicAudioAuto - The Enhanced Audio Controller is in auto mode and is in the public state (i.e. audio will be played through speakers). When a Privacy Device is activated, the device will go to the private state.
  • publicAudioSemiAuto - The Enhanced Audio Controller is in semi-auto mode and is in the public state (i.e. audio will be played through speakers). When a Privacy Device is activated, the device will go to the private state.
  • privateAudioManual - The Enhanced Audio Controller is in manual mode and is in the private state (i.e. audio will be played only through a connected Privacy Device). In private mode, no audio is transmitted through the speakers.
  • privateAudioAuto - The Enhanced Audio Controller is in auto mode and is in the private state (i.e. audio will be played only through a connected Privacy Device). In private mode, no audio is transmitted through the speakers. When a Privacy Device is deactivated (headset disconnected/handset on-hook), the device will go to the public state. Where there is more than one Privacy Device, the device will go to the public state only when all Privacy Devices have been deactivated.
  • privateAudioSemiAuto - The Enhanced Audio Controller is in semi-auto mode and is in the private state (i.e. audio will be played only through a connected Privacy Device). In private mode, no audio is transmitted through the speakers. When a Privacy Device is deactivated, the device will remain in the private state.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/enhancedMicrophoneControl

Specifies the state of the Enhanced Microphone Controller. The Enhanced Microphone Controller controls how private and public audio input are transmitted when the headset is inserted into/removed from the audio jack and when the handset is off-hook/on-hook. In the following, Privacy Device is used to refer to either the headset or handset. The Enhanced Microphone Controller state is specified as one of the following values:

  • publicAudioManual - The Enhanced Microphone Controller is in manual mode and is in the public state (i.e. the microphone in the fascia is active). Activating a Privacy Device (headset connected/handset off-hook) will have no impact, i.e. input will remain through the fascia microphone and any microphone associated with the Privacy Device will not be active.
  • publicAudioAuto - The Enhanced Microphone Controller is in auto mode and is in the public state (i.e. the microphone in the fascia is active). When a Privacy Device with a microphone is activated, the device will go to the private state.
  • publicAudioSemiAuto - The Enhanced Microphone Controller is in semi-auto mode and is in the public state (i.e. the microphone in the fascia is active). When a Privacy Device with a microphone is activated, the device will go to the private state.
  • privateAudioManual - The Enhanced Microphone Controller is in manual mode and is in the private state (i.e. audio input will be via a microphone in the Privacy Device). In private mode, no audio input is transmitted through the fascia microphone.
  • privateAudioAuto - The Enhanced Microphone Controller is in auto mode and is in the private state (i.e. audio input will be via a microphone in the Privacy Device). In private mode, no audio input is transmitted through the fascia microphone. When a Privacy Device with a microphone is deactivated (headset disconnected/handset on-hook), the device will go to the public state. Where there is more than one Privacy Device with a microphone, the device will go to the public state only when all such Privacy Devices have been deactivated.
  • privateAudioSemiAuto - The Enhanced Microphone Controller is in semi-auto mode and is in the private state (i.e. audio input will be via a microphone in the Privacy Device). In private mode, no audio is transmitted through the fascia microphone. When a Privacy Device with a microphone is deactivated, the device will remain in the private state.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/microphoneVolume

Specifies the value of the Microphone Volume Control. The value of Volume Control is defined in an interval from 1 to 1000 where 1 is the lowest volume level and 1000 is the highest volume level. The interval is defined in logarithmic steps, e.g. a volume control on a radio. Note: The Microphone Volume Control property is vendor-specific and therefore it is not possible to guarantee a consistent actual volume level across different vendor hardware. This property is null if not applicable.

Type: integer, null
Minimum: 1
Maximum: 1000
Default: null

deposit

Status information for XFS4IoT services implementing the Deposit interface. This will be null if the Deposit interface is not supported.

Type: object, null
Default: null

deposit/depTransport

Specifies the state of the deposit transport mechanism that transports the envelope into the deposit container. This property is null in Common.Status if the device has no deposit transport, otherwise the following values are possible:

  • ok - The deposit transport is in a good state.
  • inoperative - The deposit transport is inoperative due to a hardware failure or media jam.
  • unknown - Due to a hardware error or other condition the state of the deposit transport cannot be determined.

Type: string, null
Default: null

deposit/envDispenser

Specifies the state of the envelope dispenser.

This property is null in Common.Status if the device has no envelope dispenser, otherwise the following values are possible:

  • ok- The envelope dispenser is present and in a good state.
  • inoperative - The envelope dispenser is present but in an inoperable state. No envelopes can be dispensed.
  • unknown - Due to a hardware error or other condition, the state of the envelope dispenser cannot be determined.

Type: string, null
Default: null

deposit/printer

Specifies the state of the printer.

This property is null in Common.Status if the device has no printer, otherwise the following values are possible:

  • ok- The printer is present and in a good state.
  • inoperative - The printer is in an inoperable state.
  • unknown - Due to a hardware error or other condition, the state of the printer cannot be determined.

Type: string, null
Default: null

deposit/toner

Specifies the state of the toner (or ink) for the printer. This may be null in Common.Status if the physical device does not support printing or the capability to report the status of the toner/ink is not supported by the device, otherwise the following values are possible:

  • full - The toner or ink supply is full or the ribbon is OK.
  • low - The toner or ink supply is low or the print contrast with a ribbon is weak.
  • out - The toner or ink supply is empty or the print contrast with a ribbon is not sufficient any more.
  • unknown - Status of toner or ink supply or the ribbon cannot be determined with the device in its current state.

Type: string, null
Default: null

deposit/shutter

Specifies the state of the shutter or door.

This may be null in Common.Status if the physical device has no shutter, otherwise the following values are possible:

  • closed - The shutter is closed.
  • open - The shutter is open.
  • jammed - The shutter is jammed.
  • unknown - Due to a hardware error or other condition, the state of the shutter cannot be determined.

Type: string, null
Default: null

deposit/depositLocation

Specifies the location of the item deposited at the end of the last Deposit.Entry command.

This may be null in Common.Status if not supported or in Common.StatusChangedEvent if unchanged, otherwise the following values are possible:

  • unknown - Cannot determine the location of the last deposited item.
  • container - The item is in the container.
  • transport - The item is in the transport.
  • printer - The item is in the printer.
  • shutter - The item is at the shutter (available for removal).
  • none - No item was entered on the last Deposit.Entry.
  • removed - The item was removed.

Type: string, null
Default: null

vendorMode

Status information for XFS4IoT services implementing the VendorMode interface. This will be null if the VendorMode interface is not supported.

Type: object, null
Default: null

vendorMode/service

Specifies the service state. This property may be null in events if the state did not change, otherwise will be one of the following values:

  • enterPending - The service is waiting for one or more registered clients to acknowledge the enter mode request.
  • active - Vendor Mode is active.
  • exitPending - The service is waiting for one or more registered clients to acknowledge the exit mode request.
  • inactive - Vendor Mode is inactive.

Type: string, null
Default: null

vendorMode/clients

Specifies the list of clients currently registered to participate in Vendor Mode. This property may be null if the service state is active or inactive or if no clients have registered to participate in Vendor Mode.

Type: array (object), null
Default: null

vendorMode/clients/appName

The name specified by the client when it registered to participate in Vendor Mode.

Type: string
Required

vendorMode/clients/state

Specifies the client state. This property may be null in events if the state did not change, otherwise will be one of the following values:

  • enterPending - The service is waiting for the client to acknowledge the enter mode request..
  • active - Vendor Mode is active.
  • exitPending - The service is waiting for the client to acknowledge the exit mode request.
  • inactive - Vendor Mode is inactive. inactive.

Type: string
Required

vendorApplication

Status information for XFS4IoT services implementing the Vendor Application interface. This will be null in Common.Status if the interface is not supported.

Type: object, null
Default: null

vendorApplication/accessLevel

Reports the current access level as one of the following values:

  • notActive - The application is not active.
  • basic - The application is active for the basic access level.
  • intermediate - The application is active for the intermediate access level.
  • full - The application is active for the full access level.

Type: string
Required

powerManagement

Status information for XFS4IoT services implementing the PowerManagement interface. This will be null if the PowerManagement interface is not supported.

Type: object, null
Default: null

powerManagement/info

Information that can be generically applied to module providing power ranging from a simple non-rechargeable battery to a more complex device such as a UPS. This will be null if is not supported.

Type: object, null
Default: null

powerManagement/info/powerInStatus

Specify the input power or mains power status. Specified as one of the following:

  • powering - The input power source is live and supplying power to the power supply module.
  • noPower - The input power source is not supplying power to the power supply module.

This property may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

powerManagement/info/powerOutStatus

Specify the output power status. Specified as one of the following:

  • powering - The power supply module is supplying power to the connected devices.
  • noPower - The power supply module is not supplying power to the connected devices.

This property may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

powerManagement/info/batteryStatus

The charge level of the battery. Specified as one of the following:

  • full - The battery charge level is full, either the battery is new or fully charged for a rechargeable battery.
  • low - Although the battery level is still operational, this is an advance notice which should trigger a maintenance schedule without delay.
  • operational - The charge level is nominally between the levels "full" and "low".
  • critical - The battery level is no longer operational, this is an alert which should trigger maintenance without delay. Consider that the device may also not be powered properly.
  • failure - A battery fault detected. The device powered by the battery is no longer powered properly. Immediate maintenance should be performed. This may be a failure from the battery charging module for a rechargeable battery.

This property may be null in Common.StatusChangedEvent if unchanged or if the device does not have a battery.

Type: string, null
Default: null

powerManagement/info/batteryChargingStatus

The charging status of the battery. This will be null if the battery is not rechargeable. Specified as one of the following:

  • charging - The battery is charging power. When the battery is fully charged, the state changes to "notCharging" and the property BatteryStatus reports "full".
  • discharging - The battery is discharging power.
  • notCharging - The battery is not charging power.

This property may be null in Common.StatusChangedEvent if unchanged or if the battery is not rechargeable.

Type: string, null
Default: null

powerManagement/powerSaveRecoveryTime

Specifies the actual number of seconds required by the device to resume its normal operational state from the current power saving mode. This value is 0 if the power saving mode has not been activated. This property is null if power save control is not supported or Common.StatusChangedEvent if unchanged..

Type: integer, null
Minimum: 0
Default: null

Event Messages

None

4.1.4 - Common.Capabilities

This command retrieves the capabilities of the service. It may also return vendor specific capability information.

This command can be used while in Vendor Mode.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 3.0
{ "common": { "serviceVersion": "1.3.42", "deviceInformation": [{ "modelName": "AcmeModel42", "serialNumber": "1.0.12.05", "revisionNumber": "1.2.3", "modelDescription": "Acme Dispenser Model 3", "firmware": [{ "firmwareName": "Acme Firmware", "firmwareVersion": "1.0.1.2", "hardwareRevision": "4.3.0.5" }], "software": [{ "softwareName": "Acme Software Name", "softwareVersion": "1.3.0.2" }] }], "powerSaveControl": false, "antiFraudModule": false, "endToEndSecurity": { "required": "always", "hardwareSecurityElement": true, "responseSecurityEnabled": "always", "commands": ["CashDispenser.Dispense"], "commandNonceTimeout": 3600 }, "persistentDataStore": { "capacity": 1 } }, "cardReader": { "type": "motor", "readTracks": { "track1": false, "track2": false, "track3": false, "watermark": false, "frontTrack1": false, "frontImage": false, "backImage": false, "track1JIS": false, "track3JIS": false, "ddi": false }, "writeTracks": { "track1": false, "track2": false, "track3": false, "frontTrack1": false, "track1JIS": false, "track3JIS": false }, "chipProtocols": { "chipT0": false, "chipT1": false, "chipProtocolNotRequired": false, "chipTypeAPart3": false, "chipTypeAPart4": false, "chipTypeB": false, "chipTypeNFC": false }, "securityType": "mm", "powerOnOption": "exit", "powerOffOption": "exit", "fluxSensorProgrammable": false, "readWriteAccessFromExit": false, "writeMode": { "loco": false, "hico": false, "auto": false }, "chipPower": { "cold": false, "warm": false, "off": false }, "memoryChipProtocols": { "siemens4442": false, "gpm896": false }, "positions": { "exit": false, "transport": false }, "cardTakenSensor": false }, "cashAcceptor": { "type": "tellerBill", "maxCashInItems": 1, "shutter": false, "shutterControl": false, "intermediateStacker": 0, "itemsTakenSensor": false, "itemsInsertedSensor": false, "positions": [{ "position": "inLeft", "usage": { "in": false, "refuse": false, "rollback": false }, "shutterControl": true, "itemsTakenSensor": false, "itemsInsertedSensor": false, "retractAreas": { "retract": false, "reject": false, "transport": false, "stacker": false, "billCassettes": false, "cashIn": false, "itemCassette": false }, "presentControl": false, "preparePresent": false }], "retractAreas": { "retract": false, "transport": false, "stacker": false, "reject": false, "billCassette": false, "cashIn": false, "itemCassette": See cashAcceptor/positions/retractAreas/itemCassette }, "retractTransportActions": { "present": false, "retract": false, "reject": false, "billCassette": false, "cashIn": See cashAcceptor/retractAreas/cashIn, "itemCassette": See cashAcceptor/positions/retractAreas/itemCassette }, "retractStackerActions": See cashAcceptor/retractTransportActions properties "cashInLimit": { "byTotalItems": false, "byAmount": false }, "countActions": { "individual": false, "all": false }, "retainAction": { "counterfeit": false, "suspect": false, "inked": false } }, "cashDispenser": { "type": "tellerBill", "maxDispenseItems": 1, "shutterControl": false, "retractAreas": { "retract": false, "transport": false, "stacker": false, "reject": false, "itemCassette": false, "cashIn": false }, "retractTransportActions": { "present": false, "retract": false, "reject": false, "itemCassette": false, "cashIn": false }, "retractStackerActions": See cashDispenser/retractTransportActions properties "intermediateStacker": false, "itemsTakenSensor": false, "positions": { "left": false, "right": false, "center": false, "top": false, "bottom": false, "front": false, "rear": false }, "moveItems": { "fromCashUnit": false, "toCashUnit": false, "toTransport": false, "toStacker": false } }, "cashManagement": { "cashBox": false, "exchangeType": { "byHand": false }, "itemInfoTypes": { "serialNumber": false, "signature": false, "image": false }, "classificationList": false, "classifications": { "unrecognized": true, "counterfeit": false, "suspect": false, "inked": false, "fit": true, "unfit": false } }, "check": { "type": "singleMediaInput", "maxMediaOnStacker": 0, "printSize": { "rows": 0, "cols": 0 }, "stamp": false, "rescan": false, "presentControl": false, "applicationRefuse": false, "retractLocation": { "storage": false, "transport": false, "stacker": false, "rebuncher": false }, "resetControl": { "eject": false, "storageUnit": false, "transport": See check/retractLocation/transport, "rebuncher": See check/retractLocation/rebuncher }, "imageType": { "tif": false, "wmf": false, "bmp": false, "jpg": false }, "frontImage": { "colorFormat": { "binary": false, "grayScale": false, "full": false }, "scanColor": { "red": false, "green": false, "blue": false, "yellow": false, "white": false, "infraRed": false, "ultraViolet": false }, "defaultScanColor": "red" }, "backImage": See check/frontImage properties "codelineFormat": { "cmc7": false, "e13b": false, "ocr": false, "ocra": false, "ocrb": false }, "dataSource": { "imageFront": false, "imageBack": false, "codeLine": false }, "insertOrientation": { "codeLineRight": false, "codeLineLeft": false, "codeLineBottom": false, "codeLineTop": false, "faceUp": false, "faceDown": false }, "positions": { "input": { "itemsTakenSensor": false, "itemsInsertedSensor": false, "retractAreas": { "retractBin": false, "transport": false, "stacker": false, "rebuncher": false } }, "output": See check/positions/input properties "refused": See check/positions/input properties }, "imageAfterEndorse": false, "returnedItemsProcessing": { "endorse": false, "endorseImage": false }, "printSizeFront": See check/printSize properties }, "mixedMedia": { "modes": { "cashAccept": true, "checkAccept": true }, "dynamic": false }, "pinPad": { "pinFormats": { "ibm3624": false, "ansi": false, "iso0": false, "iso1": false, "eci2": false, "eci3": false, "visa": false, "diebold": false, "dieboldCo": false, "visa3": false, "banksys": false, "emv": false, "iso3": false, "ap": false, "iso4": false }, "presentationAlgorithms": { "presentClear": false }, "display": { "none": false, "ledThrough": false, "display": false }, "idcConnect": false, "validationAlgorithms": { "des": false, "visa": false }, "pinCanPersistAfterUse": false, "typeCombined": false, "setPinblockDataRequired": false, "pinBlockAttributes": { "P0": { "T": { "E": { "cryptoMethod": { "ecb": false, "cbc": false, "cfb": false, "ofb": false, "ctr": false, "xts": false, "rsaesPkcs1V15": false, "rsaesOaep": false } } }, "R": See pinPad/pinBlockAttributes/P0/T properties } } }, "crypto": { "emvHashAlgorithm": { "sha1Digest": false, "sha256Digest": false }, "cryptoAttributes": { "D0": { "D": { "D": { "cryptoMethod": { "ecb": false, "cbc": false, "cfb": false, "ofb": false, "ctr": false, "xts": false, "rsaesPkcs1V15": false, "rsaesOaep": false } }, "E": See crypto/cryptoAttributes/D0/D/D properties }, "T": See crypto/cryptoAttributes/D0/D properties }, "D1": See crypto/cryptoAttributes/D0 properties }, "authenticationAttributes": { "M0": { "T": { "G": { "cryptoMethod": { "rsassaPkcs1V15": false, "rsassaPss": false }, "hashAlgorithm": { "sha1": false, "sha256": false } }, "S": See crypto/authenticationAttributes/M0/T/G properties }, "R": See crypto/authenticationAttributes/M0/T properties }, "S0": See crypto/authenticationAttributes/M0 properties }, "verifyAttributes": { "M0": See crypto/authenticationAttributes/M0 "T": { "V": { "cryptoMethod": See crypto/authenticationAttributes/M0/T/G/cryptoMethod properties "hashAlgorithm": See crypto/authenticationAttributes/M0/T/G/hashAlgorithm properties } }, "R": See crypto/verifyAttributes/M0/T properties }, "S0": See crypto/authenticationAttributes/M0 "T": See crypto/verifyAttributes/M0/T properties "R": See crypto/verifyAttributes/M0/T properties } } }, "keyManagement": { "keyNum": 0, "keyCheckModes": { "self": false, "zero": false }, "rsaAuthenticationScheme": { "twoPartySig": false, "threePartyCert": false, "threePartyCertTr34": false }, "rsaSignatureAlgorithm": { "pkcs1V15": false, "pss": false }, "rsaCryptAlgorithm": { "pkcs1V15": false, "oaep": false }, "rsaKeyCheckMode": { "sha1": false, "sha256": false }, "signatureScheme": { "randomNumber": false, "exportDeviceId": false, "enhancedRkl": false }, "emvImportSchemes": { "plainCA": false, "chksumCA": false, "epiCA": false, "issuer": false, "icc": false, "iccPin": false, "pkcsv15CA": false }, "keyBlockImportFormats": { "A": false, "B": false, "C": false, "D": false }, "keyImportThroughParts": false, "desKeyLength": { "single": false, "double": false, "triple": false }, "certificateTypes": { "encKey": false, "verificationKey": false, "hostKey": false }, "loadCertOptions": { "certHost": { "newHost": false, "replaceHost": false }, "caTr34": See keyManagement/loadCertOptions/certHost properties }, "crklLoadOptions": { "noRandom": false, "noRandomCrl": false, "random": false, "randomCrl": false }, "symmetricKeyManagementMethods": { "fixedKey": false, "masterKey": false, "tdesDukpt": false }, "keyAttributes": { "M0": { "T": { "C": { "restrictedKeyUsage": "string" }, "E": See keyManagement/keyAttributes/M0/T/C properties }, "R": See keyManagement/keyAttributes/M0/T properties }, "K1": See keyManagement/keyAttributes/M0 properties }, "decryptAttributes": { "A": { "decryptMethod": { "ecb": false, "cbc": false, "cfb": false, "ofb": false, "ctr": false, "xts": false, "rsaesPkcs1V15": false, "rsaesOaep": false } }, "T": See keyManagement/decryptAttributes/A properties }, "verifyAttributes": { "M0": { "T": { "V": { "cryptoMethod": { "kcvNone": false, "kcvSelf": false, "kcvZero": false, "sigNone": false, "rsassaPkcs1V15": false, "rsassaPss": false }, "hashAlgorithm": { "sha1": false, "sha256": false } }, "S": See keyManagement/verifyAttributes/M0/T/V properties }, "R": See keyManagement/verifyAttributes/M0/T properties }, "S0": See keyManagement/verifyAttributes/M0 properties } }, "keyboard": { "autoBeep": { "activeAvailable": false, "activeSelectable": false, "inactiveAvailable": false, "inactiveSelectable": false }, "etsCaps": { "xPos": 0, "yPos": 0, "xSize": 0, "ySize": 0, "maximumTouchFrames": 0, "maximumTouchKeys": 0, "float": { "x": false, "y": false } }, "osKeyboard": false }, "textTerminal": { "type": "fixed", "resolutions": [{ "sizeX": 0, "sizeY": 0 }], "keyLock": false, "cursor": false, "forms": false }, "printer": { "type": { "receipt": false, "passbook": false, "journal": false, "document": false, "scanner": false }, "resolution": { "low": false, "medium": false, "high": false, "veryHigh": false }, "readForm": { "ocr": false, "micr": false, "msf": false, "barcode": false, "pageMark": false, "readImage": false, "readEmptyLine": false }, "writeForm": { "text": false, "graphics": false, "ocr": See printer/readForm/ocr, "micr": See printer/readForm/micr, "msf": See printer/readForm/msf, "barcode": See printer/readForm/barcode, "stamp": false }, "extents": { "horizontal": false, "vertical": false }, "control": { "eject": false, "perforate": false, "cut": false, "skip": false, "flush": false, "retract": false, "stack": false, "partialCut": false, "alarm": false, "pageForward": false, "pageBackward": false, "turnMedia": false, "stamp": false, "park": false, "expel": false, "ejectToTransport": false, "rotate180": false, "clearBuffer": false }, "maxMediaOnStacker": 5, "acceptMedia": false, "multiPage": false, "paperSources": { "upper": false, "lower": false, "external": false, "aux": false, "aux2": false, "park": false, "exampleProperty1": false, "exampleProperty2": See printer/paperSources/exampleProperty1 }, "mediaTaken": false, "imageType": { "tif": false, "wmf": false, "bmp": false, "jpg": false, "png": false, "gif": false, "svg": false }, "frontImageColorFormat": { "binary": false, "grayscale": false, "full": false }, "backImageColorFormat": { "binary": See printer/frontImageColorFormat/binary, "grayScale": See printer/frontImageColorFormat/grayscale, "full": See printer/frontImageColorFormat/full }, "imageSource": { "imageFront": false, "imageBack": false, "passportDataGroup1": false, "passportDataGroup2": false }, "dispensePaper": false, "osPrinter": "example printer", "mediaPresented": false, "autoRetractPeriod": 0, "retractToTransport": false, "coercivityType": { "low": false, "high": false, "auto": false }, "controlPassbook": { "turnForward": false, "turnBackward": false, "closeForward": false, "closeBackward": false }, "printSides": "single" }, "barcodeReader": { "canFilterSymbologies": false, "symbologies": { "ean128": false, "ean8": false, "ean8_2": false, "ean8_5": false, "ean13": false, "ean13_2": false, "ean13_5": false, "jan13": false, "upcA": false, "upcE0": false, "upcE0_2": false, "upcE0_5": false, "upcE1": false, "upcE1_2": false, "upcE1_5": false, "upcA_2": false, "upcA_5": false, "codabar": false, "itf": false, "code11": false, "code39": false, "code49": false, "code93": false, "code128": false, "msi": false, "plessey": false, "std2Of5": false, "std2Of5Iata": false, "pdf417": false, "microPdf417": false, "dataMatrix": false, "maxiCode": false, "codeOne": false, "channelCode": false, "telepenOriginal": false, "telepenAim": false, "rss": false, "rssExpanded": false, "rssRestricted": false, "compositeCodeA": false, "compositeCodeB": false, "compositeCodeC": false, "posiCodeA": false, "posiCodeB": false, "triopticCode39": false, "codablockF": false, "code16K": false, "qrCode": false, "aztec": false, "ukPost": false, "planet": false, "postnet": false, "canadianPost": false, "netherlandsPost": false, "australianPost": false, "japanesePost": false, "chinesePost": false, "koreanPost": false } }, "biometric": { "type": { "facialFeatures": false, "voice": false, "fingerprint": false, "fingerVein": false, "iris": false, "retina": false, "handGeometry": false, "thermalFace": false, "thermalHand": false, "palmVein": false, "signature": false }, "maxCapture": 0, "templateStorage": 0, "dataFormats": { "isoFid": false, "isoFmd": false, "ansiFid": false, "ansiFmd": false, "qso": false, "wso": false, "reservedRaw1": false, "reservedTemplate1": false, "reservedRaw2": See biometric/dataFormats/reservedRaw1, "reservedTemplate2": See biometric/dataFormats/reservedTemplate1, "reservedRaw3": See biometric/dataFormats/reservedRaw1, "reservedTemplate3": See biometric/dataFormats/reservedTemplate1 }, "encryptionAlgorithms": { "ecb": false, "cbc": false, "cfb": false, "rsa": false }, "storage": { "secure": false, "clear": false }, "persistenceModes": { "persist": false, "clear": false }, "matchSupported": "storedMatch", "scanModes": { "scan": false, "match": false }, "compareModes": { "verify": false, "identity": false }, "clearData": { "scannedData": false, "importedData": false, "setMatchedData": false } }, "camera": { "cameras": { "room": false, "person": false, "exitSlot": false, "cameraExit02": false }, "maxPictures": 0, "camData": { "autoAdd": false, "manAdd": false }, "maxDataLength": 0, "cameraDetails": { "room": { "mediaType": { "picture": true }, "maxPixelSize": { "width": 1000, "height": 500 } }, "person": See camera/cameraDetails/room properties "exitSlot": See camera/cameraDetails/room properties "cameraExit02": { "mediaType": See camera/cameraDetails/room/mediaType properties "maxPixelSize": See camera/cameraDetails/room/maxPixelSize properties } } }, "german": { "hsmVendor": "HSM Vendor" }, "lights": { "individualFlashRates": true, "lights": { "cardReader": { "right": { "flashRate": { "off": false, "slow": false, "medium": false, "quick": false, "continuous": false }, "color": { "red": false, "green": false, "yellow": false, "blue": false, "cyan": false, "magenta": false, "white": false }, "direction": { "entry": false, "exit": false } }, "top": See lights/lights/cardReader/right properties }, "pinPad": See lights/lights/cardReader properties "notesDispenser": See lights/lights/cardReader properties "coinDispenser": See lights/lights/cardReader properties "receiptPrinter": See lights/lights/cardReader properties "passbookPrinter": See lights/lights/cardReader properties "envelopeDepository": See lights/lights/cardReader properties "checkUnit": See lights/lights/cardReader properties "billAcceptor": See lights/lights/cardReader properties "envelopeDispenser": See lights/lights/cardReader properties "documentPrinter": See lights/lights/cardReader properties "coinAcceptor": See lights/lights/cardReader properties "scanner": See lights/lights/cardReader properties "contactless": See lights/lights/cardReader properties "cardReader2": See lights/lights/cardReader properties "notesDispenser2": See lights/lights/cardReader properties "billAcceptor2": See lights/lights/cardReader properties "statusGood": See lights/lights/cardReader properties "statusWarning": See lights/lights/cardReader properties "statusBad": See lights/lights/cardReader properties "statusSupervisor": See lights/lights/cardReader properties "statusInService": See lights/lights/cardReader properties "fasciaLight": See lights/lights/cardReader properties "vendorSpecificLight": See lights/lights/cardReader properties } }, "banknoteNeutralization": { "mode": "autonomous", "gasSensor": false, "lightSensor": false, "seismicSensor": false, "safeIntrusionDetection": false, "externalDryContactStatusBox": false, "realTimeClock": false, "physicalStorageUnitsAccessControl": false, "customInputs": { "disableGas": { "activeInput": true }, "oemDisableLight": See banknoteNeutralization/customInputs/disableGas properties } }, "auxiliaries": { "operatorSwitch": { "run": false, "maintenance": false, "supervisor": false }, "tamperSensor": false, "internalTamperSensor": false, "seismicSensor": false, "heatSensor": false, "proximitySensor": false, "ambientLightSensor": false, "enhancedAudioSensor": { "manual": false, "auto": false, "semiAuto": false, "bidirectional": false }, "bootSwitchSensor": false, "consumerDisplaySensor": false, "operatorCallButtonSensor": false, "handsetSensor": { "manual": false, "auto": false, "semiAuto": false, "microphone": false }, "headsetMicrophoneSensor": { "manual": false, "auto": false, "semiAuto": false }, "fasciaMicrophoneSensor": false, "cabinetDoor": { "closed": false, "open": false, "locked": false, "bolted": false, "tampered": false }, "safeDoor": See auxiliaries/cabinetDoor properties "vandalShield": { "closed": false, "open": false, "locked": false, "service": false, "keyboard": false, "tampered": false }, "frontCabinet": See auxiliaries/cabinetDoor properties "rearCabinet": See auxiliaries/cabinetDoor properties "leftCabinet": See auxiliaries/cabinetDoor properties "rightCabinet": See auxiliaries/cabinetDoor properties "openCloseIndicator": false, "audio": false, "heating": false, "consumerDisplayBacklight": false, "signageDisplay": false, "volume": 1, "ups": { "low": false, "engaged": false, "powering": false, "recovered": false }, "audibleAlarm": false, "enhancedAudioControl": { "headsetDetection": false, "modeControllable": false }, "enhancedMicrophoneControl": { "headsetDetection": false, "modeControllable": false }, "microphoneVolume": 1, "autoStartupMode": { "specific": false, "daily": false, "weekly": false } }, "deposit": { "type": { "envelope": true, "bag": true }, "depTransport": true, "printer": { "toner": true, "printOnRetract": true, "maxNumChars": 32, "unicodeSupport": true }, "shutter": true, "retractEnvelope": "container" }, "vendorApplication": { "supportedAccessLevels": { "basic": false, "intermediate": false, "full": false } }, "powerManagement": { "powerSaveControl": false, "batteryRechargeable": true } }
Properties

common

Capability information common to all XFS4IoT services.

Type: object
Required

common/serviceVersion

Specifies the service version.

Type: string
Required

common/deviceInformation

Array of deviceInformation structures. If the service uses more than one device there will be one array item for each device.

Type: array (object)
Required

common/deviceInformation/modelName

Specifies the device model name. The property is null if the device model name is unknown.

Type: string, null
Default: null

common/deviceInformation/serialNumber

Specifies the unique serial number of the device. The property is null if the serial number is unknown.

Type: string, null
Default: null

common/deviceInformation/revisionNumber

Specifies the device revision number. The property is null if the device revision number is unknown.

Type: string, null
Default: null

common/deviceInformation/modelDescription

Contains a description of the device. The property is null if the model description is unknown.

Type: string, null
Default: null

common/deviceInformation/firmware

Array of firmware structures specifying the names and version numbers of the firmware that is present. Single or multiple firmware versions can be reported. If the firmware versions are not reported, then this property is null.

Type: array (object), null
Default: null

common/deviceInformation/firmware/firmwareName

Specifies the firmware name. The property is null if the firmware name is unknown.

Type: string, null
Default: null

common/deviceInformation/firmware/firmwareVersion

Specifies the firmware version. The property is null if the firmware version is unknown.

Type: string, null
Default: null

common/deviceInformation/firmware/hardwareRevision

Specifies the hardware revision. The property is null if the hardware revision is unknown.

Type: string, null
Default: null

common/deviceInformation/software

Array of software structures specifying the names and version numbers of the software components that are present. Single or multiple software versions can be reported. If the software versions are not reported, then this property is null.

Type: array (object), null
Default: null

common/deviceInformation/software/softwareName

Specifies the software name. The property is null if the software name is unknown.

Type: string, null
Default: null

common/deviceInformation/software/softwareVersion

Specifies the software version. The property is null if the software version is unknown.

Type: string, null
Default: null

common/powerSaveControl

⚠️ This property is deprecated.

Specifies whether power saving control is available.

Type: boolean
Default: false

common/antiFraudModule

Specifies whether the anti-fraud module is available.

Type: boolean
Default: false

common/endToEndSecurity

If present then end-to-end security is supported. The sub-properties detail exactly how it is supported and what level of support is enabled. Also see common.StatusProperties.endToEndSecurity for the current status of end-to-end security, such as if it is being enforced, or if configuration is required.

If this is null then end-to-end security is not supported by this service.

Type: object, null
Default: null

common/endToEndSecurity/required

Specifies the level of support for end-to-end security

  • ifConfigured - The device is capable of supporting E2E security, but it will not be enforced if not configured, for example because the required keys are not loaded.
  • always - E2E security is supported and enforced at all times. Failure to supply the required security details will lead to errors. If E2E security is not correctly configured, for example because the required keys are not loaded, all secured commands will fail with an error.

Type: string
Required

common/endToEndSecurity/hardwareSecurityElement

Specifies if this device has a Hardware Security Element (HSE) which validates the security token. If this property is false it means that validation is performed in software.

Type: boolean
Required

common/endToEndSecurity/responseSecurityEnabled

Specifies if this device will return a security token as part of the response data to commands that support end-to-end security, for example, to validate the result of a dispense operation. This property is null in Common.Status if the device is incapable of returning a response token, otherwise one of the following values:

  • ifConfigured - The device is capable of supporting E2E security if correctly configured. If E2E security has not been correctly configured, for example because the required keys are not loaded, commands will complete without a security token.
  • always - A security token will be included with command responses. If E2E security is not correctly configured, for example because the required keys are not loaded, the command will complete with an error.

Type: string, null
Default: null

common/endToEndSecurity/commands

Array of commands which require an E2E token to authorize. These commands will fail if called without a valid token.

The commands that can be listed here depend on the XFS4IoT standard, but it's possible that the standard will change over time, so for maximum compatibility an application should check this property before calling a command.

Note that this only includes commands that require a token. Commands that take a nonce and return a token will not be listed here. Those commands can be called without a nonce and will continue to operate in a compatible way.

Type: array (string)
Pattern: ^[A-Za-z][A-Za-z0-9]*\.[A-Za-z][A-Za-z0-9]*$
Required

common/endToEndSecurity/commandNonceTimeout

If this device supports end-to-end security and can return a command nonce with the command Common.GetCommandNonce, and the device automatically clears the command nonce after a fixed length of time, this property will report the number of seconds between returning the command nonce and clearing it.

The value is given in seconds but it should not be assumed that the timeout will be accurate to the nearest second. The nonce may also become invalid before the timeout, for example because of a power failure.

The device may impose a timeout to reduce the chance of an attacker re-using a nonce value or a token. This timeout will be long enough to support normal operations such as dispense and present including creating the required token on the host and passing it to the device. For example, a command nonce might time out after one hour (that is, 3600 seconds).

In all other cases, commandNonceTimeout will have a value of zero. Any command nonce will never timeout. It may still become invalid, for example because of a power failure or when explicitly cleared using the Common.ClearCommandNonce command.

Type: integer
Minimum: 0
Required

common/persistentDataStore

Specifies the capabilities of the persistent data store supported by the service. The persistent data store is used to store client data and assets such as forms and fonts. It does not include storage space required by the service to operate, e.g., configuration data.

Clients should use this, in conjunction with the Common.PersistentDataStoreStatus to determine how to make best use of the available space, e.g., a client may need to delete a form before it can store a new one.

This property is null if persistent data storage is not supported.

Type: object, null
Default: null

common/persistentDataStore/capacity

Specifies the total number of Kilobytes that can be stored.

Clients should use this, in conjunction with the remaining status to determine how to make best use of the available space, for example, a client may elect to store all data where the service reports ample capacity or dynamically set and delete partial data when the available space is small.

If the service effectively has no practical persistent storage limit, for example when executing on a general-purpose operating system with a large drive, the service may report a capacity value less than the drive size representing the persistent data size it can handle while remaining performant.

Type: integer
Minimum: 1
Required

cardReader

Capability information for XFS4IoT services implementing the CardReader interface. This will be null if the CardReader interface is not supported.

Type: object, null
Default: null

cardReader/type

Specifies the type of the ID card unit as one of the following:

  • motor - The ID card unit is a motor driven card unit.
  • swipe - The ID card unit is a swipe (pull-through) card unit.
  • dip - The ID card unit is a dip card unit. This dip type is not capable of latching cards entered.
  • latchedDip - The ID card unit is a dip card unit that supports chip communication. The device, depending on configuration, may latch the card to prevent removal while communicating with the chip. The CardReader.Move command must be used to ensure the card is accessible to the cardholder.
  • contactless - The ID card unit is a contactless card unit, i.e. no insertion of the card is required.
  • intelligentContactless - The ID card unit is an intelligent contactless card unit, i.e. no insertion of the card is required and the card unit has built-in EMV or smart card application functionality that adheres to the EMVCo Contactless Specifications [Ref. cardreader-3] or individual payment system's specifications. The ID card unit is capable of performing both magnetic stripe emulation and EMV-like transactions.
  • permanent - The ID card unit is dedicated to a permanently housed chip card (no user interaction is available with this type of card).

Type: string
Required

cardReader/readTracks

Specifies the tracks that can be read by the card reader. May be null if not applicable.

Type: object, null
Default: null

cardReader/readTracks/track1

The card reader can access track 1.

Type: boolean
Default: false

cardReader/readTracks/track2

The card reader can access track 2.

Type: boolean
Default: false

cardReader/readTracks/track3

The card reader can access track 3.

Type: boolean
Default: false

cardReader/readTracks/watermark

The card reader can access the Swedish watermark track.

Type: boolean
Default: false

cardReader/readTracks/frontTrack1

The card reader can access front track 1.

Type: boolean
Default: false

cardReader/readTracks/frontImage

The card reader can read the front image of the card.

Type: boolean
Default: false

cardReader/readTracks/backImage

The card reader can read the back image of the card.

Type: boolean
Default: false

cardReader/readTracks/track1JIS

The card reader can access JIS I track 1.

Type: boolean
Default: false

cardReader/readTracks/track3JIS

The card reader can access JIS I track 3.

Type: boolean
Default: false

cardReader/readTracks/ddi

The card reader can provide dynamic digital identification of the magnetic strip.

Type: boolean
Default: false

cardReader/writeTracks

Specifies the tracks that can be written by the card reader. May be null if no tracks can be written.

Type: object, null
Default: null

cardReader/writeTracks/track1

The card reader can write on track 1.

Type: boolean
Default: false

cardReader/writeTracks/track2

The card reader can write on track 2.

Type: boolean
Default: false

cardReader/writeTracks/track3

The card reader can write on track 3.

Type: boolean
Default: false

cardReader/writeTracks/frontTrack1

The card reader can write on front track 1.

Type: boolean
Default: false

cardReader/writeTracks/track1JIS

The card reader can write on JIS I track 1.

Type: boolean
Default: false

cardReader/writeTracks/track3JIS

The card reader can write on JIS I track 3.

Type: boolean
Default: false

cardReader/chipProtocols

Specifies the chip card protocols that are supported by the card reader. May be null if none are supported.

Type: object, null
Default: null

cardReader/chipProtocols/chipT0

The card reader can handle the T=0 protocol.

Type: boolean
Default: false

cardReader/chipProtocols/chipT1

The card reader can handle the T=1 protocol.

Type: boolean
Default: false

cardReader/chipProtocols/chipProtocolNotRequired

The carder is capable of communicating with the chip without requiring the application to specify any protocol.

Type: boolean
Default: false

cardReader/chipProtocols/chipTypeAPart3

The card reader can handle the ISO 14443 (Part3) Type A contactless chip card protocol.

Type: boolean
Default: false

cardReader/chipProtocols/chipTypeAPart4

The card reader can handle the ISO 14443 (Part4) Type A contactless chip card protocol.

Type: boolean
Default: false

cardReader/chipProtocols/chipTypeB

The card reader can handle the ISO 14443 Type B contactless chip card protocol.

Type: boolean
Default: false

cardReader/chipProtocols/chipTypeNFC

The card reader can handle the ISO 18092 (106/212/424kbps) contactless chip card protocol.

Type: boolean
Default: false

cardReader/securityType

Specifies the type of security module as one of the following or null if the device has no security module.

  • mm - The security module is a MMBox.
  • cim86 - The security module is a CIM86.

Type: string, null
Default: null

cardReader/powerOnOption

Specifies the power-on (or off) capabilities of the device hardware as one of the following options (applicable only to motor driven ID card units). May be null if the device does not support power on (or off) options.

  • exit - The card will be moved to the exit position.
  • retain - The card will be moved to a retain storage unit.
  • exitThenRetain - The card will be moved to the exit position for a finite time, then if not taken, the card will be moved to a retain storage unit. The time for which the card remains at the exit position is vendor dependent.
  • transport - The card will be moved to the transport position.

If multiple retain storage units are present, the storage unit to which the card is retained is vendor specific.

Type: string, null
Default: null

cardReader/powerOffOption

Specifies the power-off capabilities of the device hardware. See powerOnOption.

Type: string, null
Default: null

cardReader/fluxSensorProgrammable

Specifies whether the Flux Sensor on the card unit is programmable.

Type: boolean
Default: false

cardReader/readWriteAccessFromExit

Specifies whether a card may be read or written after having been moved to the exit position with a CardReader.Move command. The card will be moved back into the card reader.

Type: boolean
Default: false

cardReader/writeMode

The write capabilities, with respect to whether the device can write low coercivity (loco) and/or high coercivity (hico) magnetic stripes. May be null if not applicable.

Type: object, null
Default: null

cardReader/writeMode/loco

Supports writing of loco magnetic stripes.

Type: boolean
Default: false

cardReader/writeMode/hico

Supports writing of hico magnetic stripes.

Type: boolean
Default: false

cardReader/writeMode/auto

The service is capable of automatically determining whether loco or hico magnetic stripes should be written.

Type: boolean
Default: false

cardReader/chipPower

The chip power management capabilities (in relation to the user or permanent chip controlled by the service. May be null if not applicable.

Type: object, null
Default: null

cardReader/chipPower/cold

The card reader can power on the chip and reset it (Cold Reset).

Type: boolean
Default: false

cardReader/chipPower/warm

The card reader can reset the chip (Warm Reset).

Type: boolean
Default: false

cardReader/chipPower/off

The card reader can power off the chip.

Type: boolean
Default: false

cardReader/memoryChipProtocols

The memory card protocols that are supported. May be null if not applicable.

Type: object, null
Default: null

cardReader/memoryChipProtocols/siemens4442

The device supports the Siemens 4442 Card Protocol (also supported by the Gemplus GPM2K card).

Type: boolean
Default: false

cardReader/memoryChipProtocols/gpm896

The device supports the Gemplus GPM 896 Card Protocol.

Type: boolean
Default: false

cardReader/positions

Specifies the target positions that are supported for the CardReader.Move command. This is independent of the storage units. May be null if not applicable.

Type: object, null
Default: null

cardReader/positions/exit

The device can move a card to the exit position. In this position, the card is accessible to the user.

Type: boolean
Default: false

cardReader/positions/transport

The device can move a card to the transport. In this position, the card is not accessible to the user. A service which supports this position must also support the exit position.

Type: boolean
Default: false

cardReader/cardTakenSensor

Specifies whether or not the card reader has the ability to detect when a card is taken from the exit slot by a user. If true, a CardReader.MediaRemovedEvent will be sent when the card is removed.

Type: boolean
Default: false

cashAcceptor

Capability information for XFS4IoT services implementing the CashAcceptor interface. This will be null if the CashAcceptor interface is not supported.

Type: object, null
Default: null

cashAcceptor/type

Supplies the type of CashAcceptor. The following values are possible:

  • tellerBill - The CashAcceptor is a Teller Bill Acceptor.
  • selfServiceBill - The CashAcceptor is a Self-Service Bill Acceptor.
  • tellerCoin - The CashAcceptor is a Teller Coin Acceptor.
  • selfServiceCoin - The CashAcceptor is a Self-Service Coin Acceptor.

Type: string
Required

cashAcceptor/maxCashInItems

Supplies the maximum number of items that can be accepted in a single CashAcceptor.CashIn command. This value reflects the hardware limitations of the device and therefore it does not change as part of the CashAcceptor.CashInStart command.

Type: integer
Minimum: 1
Default: 1

cashAcceptor/shutter

If true then the device has a shutter and explicit shutter control through the commands CashManagement.OpenShutter and CashManagement.CloseShutter is supported. The definition of a shutter will depend on the h/w implementation. On some devices where items are automatically detected and accepted then a shutter is simply a latch that is opened and closed, usually under implicit control by the service. On other devices, the term shutter refers to a door, which is opened and closed to allow the customer to place the items onto a tray. If a service cannot detect when items are inserted and there is a shutter on the device, then it must provide explicit application control of the shutter.

Type: boolean
Default: false

cashAcceptor/shutterControl

If true the shutter is controlled implicitly by the service.

If false the shutter must be controlled explicitly by the application using the CashManagement.OpenShutter and CashManagement.CloseShutter commands.

In either case the CashAcceptor.PresentMedia command may be used if the presentControl property is false.

This property is always true if the device has no shutter. This property applies to all shutters and all positions.

Type: boolean
Default: false

cashAcceptor/intermediateStacker

Specifies the number of items the intermediate stacker for cash-in can hold. Will be null if there is no intermediate stacker for cash-in available.

Type: integer, null
Minimum: 0
Default: null

cashAcceptor/itemsTakenSensor

Specifies whether the CashAcceptor can detect when items at the exit position are taken by the user. If true the service generates an accompanying CashManagement.ItemsTakenEvent. If false this event is not generated. This property relates to all output positions.

Type: boolean
Default: false

cashAcceptor/itemsInsertedSensor

Specifies whether the CashAcceptor has the ability to detect when items have been inserted by the user. If true the service generates an accompanying CashManagement.ItemsInsertedEvent. If false this event is not generated. This relates to all input positions and should not be reported as true unless item insertion can be detected.

Type: boolean
Default: false

cashAcceptor/positions

Array of position capabilities for all positions configured in this service.

Type: array (object)
Required

cashAcceptor/positions/position

Supplies the input or output position as one of the following values. If not specified, the default position applies. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

cashAcceptor/positions/usage

Indicates if a position is used to input, reject or rollback.

Type: object
Required

cashAcceptor/positions/usage/in

It is an input position.

Type: boolean
Default: false

cashAcceptor/positions/usage/refuse

It is an output position used to refuse items.

Type: boolean
Default: false

cashAcceptor/positions/usage/rollback

It is an output position used to rollback items.

Type: boolean
Default: false

cashAcceptor/positions/shutterControl

If true the shutter is controlled implicitly by the service.

If false the shutter must be controlled explicitly by the application using the CashManagement.OpenShutter and CashManagement.CloseShutter commands.

In either case the CashAcceptor.PresentMedia command may be used if presentControl is false. The shutterControl property is always true if the described position has no shutter.

Type: boolean
Default: true

cashAcceptor/positions/itemsTakenSensor

Specifies whether or not the described position can detect when items at the exit position are taken by the user.

If true the service generates an accompanying CashManagement.ItemsTakenEvent. If false this event is not generated.

This property relates to output and refused positions.

Type: boolean
Default: false

cashAcceptor/positions/itemsInsertedSensor

Specifies whether the described position has the ability to detect when items have been inserted by the user.

If true the service generates an accompanying CashManagement.ItemsInsertedEvent. If false this event is not generated.

This property relates to all input positions.

Type: boolean
Default: false

cashAcceptor/positions/retractAreas

Specifies the areas to which items may be retracted from this position. This is not reported if the device cannot retract.

Type: object, null
Default: null

cashAcceptor/positions/retractAreas/retract

Items may be retracted to a retract storage unit.

Type: boolean
Default: false

cashAcceptor/positions/retractAreas/reject

Items may be retracted to a reject storage unit.

Type: boolean
Default: false

cashAcceptor/positions/retractAreas/transport

Items may be retracted to the transport.

Type: boolean
Default: false

cashAcceptor/positions/retractAreas/stacker

Items may be retracted to the intermediate stacker.

Type: boolean
Default: false

cashAcceptor/positions/retractAreas/billCassettes

⚠️ This property is deprecated.

Items may be retracted to item cassettes, i.e. cash-in and recycle storage units. This property has been deprecated in favor of the property itemCassette.

Type: boolean
Default: false

cashAcceptor/positions/retractAreas/cashIn

Items may be retracted to a cash-in storage unit.

Type: boolean
Default: false

cashAcceptor/positions/retractAreas/itemCassette

Items may be retracted to item cassettes, i.e. cash-in and recycle storage units.

Type: boolean
Default: false

cashAcceptor/positions/presentControl

Specifies how the presenting of media items is controlled.

If true then the CashAcceptor.PresentMedia command is not supported and items are moved to the output position for removal as part of the relevant command, e.g. CashAcceptor.CashIn or CashAcceptor.CashInRollback where there is implicit shutter control.

If false then items returned or rejected can be moved to the output position using the CashAcceptor.PresentMedia command, this includes items returned or rejected as part of a CashAcceptor.CashIn or CashAcceptor.CashInRollback operation. The CashAcceptor.PresentMedia command will open and close the shutter implicitly.

Type: boolean
Default: false

cashAcceptor/positions/preparePresent

Specifies how the presenting of items is controlled.

If false then items to be removed are moved to the output position as part of the relevant command. e.g. CashManagement.OpenShutter, CashAcceptor.PresentMedia or CashAcceptor.CashInRollback.

If true then items are moved to the output position using the CashAcceptor.PreparePresent command.

Type: boolean
Default: false

cashAcceptor/retractAreas

Specifies the area to which items may be retracted. If the device does not have a retract capability this will be null.

Type: object, null
Default: null

cashAcceptor/retractAreas/retract

The items may be retracted to a retract storage unit.

Type: boolean
Default: false

cashAcceptor/retractAreas/transport

The items may be retracted to the transport.

Type: boolean
Default: false

cashAcceptor/retractAreas/stacker

The items may be retracted to the intermediate stacker.

Type: boolean
Default: false

cashAcceptor/retractAreas/reject

The items may be retracted to a reject storage unit.

Type: boolean
Default: false

cashAcceptor/retractAreas/billCassette

⚠️ This property is deprecated.

The items may be retracted to cash-in and recycle storage units. This property has been deprecated in favor of the property itemCassette.

Type: boolean
Default: false

cashAcceptor/retractAreas/cashIn

Items may be retracted to cash-in storage units.

Type: boolean
Default: false

cashAcceptor/retractTransportActions

Specifies the actions which may be performed on items which have been retracted to the transport. If the device does not have the capability to retract items to the transport or move items from the transport this will be null.

Type: object, null
Default: null

cashAcceptor/retractTransportActions/present

The items may be presented.

Type: boolean
Default: false

cashAcceptor/retractTransportActions/retract

The items may be moved to a retract storage unit.

Type: boolean
Default: false

cashAcceptor/retractTransportActions/reject

The items may be moved to a reject storage unit.

Type: boolean
Default: false

cashAcceptor/retractTransportActions/billCassette

⚠️ This property is deprecated.

The items may be moved to the cash-in and recycle storage units. This property has been deprecated in favor of the property itemCassette.

Type: boolean
Default: false

cashAcceptor/retractStackerActions

Specifies the actions which may be performed on items which have been retracted to the stacker. If the device does not have the capability to retract items to the stacker or move items from the stacker this will be null.

Type: object, null
Default: null

cashAcceptor/cashInLimit

Specifies which cash-in limitations are supported for the CashAcceptor.CashInStart command. If the device does not have the capability to limit the amount or the number of items during cash-in operations this property is null.

Type: object, null
Default: null

cashAcceptor/cashInLimit/byTotalItems

The number of successfully processed cash-in items can be limited by specifying the total number of items.

Type: boolean
Default: false

cashAcceptor/cashInLimit/byAmount

The number of successfully processed cash-in items can be limited by specifying the maximum amount of a specific currency.

Type: boolean
Default: false

cashAcceptor/countActions

Specifies the count action supported by the CashAcceptor.CashUnitCount command. If the device does not support counting then this property is null.

Type: object, null
Default: null

cashAcceptor/countActions/individual

The counting of individual storage units is supported.

Type: boolean
Default: false

cashAcceptor/countActions/all

The counting of all storage units is supported.

Type: boolean
Default: false

cashAcceptor/retainAction

If counterfeit, inked or suspect items are supported by the service (see classifications), this specifies whether such items are retained by the device if detected during a cash-in transaction. See acceptor for details of the impact on offering cash-in transactions if unable to retain items due to storage unit status.

This applies regardless of whether their specific note type is configured to not be accepted by CashAcceptor.ConfigureNoteTypes.

This property may be null if none of these note classifications are supported.

Type: object, null
Default: null

cashAcceptor/retainAction/counterfeit

Items classified as counterfeit are retained during a cash-in transaction.

Type: boolean
Default: false

cashAcceptor/retainAction/suspect

Items classified as suspect are retained during a cash-in transaction.

Type: boolean
Default: false

cashAcceptor/retainAction/inked

Items classified as inked are retained during a cash-in transaction.

Type: boolean
Default: false

cashDispenser

Capability information for XFS4IoT services implementing the CashDispenser interface. This will be null if the CashDispenser interface is not supported.

Type: object, null
Default: null

cashDispenser/type

Supplies the type of Dispenser. Following values are possible:

  • tellerBill - The Dispenser is a Teller Bill Dispenser.
  • selfServiceBill - The Dispenser is a Self-Service Bill Dispenser.
  • tellerCoin - The Dispenser is a Teller Coin Dispenser.
  • selfServiceCoin - The Dispenser is a Self-Service Coin Dispenser.

Type: string
Required

cashDispenser/maxDispenseItems

Supplies the maximum number of items that can be dispensed in a single dispense operation.

Type: integer
Minimum: 1
Required

cashDispenser/shutterControl

If true the shutter is controlled implicitly by the service. If false the shutter must be controlled explicitly by the application using the CashManagement.OpenShutter and CashManagement.CloseShutter commands.

This property is always true if the device has no shutter. This property applies to all shutters and all output positions.

Type: boolean
Default: false

cashDispenser/retractAreas

Specifies the area to which items may be retracted. If the device does not have a retract capability this will be null.

Type: object, null
Default: null

cashDispenser/retractAreas/retract

The items may be retracted to a retract storage unit.

Type: boolean
Default: false

cashDispenser/retractAreas/transport

The items may be retracted to the transport.

Type: boolean
Default: false

cashDispenser/retractAreas/stacker

The items may be retracted to the intermediate stacker.

Type: boolean
Default: false

cashDispenser/retractAreas/reject

The items may be retracted to a reject storage unit.

Type: boolean
Default: false

cashDispenser/retractAreas/itemCassette

The items may be retracted to storage units which would be used during a cash-in transaction including recycling storage units.

Type: boolean
Default: false

cashDispenser/retractAreas/cashIn

The items may be retracted to storage units which would be used during a cash-in transaction not including recycling storage units.

Type: boolean
Default: false

cashDispenser/retractTransportActions

Specifies the actions which may be performed on items which have been retracted to the transport. If the device does not have the capability to retract items to the transport or move items from the transport this will be null.

Type: object, null
Default: null

cashDispenser/retractTransportActions/present

The items may be presented.

Type: boolean
Default: false

cashDispenser/retractTransportActions/retract

The items may be moved to a retract storage unit.

Type: boolean
Default: false

cashDispenser/retractTransportActions/reject

The items may be moved to a reject storage unit.

Type: boolean
Default: false

cashDispenser/retractTransportActions/itemCassette

The items may be moved to storage units which would be used during a cash-in transaction including recycling storage units.

Type: boolean
Default: false

cashDispenser/retractTransportActions/cashIn

The items may be moved to storage units which would be used during a cash-in transaction not including recycling storage units.

Type: boolean
Default: false

cashDispenser/retractStackerActions

Specifies the actions which may be performed on items which have been retracted to the stacker. If the device does not have the capability to retract items to the stacker or move items from the stacker this will be null.

Type: object, null
Default: null

cashDispenser/intermediateStacker

Specifies whether the Dispenser supports stacking items to an intermediate position before the items are moved to the exit position.

Type: boolean
Default: false

cashDispenser/itemsTakenSensor

Specifies whether the Dispenser can detect when items at the exit position are taken by the user. This applies to all output positions.

If true the service generates an accompanying CashManagement.ItemsTakenEvent.

If false this event is not generated.

Type: boolean
Default: false

cashDispenser/positions

Specifies the Dispenser output positions which are available.

Type: object
Required

cashDispenser/positions/left

The Dispenser has a left output position.

Type: boolean
Default: false

cashDispenser/positions/right

The Dispenser has a right output position.

Type: boolean
Default: false

cashDispenser/positions/center

The Dispenser has a center output position.

Type: boolean
Default: false

cashDispenser/positions/top

The Dispenser has a top output position.

Type: boolean
Default: false

cashDispenser/positions/bottom

The Dispenser has a bottom output position.

Type: boolean
Default: false

cashDispenser/positions/front

The Dispenser has a front output position.

Type: boolean
Default: false

cashDispenser/positions/rear

The Dispenser has a rear output position.

Type: boolean
Default: false

cashDispenser/moveItems

Specifies the Dispenser move item options which are available. If not applicable, this property is null.

Type: object, null
Default: null

cashDispenser/moveItems/fromCashUnit

The Dispenser can dispense items from the storage units to the intermediate stacker while there are items on the transport.

Type: boolean
Default: false

cashDispenser/moveItems/toCashUnit

The Dispenser can retract items to the storage units while there are items on the intermediate stacker.

Type: boolean
Default: false

cashDispenser/moveItems/toTransport

The Dispenser can retract items to the transport while there are items on the intermediate stacker.

Type: boolean
Default: false

cashDispenser/moveItems/toStacker

The Dispenser can dispense items from the storage units to the intermediate stacker while there are already items on the intermediate stacker that have not been in customer access. Items remaining on the stacker from a previous dispense may first need to be rejected explicitly by the application if they are not to be presented.

Type: boolean
Default: false

cashManagement

Capability information for XFS4IoT services implementing the CashManagement interface. This will be null if the CashManagement interface is not supported.

Type: object, null
Default: null

cashManagement/cashBox

This property is only applicable to teller type devices. It specifies whether or not tellers have been assigned a cash box.

Type: boolean
Default: false

cashManagement/exchangeType

Specifies the type of storage unit exchange operations supported by the device.

Type: object
Required

cashManagement/exchangeType/byHand

The device supports manual replenishment either by filling the storage unit by hand or by replacing the storage unit.

Type: boolean
Default: false

cashManagement/itemInfoTypes

Specifies the types of information that can be retrieved through the CashManagement.GetItemInfo command. This property is null if not supported.

Type: object, null
Default: null

cashManagement/itemInfoTypes/serialNumber

Serial Number of the item.

Type: boolean
Default: false

cashManagement/itemInfoTypes/signature

Signature of the item.

Type: boolean
Default: false

cashManagement/itemInfoTypes/image

Image of the item.

Type: boolean
Default: false

cashManagement/classificationList

Specifies whether the service has the capability to maintain a classification list of serial numbers as well as supporting the associated operations.

Type: boolean
Default: false

cashManagement/classifications

Specifies the classifications supported - see Note Classification.

Type: object
Required

cashManagement/classifications/unrecognized

Items can be classified as unrecognized.

Type: boolean
Default: true

cashManagement/classifications/counterfeit

Items can be recognized as counterfeit.

Type: boolean
Default: false

cashManagement/classifications/suspect

Items can be suspected as counterfeit.

Type: boolean
Default: false

cashManagement/classifications/inked

Ink-stained items are recognized.

Type: boolean
Default: false

cashManagement/classifications/fit

Genuine items fit for recycling are recognized.

Type: boolean
Default: true

cashManagement/classifications/unfit

Genuine items not fit for recycling are recognized.

Type: boolean
Default: false

check

Capability information for XFS4IoT services implementing the Check interface. This will be null if the Check interface is not supported.

Type: object, null
Default: null

check/type

Specifies the type of the physical device. The following values are possible:

  • singleMediaInput - Device accepts a single media item from the customer.
  • bunchMediaInput - Device accepts a bunch of media items from the customer.

Type: string
Required

check/maxMediaOnStacker

Specifies the maximum number of media items that the stacker can hold (zero if the device does not have a stacker). If the device has a bunch media input capability and the stacker is not present or has a capacity of one then the application must process each item inserted sequentially as described in section Multi-Feed Devices without a Stacker.

Type: integer
Minimum: 0
Default: 0

check/printSize

Specifies the maximum print capabilities on the back side of the check, null if device has no back printing capabilities. If the media item is inserted in one of the orientations specified in insertOrientation, the device will print on the back side of the media. If the media item is inserted in a different orientation to those specified in insertOrientation then printing may occur on the front side, upside down or both.

Type: object, null
Default: null

check/printSize/rows

Specifies the maximum number of rows of text that the device can print on the media item. This value is 1 for single line printers.

Type: integer
Minimum: 0
Default: 0

check/printSize/cols

Specifies the maximum number of characters that can be printed on a row.

Type: integer
Minimum: 0
Default: 0

check/stamp

Specifies whether the device has stamping capabilities. If the media item is inserted in one of the orientations specified in insertOrientation, the device will stamp on the front side of the media. If the media item is inserted in a different orientation to those specified in insertOrientation then stamping may occur on the back, upside down or both.

Type: boolean
Default: false

check/rescan

Specifies whether the device has the capability to either physically rescan media items after they have been inserted into the device or is able to generate any image supported by the device during the ReadImage command (regardless of the images requested during the MediaIn command). If true then the item can be rescanned or the images can be generated using the parameters passed in the ReadImage command. If false then all images required (various color, file format, bit depth) must be gathered during execution of the MediaIn command.

Type: boolean
Default: false

check/presentControl

Specifies how the presenting of media items is controlled during the MediaInEnd and MediaInRollback commands. If true the presenting is controlled implicitly by the service. If false the presenting must be controlled explicitly by the application using the PresentMedia command. This applies to all positions.

Type: boolean
Required

check/applicationRefuse

Specifies if the Device supports the MediaIn command mode where the application decides to accept or refuse each media item that has successfully been accepted by the device. If true then the service supports this mode. If false then the service does not support this mode (or the device does not have a stacker).

Type: boolean
Default: false

check/retractLocation

Specifies the locations to which the media can be retracted using the Check.RetractMedia command, as a combination of these properties. May be null if not supported:

Type: object, null
MinProperties: 1
Default: null

check/retractLocation/storage

Retract the media to a storage unit.

Type: boolean
Default: false

check/retractLocation/transport

Retract the media to the transport.

Type: boolean
Default: false

check/retractLocation/stacker

Retract the media to the stacker.

Type: boolean
Default: false

check/retractLocation/rebuncher

Retract the media to the re-buncher.

Type: boolean
Default: false

check/resetControl

Specifies the manner in which the media can be handled on Reset, as a combination of these properties. May be null if the command is not supported:

Type: object, null
MinProperties: 1
Default: null

check/resetControl/eject

Eject the media.

Type: boolean
Default: false

check/resetControl/storageUnit

Retract the media to retract storage unit.

Type: boolean
Default: false

check/imageType

Specifies the image format supported by this device, as a combination of these properties. May be null if not supported.

Type: object, null
MinProperties: 1
Default: null

check/imageType/tif

The device can return scanned images in TIFF 6.0 format.

Type: boolean
Default: false

check/imageType/wmf

The device can return scanned images in WMF (Windows Metafile) format.

Type: boolean
Default: false

check/imageType/bmp

The device can return scanned images in windows BMP format.

Type: boolean
Default: false

check/imageType/jpg

The device can return scanned images in JPG format.

Type: boolean
Default: false

check/frontImage

Specifies the capabilities of the front image supported by this device. May be null if front images are not supported.

Type: object, null
Default: null

check/frontImage/colorFormat

Specifies the image color formats supported by this device, as a combination of these properties:

Type: object
Required

check/frontImage/colorFormat/binary

The device can return scanned images in binary.

Type: boolean
Default: false

check/frontImage/colorFormat/grayScale

The device can return scanned images in gray scale.

Type: boolean
Default: false

check/frontImage/colorFormat/full

The device can return scanned images in full color.

Type: boolean
Default: false

check/frontImage/scanColor

Specifies the image scan colors supported by this device and individually controllable by the application. Scan colors are used to enhance the scanning results on colored scan media. This value is specified as a combination of these properties:

Type: object
Required

check/frontImage/scanColor/red

The device can return images scanned with red light.

Type: boolean
Default: false

check/frontImage/scanColor/green

The device can return images scanned with green light.

Type: boolean
Default: false

check/frontImage/scanColor/blue

The device can return images scanned with blue light.

Type: boolean
Default: false

check/frontImage/scanColor/yellow

The device can return images scanned with yellow light.

Type: boolean
Default: false

check/frontImage/scanColor/white

The device can return images scanned with white light.

Type: boolean
Default: false

check/frontImage/scanColor/infraRed

The device can return images scanned with infrared light.

Type: boolean
Default: false

check/frontImage/scanColor/ultraViolet

The device can return images scanned with ultraviolet light.

Type: boolean
Default: false

check/frontImage/defaultScanColor

Specifies the default image color format used by this device (i.e. when not explicitly set). The following values are possible:

  • red - The default color is red light.
  • green - The default color is green light.
  • blue - The default color is blue light.
  • yellow - The default color is yellow light.
  • white - The default color is white light.
  • infraRed - The default color is infrared light.
  • ultraViolet - The default color is ultraviolet light.

Type: string
Required

check/backImage

Specifies the capabilities of the back image supported by this device. May be null if back images are not supported.

Type: object, null
Default: null

check/codelineFormat

Specifies the code line formats supported by this device, as a combination of these properties. May be null if not supported.

Type: object, null
MinProperties: 1
Default: null

check/codelineFormat/cmc7

The device can read MICR CMC7 [Ref. check-4] code lines.

Type: boolean
Default: false

check/codelineFormat/e13b

The device can read MICR E13B [Ref. check-3] code lines.

Type: boolean
Default: false

check/codelineFormat/ocr

The device can read code lines using Optical Character Recognition. The default or pre-configured OCR font will be used.

Type: boolean
Default: false

check/codelineFormat/ocra

The device can read code lines using Optical Character Recognition font A. The ASCII codes will conform to [Ref. check-1].

Type: boolean
Default: false

check/codelineFormat/ocrb

The device can read code lines using Optical Character Recognition font B. The ASCII codes will conform to [Ref. check-2].

Type: boolean
Default: false

check/dataSource

Specifies the reading/imaging capabilities supported by this device, as a combination of these properties:

Type: object
MinProperties: 1
Required

check/dataSource/imageFront

The device can scan the front image of the document.

Type: boolean
Default: false

check/dataSource/imageBack

The device can scan the back image of the document.

Type: boolean
Default: false

check/dataSource/codeLine

The device can recognize the code line.

Type: boolean
Default: false

check/insertOrientation

Specifies the media item insertion orientations supported by the Device such that hardware features such as MICR reading, endorsing and stamping will be aligned with the correct edges and sides of the media item. Devices may still return code lines and images even if one of these orientations is not used during media insertion. If the media items are inserted in one of the orientations defined in this capability then any printing or stamping will be on the correct side of the media item. If the media is inserted in a different orientation then any printing or stamping may be on the wrong side, upside down or both. This value is reported based on the customer's perspective. This value is a combination of these properties:

Type: object
MinProperties: 1
Required

check/insertOrientation/codeLineRight

The media item should be inserted short edge first with the code line to the right.

Type: boolean
Default: false

check/insertOrientation/codeLineLeft

The media item should be inserted short edge first with the code line to the left.

Type: boolean
Default: false

check/insertOrientation/codeLineBottom

The media item should be inserted long edge first with the code line to the bottom.

Type: boolean
Default: false

check/insertOrientation/codeLineTop

The media item should be inserted long edge first with the code line to the top.

Type: boolean
Default: false

check/insertOrientation/faceUp

The media item should be inserted with the front of the media item facing up.

Type: boolean
Default: false

check/insertOrientation/faceDown

The media item should be inserted with the front of the media item facing down.

Type: boolean
Default: false

check/positions

Specifies the capabilities of up to three logical position types.

Type: object
MinProperties: 1
Required

check/positions/input

Structure that specifies the capabilities of the input position.

Type: object, null
Default: null

check/positions/input/itemsTakenSensor

Specifies whether or not the described position can detect when items at the exit position are taken by the user. If true the service generates an accompanying MediaTakenEvent. If false this event is not generated. This relates to output and refused positions, so will be null for input positions.

Type: boolean, null
Default: null

check/positions/input/itemsInsertedSensor

Specifies whether the described position has the ability to detect when items have been inserted by the user. If true the service generates an accompanying MediaInsertedEvent. If false this event is not generated. This relates to all input positions, so will always be null for input positions.

Type: boolean, null
Default: null

check/positions/input/retractAreas

Specifies the areas to which items may be retracted from this position. May be null if items can not be retracted from this position.

Type: object, null
MinProperties: 1
Default: null

check/positions/input/retractAreas/retractBin

Can retract items in this position to a retract storage unit.

Type: boolean
Default: false

check/positions/input/retractAreas/transport

Can retract items in this position to the transport.

Type: boolean
Default: false

check/positions/input/retractAreas/stacker

Can retract items in this position to the stacker.

Type: boolean
Default: false

check/positions/input/retractAreas/rebuncher

Can retract items in this position to the re-buncher.

Type: boolean
Default: false

check/positions/output

Structure that specifies the capabilities of the output position.

Type: object, null
Default: null

check/positions/refused

Structure that specifies the capabilities of the refused position.

Type: object, null
Default: null

check/imageAfterEndorse

Specifies whether the device can generate an image after text is printed on the media item. If true then the generation of the image can be specified using the SetMediaParameters command. If false, this functionality is not available. This capability applies to media items whose destination is a storage unit; the returnedItemsProcessing capability indicates whether this functionality is supported for media items that are to be returned to the customer.

Type: boolean
Default: false

check/returnedItemsProcessing

Specifies the processing that this device supports for media items that are identified to be returned to the customer using the SetMediaParameters command, as a combination of these properties or null if none apply:

Type: object, null
MinProperties: 1
Default: null

check/returnedItemsProcessing/endorse

This device can endorse a media item to be returned to the customer; the endorsement is specified using the SetMediaParameters command.

Type: boolean
Default: false

check/returnedItemsProcessing/endorseImage

This device can generate an image of a media item to be returned to the customer after it has been endorsed; the request for the image is specified using the SetMediaParameters command.

Type: boolean
Default: false

check/printSizeFront

Reports the printing capabilities of the device on the front side of the check, null if device has no front printing capabilities. If the media item is inserted in one of the orientations specified in insertOrientation, the device will print on the front side of the media. If the media item is inserted in a different orientation to those specified in insertOrientation then printing may occur on the back side, upside down or both.

Type: object, null
Default: null

mixedMedia

Capability information for XFS4IoT services implementing the MixedMedia interface. This will be null if the MixedMedia interface is not supported.

Type: object, null
Default: null

mixedMedia/modes

Specifies the transaction modes supported by the service.

Type: object
MinProperties: 1
Required

mixedMedia/modes/cashAccept

Specifies whether transactions can accept cash. This property may be null if no change is required, or if its state has not changed in Common.StatusChangedEvent.

Type: boolean, null
Default: null

mixedMedia/modes/checkAccept

Specifies whether transactions can accept checks. This property may be null if no change is required, or if its state has not changed in Common.StatusChangedEvent.

Type: boolean, null
Default: null

mixedMedia/dynamic

Specifies whether the mode can be modified during a transaction.

Type: boolean
Default: false

pinPad

Capability information for XFS4IoT services implementing the PinPad interface. This will be null if the PinPad interface is not supported.

Type: object, null
Default: null

pinPad/pinFormats

Supported PIN format.

Type: object
MinProperties: 1
Required

pinPad/pinFormats/ibm3624

PIN left justified, filled with padding characters, PIN length 4-16 digits. The padding character is a hexadecimal digit in the range 0x00 to 0x0F.

Type: boolean
Default: false

pinPad/pinFormats/ansi

PIN is preceded by 0x00 and the length of the PIN (0x04 to 0x0C), filled with padding character 0x0F to the right, PIN length 4-12 digits, XORed with PAN (Primary Account Number, minimum 12 digits without check number).

Type: boolean
Default: false

pinPad/pinFormats/iso0

PIN is preceded by 0x00 and the length of the PIN (0x04 to 0x0C), filled with padding character 0x0F to the right, PIN length 4-12 digits, XORed with PAN (Primary Account Number without check number, no minimum length specified, missing digits are filled with 0x00).

Type: boolean
Default: false

pinPad/pinFormats/iso1

PIN is preceded by 0x01 and the length of the PIN (0x04 to 0x0C), padding characters are taken from a transaction field (10 digits).

Type: boolean
Default: false

pinPad/pinFormats/eci2

PIN left justified, filled with padding characters, PIN only 4 digits.

Type: boolean
Default: false

pinPad/pinFormats/eci3

PIN is preceded by the length (digit), PIN length 4-6 digits, the padding character can range from 0x0 through 0xF".

Type: boolean
Default: false

pinPad/pinFormats/visa

PIN is preceded by the length (digit), PIN length 4-6 digits. If the PIN length is less than six digits the PIN is filled with 0x0 to the length of six, the padding character can range from 0x0 through 0x9 (This format is also referred to as VISA2).

Type: boolean
Default: false

pinPad/pinFormats/diebold

PIN is padded with the padding character and may be not encrypted, single encrypted or double encrypted.

Type: boolean
Default: false

pinPad/pinFormats/dieboldCo

PIN with the length of 4 to 12 digits, each one with a value of 0x0 to 0x9, is preceded by the one-digit coordination number with a value from 0x0 to 0xF, padded with the padding character with a value from 0x0 to 0xF and may be not encrypted, single encrypted or double encrypted.

Type: boolean
Default: false

pinPad/pinFormats/visa3

PIN with the length of 4 to 12 digits, each one with a value of 0x0 to 0x9, is followed by a delimiter with the value of 0xF and then padded by the padding character with a value between 0x0 to 0xF.

Type: boolean
Default: false

pinPad/pinFormats/banksys

PIN is encrypted and formatted according to the Banksys PIN block specifications.

Type: boolean
Default: false

pinPad/pinFormats/emv

The PIN block is constructed as follows: PIN is preceded by 0x02 and the length of the PIN (0x04 to 0x0C), filled with padding character 0x0F to the right, formatted up to 248 bytes of other data as defined within the EMV 4.0 specifications and finally encrypted with an RSA key.

Type: boolean
Default: false

pinPad/pinFormats/iso3

PIN is preceded by 0x03 and the length of the PIN (0x04 to 0x0C), padding characters sequentially or randomly chosen, XORed with digits from PAN.

Type: boolean
Default: false

pinPad/pinFormats/ap

PIN is formatted according to the Italian Bancomat specifications (see [Ref. pinpad-5]). It is known as the Authentication Parameter PIN block and is created with a 5-digit PIN, an 18-digit PAN, and the 8-digit CCS from the track data.

Type: boolean
Default: false

pinPad/pinFormats/iso4

PIN is formatted according to ISO 9564-1: 2017 Format-4 (uses AES Encryption).

Type: boolean
Default: false

pinPad/presentationAlgorithms

Supported presentation algorithms. This property is null if not supported.

Type: object, null
Default: null

pinPad/presentationAlgorithms/presentClear

Algorithm for the presentation of a clear text PIN to a chipcard. Each digit of the clear text PIN is inserted as one nibble (=half byte) into ChipData.

Type: boolean
Default: false

pinPad/display

Specifies the type of the display used in the PIN pad module. This property is null if not supported.

Type: object, null
Default: null

pinPad/display/none

No display unit.

Type: boolean
Default: false

pinPad/display/ledThrough

Lights next to text guide user.

Type: boolean
Default: false

pinPad/display/display

A real display is available (this doesn't apply for self-service).

Type: boolean
Default: false

pinPad/idcConnect

Specifies whether the PIN pad is directly physically connected to the ID card unit. If the value is true, the PIN will be transported securely during the command PinPad.PresentIdc.

Type: boolean
Default: false

pinPad/validationAlgorithms

Specifies the algorithms for PIN validation supported by the service. This property is null if not supported.

Type: object, null
Default: null

pinPad/validationAlgorithms/des

DES algorithm.

Type: boolean
Default: false

pinPad/validationAlgorithms/visa

Visa algorithm.

Type: boolean
Default: false

pinPad/pinCanPersistAfterUse

Specifies whether the device can retain the PIN after a PIN processing command.

Type: boolean
Default: false

pinPad/typeCombined

Specifies whether the keypad used in the secure PIN pad module is integrated within a generic Win32 keyboard. True means the secure PIN keypad is integrated within a generic Win32 keyboard and standard Win32 key events will be generated for any key when there is no active Keyboard.GetData or Keyboard.GetPin command. Note that XFS continues to support defined PIN keys only, and is not extended to support new alphanumeric keys.

Type: boolean
Default: false

pinPad/setPinblockDataRequired

Specifies whether the command PinPad.SetPinblockData must be called before the PIN is entered via Keyboard.GetPin and retrieved via PinPad.GetPinblock.

Type: boolean
Default: false

pinPad/pinBlockAttributes

Attributes supported by the PinPad.GetPinblock command to generate encrypted PIN block.

Type: object, null
Default: null

pinPad/pinBlockAttributes/P0 (example name)

Specifies the key usages supported by the PinPad.PinBlock command. The following values are possible:

  • P0 - PIN Encryption

Type: object
MinProperties: 1
Name Pattern: ^P0$

pinPad/pinBlockAttributes/P0/T (example name)

Specifies the encryption algorithms supported by the PinPad.PinBlock command. The following values are possible:

  • A - AES.
  • D - DEA.
  • R - RSA.
  • T - Triple DEA (also referred to as TDEA).

Type: object
MinProperties: 1
Name Pattern: ^[ADRT]$

pinPad/pinBlockAttributes/P0/T/E (example name)

Specifies the encryption modes supported by the PinPad.PinBlock command. The following value is possible:

  • E - Encrypt

Type: object
Name Pattern: ^E$

pinPad/pinBlockAttributes/P0/T/E/cryptoMethod

Specifies the cryptographic method supported. If the algorithm is 'A', 'D', or 'T', then the following properties can be true:

  • ecb - The ECB encryption method.
  • cbc - The CBC encryption method.
  • cfb - The CFB encryption method.
  • ofb - The OFB encryption method.
  • ctr - The CTR method defined in NIST SP800-38A (See [Ref. pinpad-7]).
  • xts - The XTS method defined in NIST SP800-38E (See [Ref. pinpad-8]).

If the algorithm is 'R', then following properties can be true:

  • rsaesPkcs1V15 - Use the RSAES_PKCS1-v1.5 algorithm.
  • rsaesOaep - Use the RSAES OAEP algorithm.

Type: object
Required

pinPad/pinBlockAttributes/P0/T/E/cryptoMethod/ecb

The ECB encryption method.

Type: boolean
Default: false

pinPad/pinBlockAttributes/P0/T/E/cryptoMethod/cbc

The CBC encryption method.

Type: boolean
Default: false

pinPad/pinBlockAttributes/P0/T/E/cryptoMethod/cfb

The CFB encryption method.

Type: boolean
Default: false

pinPad/pinBlockAttributes/P0/T/E/cryptoMethod/ofb

The OFB encryption method.

Type: boolean
Default: false

pinPad/pinBlockAttributes/P0/T/E/cryptoMethod/ctr

The CTR method defined in NIST SP800-38A (See [Ref. pinpad-7]).

Type: boolean
Default: false

pinPad/pinBlockAttributes/P0/T/E/cryptoMethod/xts

The XTS method defined in NIST SP800-38E (See [Ref. pinpad-8]).

Type: boolean
Default: false

pinPad/pinBlockAttributes/P0/T/E/cryptoMethod/rsaesPkcs1V15

The RSAES_PKCS1-v1.5 algorithm.

Type: boolean
Default: false

pinPad/pinBlockAttributes/P0/T/E/cryptoMethod/rsaesOaep

The RSAES OAEP algorithm.

Type: boolean
Default: false

crypto

Capability information for XFS4IoT services implementing the Crypto interface. This will be null if the Crypto interface is not supported.

Type: object, null
Default: null

crypto/emvHashAlgorithm

Specifies which hash algorithm is supported for the calculation of the HASH. This property is null if not supported.

Type: object, null
Default: null

crypto/emvHashAlgorithm/sha1Digest

The SHA 1 digest algorithm is supported by the Crypto.Digest command.

Type: boolean
Default: false

crypto/emvHashAlgorithm/sha256Digest

The SHA 256 digest algorithm, as defined in ISO/IEC 10118-3:2004 [Ref. crypto-1] and FIPS 180-2 [Ref. crypto-2], is supported by the Crypto.Digest command.

Type: boolean
Default: false

crypto/cryptoAttributes

Attributes supported by the Crypto.CryptoData command to encrypt or decrypt data.

Type: object, null
Default: null

crypto/cryptoAttributes/D0 (example name)

The following key usage is possible:

  • D0 - Symmetric data encryption.
  • D1 - Asymmetric data encryption.

Type: object
MinProperties: 1
Name Pattern: ^D[0-1]$

crypto/cryptoAttributes/D0/D (example name)

Specifies the encryption algorithms supported by the Crypto.CryptoData command. The following values are possible:

  • A - AES.
  • D - DEA.
  • R - RSA.
  • T - Triple DEA (also referred to as TDEA).

Type: object
MinProperties: 1
Name Pattern: ^[ADRT]$

crypto/cryptoAttributes/D0/D/D (example name)

Specifies the Mode of Use supported by the Crypto.CryptoData command. The following values are possible:

  • D - Decrypt
  • E - Encrypt

Type: object
Name Pattern: ^[DE]$

crypto/cryptoAttributes/D0/D/D/cryptoMethod

Specifies the cryptographic method supported by the Crypto.CryptoData command. If the key usage is symmetric encryption methods 'D0'), then the following properties can be true.

  • ecb - The ECB encryption method.
  • cbc - The CBC encryption method.
  • cfb - The CFB encryption method.
  • ofb - The OFB encryption method.
  • ctr - The CTR method defined in NIST SP800-38A (See [Ref. crypto-4])
  • xts - The XTS method defined in NIST SP800-38E (See [Ref. crypto-5])

If the key usage is asymmetric encryption methods 'D1', then the following properties can be true.

  • rsaesPkcs1V15 - RSAES_PKCS1-v1.5 algorithm.
  • rsaesOaep - The RSAES OAEP algorithm.

Type: object
Required

crypto/cryptoAttributes/D0/D/D/cryptoMethod/ecb

The ECB encryption method.

Type: boolean
Default: false

crypto/cryptoAttributes/D0/D/D/cryptoMethod/cbc

The CBC encryption method.

Type: boolean
Default: false

crypto/cryptoAttributes/D0/D/D/cryptoMethod/cfb

The CFB encryption method.

Type: boolean
Default: false

crypto/cryptoAttributes/D0/D/D/cryptoMethod/ofb

The OFB encryption method.

Type: boolean
Default: false

crypto/cryptoAttributes/D0/D/D/cryptoMethod/ctr

The CTR method defined in NIST SP800-38A (See [Ref. crypto-4])

Type: boolean
Default: false

crypto/cryptoAttributes/D0/D/D/cryptoMethod/xts

The XTS method defined in NIST SP800-38E. (See [Ref. crypto-5])

Type: boolean
Default: false

crypto/cryptoAttributes/D0/D/D/cryptoMethod/rsaesPkcs1V15

The RSAES_PKCS1-v1.5 algorithm.

Type: boolean
Default: false

crypto/cryptoAttributes/D0/D/D/cryptoMethod/rsaesOaep

The RSAES OAEP algorithm.

Type: boolean
Default: false

crypto/authenticationAttributes

Attributes supported by the Crypto.GenerateAuthentication command to generate authentication data.

Type: object, null
Default: null

crypto/authenticationAttributes/M0 (example name)

The following key usages are possible:

  • M0 - ISO 16609 MAC Algorithm 1 (using TDEA).
  • M1- ISO 9797-1 MAC Algorithm 1.
  • M2 - ISO 9797-1 MAC Algorithm 2.
  • M3 - ISO 9797-1 MAC Algorithm 3.
  • M4 - ISO 9797-1 MAC Algorithm 4.
  • M5 - ISO 9797-1:1999 MAC Algorithm 5.
  • M6 - 9797-1:2011 MAC Algorithm 5/CMAC.
  • M7 - HMAC.
  • M8 - ISO 9797-1:2011 MAC Algorithm 6.
  • S0 - Asymmetric key pair for digital signature.
  • S1 - Asymmetric key pair, CA.
  • S2 - Asymmetric key pair, nonX9.24 key.

Type: object
MinProperties: 1
Name Pattern: ^M[0-8]$|^S[0-2]$

crypto/authenticationAttributes/M0/T (example name)

Specifies the encryption algorithms supported by the Crypto.GenerateAuthentication command. The following value is possible:

  • A - AES.
  • D - DEA.
  • R - RSA.
  • T - Triple DEA (also referred to as TDEA).

Type: object
MinProperties: 1
Name Pattern: ^[ADRT]$

crypto/authenticationAttributes/M0/T/G (example name)

Specifies the Mode of Use supported by the Crypto.GenerateAuthentication command. The following values are possible:

  • C - Both Generate and Verify.
  • G - Generate. This can be used to generate a MAC.
  • S - Signature
  • T - Both Sign and Decrypt.

Type: object, null
Name Pattern: ^[CGST]$
Default: null

crypto/authenticationAttributes/M0/T/G/cryptoMethod

Specifies the asymmetric signature verification method supported by the Crypto.GenerateAuthentication command.

If the key usage is one of the MAC usages (e.g. 'M0'), this property should be null.

Type: object, null
MinProperties: 1
Default: null

crypto/authenticationAttributes/M0/T/G/cryptoMethod/rsassaPkcs1V15

The RSASSA-PKCS1-v1.5 algorithm.

Type: boolean
Default: false

crypto/authenticationAttributes/M0/T/G/cryptoMethod/rsassaPss

The RSASSA-PSS algorithm.

Type: boolean
Default: false

crypto/authenticationAttributes/M0/T/G/hashAlgorithm

Specifies the hash algorithm supported.

If the key usage is one of the MAC usages (e.g. 'M0'), this property should be null.

Type: object, null
MinProperties: 1
Default: null

crypto/authenticationAttributes/M0/T/G/hashAlgorithm/sha1

The SHA 1 digest algorithm.

Type: boolean
Default: false

crypto/authenticationAttributes/M0/T/G/hashAlgorithm/sha256

The SHA 256 digest algorithm, as defined in ISO/IEC 10118-3:2004 [Ref. crypto-1] and FIPS 180-2 [Ref. crypto-2].

Type: boolean
Default: false

crypto/verifyAttributes

Attributes supported by the Crypto.VerifyAuthentication command to verify authentication data.

Type: object, null
Default: null

crypto/verifyAttributes/M0/T (example name)

Specifies the encryption algorithms supported by Crypto.VerifyAuthentication command. The following value is possible:

  • A - AES.
  • D - DEA.
  • R - RSA.
  • T - Triple DEA (also referred to as TDEA).

Type: object
MinProperties: 1
Name Pattern: ^[ADRT]$

crypto/verifyAttributes/M0/T/V (example name)

Specifies the Mode of Use supported by Crypto.VerifyAuthentication command. The following values are possible:

  • V - Verify. This can be used to verify a MAC.

Type: object, null
Name Pattern: ^V$
Default: null

crypto/verifyAttributes/M0/T/V/cryptoMethod

Specifies the asymmetric signature verification method supported by the Crypto.VerifyAuthentication command.

If the key usage is one of the MAC usages (e.g. 'M0'), this property should be null.

Type: object, null
MinProperties: 1
Default: null

crypto/verifyAttributes/M0/T/V/hashAlgorithm

Specifies the hash algorithm supported.

If the key usage is one of the MAC usages (e.g. 'M0'), this property should be null.

Type: object, null
MinProperties: 1
Default: null

keyManagement

Capability information for XFS4IoT services implementing the KeyManagement interface. This will be null if the KeyManagement interface is not supported.

Type: object, null
Default: null

keyManagement/keyNum

Number of the keys which can be stored in the encryption/decryption module.

Type: integer
Minimum: 0
Required

keyManagement/keyCheckModes

Specifies the key check modes that are supported to check the correctness of an imported key value. The modes available for each key may depend on security requirements of the algorithm. The algorithm (i.e. DES, 3DES, AES) and use is determined by the algorithm of the key being checked and security requirements. This property is null if not supported.

Type: object, null
Default: null

keyManagement/keyCheckModes/self

The key check value is created by an encryption of the key with itself. For a double-length or triple-length key the KCV is generated using 3DES encryption using the first 8-bytes of the key as the source data for the encryption.

Type: boolean
Default: false

keyManagement/keyCheckModes/zero

The key check value is created by encrypting a zero value with the key.

Type: boolean
Default: false

keyManagement/rsaAuthenticationScheme

Specifies the types of Remote Key Loading/Authentication that are supported. This property is null if not supported.

Type: object, null
Default: null

keyManagement/rsaAuthenticationScheme/twoPartySig

Two-party Signature based authentication.

Type: boolean
Default: false

keyManagement/rsaAuthenticationScheme/threePartyCert

Three-party Certificate based authentication.

Type: boolean
Default: false

keyManagement/rsaAuthenticationScheme/threePartyCertTr34

Three-party Certificate based authentication described by X9 TR34-2019 [Ref. keymanagement-9].

Type: boolean
Default: false

keyManagement/rsaSignatureAlgorithm

Specifies the types of RSA Signature Algorithm that are supported.

Type: object, null
Default: null

keyManagement/rsaSignatureAlgorithm/pkcs1V15

pkcs1V15 Signatures supported.

Type: boolean
Default: false

keyManagement/rsaSignatureAlgorithm/pss

pss Signatures supported.

Type: boolean
Default: false

keyManagement/rsaCryptAlgorithm

Specifies the types of RSA Encipherment Algorithm that are supported. This property is null if not supported.

Type: object, null
Default: null

keyManagement/rsaCryptAlgorithm/pkcs1V15

pkcs1V15 algorithm supported.

Type: boolean
Default: false

keyManagement/rsaCryptAlgorithm/oaep

oaep algorithm supported.

Type: boolean
Default: false

keyManagement/rsaKeyCheckMode

Specifies which hash algorithms used to generate the public key check value/thumb print are supported. This property is null if not supported.

Type: object, null
Default: null

keyManagement/rsaKeyCheckMode/sha1

sha1 is supported as defined in [Ref. keymanagement-2].

Type: boolean
Default: false

keyManagement/rsaKeyCheckMode/sha256

sha256 is supported as defined in ISO/IEC 10118-3:2004 [Ref. keymanagement-7] and FIPS 180-2 [Ref. keymanagement-8].

Type: boolean
Default: false

keyManagement/signatureScheme

Specifies which capabilities are supported by the Signature scheme. This property is null if not supported.

Type: object, null
Default: null

keyManagement/signatureScheme/randomNumber

Specifies if the service returns a random number from the KeyManagement.StartKeyExchange command within the RSA Signature Scheme.

Type: boolean
Default: false

keyManagement/signatureScheme/exportDeviceId

Specifies if the service supports exporting the device Security Item within the RSA Signature Scheme.

Type: boolean
Default: false

keyManagement/signatureScheme/enhancedRkl

Specifies that the service supports the Enhanced Signature Remote Key Scheme. This scheme allows the customer to manage their own public keys independently of the Signature Issuer. When this mode is supported, the key loaded signed with the Signature Issuer key is the host root public key PKROOT, rather than PKHOST.

Type: boolean
Default: false

keyManagement/emvImportSchemes

Identifies the supported EMV Import Scheme(s). This property is null if not supported.

Type: object, null
Default: null

keyManagement/emvImportSchemes/plainCA

A plain text CA public key is imported with no verification.

Type: boolean
Default: false

keyManagement/emvImportSchemes/chksumCA

A plain text CA public key is imported using the EMV 2000 verification algorithm. See [Ref. keymanagement-3].

Type: boolean
Default: false

keyManagement/emvImportSchemes/epiCA

A CA public key is imported using the selfsign scheme defined in the Europay International, EPI CA Module Technical - Interface specification Version 1.4, [Ref. ref-keymanagement-4].

Type: boolean
Default: false

keyManagement/emvImportSchemes/issuer

An Issuer public key is imported as defined in EMV 2000 Book II, [Ref. keymanagement-3].

Type: boolean
Default: false

keyManagement/emvImportSchemes/icc

An ICC public key is imported as defined in EMV 2000 Book II, [Ref. keymanagement-3].

Type: boolean
Default: false

keyManagement/emvImportSchemes/iccPin

An ICC PIN public key is imported as defined in EMV 2000 Book II, [Ref. keymanagement-3].

Type: boolean
Default: false

keyManagement/emvImportSchemes/pkcsv15CA

A CA public key is imported and verified using a signature generated with a private key for which the public key is already loaded.

Type: boolean
Default: false

keyManagement/keyBlockImportFormats

Supported key block formats. This property is null if not supported.

Type: object, null
Default: null

keyManagement/keyBlockImportFormats/A

Supports X9.143 key block version ID A.

Type: boolean
Default: false

keyManagement/keyBlockImportFormats/B

Supports X9.143 key block version ID B.

Type: boolean
Default: false

keyManagement/keyBlockImportFormats/C

Supports X9.143 key block version ID C.

Type: boolean
Default: false

keyManagement/keyBlockImportFormats/D

Supports X9.143 key block version ID D.

Type: boolean
Default: false

keyManagement/keyImportThroughParts

Specifies whether the device is capable of importing keys in multiple parts.

Type: boolean
Default: false

keyManagement/desKeyLength

Specifies which DES key lengths are supported. This property is null if not supported.

Type: object, null
Default: null

keyManagement/desKeyLength/single

8-byte DES keys are supported.

Type: boolean
Default: false

keyManagement/desKeyLength/double

16-byte DES keys are supported.

Type: boolean
Default: false

keyManagement/desKeyLength/triple

24-byte DES keys are supported.

Type: boolean
Default: false

keyManagement/certificateTypes

Specifies supported certificate types. This property is null if not supported.

Type: object, null
Default: null

keyManagement/certificateTypes/encKey

Supports the device public encryption certificate.

Type: boolean
Default: false

keyManagement/certificateTypes/verificationKey

Supports the device public verification certificate.

Type: boolean
Default: false

keyManagement/certificateTypes/hostKey

Supports the Host public certificate.

Type: boolean
Default: false

keyManagement/loadCertOptions

Specifying the options supported by the KeyManagement.LoadCertificate command. This property is null if not supported.

Type: object, null
MinProperties: 1
Default: null

keyManagement/loadCertOptions/certHost (example name)

Specifies a supported signer. The following signers are possible.

  • certHost - The current Host RSA Private Key is used to sign the token.
  • sigHost - The current Host RSA Private Key is used to sign the token, signature format is used.
  • hl - A Higher-Level Authority RSA Private Key is used to sign the token.
  • certHostTr34 - The current Host RSA Private Key is used to sign the token, compliant with X9 TR34-2019 [Ref. keymanagement-9].
  • caTr34 - The Certificate Authority RSA Private Key is used to sign the token, compliant with X9 TR34-2019 [Ref. keymanagement-9].
  • hlTr34 - A Higher-Level Authority RSA Private Key is used to sign the token, compliant with X9 TR34-2019 [Ref. keymanagement-9].

Type: object
Name Pattern: ^(certHost|sigHost|hl|certHostTr34|caTr34|hlTr34|hlTr34)$

keyManagement/loadCertOptions/certHost/newHost

Load a new Host certificate, where one has not already been loaded.

Type: boolean
Default: false

keyManagement/loadCertOptions/certHost/replaceHost

Replace (or rebind) the device to a new Host certificate, where the new Host certificate is signed by signer.

Type: boolean
Default: false

keyManagement/crklLoadOptions

Supported options to load the Key Transport Key using the Certificate Remote Key Loading protocol. This property is null if not supported.

Type: object, null
Default: null

keyManagement/crklLoadOptions/noRandom

Import a Key Transport Key without generating and using a random number.

Type: boolean
Default: false

keyManagement/crklLoadOptions/noRandomCrl

Import a Key Transport Key with a Certificate Revocation List appended to the input message. A random number is not generated nor used.

Type: boolean
Default: false

keyManagement/crklLoadOptions/random

Import a Key Transport Key by generating and using a random number.

Type: boolean
Default: false

keyManagement/crklLoadOptions/randomCrl

Import a Key Transport Key with a Certificate Revocation List appended to the input parameter. A random number is generated and used.

Type: boolean
Default: false

keyManagement/symmetricKeyManagementMethods

Specifies the Symmetric Key Management modes. This property is null if not supported.

Type: object, null
Default: null

keyManagement/symmetricKeyManagementMethods/fixedKey

This method of key management uses fixed keys for transaction processing.

Type: boolean
Default: false

keyManagement/symmetricKeyManagementMethods/masterKey

This method uses a hierarchy of Key Encrypting Keys and Transaction Keys. The highest level of Key Encrypting Key is known as a Master Key. Transaction Keys are distributed and replaced encrypted under a Key Encrypting Key.

Type: boolean
Default: false

keyManagement/symmetricKeyManagementMethods/tdesDukpt

This method uses TDES Derived Unique Key Per Transaction (see [Ref. keymanagement-10]).

Type: boolean
Default: false

keyManagement/keyAttributes

Attributes supported by KeyManagement.ImportKey command for the key to be loaded. This property is null if not supported.

Type: object, null
Default: null

keyManagement/keyAttributes/M0 (example name)

Specifies the key usages supported by KeyManagement.ImportKey command and key usage string length must be two. The following values are possible:

  • B0 - Base Derivation Key (BDK).
  • B1 - Initial DUKPT Key.
  • B2 - Base Key Variant Key (deprecated).
  • B3 - Key Derivation Key (Non ANSI X9.24).
  • C0 - CVK Card Verification Key.
  • D0 - Symmetric Key for Data Encryption.
  • D1 - Asymmetric Key for Data Encryption.
  • D2 - Data Encryption Key for Decimalization Table.
  • D3 - Data Encryption Key for Sensitive Data.
  • E0 - EMV / Chip Issuer Master Key: Application Cryptogram.
  • E1 - EMV / Chip Issuer Master Key: Secure Messaging for Confidentiality.
  • E2 - EMV / Chip Issuer Master Key: Secure Messaging for Integrity.
  • E3 - EMV / Chip Issuer Master Key: Data Authentication Code.
  • E4 - EMV / Chip Issuer Master Key: Dynamic.
  • E5 - EMV / Chip Issuer Master Key: Card Personalization.
  • E6 - EMV / Chip Issuer Master Key: Other Initialization Vector (IV).
  • E7 - EMV / Chip Asymmetric Key Pair for EMV/Smart Card based PIN/PIN Block Encryption.
  • I0 - Initialization Vector (IV).
  • K0 - Key Encryption or wrapping.
  • K1 - X9.143 Key Block Protection Key.
  • K2 - TR-34 Asymmetric Key.
  • K3 - Asymmetric Key for key agreement / key wrapping.
  • K4 - Key Block Protection Key, ISO 20038.
  • M0 - MAC Key, ISO 16609 MAC algorithm 1 (using TDEA).
  • M1 - MAC Key, ISO 9797-1 MAC Algorithm 1.
  • M2 - MAC Key, ISO 9797-1 MAC Algorithm 2.
  • M3 - MAC Key, ISO 9797-1 MAC Algorithm 3.
  • M4 - MAC Key, ISO 9797-1 MAC Algorithm 4.
  • M5 - MAC Key, ISO 9797-1:2011 MAC Algorithm 5.
  • M6 - MAC Key, ISO 9797-1:2011 MAC Algorithm 5 / CMAC.
  • M7 - HMAC Key.
  • M8 - MAC Key, ISO 9797-1:2011 MAC Algorithm 6.
  • P0 - PIN Encryption.
  • P1 - PIN Generation Key (reserved for ANSI X9.132-202x).
  • S0 - Asymmetric Key Pair for Digital Signature.
  • S1 - Asymmetric Key Pair, CA Key.
  • S2 - Asymmetric Key Pair, non-ANSI X9.24 Key.
  • V0 - PIN Verification Key, PVK, other algorithm.
  • V1 - PIN Verification Key, IBM 3624.
  • V2 - PIN Verification Key, VISA PVV.
  • V3 - PIN Verification Key, ANSI X9-132 algorithm 1.
  • V4 - PIN Verification Key, ANSI X9-132 algorithm 2.
  • V5 - PIN Verification Key, ANSI X9.132 algorithm 3.
  • 00 - 99 - These numeric values are reserved for proprietary use.

Type: object
MinProperties: 1
Name Pattern: ^B[0-3]$|^C0$|^D[0-3]$|^E[0-7]$|^I0$|^K[0-4]$|^M[0-8]$|^P[0-1]$|^S[0-2]$|^V[0-5]$|^[0-9][0-9]$

keyManagement/keyAttributes/M0/T (example name)

Specifies the encryption algorithms supported by the KeyManagement.ImportKey command. The following values are possible:

  • A - AES.
  • D - DEA (Note that this is included for backwards compatibility).
  • H - HMAC (specify the underlying hash algorithm in optional field).
  • R - RSA.
  • T - Triple DEA (TDEA).
  • 0 - 9 - These numeric values are reserved for proprietary use.

Type: object
MinProperties: 1
Name Pattern: ^[0-9ADHRT]$

keyManagement/keyAttributes/M0/T/C (example name)

Specifies the Mode of Use supported by KeyManagement.ImportKey key. The following values are possible:

  • B - Both Encrypt/Wrap and Decrypt/Unwrap.
  • C - Both Generate and Verify.
  • D - Decrypt / Unwrap Only.
  • E - Encrypt / Wrap Only.
  • G - Generate Only.
  • S - Signature Only.
  • T - Both Sign and Decrypt.
  • V - Verify Only.
  • X - Key used to derive other keys(s).
  • Y - Key used to create key variants.
  • 0 - 9 - These numeric values are reserved for proprietary use.

Type: object, null
Name Pattern: ^[0-9BCDEGSTVXY]$
Default: null

keyManagement/keyAttributes/M0/T/C/restrictedKeyUsage

If the key usage is a key encryption usage (e.g. 'K0') this specifies the key usage of the keys that can be encrypted by the key.

This property should be null if restricted key usage is not supported or required.

The following values are possible:

  • B0 - BDK Base Derivation Key.
  • B1 - Initial DUKPT key.
  • B2 - Base Key Variant Key.
  • B3 - Key Derivation Key (Non ANSI X9.24).
  • C0 - CVK Card Verification Key.
  • D0 - Symmetric Key for Data Encryption.
  • D1 - Asymmetric Key for Data Encryption.
  • D2 - Data Encryption Key for Decimalization Table.
  • D3 - Data Encryption Key for Sensitive Data.
  • E0 - EMV / Chip Issuer Master Key: Application Cryptogram.
  • E1 - EMV / Chip Issuer Master Key: Secure Messaging for Confidentiality.
  • E2 - EMV / Chip Issuer Master Key: Secure Messaging for Integrity.
  • E3 - EMV / Chip Issuer Master Key: Data Authentication Code.
  • E4 - EMV / Chip Issuer Master Key: Dynamic.
  • E5 - EMV / Chip Issuer Master Key: Card Personalization.
  • E6 - EMV / Chip Issuer Master Key: Other Initialization Vector (IV).
  • E7 - EMV / Chip Asymmetric Key Pair for EMV/Smart Card based PIN/PIN Block Encryption.
  • I0 - Initialization Vector (IV).
  • K0 - Key Encryption or wrapping.
  • K1 - X9.143 Key Block Protection Key.
  • K2 - TR-34 Asymmetric Key.
  • K3 - Asymmetric Key for key agreement / key wrapping.
  • K4 - Key Block Protection Key, ISO 20038.
  • M0 - ISO 16609 MAC algorithm 1 (using TDEA).
  • M1 - ISO 9797-1 MAC Algorithm 1.
  • M2 - ISO 9797-1 MAC Algorithm 2.
  • M3 - ISO 9797-1 MAC Algorithm 3.
  • M4 - ISO 9797-1 MAC Algorithm 4.
  • M5 - ISO 9797-1:2011 MAC Algorithm 5.
  • M6 - ISO 9797-1:2011 MAC Algorithm 5 / CMAC.
  • M7 - HMAC.
  • M8 - ISO 9797-1:2011 MAC Algorithm 6.
  • P0 - PIN Encryption.
  • P1 - PIN Generation Key (reserved for ANSI X9.132-202x).
  • S0 - Asymmetric key pair for digital signature.
  • S1 - Asymmetric key pair, CA key.
  • S2 - Asymmetric key pair, nonX9.24 key.
  • V0 - PIN verification, KPV, other algorithm.
  • V1 - PIN verification, IBM 3624.
  • V2 - PIN verification, VISA PVV.
  • V3 - PIN verification, X9-132 algorithm 1.
  • V4 - PIN verification, X9-132 algorithm 2.
  • V5 - PIN Verification Key, ANSI X9.132 algorithm 3.
  • 00 - 99 - These numeric values are reserved for proprietary use.

Type: string, null
Pattern: ^B[0-3]$|^C0$|^D[0-3]$|^E[0-7]$|^I0$|^K[0-4]$|^M[0-8]$|^P[0-1]$|^S[0-2]$|^V[0-5]$|^[0-9][0-9]$
Default: null

keyManagement/decryptAttributes

Attributes supported by the KeyManagement.ImportKey command for the key used to decrypt or unwrap the key being imported.

Type: object, null
Default: null

keyManagement/decryptAttributes/A (example name)

Specifies the encryption algorithms supported by the KeyManagement.ImportKey command. The following values are possible:

  • A - AES.
  • D - DEA.
  • R - RSA.
  • T - Triple DEA (also referred to as TDEA).
  • 0 - 9 - These numeric values are reserved for proprietary use.

Type: object
Name Pattern: ^[0-9ADRT]$

keyManagement/decryptAttributes/A/decryptMethod

Specifies the cryptographic method supported.

If the algorithm is 'A', 'D', or 'T', then one or more of the following properties must be true.

  • ecb - The ECB encryption method.
  • cbc - The CBC encryption method.
  • cfb - The CFB encryption method.
  • ofb - The OFB encryption method.
  • ctr - The CTR method defined in NIST SP800-38A (See [Ref. keymanagement-11]).
  • xts - The XTS method defined in NIST SP800-38E (See [Ref. keymanagement-12]).

If the algorithm is 'R' then one or more of the following properties must be true.

  • rsaesPkcs1V15 - Use the RSAES_PKCS1-v1.5 algorithm.
  • rsaesOaep - Use the RSAES OAEP algorithm.

Type: object
MinProperties: 1
Required

keyManagement/decryptAttributes/A/decryptMethod/ecb

The ECB encryption method is supported.

Type: boolean
Default: false

keyManagement/decryptAttributes/A/decryptMethod/cbc

The CBC encryption method is supported.

Type: boolean
Default: false

keyManagement/decryptAttributes/A/decryptMethod/cfb

The CFB encryption method is supported.

Type: boolean
Default: false

keyManagement/decryptAttributes/A/decryptMethod/ofb

The OFB encryption method is supported.

Type: boolean
Default: false

keyManagement/decryptAttributes/A/decryptMethod/ctr

The CTR method is supported and defined in NIST SP800-38A (See [Ref. 11]).

Type: boolean
Default: false

keyManagement/decryptAttributes/A/decryptMethod/xts

The XTS method is supported and defined in NIST SP800-38E (See [Ref. keymanagement-12]).

Type: boolean
Default: false

keyManagement/decryptAttributes/A/decryptMethod/rsaesPkcs1V15

The RSAES-PKCS1-v1.5 algorithm is supported.

Type: boolean
Default: false

keyManagement/decryptAttributes/A/decryptMethod/rsaesOaep

The RSAES-OAEP algorithm is supported.

Type: boolean
Default: false

keyManagement/verifyAttributes

Attributes supported by the KeyManagement.ImportKey for the key used for verification before importing the key.

Type: object, null
Default: null

keyManagement/verifyAttributes/M0 (example name)

Specifies the key usages supported by the KeyManagement.ImportKey command. The following values are possible:

  • M0 - ISO 16609 MAC Algorithm 1 (using TDEA).
  • M1 - ISO 9797-1 MAC Algorithm 1.
  • M2 - ISO 9797-1 MAC Algorithm 2.
  • M3 - ISO 9797-1 MAC Algorithm 3.
  • M4 - ISO 9797-1 MAC Algorithm 4.
  • M5 - ISO 9797-1:1999 MAC Algorithm 5.
  • M6 - ISO 9797-1:2011 MAC Algorithm 5 / CMAC.
  • M7 - HMAC.
  • M8 - ISO 9797-1:2011 MAC Algorithm 6.
  • S0 - Asymmetric key pair or digital signature.
  • S1 - Asymmetric key pair, CA key.
  • S2 - Asymmetric key pair, nonX9.24 key.
  • 00 - 99 - These numeric values are reserved for proprietary use.

Type: object
MinProperties: 1
Name Pattern: ^M[0-8]$|^S[0-2]$|^[0-9][0-9]$

keyManagement/verifyAttributes/M0/T (example name)

Specifies the encryption algorithms supported by the KeyManagement.ImportKey command. The following values are possible:

  • A - AES.
  • D - DEA.
  • R - RSA.
  • T - Triple DEA (also referred to as TDEA).
  • 0 - 9 - These numeric values are reserved for proprietary use.

Type: object
MinProperties: 1
Name Pattern: ^[0-9ADRT]$

keyManagement/verifyAttributes/M0/T/V (example name)

Specifies the encryption modes supported by the KeyManagement.ImportKey command. The following values are possible:

  • S - Signature.
  • V - Verify Only.
  • 0 - 9 - These numeric values are reserved for proprietary use.

Type: object
Name Pattern: ^[0-9SV]$

keyManagement/verifyAttributes/M0/T/V/cryptoMethod

This parameter specifies the cryptographic method that will be used with encryption algorithm.

If the algorithm is 'A', 'D', or 'T' and the key usage is a MAC usage (i.e. 'M1'), then all properties are false.

If the algorithm is 'A', 'D', or 'T' and the key usage is '00', then one of properties must be set true.

  • kcvNone - There is no key check value (KCV) verification required.
  • kcvSelf - The KCV is created by an encryption of the key with itself.
  • kcvZero - The KCV is created by encrypting a zero value with the key.

If the algorithm is 'R' and the key usage is not '00', then one of properties must be set true.

  • sigNone - No signature algorithm specified. No signature verification will take place and the content of verificationData must be set.
  • rsassaPkcs1V15 - Use the RSASSA-PKCS1-v1.5 algorithm.
  • rsassaPss - Use the RSASSA-PSS algorithm.

Type: object
Required

keyManagement/verifyAttributes/M0/T/V/cryptoMethod/kcvNone

There is no key check value (KCV) verification required.

Type: boolean
Default: false

keyManagement/verifyAttributes/M0/T/V/cryptoMethod/kcvSelf

The key check value (KCV) is created by an encryption of the key with itself.

Type: boolean
Default: false

keyManagement/verifyAttributes/M0/T/V/cryptoMethod/kcvZero

The key check value (KCV) is created by encrypting a zero value with the key.

Type: boolean
Default: false

keyManagement/verifyAttributes/M0/T/V/cryptoMethod/sigNone

The No signature algorithm specified. No signature verification will take place.

Type: boolean
Default: false

keyManagement/verifyAttributes/M0/T/V/cryptoMethod/rsassaPkcs1V15

The RSASSA-PKCS1-v1.5 algorithm.

Type: boolean
Default: false

keyManagement/verifyAttributes/M0/T/V/cryptoMethod/rsassaPss

The RSASSA-PSS algorithm.

Type: boolean
Default: false

keyManagement/verifyAttributes/M0/T/V/hashAlgorithm

For asymmetric signature verification methods (key usage is 'S0', 'S1', or 'S2'), then one of the following properties are true. If the key usage is any of the MAC usages (i.e. 'M1'), then both 'sha1' and 'sha256' properties are false.

Type: object
Required

keyManagement/verifyAttributes/M0/T/V/hashAlgorithm/sha1

The SHA 1 digest algorithm.

Type: boolean
Default: false

keyManagement/verifyAttributes/M0/T/V/hashAlgorithm/sha256

The SHA 256 digest algorithm, as defined in ISO/IEC 10118-3:2004 [Ref. keymanagement-7] and FIPS 180-2 [Ref. keymanagement-8].

Type: boolean
Default: false

keyboard

Capability information for XFS4IoT services implementing the Keyboard interface. This will be null if the Keyboard interface is not supported.

Type: object, null
Default: null

keyboard/autoBeep

Specifies whether the device will emit a key beep tone on key presses of active keys or inactive keys, and if so, which mode it supports. This property is null if not supported.

Type: object, null
Default: null

keyboard/autoBeep/activeAvailable

Automatic beep tone on active key key-press is supported. If this flag is not set then automatic beeping for active keys is not supported.

Type: boolean
Default: false

keyboard/autoBeep/activeSelectable

Automatic beeping for active keys can be controlled (i.e. turned on and off) by the application. If this flag is not set then automatic beeping for active keys cannot be controlled by an application.

Type: boolean
Default: false

keyboard/autoBeep/inactiveAvailable

Automatic beep tone on inactive key keypress is supported. If this flag is not set then automatic beeping for inactive keys is not supported.

Type: boolean
Default: false

keyboard/autoBeep/inactiveSelectable

Automatic beeping for inactive keys can be controlled (i.e. turned on and off) by the application. If this flag is not set then automatic beeping for inactive keys cannot be controlled by an application.

Type: boolean
Default: false

keyboard/etsCaps

Specifies the capabilities of the Encrypting Touch Screen device. This property is null if not supported.

Type: object, null
Default: null

keyboard/etsCaps/xPos

Specifies the position of the left edge of the Encrypting Touch Screen in virtual screen coordinates. This value may be negative because the of the monitor position on the virtual desktop.

Type: integer
Minimum: 0
Default: 0

keyboard/etsCaps/yPos

Specifies the position of the right edge of the Encrypting Touch Screen in virtual screen coordinates. This value may be negative because the of the monitor position on the virtual desktop.

Type: integer
Minimum: 0
Default: 0

keyboard/etsCaps/xSize

Specifies the width of the Encrypting Touch Screen in virtual screen coordinates.

Type: integer
Minimum: 0
Default: 0

keyboard/etsCaps/ySize

Specifies the height of the Encrypting Touch Screen in virtual screen coordinates.

Type: integer
Minimum: 0
Default: 0

keyboard/etsCaps/maximumTouchFrames

Specifies the maximum number of Touch-Frames that the device can support in a touch keyboard definition.

Type: integer
Minimum: 0
Default: 0

keyboard/etsCaps/maximumTouchKeys

Specifies the maximum number of Touch-Keys that the device can support within a touch frame.

Type: integer
Minimum: 0
Default: 0

keyboard/etsCaps/float

Specifies if the device can float the touch keyboards. Both properties x and y are false if the device cannot randomly shift the layout. This property is null if not supported.

Type: object, null
Default: null

keyboard/etsCaps/float/x

Specifies that the device will randomly shift the layout in a horizontal direction.

Type: boolean
Default: false

keyboard/etsCaps/float/y

Specifies that the device will randomly shift the layout in a vertical direction.

Type: boolean
Default: false

keyboard/osKeyboard

Specifies whether the device behaves as an operating system (OS) keyboard. If this value is true, the device functions as a standard OS keyboard and sends key events directly to the operating system when there is no active Keyboard.DataEntry, Keyboard.PinEntry or Keyboard.SecureKeyEntry command. This property is null if not supported.

Type: boolean, null
Default: null

textTerminal

Capability information for XFS4IoT services implementing the TextTerminal interface. This will be null if the TextTerminal interface is not supported.

Type: object, null
Default: null

textTerminal/type

Specifies the type of the text terminal unit as one of the following:

  • fixed - The text terminal unit is a fixed device.
  • removable - The text terminal unit is a removable device.

Type: string
Required

textTerminal/resolutions

Array specifies the resolutions supported by the physical display device. (For the definition of Resolution see the command TextTerminal.SetResolution). The resolution indicated in the first position is the default resolution and the device will be placed in this resolution when the service is initialized or reset through the TextTerminal.Reset command.

Type: array (object)
MinItems: 1
Required

textTerminal/resolutions/sizeX

Specifies the horizontal size of the display of the Text Terminal Unit (the number of columns that can be displayed).

Type: integer
Minimum: 0
Required

textTerminal/resolutions/sizeY

Specifies the vertical size of the display of the Text Terminal Unit (the number of rows that can be displayed).

Type: integer
Minimum: 0
Required

textTerminal/keyLock

Specifies whether the text terminal unit has a key lock switch.

Type: boolean
Required

textTerminal/cursor

Specifies whether the text terminal unit display supports a cursor.

Type: boolean
Required

textTerminal/forms

Specifies whether the text terminal unit service supports forms oriented input and output.

Type: boolean
Required

printer

Capability information for XFS4IoT services implementing the Printer interface. This will be null if the Printer interface is not supported.

Type: object, null
Default: null

printer/type

Specifies the type(s) of the physical device driven by the logical service.

Type: object
Required

printer/type/receipt

The device is a receipt printer.

Type: boolean
Default: false

printer/type/passbook

The device is a passbook printer.

Type: boolean
Default: false

printer/type/journal

The device is a journal printer.

Type: boolean
Default: false

printer/type/document

The device is a document printer.

Type: boolean
Default: false

printer/type/scanner

The device is a scanner that may have printing capabilities.

Type: boolean
Default: false

printer/resolution

Specifies at which resolution(s) the physical device can print. Used by the application to select the level of print quality desired; does not imply any absolute level of resolution, only relative.

Type: object
Required

printer/resolution/low

The device can print low resolution.

Type: boolean
Default: false

printer/resolution/medium

The device can print medium resolution.

Type: boolean
Default: false

printer/resolution/high

The device can print high resolution.

Type: boolean
Default: false

printer/resolution/veryHigh

The device can print very high resolution.

Type: boolean
Default: false

printer/readForm

Specifies whether the device can read data from media. This property is null if the device can not read data.

Type: object, null
Default: null

printer/readForm/ocr

Device has OCR capability.

Type: boolean
Default: false

printer/readForm/micr

Device has MICR capability.

Type: boolean
Default: false

printer/readForm/msf

Device has MSF capability.

Type: boolean
Default: false

printer/readForm/barcode

Device has Barcode capability.

Type: boolean
Default: false

printer/readForm/pageMark

Device has Page Mark capability.

Type: boolean
Default: false

printer/readForm/readImage

Device has imaging capability.

Type: boolean
Default: false

printer/readForm/readEmptyLine

Device has capability to detect empty print lines for passbook printing.

Type: boolean
Default: false

printer/writeForm

Specifies whether the device can write data to the media.

Type: object
Required

printer/writeForm/text

Device has Text capability.

Type: boolean
Default: false

printer/writeForm/graphics

Device has Graphics capability.

Type: boolean
Default: false

printer/writeForm/stamp

Device has stamping capability.

Type: boolean
Default: false

printer/extents

Specifies whether the device is able to measure the inserted media. This property is null if the device is unable to measure inserted media.

Type: object, null
Default: null

printer/extents/horizontal

Device has horizontal size detection capability.

Type: boolean
Default: false

printer/extents/vertical

Device has vertical size detection capability.

Type: boolean
Default: false

printer/control

Specifies the manner in which media can be controlled.

Type: object
MinProperties: 1
Required

printer/control/eject

Device can eject media.

Type: boolean
Default: false

printer/control/perforate

Device can perforate media.

Type: boolean
Default: false

printer/control/cut

Device can cut media.

Type: boolean
Default: false

printer/control/skip

Device can skip to mark.

Type: boolean
Default: false

printer/control/flush

Device can be sent data that is buffered internally, and flushed to the printer on request.

Type: boolean
Default: false

printer/control/retract

Device can retract media under application control.

Type: boolean
Default: false

printer/control/stack

Device can stack items before ejecting as a bundle.

Type: boolean
Default: false

printer/control/partialCut

Device can partially cut the media.

Type: boolean
Default: false

printer/control/alarm

Device can ring a bell, beep or otherwise sound an audible alarm.

Type: boolean
Default: false

printer/control/pageForward

Capability to turn one page forward.

Type: boolean
Default: false

printer/control/pageBackward

Capability to turn one page backward.

Type: boolean
Default: false

printer/control/turnMedia

Device can turn inserted media.

Type: boolean
Default: false

printer/control/stamp

Device can stamp on media.

Type: boolean
Default: false

printer/control/park

Device can park a document into the parking station.

Type: boolean
Default: false

printer/control/expel

Device can expel media out of the exit slot.

Type: boolean
Default: false

printer/control/ejectToTransport

Device can move media to a position on the transport just behind the exit slot.

Type: boolean
Default: false

printer/control/rotate180

Device can rotate media 180 degrees in the printing plane.

Type: boolean
Default: false

printer/control/clearBuffer

The service can clear buffered data.

Type: boolean
Default: false

printer/maxMediaOnStacker

Specifies the maximum number of items that the stacker can hold.

Type: integer
Minimum: 0
Default: 0

printer/acceptMedia

Specifies whether the device is able to accept media while no execute command is running that is waiting explicitly for media to be inserted.

Type: boolean
Default: false

printer/multiPage

Specifies whether the device is able to support multiple page print jobs.

Type: boolean
Default: false

printer/paperSources

Specifies the paper sources available for this printer.

Type: object
Required

printer/paperSources/upper

The upper paper source.

Type: boolean
Default: false

printer/paperSources/lower

The lower paper source.

Type: boolean
Default: false

printer/paperSources/external

The external paper source.

Type: boolean
Default: false

printer/paperSources/aux

The auxiliary paper source.

Type: boolean
Default: false

printer/paperSources/aux2

The second auxiliary paper source.

Type: boolean
Default: false

printer/paperSources/park

The parking station.

Type: boolean
Default: false

printer/paperSources/exampleProperty1 (example name)

The vendor specific paper source.

Type: boolean
Name Pattern: ^[a-zA-Z]([a-zA-Z0-9]*)$
Default: false

printer/mediaTaken

Specifies whether the device is able to detect when the media is taken from the exit slot. If false, the Printer.MediaTakenEvent event is not fired.

Type: boolean
Default: false

printer/imageType

Specifies the image format supported by this device. This will be null if the device is unable to scan images.

Type: object, null
Default: null

printer/imageType/tif

The device can return scanned images in TIFF 6.0 format.

Type: boolean
Default: false

printer/imageType/wmf

The device can return scanned images in WMF (Windows Metafile) format.

Type: boolean
Default: false

printer/imageType/bmp

The device can return scanned images in Windows BMP format.

Type: boolean
Default: false

printer/imageType/jpg

The device can return scanned images in JPG format.

Type: boolean
Default: false

printer/imageType/png

The device can return scanned images in PNG format.

Type: boolean
Default: false

printer/imageType/gif

The device can return scanned images in GIF format.

Type: boolean
Default: false

printer/imageType/svg

The device can return scanned images in SVG format.

Type: boolean
Default: false

printer/frontImageColorFormat

Specifies the front image color formats supported by this device. This will be null if the device is unable to scan front images.

Type: object, null
Default: null

printer/frontImageColorFormat/binary

The device can return scanned images in binary (image contains two colors, usually the colors black and white).

Type: boolean
Default: false

printer/frontImageColorFormat/grayscale

The device can return scanned images in gray scale (image contains multiple gray colors).

Type: boolean
Default: false

printer/frontImageColorFormat/full

The device can return scanned images in full color (image contains colors like red, green, blue etc.).

Type: boolean
Default: false

printer/backImageColorFormat

Specifies the back image color formats supported by this device. This will be null if the device is unable to scan back images.

Type: object, null
Default: null

printer/imageSource

Specifies the source for the read image command supported by this device. This will be null if the device does not support reading images.

Type: object, null
Default: null

printer/imageSource/imageFront

The device can scan the front image of the document.

Type: boolean
Default: false

printer/imageSource/imageBack

The device can scan the back image of the document.

Type: boolean
Default: false

printer/imageSource/passportDataGroup1

The device can scan a passport for Data Group 1 using RFID (see [Ref. printer-1]).

Type: boolean
Default: false

printer/imageSource/passportDataGroup2

The device can scan a passport for Data Group 2 using RFID (see [Ref. printer-1]).

Type: boolean
Default: false

printer/dispensePaper

Specifies whether the device is able to dispense paper.

Type: boolean
Default: false

printer/osPrinter

Specifies the name of the default logical operating system printer that is associated with this service. Applications should use this printer name to generate native printer files to be printed through the Printer.PrintNative command. This will be null if the service does not support the Printer.PrintNative command.

Type: string, null
Default: null

printer/mediaPresented

Specifies whether the device is able to detect when the media is presented to the user for removal. If true, the Printer.MediaPresentedEvent event is fired. If false, the Printer.MediaPresentedEvent event is not fired.

Type: boolean
Default: false

printer/autoRetractPeriod

Specifies the number of seconds before the device will automatically retract the presented media. If the command that generated the media is still active when the media is automatically retracted, the command will complete with an error. If the device does not retract media automatically this value is 0.

Type: integer
Minimum: 0
Default: 0

printer/retractToTransport

Specifies whether the device is able to retract the previously ejected media to the transport.

Type: boolean
Default: false

printer/coercivityType

Specifies the form write modes supported by this device. This will be null if the device is unable to write magnetic stripes.

Type: object, null
Default: null

printer/coercivityType/low

This device can write the magnetic stripe by low coercivity mode.

Type: boolean
Default: false

printer/coercivityType/high

This device can write the magnetic stripe by high coercivity mode.

Type: boolean
Default: false

printer/coercivityType/auto

The service or the device is capable of automatically determining whether low or high coercivity magnetic stripe should be written.

Type: boolean
Default: false

printer/controlPassbook

Specifies how the passbook can be controlled with the Printer.ControlPassbook command. This will be null if the command is not supported.

Type: object, null
Default: null

printer/controlPassbook/turnForward

The device can turn forward multiple pages of the passbook.

Type: boolean
Default: false

printer/controlPassbook/turnBackward

The device can turn backward multiple pages of the passbook.

Type: boolean
Default: false

printer/controlPassbook/closeForward

The device can close the passbook forward.

Type: boolean
Default: false

printer/controlPassbook/closeBackward

The device can close the passbook backward.

Type: boolean
Default: false

printer/printSides

Specifies on which sides of the media this device can print as one of the following values. This will be null if the device is not capable of printing on any sides of the media.

  • single - The device is capable of printing on one side of the media.
  • dual - The device is capable of printing on two sides of the media.

Type: string, null
Default: null

barcodeReader

Capability information for XFS4IoT services implementing the BarcodeReader interface. This will be null if the BarcodeReader interface is not supported.

Type: object, null
Default: null

barcodeReader/canFilterSymbologies

Specifies whether the device can discriminate between the presented barcode symbologies such that only the desired symbologies are recognized/reported

Type: boolean
Required

barcodeReader/symbologies

Specifies the barcode symbologies readable by the scanner. This will be null if the supported barcode symbologies cannot be determined.

Type: object, null
Default: null

barcodeReader/symbologies/ean128

GS1-128

Type: boolean
Default: false

barcodeReader/symbologies/ean8

EAN-8

Type: boolean
Default: false

barcodeReader/symbologies/ean8_2

EAN-8 with 2-digit add-on

Type: boolean
Default: false

barcodeReader/symbologies/ean8_5

EAN-8 with 5-digit add-on

Type: boolean
Default: false

barcodeReader/symbologies/ean13

EAN-13

Type: boolean
Default: false

barcodeReader/symbologies/ean13_2

EAN-13 with 2-digit add-on

Type: boolean
Default: false

barcodeReader/symbologies/ean13_5

EAN-13 with 5-digit add-on

Type: boolean
Default: false

barcodeReader/symbologies/jan13

JAN-13

Type: boolean
Default: false

barcodeReader/symbologies/upcA

UPC-A

Type: boolean
Default: false

barcodeReader/symbologies/upcE0

UPC-E

Type: boolean
Default: false

barcodeReader/symbologies/upcE0_2

UPC-E with 2-digit add-on

Type: boolean
Default: false

barcodeReader/symbologies/upcE0_5

UPC-E with 5-digit add-on

Type: boolean
Default: false

barcodeReader/symbologies/upcE1

UPC-E with leading 1

Type: boolean
Default: false

barcodeReader/symbologies/upcE1_2

UPC-E with leading 1and 2-digit add-on

Type: boolean
Default: false

barcodeReader/symbologies/upcE1_5

UPC-E with leading 1and 5-digit add-on

Type: boolean
Default: false

barcodeReader/symbologies/upcA_2

UPC-A with 2-digit add-on

Type: boolean
Default: false

barcodeReader/symbologies/upcA_5

UPC-A with 5-digit add-on

Type: boolean
Default: false

barcodeReader/symbologies/codabar

CODABAR (NW-7)

Type: boolean
Default: false

barcodeReader/symbologies/itf

Interleaved 2 of 5 (ITF)

Type: boolean
Default: false

barcodeReader/symbologies/code11

CODE 11 (USD-8)

Type: boolean
Default: false

barcodeReader/symbologies/code39

CODE 39

Type: boolean
Default: false

barcodeReader/symbologies/code49

CODE 49

Type: boolean
Default: false

barcodeReader/symbologies/code93

CODE 93

Type: boolean
Default: false

barcodeReader/symbologies/code128

CODE 128

Type: boolean
Default: false

barcodeReader/symbologies/msi

MSI

Type: boolean
Default: false

barcodeReader/symbologies/plessey

PLESSEY

Type: boolean
Default: false

barcodeReader/symbologies/std2Of5

STANDARD 2 of 5 (INDUSTRIAL 2 of 5 also)

Type: boolean
Default: false

barcodeReader/symbologies/std2Of5Iata

STANDARD 2 of 5 (IATA Version)

Type: boolean
Default: false

barcodeReader/symbologies/pdf417

PDF-417

Type: boolean
Default: false

barcodeReader/symbologies/microPdf417

MICROPDF-417

Type: boolean
Default: false

barcodeReader/symbologies/dataMatrix

GS1 DataMatrix

Type: boolean
Default: false

barcodeReader/symbologies/maxiCode

MAXICODE

Type: boolean
Default: false

barcodeReader/symbologies/codeOne

CODE ONE

Type: boolean
Default: false

barcodeReader/symbologies/channelCode

CHANNEL CODE

Type: boolean
Default: false

barcodeReader/symbologies/telepenOriginal

Original TELEPEN

Type: boolean
Default: false

barcodeReader/symbologies/telepenAim

AIM version of TELEPEN

Type: boolean
Default: false

barcodeReader/symbologies/rss

GS1 DataBar™

Type: boolean
Default: false

barcodeReader/symbologies/rssExpanded

Expanded GS1 DataBar™

Type: boolean
Default: false

barcodeReader/symbologies/rssRestricted

Restricted GS1 DataBar™

Type: boolean
Default: false

barcodeReader/symbologies/compositeCodeA

Composite Code A Component

Type: boolean
Default: false

barcodeReader/symbologies/compositeCodeB

Composite Code B Component

Type: boolean
Default: false

barcodeReader/symbologies/compositeCodeC

Composite Code C Component

Type: boolean
Default: false

barcodeReader/symbologies/posiCodeA

Posicode Variation A

Type: boolean
Default: false

barcodeReader/symbologies/posiCodeB

Posicode Variation B

Type: boolean
Default: false

barcodeReader/symbologies/triopticCode39

Trioptic Code 39

Type: boolean
Default: false

barcodeReader/symbologies/codablockF

Codablock F

Type: boolean
Default: false

barcodeReader/symbologies/code16K

Code 16K

Type: boolean
Default: false

barcodeReader/symbologies/qrCode

QR Code

Type: boolean
Default: false

barcodeReader/symbologies/aztec

Aztec Codes

Type: boolean
Default: false

barcodeReader/symbologies/ukPost

UK Post

Type: boolean
Default: false

barcodeReader/symbologies/planet

US Postal Planet

Type: boolean
Default: false

barcodeReader/symbologies/postnet

US Postal Postnet

Type: boolean
Default: false

barcodeReader/symbologies/canadianPost

Canadian Post

Type: boolean
Default: false

barcodeReader/symbologies/netherlandsPost

Netherlands Post

Type: boolean
Default: false

barcodeReader/symbologies/australianPost

Australian Post

Type: boolean
Default: false

barcodeReader/symbologies/japanesePost

Japanese Post

Type: boolean
Default: false

barcodeReader/symbologies/chinesePost

Chinese Post

Type: boolean
Default: false

barcodeReader/symbologies/koreanPost

Korean Post

Type: boolean
Default: false

biometric

Capability information for XFS4IoT services implementing the Biometrics interface. This will be null if the Biometrics interface is not supported.

Type: object, null
Default: null

biometric/type

Specifies the type of biometric device.

Type: object
Required

biometric/type/facialFeatures

The biometric device supports facial recognition scanning.

Type: boolean
Default: false

biometric/type/voice

The biometric device supports voice recognition.

Type: boolean
Default: false

biometric/type/fingerprint

The biometric device supports fingerprint scanning.

Type: boolean
Default: false

biometric/type/fingerVein

The biometric device supports finger vein scanning.

Type: boolean
Default: false

biometric/type/iris

The biometric device supports iris scanning.

Type: boolean
Default: false

biometric/type/retina

The biometric device supports retina scanning.

Type: boolean
Default: false

biometric/type/handGeometry

The biometric device supports hand geometry scanning.

Type: boolean
Default: false

biometric/type/thermalFace

The biometric device supports thermal face image scanning.

Type: boolean
Default: false

biometric/type/thermalHand

The biometric device supports thermal hand image scanning.

Type: boolean
Default: false

biometric/type/palmVein

The biometric device supports palm vein scanning.

Type: boolean
Default: false

biometric/type/signature

The biometric device supports signature scanning.

Type: boolean
Default: false

biometric/maxCapture

Specifies the maximum number of times that the device can attempt to capture biometric data during a Biometric.Read. If this is zero, then the device or the service determines how many captures will be attempted.

Type: integer
Minimum: 0
Required

biometric/templateStorage

Specifies the storage space that is reserved on the device for the storage of templates in bytes. This will be set to zero if not reported or unknown.

Type: integer
Minimum: 0
Required

biometric/dataFormats

Specifies the supported biometric raw data and template data formats reported.

Type: object
Required

biometric/dataFormats/isoFid

Raw ISO FID format [Ref. biometric-3].

Type: boolean
Default: false

biometric/dataFormats/isoFmd

ISO FMD template format [Ref. biometric-4].

Type: boolean
Default: false

biometric/dataFormats/ansiFid

Raw ANSI FID format [Ref. biometric-1].

Type: boolean
Default: false

biometric/dataFormats/ansiFmd

ANSI FMD template format [Ref. biometric-2].

Type: boolean
Default: false

biometric/dataFormats/qso

Raw QSO image format.

Type: boolean
Default: false

biometric/dataFormats/wso

WSQ image format.

Type: boolean
Default: false

biometric/dataFormats/reservedRaw1

Reserved for a vendor-defined Raw format.

Type: boolean
Default: false

biometric/dataFormats/reservedTemplate1

Reserved for a vendor-defined Template format.

Type: boolean
Default: false

biometric/encryptionAlgorithms

Supported encryption algorithms. This property is null if no encryption algorithms are supported.

Type: object, null
Default: null

biometric/encryptionAlgorithms/ecb

Triple DES with Electronic Code Book.

Type: boolean
Default: false

biometric/encryptionAlgorithms/cbc

Triple DES with Cipher Block Chaining.

Type: boolean
Default: false

biometric/encryptionAlgorithms/cfb

Triple DES with Cipher Feed Back.

Type: boolean
Default: false

biometric/encryptionAlgorithms/rsa

RSA Encryption.

Type: boolean
Default: false

biometric/storage

Indicates whether or not biometric template data can be stored securely. This property is null if biometric template data is not stored in the device.

Type: object, null
Default: null

biometric/storage/secure

Biometric template data is securely stored as encrypted data.

Type: boolean
Default: false

biometric/storage/clear

Biometric template data is stored unencrypted in the device.

Type: boolean
Default: false

biometric/persistenceModes

Specifies which data persistence modes can be set using the Biometric.SetDataPersistence. This applies specifically to the biometric data that has been captured using the Biometric.Read. This property is null if persistence is entirely under device control and cannot be set.

Type: object, null
Default: null

biometric/persistenceModes/persist

Biometric data captured using the Biometric.Read can persist until all sessions are closed, the device is power failed or rebooted, or the Biometric.Read is requested again. This captured biometric data can also be explicitly cleared using the Biometric.Clear or Biometric.Reset.

Type: boolean
Default: false

biometric/persistenceModes/clear

Captured biometric data will not persist. Once the data has been either returned in the Biometric.Read or used by the Biometric.Match, then the data is cleared from the device.

Type: boolean
Default: false

biometric/matchSupported

Specifies if matching is supported using the Biometric.Match and/or Biometric.SetMatch command. This property is null if the device does not support matching. This will be one of the following values:

  • storedMatch - The device scans biometric data using the Biometric.Read command and stores it, then the scanned data can be compared with imported biometric data using the Biometric.Match.
  • combinedMatch - The device scans biometric data and performs a match against imported biometric data as a single operation. The Biometric.SetMatch must be called before the Biometric.Read to set the matching criteria. Then the Biometric.Match can be called to return the result.

Type: string, null
Default: null

biometric/scanModes

Specifies the scan modes that can be used through the Biometric.Read.

Type: object
Required

biometric/scanModes/scan

The Biometric.Read can be used to scan data only, for example to enroll a user or collect data for matching in an external biometric system.

Type: boolean
Default: false

biometric/scanModes/match

The Biometric.Read can be used to scan data for a match operation using the Biometric.Match.

Type: boolean
Default: false

biometric/compareModes

Specifies the type of match operations. This property is null if the device does not support matching.

Type: object, null
Default: null

biometric/compareModes/verify

The biometric data can be compared as a one-to-one verification operation.

Type: boolean
Default: false

biometric/compareModes/identity

The biometric data can be compared as a one-to-many identification operation.

Type: boolean
Default: false

biometric/clearData

Specifies the type of data that can be cleared from storage using the Biometric.Clear or Biometric.Reset command. This property is null if the device does not support clearing data from storage using commands.

Type: object, null
Default: null

biometric/clearData/scannedData

Raw image data that has been scanned using the Biometric.Read can be cleared.

Type: boolean
Default: false

biometric/clearData/importedData

Template data that was imported using the Biometric.Import can be cleared.

Type: boolean
Default: false

biometric/clearData/setMatchedData

Match criteria data that was set using the Biometric.Match can be cleared.

Type: boolean
Default: false

camera

Capability information for XFS4IoT services implementing the Camera interface. This will be null if the Camera interface is not supported.

Type: object, null
Default: null

camera/cameras

Specifies whether cameras are available.

Type: object
MinProperties: 1
Required

camera/cameras/room

Specifies whether the camera that monitors the whole self-service area is available.

Type: boolean
Default: false

camera/cameras/person

Specifies whether the camera that monitors the person standing in front of the self-service machine is available.

Type: boolean
Default: false

camera/cameras/exitSlot

Specifies whether the camera that monitors the exit slot(s) of the self-service machine is available.

Type: boolean
Default: false

camera/cameras/cameraExit02 (example name)

Allows vendor specific cameras to be reported. The property name is the name of the camera.

Type: boolean
Name Pattern: ^camera[0-9A-Za-z]+$
Default: false

camera/maxPictures

Specifies the maximum number of images that can be stored on the recording media. This property is null if not applicable.

Type: integer, null
Minimum: 0
Default: null

camera/camData

Specifies whether the methods are supported for adding data to the image. If null, no data can be added to the image.

Type: object, null
Default: null

camera/camData/autoAdd

Specifies whether data can be added automatically to the image.

Type: boolean
Default: false

camera/camData/manAdd

Specifies whether data can be added manually to the image using Camera.TakePicture.camData.

Type: boolean
Default: false

camera/maxDataLength

Specifies the maximum length of the data that is displayed on the image. This property is null if not applicable.

Type: integer, null
Minimum: 0
Default: null

camera/cameraDetails

Specifies the details of available cameras. Any camera not available will be null - see cameras.

Type: object
MinProperties: 1
Required

camera/cameraDetails/room

Specifies the details of the camera that monitors the whole self-service area.

Type: object, null
Default: null

camera/cameraDetails/room/mediaType

Specifies the supported media type(s) of the camera.

Type: object
Required

camera/cameraDetails/room/mediaType/picture

The camera can take images using Camera.TakePicture.

Type: boolean
Default: false

camera/cameraDetails/room/maxPixelSize

Specifies the maximum pixel size of the camera.

Type: object
Required

camera/cameraDetails/room/maxPixelSize/width

Specifies the pixel size of the maximum width.

Type: integer
Minimum: 1
Required

camera/cameraDetails/room/maxPixelSize/height

Specifies the pixel size of the maximum height.

Type: integer
Minimum: 1
Required

camera/cameraDetails/person

Specifies the details of the camera that monitors the person standing in front of the self-service machine.

Type: object, null
Default: null

camera/cameraDetails/exitSlot

Specifies the details of the camera that monitors the exit slot(s) of the self-service machine.

Type: object, null
Default: null

camera/cameraDetails/cameraExit02 (example name)

Allows the details of vendor specific cameras to be reported. The property name is the name of the camera.

Type: object, null
Name Pattern: ^camera[0-9A-Za-z]+$
Default: null

german

Capability information for XFS4IoT services implementing the German interface. This will be null if the German interface is not supported.

Type: object, null
Default: null

german/hsmVendor

Identifies the HSM Vendor. This property is null when the HSM Vendor is unknown or the HSM is not supported.

Type: string, null
Default: null

lights

Capability information for XFS4IoT services implementing the Lights interface. This will be null if the Lights interface is not supported.

Type: object, null
Default: null

lights/individualFlashRates

Indicates flash rates of the lights are individually controllable. If true, excluding off, indicates the flash rate of each light may be different. If false, excluding off, indicates all lights flash at the same rate.

Type: boolean
Default: true

lights/lights

Indicates the lights supported.

Type: object
MinProperties: 1
Required

lights/lights/cardReader

Card Reader Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/cardReader/right (example name)

Indicates the light position supported. It can be one of the following:

  • left - The left position.
  • right - The right position.
  • center - The center position.
  • top - The top position.
  • bottom - The bottom position.
  • front - The front position.
  • rear - The rear position.
  • default - The default position.
  • ^[a-zA-Z]([a-zA-Z0-9]*)$ - A vendor-specific position.

Type: object
Name Pattern: ^left$|^right$|^center$|^top$|^bottom$|^front$|^rear$|^default$|^[a-zA-Z]([a-zA-Z0-9]*)$

lights/lights/cardReader/right/flashRate

Indicates the light flash rate.

Type: object
MinProperties: 1
Required

lights/lights/cardReader/right/flashRate/off

The light can be turned off.

Type: boolean
Default: false

lights/lights/cardReader/right/flashRate/slow

The light can flash slowly.

Type: boolean
Default: false

lights/lights/cardReader/right/flashRate/medium

The light can flash at medium frequency.

Type: boolean
Default: false

lights/lights/cardReader/right/flashRate/quick

The light can flash quickly.

Type: boolean
Default: false

lights/lights/cardReader/right/flashRate/continuous

The light can be turned on.

Type: boolean
Default: false

lights/lights/cardReader/right/color

Indicates the light color. This property can be null if the guidance light indicator only supports one color.

Type: object, null
MinProperties: 1
Default: null

lights/lights/cardReader/right/color/red

The light can be red.

Type: boolean
Default: false

lights/lights/cardReader/right/color/green

The light can be green.

Type: boolean
Default: false

lights/lights/cardReader/right/color/yellow

The light can be yellow.

Type: boolean
Default: false

lights/lights/cardReader/right/color/blue

The light can be blue.

Type: boolean
Default: false

lights/lights/cardReader/right/color/cyan

The light can be cyan.

Type: boolean
Default: false

lights/lights/cardReader/right/color/magenta

The light can be magenta.

Type: boolean
Default: false

lights/lights/cardReader/right/color/white

The light can be white.

Type: boolean
Default: false

lights/lights/cardReader/right/direction

Indicates the light direction. This property is null if not applicable.

Type: object, null
MinProperties: 1
Default: null

lights/lights/cardReader/right/direction/entry

The light can indicate entry.

Type: boolean
Default: false

lights/lights/cardReader/right/direction/exit

The light can indicate exit.

Type: boolean
Default: false

lights/lights/pinPad

Pin Pad Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/notesDispenser

Notes Dispenser Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/coinDispenser

Coin Dispenser Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/receiptPrinter

Receipt Printer Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/passbookPrinter

Passbook Printer Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/envelopeDepository

Envelope Depository Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/checkUnit

Check Unit Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/billAcceptor

Bill Acceptor Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/envelopeDispenser

Envelope Dispenser Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/documentPrinter

Document Printer Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/coinAcceptor

Coin Acceptor Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/scanner

Scanner Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/contactless

Contactless Reader Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/cardReader2

Card Reader 2 Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/notesDispenser2

Notes Dispenser 2 Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/billAcceptor2

Bill Acceptor 2 Light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/statusGood

Status indicator light - Good.

Type: object, null
MinProperties: 1
Default: null

lights/lights/statusWarning

Status indicator light - Warning.

Type: object, null
MinProperties: 1
Default: null

lights/lights/statusBad

Status indicator light - Bad.

Type: object, null
MinProperties: 1
Default: null

lights/lights/statusSupervisor

Status indicator light - Supervisor.

Type: object, null
MinProperties: 1
Default: null

lights/lights/statusInService

Status indicator light - In service.

Type: object, null
MinProperties: 1
Default: null

lights/lights/fasciaLight

Fascia light.

Type: object, null
MinProperties: 1
Default: null

lights/lights/vendorSpecificLight (example name)

Additional vendor-specific lights.

Type: object, null
MinProperties: 1
Default: null

banknoteNeutralization

This details the capabilities of the installed banknote neutralization. If this property is null, banknote neutralization is not supported.

Type: object, null
Default: null

banknoteNeutralization/mode

Indicates the operating mode of the banknote neutralization.

  • autonomous - The banknote neutralization autonomously activates the surveillance as soon as the safe door is closed and locked and to deactivate it when it detects a legal entry.
  • clientControlled - The client application is in charge of arming and disarming the system.
  • vendorSpecific - Neither autonomous nor programmable. The mode is vendor specific.

Type: string
Required

banknoteNeutralization/gasSensor

Indicates the presence and management of a gas sensor in the banknote neutralization.

Type: boolean
Default: false

banknoteNeutralization/lightSensor

Indicates the presence and management of a light sensor in the banknote neutralization.

Type: boolean
Default: false

banknoteNeutralization/seismicSensor

Indicates the presence and management of a seismic sensor in the banknote neutralization.

Type: boolean
Default: false

banknoteNeutralization/safeIntrusionDetection

Indicates the presence and management of a safe intrusion detection in the banknote neutralization.

Type: boolean
Default: false

banknoteNeutralization/externalDryContactStatusBox

Indicates the presence and management of an external dry Contact Box in the banknote neutralization.

Type: boolean
Default: false

banknoteNeutralization/realTimeClock

Indicates the presence and management of a Real Time Clock in the banknote neutralization.

Type: boolean
Default: false

banknoteNeutralization/physicalStorageUnitsAccessControl

Indicates the presence of a physical access to the Storage Units and controlled by the banknote neutralization.

Type: boolean
Default: false

banknoteNeutralization/customInputs

Indicates the presence of a set of custom inputs managed by the banknote neutralization. Each of the custom inputs are dedicated to one specific feature.

Type: object, null
Default: null

banknoteNeutralization/customInputs/disableGas (example name)

Describes what an input is configured to handle:

The following standard names are defined:

  • maintenance - Request the banknote neutralization to go in maintenance mode.
  • triggerNeutralization - Request the banknote neutralization to trigger the neutralization.
  • disableGas - Request the banknote neutralization to disable the gas detection.
  • disableSeismic - Request the banknote neutralization to disable the seismic detection.
  • disableSafeDoorAttack - Request the banknote neutralization to disable the safe door attack detection.

Additional non-standard input type names are also allowed:

  • oem[A-Z][a-zA-Z]* - a non standard input type name.

Type: object
Name Pattern: ^(maintenance|triggerNeutralization|disableGas|disableSeismic|disableSafeDoorAttack|oem[A-Z][a-zA-Z]*)$

banknoteNeutralization/customInputs/disableGas/activeInput

This input is configured and active.

Type: boolean
Default: true

auxiliaries

Capability information for XFS4IoT services implementing the Auxiliaries interface. This will be null if the Auxiliaries interface is not supported.

Type: object, null
Default: null

auxiliaries/operatorSwitch

Specifies which states the Operator Switch can be set to. If not available, this property is null.

Type: object, null
Default: null

auxiliaries/operatorSwitch/run

The switch can be set in Run mode.

Type: boolean
Default: false

auxiliaries/operatorSwitch/maintenance

The switch can be set in Maintenance mode.

Type: boolean
Default: false

auxiliaries/operatorSwitch/supervisor

The switch can be set in Supervisor mode.

Type: boolean
Default: false

auxiliaries/tamperSensor

Specifies whether the Tamper Sensor for the terminal is available.

Type: boolean
Default: false

auxiliaries/internalTamperSensor

Specifies whether the Internal Tamper Sensor for the terminal is available.

Type: boolean
Default: false

auxiliaries/seismicSensor

Specifies whether the Seismic Sensor for the terminal is available.

Type: boolean
Default: false

auxiliaries/heatSensor

Specifies whether the Heat Sensor for the terminal is available.

Type: boolean
Default: false

auxiliaries/proximitySensor

Specifies whether the Proximity Sensor for the terminal is available.

Type: boolean
Default: false

auxiliaries/ambientLightSensor

Specifies whether the Ambient Light Sensor for the terminal is available.

Type: boolean
Default: false

auxiliaries/enhancedAudioSensor

Specifies which modes the Audio Jack supports, if present. Null if not applicable.

Type: object, null
Default: null

auxiliaries/enhancedAudioSensor/manual

The Audio Jack is available and supports manual mode.

Type: boolean
Default: false

auxiliaries/enhancedAudioSensor/auto

The Audio Jack is available and supports auto mode.

Type: boolean
Default: false

auxiliaries/enhancedAudioSensor/semiAuto

The Audio Jack is available and supports semi-auto mode.

Type: boolean
Default: false

auxiliaries/enhancedAudioSensor/bidirectional

The Audio Jack is available and can support headphones that have an integrated microphone via a single jack.

Type: boolean
Default: false

auxiliaries/bootSwitchSensor

Specifies whether the Boot Switch Sensor for the terminal is available.

Type: boolean
Default: false

auxiliaries/consumerDisplaySensor

Specifies whether the Consumer Display Sensor is available.

Type: boolean
Default: false

auxiliaries/operatorCallButtonSensor

Specifies whether the Operator Call Button is available. The Operator Call Button does not actually call the operator but just sends a signal to the application.

Type: boolean
Default: false

auxiliaries/handsetSensor

Specifies which modes the Handset supports if present. Null if not applicable.

Type: object, null
Default: null

auxiliaries/handsetSensor/manual

The Handset is available and it supports manual mode.

Type: boolean
Default: false

auxiliaries/handsetSensor/auto

The Handset is available and it supports auto mode.

Type: boolean
Default: false

auxiliaries/handsetSensor/semiAuto

The Handset is available and it supports semi-auto mode.

Type: boolean
Default: false

auxiliaries/handsetSensor/microphone

The Handset is available and contains an embedded microphone for audio input.

Type: boolean
Default: false

auxiliaries/headsetMicrophoneSensor

Specifies whether the Microphone Jack is present, and if so, which modes it supports. If the enhancedAudio capability indicates the presence of a bi-directional Audio Jack then both sensors reference the same physical jack. Null if not applicable.

Type: object, null
Default: null

auxiliaries/headsetMicrophoneSensor/manual

The Microphone Jack is available and it supports manual mode.

Type: boolean
Default: false

auxiliaries/headsetMicrophoneSensor/auto

The Microphone Jack is available and it supports auto mode.

Type: boolean
Default: false

auxiliaries/headsetMicrophoneSensor/semiAuto

The Microphone Jack is available and it supports semi-auto mode.

Type: boolean
Default: false

auxiliaries/fasciaMicrophoneSensor

Specifies whether a Fascia Microphone (for public audio input) is present.

Type: boolean
Default: false

auxiliaries/cabinetDoor

Specifies whether the Cabinet Door is available, and if so, which states it supports. If there are multiple Cabinet Doors available, use appropriate position of Cabinet Door. frontCabinet, rearCabinet, leftCabinet or rightCabinet properties. Null if not applicable.

Type: object, null
Default: null

auxiliaries/cabinetDoor/closed

Specifies that the door can report the closed state.

Type: boolean
Default: false

auxiliaries/cabinetDoor/open

Specifies that the door can report the open state.

Type: boolean
Default: false

auxiliaries/cabinetDoor/locked

Specifies that the door can report the locked state.

Type: boolean
Default: false

auxiliaries/cabinetDoor/bolted

Specifies that the door can report the bolted state.

Type: boolean
Default: false

auxiliaries/cabinetDoor/tampered

Specifies that the door can report the tampered state.

Type: boolean
Default: false

auxiliaries/safeDoor

Specifies whether the Safe Door is available, and if so, which states it supports. Null if not applicable.

Type: object, null
Default: null

auxiliaries/vandalShield

Specifies the states the Vandal Shield can support, if available. Null if not applicable.

Type: object, null
Default: null

auxiliaries/vandalShield/closed

The Vandal Shield can be closed.

Type: boolean
Default: false

auxiliaries/vandalShield/open

The Vandal Shield can be open.

Type: boolean
Default: false

auxiliaries/vandalShield/locked

The Vandal Shield can be locked.

Type: boolean
Default: false

auxiliaries/vandalShield/service

The Vandal Shield can be in the service position.

Type: boolean
Default: false

auxiliaries/vandalShield/keyboard

The Vandal Shield can be in a position that permits access to the keyboard.

Type: boolean
Default: false

auxiliaries/vandalShield/tampered

The Vandal Shield can detect potential tampering.

Type: boolean
Default: false

auxiliaries/frontCabinet

Specifies whether at least one Front Cabinet Door is available, and if so, which states they support. Null if not applicable.

Type: object, null
Default: null

auxiliaries/rearCabinet

Specifies whether at least one Rear Cabinet Door is available, and if so, which states they support. Null if not applicable.

Type: object, null
Default: null

auxiliaries/leftCabinet

Specifies whether at least one left Cabinet Door is available, and if so, which states they support. Null if not applicable.

Type: object, null
Default: null

auxiliaries/rightCabinet

Specifies whether at least one right Cabinet Door is available, and if so, which states they support. Null if not applicable.

Type: object, null
Default: null

auxiliaries/openCloseIndicator

Specifies whether the Open/Closed Indicator is available.

Type: boolean
Default: false

auxiliaries/audio

Specifies whether the Audio Indicator device is available.

Type: boolean
Default: false

auxiliaries/heating

Specifies whether the Internal Heating device is available.

Type: boolean
Default: false

auxiliaries/consumerDisplayBacklight

Specifies whether the Consumer Display Backlight is available.

Type: boolean
Default: false

auxiliaries/signageDisplay

Specifies whether the Signage Display is available.

Type: boolean
Default: false

auxiliaries/volume

Specifies the Volume Control increment/decrement value recommended by the vendor. Null if not applicable.

Type: integer, null
Minimum: 1
Maximum: 1000
Default: null

auxiliaries/ups

Specifies what states the UPS device supports. Null if not applicable.

Type: object, null
Default: null

auxiliaries/ups/low

The UPS can indicate that its charge level is low.

Type: boolean
Default: false

auxiliaries/ups/engaged

The UPS can be engaged and disengaged by the application.

Type: boolean
Default: false

auxiliaries/ups/powering

The UPS can indicate that it is powering the system while the main power supply is off.

Type: boolean
Default: false

auxiliaries/ups/recovered

The UPS can indicate that it was engaged when the main power went off.

Type: boolean
Default: false

auxiliaries/audibleAlarm

Specifies whether the Audible Alarm is available.

Type: boolean
Default: false

auxiliaries/enhancedAudioControl

Specifies the modes the Enhanced Audio Controller can support. The Enhanced Audio Controller controls how private and public audio are broadcast when the headset is inserted into/removed from the audio jack and when the handset is off-hook/on-hook. In the following Privacy Device is used to refer to either the headset or handset. Null if not applicable.

Type: object, null
Default: null

auxiliaries/enhancedAudioControl/headsetDetection

The Enhanced Audio Controller supports Privacy Device activation/deactivation. The device is able to report events to indicate Privacy Device activation/deactivation.

Type: boolean
Default: false

auxiliaries/enhancedAudioControl/modeControllable

The Enhanced Audio Controller supports application control of the Privacy Device mode via Auxiliaries.SetAuxiliaries.

Type: boolean
Default: false

auxiliaries/enhancedMicrophoneControl

Specifies the modes the Enhanced Microphone Controller can support. The Enhanced Microphone Controller controls how private and public audio input are transmitted when the headset is inserted into/removed from the audio jack and when the handset is off-hook/on-hook. In the following Privacy Device is used to refer to either the headset or handset. Null if not applicable.

Type: object, null
Default: null

auxiliaries/enhancedMicrophoneControl/headsetDetection

The Enhanced Microphone Controller supports Privacy Device activation/deactivation. The device is able to report events to indicate Privacy Device activation/deactivation.

Type: boolean
Default: false

auxiliaries/enhancedMicrophoneControl/modeControllable

The Enhanced Microphone Controller supports application control of the Privacy Device mode via Auxiliaries.SetAuxiliaries.

Type: boolean
Default: false

auxiliaries/microphoneVolume

Specifies the Microphone Volume Control increment/decrement value recommended by the vendor. Null if not applicable.

Type: integer, null
Minimum: 1
Maximum: 1000
Default: null

auxiliaries/autoStartupMode

Specifies which modes of the auto start-up control are supported. Null if not applicable.

Type: object, null
Default: null

auxiliaries/autoStartupMode/specific

The device supports one-time auto start-up on a specific date at a specific time.

Type: boolean
Default: false

auxiliaries/autoStartupMode/daily

The device supports auto start-up every day at a specific time.

Type: boolean
Default: false

auxiliaries/autoStartupMode/weekly

The device supports auto start-up at a specified time on a specific day of every week.

Type: boolean
Default: false

deposit

Capabilities information for XFS4IoT services implementing the Deposit interface. This will be null if the Deposit interface is not supported.

Type: object, null
Default: null

deposit/type

Specifies the type of the depository device. At least one of the properties must be true.

Type: object
MinProperties: 1
Required

deposit/type/envelope

The depository accepts envelopes.

Type: boolean
Default: false

deposit/type/bag

The depository accepts bags.

Type: boolean
Default: false

deposit/depTransport

Specifies whether a deposit transport mechanism is available.

Type: boolean
Default: false

deposit/printer

Printer capabilities information for XFS4IoT services implementing the Deposit interface. This will be null if the device has no printer.

Type: object, null
Default: null

deposit/printer/toner

Specifies whether the printer has a toner (or ink) cassette.

Type: boolean
Default: false

deposit/printer/printOnRetract

Specifies whether the device can print the printData in a Deposit.Retract on retracted envelopes.

Type: boolean
Default: false

deposit/printer/maxNumChars

Specifies the maximum number of non-proportional ASCII characters that can be printed on the envelope. Any attempt to print more characters than this will result in invalidData being returned.

This property is related to the printable area supported by the device, therefore the actual number of characters which can be printed will be affected by the characters to be printed and the size of the media being printed on, therefore it is possible that the print data may be truncated.

Type: integer
Minimum: 1
Required

deposit/printer/unicodeSupport

Specifies whether the range of characters that can be printed on the envelope may include Unicode characters. Note that print data is always supplied in Unicode, but some devices may not be able to print a full range of characters and are restricted to the ASCII character range.

If true, characters in the Unicode range can be printed. If false, only characters in the ASCII range can be printed.

Note - regardless of this capability, the device may not be able to print all of the characters in either specified range. If a character is not supported by the device it will be replaced by a vendor dependent substitution character. It is the responsibility of the vendor to supply information about which characters are supported on a given device.

Type: boolean
Default: false

deposit/shutter

Specifies whether a deposit transport shutter is available.

Type: boolean
Default: false

deposit/retractEnvelope

Specifies the ability of the envelope dispenser to retract envelopes. May be null if there is no envelope dispenser or it does not have the capability to retract envelopes, otherwise one of the following:

  • container - Retracted envelopes are put in the deposit container.
  • dispenser - Retracted envelopes are retracted back to the envelope dispenser.

Type: string, null
Default: null

vendorApplication

Capability information for XFS4IoT services implementing the VendorApplication interface. This will be null if the Vendor Application interface is not supported.

Type: object, null
Default: null

vendorApplication/supportedAccessLevels

Specifies the supported access levels. This allows the application to show a user interface with reduced or extended functionality depending on the access levels. The exact meaning or functionality definition is left to the vendor. If no access levels are supported this property will be null.

Type: object, null
Default: null

vendorApplication/supportedAccessLevels/basic

The application supports the basic access level. Once the application is active it will show the user interface for the basic access level.

Type: boolean
Default: false

vendorApplication/supportedAccessLevels/intermediate

The application supports the intermediate access level. Once the application is active it will show the user interface for the intermediate access level.

Type: boolean
Default: false

vendorApplication/supportedAccessLevels/full

The application supports the full access level. Once the application is active it will show the user interface for the full access level.

Type: boolean
Default: false

powerManagement

Capability information for XFS4IoT services implementing the PowerManagement interface. This will be null if the PowerManagement interface is not supported.

Type: object, null
Default: null

powerManagement/powerSaveControl

Specifies whether power saving control is available.

Type: boolean
Default: false

powerManagement/batteryRechargeable

Specifies whether the battery is rechargeable or not.

Type: boolean
Default: true

Event Messages

None

4.1.5 - Common.Cancel

This command instructs the service to attempt to cancel one, more or all command requests associated with the client connection on which this command is received.

This command can be used while in Vendor Mode.

Command Message

Payload, Version 2.0
{ "requestIds": [1, 2] }
Properties

requestIds

The request(s) to be canceled.

If included, the service will only attempt to cancel the specified command requests which are queued or executing and which are associated with the client connection on which this command is received. All other requestIds will be ignored.

If null, the service will attempt to cancel all queued or executing command requests associated with the client connection on which this command is received.

Type: array (integer), null
Minimum: 1
Maximum: 4294967295
MinItems: 1
UniqueItems: true
Default: null

Completion Message

Payload, Version 2.0
{ "errorCode": "noMatchingRequestIDs" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • noMatchingRequestIDs - No queued or executing command matches the requestIds property.

Type: string, null
Default: null

Event Messages

None

4.1.6 - Common.PowerSaveControl

⚠️ This command is deprecated.

This command activates or deactivates the power-saving mode. If the service receives another command while in power-saving mode:

  • If the command requires the device to be powered up while in power-saving mode, the service automatically exits the power saving mode, and executes the requested command.
  • If the command does not require the device to be powered up while in power-saving mode, the service will not exit the power saving mode.

Command Message

Payload, Version 2.0, Required
{ "maxPowerSaveRecoveryTime": 5 }
Properties

maxPowerSaveRecoveryTime

Specifies the maximum number of seconds in which the device must be able to return to its normal operating state when exiting power save mode. The device will be set to the highest possible power save mode within this constraint. If set to 0 then the device will exit the power-saving mode.

Type: integer
Minimum: 0
Required

Completion Message

Payload, Version 2.0
This message does not define any properties.

Event Messages

None

4.1.7 - Common.SetTransactionState

This command allows the application to specify the transaction state, which the service can then utilize in order to optimize performance. After receiving this command, this service can perform the necessary processing to start or end the customer transaction. This command should be called for every service that could be used in a customer transaction. The transaction state applies to every session.

Command Message

Payload, Version 2.0, Required
{ "state": "active", "transactionID": "Example transaction ID" }
Properties

state

Specifies the transaction state. Following values are possible:

  • active - A customer transaction is in progress.
  • inactive - No customer transaction is in progress.

Type: string
Required

transactionID

Specifies a string which identifies the transaction ID.

If state is inactive, this property:

Type: string, null
Default: null

Completion Message

Payload, Version 2.0
This message does not define any properties.

Event Messages

None

4.1.8 - Common.GetTransactionState

This command can be used to get the transaction state.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "state": "active", "transactionID": "Example transaction ID" }
Properties

state

Specifies the transaction state. Following values are possible:

  • active - A customer transaction is in progress.
  • inactive - No customer transaction is in progress.

Type: string
Required

transactionID

Specifies a string which identifies the transaction ID.

If state is inactive, this property:

Type: string, null
Default: null

Event Messages

None

4.1.9 - Common.GetCommandNonce

Get a nonce to be included in an Authorization Token for a command that will be used to ensure end to end security.

The device will overwrite any existing stored Command nonce with this new value. The value will be stored for future authentication. Any Authorization Token received will be compared with this stored nonce and if the Token doesn't contain the same nonce it will be considered invalid and rejected, causing the command that contains that Authorization Token to fail.

The nonce must match the algorithm used. For example, HMAC SHA256 means the nonce must be 256 bit/32 bytes.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "commandNonce": "254611E63B2531576314E86527338D61" }
Properties

commandNonce

A nonce that should be included in the Authorization Token in a command used to provide end-to-end protection.

The nonce will be given as an integer string, or HEX (upper case.)

Type: string
Pattern: ^[0-9A-F]{32}$|^[0-9]*$
Format: nonce
Required

Event Messages

None

4.1.10 - Common.ClearCommandNonce

Clear the command nonce from the device. The command nonce is included in an Authorization Token for a command that will be used to ensure end to end security.

Clearing this value from the device will make any tokens with the old nonce invalid. It will not be possible to use any token, or perform any end-to-end secured operation, until a new nonce is created with Common.GetCommandNonce and a new token is created.

There is no requirement for the client to clear the command nonce, but doing so may be useful for various reasons:

  1. Clearing the command nonce once the application has finished with it will stop an attacker from using that value and may help improve security.
  2. Clearing the command nonce will cause the Common.NonceClearedEvent event to be fired immediately which avoids the client having to handle it at a later time. This could make event handling simpler.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
This message does not define any properties.

Event Messages

None

4.1.11 - Common.StartSecureOperation

This command is used in order for the application to indicate the intent to start a sequence of end-to-end security operations, of the type where a device authenticated result is returned via a command completion message.

This command provides an indication to the device to reset any existing data, and start accumulating data that will be included in the token data of the command completion message.

This command is also used to set a unique ID that will be included in the e2e security token. This is used to link together multiple operations in a single token. This is different to the nonce value, which is passed to a single command and included in a single token.

The error code noKeyValue is returned if no keys are loaded. The property Common.endToEndSecurity can be used to check the status of the device's end-to-end security support.

Command Message

Payload, Version 1.0, Required
{ "operation": "cashInTransaction", "uniqueId": "646169ECDD0E440C2CECC8DDD7C27C22" }
Properties

operation

Describes the operation to be secured as one of the following values:

  • cashInTransaction - Start a secure end-to-end cash in transaction.

Type: string
Required

uniqueId

A string that contains a unique ID, which will be included in the returned token property of a completion message, to be used in validation of the result. This value will associate the secure operations with a specific account or transaction. It should not be easily predictable.

This value may be included in multiple tokens, in addition to a nonce value. This value should not be confused with a nonce, which is passed to a specific command and will only appear in a single token.

See the E2E security specification [Ref. api-2] for further details about the unique ID.

Type: string
Required

Completion Message

Payload, Version 1.0
{ "errorCode": "keyNoValue" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • keyNoValue - The key to be used for generation or validation is not loaded.

Type: string, null
Default: null

Event Messages

None

4.1.12 - Common.Reset

For a top level description of the generic behavior, expectations and use of a reset command, see Service Reset.

This command must not be implemented by a service if there is an interface specific reset command, e.g., CashManagement.Reset.

Command Message

Payload, Version 1.0
This message does not define any properties.

Completion Message

Payload, Version 1.0
This message does not define any properties.

Event Messages

None

4.1.13 - Common.GetConfigurationSchema

This command gets the configuration schema supported by the service. The schema is returned as a JSON object that can be used to determine what configuration is available before calling Common.SetConfiguration.

Command Message

Payload, Version 1.0
This message does not define any properties.

Completion Message

Payload, Version 1.0
This message does not define any properties.

Event Messages

None

4.1.14 - Common.GetConfiguration

This command is used to retrieve service configuration.

As configuration is service specific, it is outside the scope of this specification to define the schema contained in the payload.

Command Message

Payload, Version 1.0
{ "selector": "/cashDispenser/acme/maxDispenseItems" }
Properties

selector

Specifies the required configuration item or items. The selector must be a valid JSON Pointer expression [Ref. api-5]. If the selector is not a valid JSON Pointer expression, completionCode invalidData will be returned.

If null or "/", all configuration items supported by the service will be returned.

Type: string, null
Default: null

Completion Message

Payload, Version 1.0
{ "errorCode": "notFound", "configuration": { } }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • notFound - No configuration data matched the specified selector.

Type: string, null
Default: null

configuration

This contains the configuration which matches the specified selector. This will be null if the command fails.

Type: object, array (object,string,integer,number,boolean), string, integer, number, boolean, null
Default: null

Event Messages

None

4.1.15 - Common.SetConfiguration

This command is used to change service configuration.

Configuration is changed using JSON Merge Patch semantics as defined in RFC 7386 [Ref. api-7].

To set configuration item values, include the desired configuration item properties and their new values in the configuration property.

To delete specific configuration items and reset to default values, set the configuration item property to null. Configuration item properties not included in the configuration property will remain unchanged. When changing nested objects, only the specified properties within those objects are affected; other properties in the same object are preserved. To delete all configuration items, set selector to null or "/" and configuration to null.

Array properties cannot be partially changed. Individual array elements cannot be added, changed, or removed using JSON Merge Patch semantics. When the selector targets an array property or when the configuration property contains array values, the entire array must be replaced with a complete new array containing all desired elements. This applies whether the array is at the root level, nested within objects, or targeted directly by the selector. Consider using objects with meaningful keys instead of arrays where possible to enable granular configuration changes.

Configuration changes apply to the service and therefore affect all current and future client connections to that service. Any configuration changes made through this command will be visible to all connected clients and will persist for new connections established after the configuration changes. Configuration changes are stored persistently and will remain in effect across service restarts and system reboots.

If the specified configuration fails to validate against the schema returned from Common.GetConfigurationSchema the command will complete with completionCode invalidData and errorDescription will contain details of the validation errors.

If the specified configuration cannot be applied because the amount of storage required exceeds the available space, the command will complete with completionCode notEnoughSpace.

If the specified configuration is valid but does not change existing configuration, the command will complete with completionCode success.

If the command complete with any completionCode other than success none of the specified configuration items will be changed.

If configuration is changed a Common.ConfigurationChangedEvent will be sent. The event payload will only include configuration items that have changed.

Command Message

Payload, Version 1.0, Required
{ "selector": "/cashDispenser/acme", "configuration": { } }
Properties

selector

Specifies the merge point for the configuration being changed. The selector must be a valid JSON Pointer expression [Ref. api-5]. If the selector is not a valid JSON Pointer expression, completionCode invalidData will be returned.

If null or "/", the configuration being changed will be merged at the root value of the configuration JSON document.

Type: string, null
Default: null

configuration

This contains the full or partial configuration being changed.

Type: object, array (object,string,integer,number,boolean), string, integer, number, boolean, null
Default: null

Completion Message

Payload, Version 1.0
{ "errorCode": "notFound" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • notFound - the selector does not specify a valid merge location.

Type: string, null
Default: null

Event Messages

None

4.2 - Unsolicited Messages

4.2.1 - Common.StatusChangedEvent

This event reports that a change of state has occurred. The new value of all properties which have changed value are included in the event payload. Any properties which have not changed state are null.

Unsolicited Message

Payload, Version 3.0
{ "common": { "device": "online", "devicePosition": "notInPosition", "powerSaveRecoveryTime": 10, "antiFraudModule": "ok", "exchange": "active", "endToEndSecurity": "enforced", "persistentDataStore": { "remaining": 0 } }, "cardReader": { "media": "unknown", "security": "notReady", "chipPower": "unknown", "chipModule": "ok", "magWriteModule": "ok", "frontImageModule": "ok", "backImageModule": "ok", "dispenser": "ok", "dispenserTransport": "ok", "shutter": "closed" }, "cashAcceptor": { "intermediateStacker": "empty", "stackerItems": "customerAccess", "banknoteReader": "ok", "dropBox": true, "positions": [{ "position": "inLeft", "shutter": "closed", "positionStatus": "empty", "transport": "ok", "transportStatus": "empty" }] }, "cashDispenser": { "intermediateStacker": "empty", "positions": [{ "position": "outDefault", "shutter": "closed", "positionStatus": "empty", "transport": "ok", "transportStatus": "empty" }] }, "cashManagement": { "dispenser": "ok", "acceptor": "ok" }, "check": { "acceptor": "ok", "media": "present", "toner": "full", "ink": "full", "frontImageScanner": "ok", "backImageScanner": "ok", "mICRReader": "ok", "stacker": "empty", "rebuncher": "empty", "mediaFeeder": "notEmpty", "positions": { "input": { "shutter": "closed", "positionStatus": "empty", "transport": "ok", "transportMediaStatus": "empty", "jammedShutterPosition": "notJammed" }, "output": See check/positions/input properties "refused": See check/positions/input properties } }, "mixedMedia": { "modes": { "cashAccept": true, "checkAccept": true } }, "keyManagement": { "encryptionState": "ready", "certificateState": "unknown" }, "keyboard": { "autoBeepMode": { "activeAvailable": false, "inactiveAvailable": false } }, "textTerminal": { "keyboard": "on", "keyLock": "on", "displaySizeX": 0, "displaySizeY": 0 }, "printer": { "media": "unknown", "paper": { "upper": "unknown", "lower": "unknown", "external": "unknown", "aux": "unknown", "aux2": "unknown", "park": "unknown", "vendorSpecificPaperSupply": "unknown" }, "toner": "unknown", "ink": "unknown", "lamp": "unknown", "mediaOnStacker": 7, "paperType": { "upper": "unknown", "lower": "unknown", "external": "unknown", "aux": "unknown", "aux2": "unknown", "park": "unknown", "exampleProperty1": "unknown", "exampleProperty2": See printer/paperType/exampleProperty1 }, "blackMarkMode": "unknown" }, "barcodeReader": { "scanner": "on" }, "biometric": { "subject": "present", "capture": false, "dataPersistence": "persist", "remainingStorage": 0 }, "camera": { "media": { "room": "ok", "person": "ok", "exitSlot": "ok", "cameraExit02": "ok" }, "cameras": { "room": "ok", "person": "ok", "exitSlot": "ok", "cameraExit02": See camera/media/cameraExit02 }, "pictures": { "room": 0, "person": 0, "exitSlot": 0, "cameraExit02": 0 }, "mediaSize": { "room": 0, "person": 0, "exitSlot": 0, "cameraExit02": See camera/pictures/cameraExit02 } }, "lights": { "cardReader": { "right": { "flashRate": "off", "color": "red", "direction": "entry" }, "top": See lights/cardReader/right properties }, "pinPad": See lights/cardReader properties "notesDispenser": See lights/cardReader properties "coinDispenser": See lights/cardReader properties "receiptPrinter": See lights/cardReader properties "passbookPrinter": See lights/cardReader properties "envelopeDepository": See lights/cardReader properties "checkUnit": See lights/cardReader properties "billAcceptor": See lights/cardReader properties "envelopeDispenser": See lights/cardReader properties "documentPrinter": See lights/cardReader properties "coinAcceptor": See lights/cardReader properties "scanner": See lights/cardReader properties "contactless": See lights/cardReader properties "cardReader2": See lights/cardReader properties "notesDispenser2": See lights/cardReader properties "billAcceptor2": See lights/cardReader properties "statusGood": See lights/cardReader properties "statusWarning": See lights/cardReader properties "statusBad": See lights/cardReader properties "statusSupervisor": See lights/cardReader properties "statusInService": See lights/cardReader properties "fasciaLight": See lights/cardReader properties "vendorSpecificLight": See lights/cardReader properties }, "auxiliaries": { "operatorSwitch": "run", "tamperSensor": "on", "internalTamperSensor": "on", "seismicSensor": "on", "heatSensor": "on", "proximitySensor": "present", "ambientLightSensor": "veryDark", "enhancedAudioSensor": "present", "bootSwitchSensor": "off", "consumerDisplaySensor": "off", "operatorCallButtonSensor": "off", "handsetSensor": "onTheHook", "headsetMicrophoneSensor": "present", "fasciaMicrophoneSensor": "off", "cabinetDoor": "closed", "safeDoor": "closed", "vandalShield": "closed", "cabinetFrontDoor": "closed", "cabinetRearDoor": "closed", "cabinetLeftDoor": "closed", "cabinetRightDoor": "closed", "openClosedIndicator": "closed", "audio": { "rate": "on", "signal": "keypress" }, "heating": "off", "consumerDisplayBacklight": "off", "signageDisplay": "off", "volume": 1, "UPS": { "low": true, "engaged": false, "powering": false, "recovered": false }, "audibleAlarm": "on", "enhancedAudioControl": "publicAudioManual", "enhancedMicrophoneControl": "publicAudioManual", "microphoneVolume": 1 }, "deposit": { "depTransport": "ok", "envDispenser": "ok", "printer": "ok", "toner": "full", "shutter": "closed", "depositLocation": "unknown" }, "vendorMode": { "service": "enterPending", "clients": [{ "appName": "ACME Monitoring app", "state": "enterPending" }] }, "vendorApplication": { "accessLevel": "notActive" }, "powerManagement": { "info": { "powerInStatus": "powering", "powerOutStatus": "powering", "batteryStatus": "full", "batteryChargingStatus": "charging" }, "powerSaveRecoveryTime": 10 }, "banknoteNeutralization": { "state": { "mode": "fault", "submode": "allSafeSensorsIgnored" }, "safeDoor": "fault", "safeBolt": "fault", "tilt": "fault", "light": "fault", "gas": "initializing", "temperature": "fault", "seismic": "fault", "customInputs": { "disableGas": { "inputState": "disabled" }, "oemDisableLight": See banknoteNeutralization/customInputs/disableGas properties }, "powerSupply": See powerManagement properties "warnings": { "protectionArmingFault": false, "protectionDisarmingFault": false, "externalMainPowerOutage": false, "storageUnitLowPowerSupply": false, "armedAutonomous": false, "armedAlarm": false, "gasWarningLevel": false, "seismicActivityWarningLevel": false }, "errors": { "protectionEnablingFailure": false, "protectionDisarmingFailure": false, "storageUnitPowerSupplyFailure": false, "backupBatteryFailure": false, "gasCriticalLevel": false, "light": false, "tilted": false, "seismicActivityCriticalLevel": false } } }
Properties

common

Status information common to all XFS4IoT services. May be null if none of the properties have changed.

Type: object, null
Default: null

common/device

Specifies the state of the device or service. This property is required in Common.Status, but may be null in Common.StatusChangedEvent if it has not changed. Following values are possible:

  • online - The device or service is online. This is returned when the device is present and operational or the service is not associated with a device, e.g., a vendor mode / vendor application service.
  • offline - The device is offline (e.g., the operator has taken the device offline by turning a switch or breaking an interlock).
  • powerOff - The device is powered off or physically not connected.
  • noDevice - The device is not intended to be there, e.g. this type of self-service machine does not contain such a device or it is internally not configured.
  • hardwareError - The device is inoperable due to a hardware error.
  • userError - The device is present but a person is preventing proper device operation.
  • deviceBusy - The device is busy and unable to process a command at this time.
  • fraudAttempt - The device is present but is inoperable because it has detected a fraud attempt.
  • potentialFraud - The device has detected a potential fraud attempt and is capable of remaining in service. In this case the application should make the decision as to whether to take the device offline.
  • starting - The device is starting and performing whatever initialization is necessary. This can be reported after the connection is made but before the device is ready to accept commands. This must only be a temporary state, the service must report a different state as soon as possible. If an error causes initialization to fail then the state should change to hardwareError.

Type: string, null
Default: null

common/devicePosition

Position of the device. This property is null in Common.Status if position status reporting is not supported, otherwise the following values are possible:

  • inPosition - The device is in its normal operating position, or is fixed in place and cannot be moved.
  • notInPosition - The device has been removed from its normal operating position.
  • unknown - Due to a hardware error or other condition, the position of the device cannot be determined.

Type: string, null
Default: null

common/powerSaveRecoveryTime

⚠️ This property is deprecated.

Specifies the actual number of seconds required by the device to resume its normal operational state from the current power-saving mode. This value is 0 if the power-saving mode has not been activated. This property is null in Common.Status if power save control is not supported.

Type: integer, null
Minimum: 0
Default: null

common/antiFraudModule

Specifies the state of the anti-fraud module if available. This property is null in Common.Status if there is no anti-fraud module, otherwise the following values are possible:

  • ok - Anti-fraud module is in a good state and no foreign device is detected.
  • inoperable - Anti-fraud module is inoperable.
  • deviceDetected - Anti-fraud module detected the presence of a foreign device.
  • unknown - The state of the anti-fraud module cannot be determined.

Type: string, null
Default: null

common/exchange

Specifies the exchange state of the service. Exchange can used to perform a manual replenishment of a device and is entered by Storage.StartExchange and completed by Storage.EndExchange. This property is null in Common.Status if not supported, otherwise the following values are possible:

  • active - Exchange is active on this service. Commands which interact with the device may be rejected with an error code as appropriate.
  • inactive - Exchange is not active on this service.

Type: string, null
Default: null

common/endToEndSecurity

Specifies the status of end to end security support on this device. This property is null in Common.Status if E2E security is not supported by this hardware and any command can be called without a token, otherwise the following values are possible.

Also see Common.CapabilityProperties.endToEndSecurity.

  • notEnforced - E2E security is supported by this hardware but it is not currently enforced, for example because required keys aren't loaded. It's currently possible to perform E2E commands without a token.
  • notConfigured - E2E security is supported but not correctly configured, for example because required keys aren't loaded. Any attempt to perform any command protected by E2E security will fail.
  • enforced - E2E security is supported and correctly configured. E2E security will be enforced. Calling E2E protected commands will only be possible if a valid token is given.

Type: string, null
Default: null

common/persistentDataStore

Specifies the state of the persistent data store supported by the service.

This property is null in Common.Status if persistent data storage is not supported or in Common.StatusChangedEvent if it has not changed. It is recommended that a service only posts a Common.StatusChangedEvent based on this changing when significant changes occur to avoid too many trivial events being posted.

Type: object, null
Default: null

common/persistentDataStore/remaining

Specifies the number of Kilobytes remaining in the persistent data store. This value must be less than or equal to the persistent data store capacity.

Type: integer
Minimum: 0
Required

cardReader

Status information for XFS4IoT services implementing the CardReader interface. This will be null if the CardReader interface is not supported.

Type: object, null
Default: null

cardReader/media

Specifies the transport/exit position media state. This property will be null if the capability to report media position is not supported by the device (e.g., a typical swipe reader or contactless chip card reader), otherwise one of the following values:

  • unknown - The media state cannot be determined with the device in its current state (e.g. the value of device is noDevice, powerOff, offline or hardwareError.
  • present - Media is present in the device, not in the entering position, and not jammed. On a latched dip device, this indicates the card is accessible to the cardholder.
  • notPresent - Media is not present in the device and not at the entering position.
  • jammed - Media is jammed in the device; operator intervention is required.
  • entering - Media is at the entry/exit slot of a motorized device.
  • latched - Media is present in a latched dip device. For this device type, this is the only state in which chip communication or chip power control is allowed. Depending on configuration, the card may be physically latched or unlatched.

Type: string, null
Default: null

cardReader/security

Specifies the state of the security module. This property will be null if no security module is available, otherwise one of the following values:

  • notReady - The security module is not ready to process cards or is inoperable.
  • open - The security module is open and ready to process cards.

Type: string, null
Default: null

cardReader/chipPower

Specifies the state of the chip controlled by this service. Depending on the value of capabilities response, this can either be the chip on the currently inserted user card or the chip on a permanently connected chip card. This property will be null if the capability to report the state of the chip is not supported by the ID card unit device and will apply to contactless chip card readers, otherwise one of the following values:

  • unknown - The state of the chip cannot be determined with the device in its current state.
  • online - The chip is present, powered on and online (i.e. operational, not busy processing a request and not in an error state).
  • busy - The chip is present, powered on, and busy (unable to process a command at this time).
  • poweredOff - The chip is present, but powered off (i.e. not contacted).
  • noDevice - A card is currently present in the device, but has no chip.
  • hardwareError - The chip is present, but inoperable due to a hardware error that prevents it from being used (e.g., MUTE, if there is an unresponsive card in the reader).
  • noCard - There is no card in the device.

Type: string, null
Default: null

cardReader/chipModule

Specifies the state of the chip card module reader. This property will be null if reporting the chip card module status is not supported, otherwise one of the following values:

  • ok - The chip card module is in a good state.
  • inoperable - The chip card module is inoperable.
  • unknown - The state of the chip card module cannot be determined.

Type: string, null
Default: null

cardReader/magWriteModule

Specifies the state of the magnetic card writer. This property will be null if reporting the magnetic card writing module status is not supported, otherwise one of the following values:

  • ok - The magnetic card writing module is in a good state.
  • inoperable - The magnetic card writing module is inoperable.
  • unknown - The state of the magnetic card writing module cannot be determined.

Type: string, null
Default: null

cardReader/frontImageModule

Specifies the state of the front image reader. This property will be null if reporting the front image reading module status is not supported, otherwise one of the following values:

  • ok - The front image reading module is in a good state.
  • inoperable - The front image reading module is inoperable.
  • unknown - The state of the front image reading module cannot be determined.

Type: string, null
Default: null

cardReader/backImageModule

Specifies the state of the back image reader. This property will be null if reporting the back image reading module status is not supported, otherwise one of the following values:

  • ok - The back image reading module is in a good state.
  • inoperable - The back image reading module is inoperable.
  • unknown - The state of the back image reading module cannot be determined.

Type: string, null
Default: null

cardReader/dispenser

Specifies the state of the dispensing card units as one of the following values. This property will be null in Common.Status if no card dispensing functionality is supported and will also be null in Common.StatusChangedEvent if unchanged.

  • ok - All dispense card units present are in a good state.
  • state - One or more of the dispense card units is in a low, empty or inoperative condition. Items can still be dispensed from at least one of the card units.
  • stop - Due to a card unit failure dispensing is impossible. No items can be dispensed because all of the card units are in an empty or inoperative condition.
  • unknown - Due to a hardware error or other condition, the state of the card units cannot be determined.

Type: string, null
Default: null

cardReader/dispenserTransport

Specifies the state of the dispenserTransport mechanism as one of the following values. This property will be null in Common.Status if card dispensing functionality is not supported and will also be null in Common.StatusChangedEvent if unchanged.

  • ok - The dispenser transport is in a good state.
  • inoperative - The dispenser transport is inoperative due to a hardware failure or media jam.
  • unknown - Due to a hardware error or other condition, the state of the dispenser transport cannot be determined.

Type: string, null
Default: null

cardReader/shutter

Specifies the state of the shutter as one of the following values. This property will be null in Common.Status if the device has no shutter or shutter state reporting is not supported. It will also be null in Common.StatusChangedEvent if unchanged.

  • closed - The shutter is closed.
  • open - The shutter is opened.
  • jammed - The shutter is jammed.
  • unknown - Due to a hardware error or other condition, the state of the shutter cannot be determined.

Type: string, null
Default: null

cashAcceptor

Status information for XFS4IoT services implementing the CashAcceptor interface. This will be null if the CashAcceptor interface is not supported.

Type: object, null
Default: null

cashAcceptor/intermediateStacker

Supplies the state of the intermediate stacker. This property is null in Common.Status if the physical device has no intermediate stacker, otherwise the following values are possible:

  • empty - The intermediate stacker is empty.
  • notEmpty - The intermediate stacker is not empty.
  • full - The intermediate stacker is full. This may also be reported during a cash-in transaction where a limit specified by CashAcceptor.CashInStart has been reached.
  • unknown - Due to a hardware error or other condition, the state of the intermediate stacker cannot be determined.

Type: string, null
Default: null

cashAcceptor/stackerItems

This property informs the application whether items on the intermediate stacker have been in customer access. This property is null in Common.Status if the physical device has no intermediate stacker, otherwise the following values are possible:

  • customerAccess - Items on the intermediate stacker have been in customer access. If the device is a cash recycler then the items on the intermediate stacker may be there as a result of a previous cash-out operation.
  • noCustomerAccess - Items on the intermediate stacker have not been in customer access.
  • accessUnknown - It is not known if the items on the intermediate stacker have been in customer access.
  • noItems - There are no items on the intermediate stacker.

Type: string, null
Default: null

cashAcceptor/banknoteReader

Supplies the state of the banknote reader. This property is null in Common.Status if the physical device has no banknote reader, otherwise the following values are possible:

  • ok - The banknote reader is in a good state.
  • inoperable - The banknote reader is inoperable.
  • unknown - Due to a hardware error or other condition, the state of the banknote reader cannot be determined.

Type: string, null
Default: null

cashAcceptor/dropBox

The drop box is an area within the Cash Acceptor where items which have caused a problem during an operation are stored. This property specifies the status of the drop box. If true, some items are stored in the drop box due to a cash-in transaction which caused a problem. If false, the drop box is empty or there is no drop box. This property may be null if there is no drop box or its state has not changed in Common.StatusChangedEvent.

Type: boolean, null
Default: null

cashAcceptor/positions

Array of structures reporting status for each position from which items can be accepted. This may be null in Common.StatusChangedEvent if no position states have changed.

Type: array (object), null
Default: null

cashAcceptor/positions/position

Supplies the input or output position as one of the following values. If not specified, the default position applies. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

cashAcceptor/positions/shutter

Supplies the state of the shutter. This property is null in Common.Status if the physical position has no shutter, otherwise the following values are possible:

  • closed - The shutter is operational and is fully closed.
  • open - The shutter is operational and is open.
  • jammedOpen - The shutter is jammed, but fully open. It is not operational.
  • jammedPartiallyOpen - The shutter is jammed, but partially open. It is not operational.
  • jammedClosed - The shutter is jammed, but fully closed. It is not operational.
  • jammedUnknown - The shutter is jammed, but its position is unknown. It is not operational.
  • unknown - Due to a hardware error or other condition, the state of the shutter cannot be determined.

Type: string, null
Default: null

cashAcceptor/positions/positionStatus

The status of the input or output position. This property is null in Common.Status if the device is not capable of reporting whether items are at the position, otherwise the following values are possible:

  • empty - The position is empty.
  • notEmpty - The position is not empty.
  • unknown - Due to a hardware error or other condition, the state of the position cannot be determined.
  • foreignItems - Foreign items have been detected in the position.

Type: string, null
Default: null

cashAcceptor/positions/transport

Supplies the state of the transport mechanism. The transport is defined as any area leading to or from the position. This property is null in Common.Status if the device has no transport or transport state reporting is not supported, otherwise the following values are possible:

  • ok - The transport is in a good state.
  • inoperative - The transport is inoperative due to a hardware failure or media jam.
  • unknown - Due to a hardware error or other condition the state of the transport cannot be determined.

Type: string, null
Default: null

cashAcceptor/positions/transportStatus

Returns information regarding items which may be on the transport. If the device is a recycler device it is possible that the transport will not be empty due to a previous dispense operation. This property is null in Common.Status if the device has no transport or is not capable of reporting whether items are on the transport, otherwise the following values are possible:

  • empty - The transport is empty.
  • notEmpty - The transport is not empty.
  • notEmptyCustomer - Items which a customer has had access to are on the transport.
  • unknown - Due to a hardware error or other condition it is not known whether there are items on the transport.

Type: string, null
Default: null

cashDispenser

Status information for XFS4IoT services implementing the CashDispenser interface. This will be null if the CashDispenser interface is not supported.

Type: object, null
Default: null

cashDispenser/intermediateStacker

Supplies the state of the intermediate stacker. These bills are typically present on the intermediate stacker as a result of a retract operation or because a dispense has been performed without a subsequent present. This property is null in Common.Status if the physical device has no intermediate stacker, otherwise the following values are possible:

  • empty - The intermediate stacker is empty.
  • notEmpty - The intermediate stacker is not empty. The items have not been in customer access.
  • notEmptyCustomer - The intermediate stacker is not empty. The items have been in customer access. If the device is a recycler then the items on the intermediate stacker may be there as a result of a previous cash-in operation.
  • notEmptyUnknown - The intermediate stacker is not empty. It is not known if the items have been in customer access.
  • unknown - Due to a hardware error or other condition, the state of the intermediate stacker cannot be determined.

Type: string, null
Default: null

cashDispenser/positions

Array of structures for each position to which items can be dispensed or presented. This may be null in Common.StatusChangedEvent if no position states have changed.

Type: array (object), null
Default: null

cashDispenser/positions/position

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

cashDispenser/positions/shutter

Supplies the state of the shutter. This property is null in Common.Status if the physical position has no shutter, otherwise the following values are possible:

  • closed - The shutter is operational and is closed.
  • open - The shutter is operational and is open.
  • jammedOpen - The shutter is jammed, but fully open. It is not operational.
  • jammedPartiallyOpen - The shutter is jammed, but partially open. It is not operational.
  • jammedClosed - The shutter is jammed, but fully closed. It is not operational.
  • jammedUnknown - The shutter is jammed, but its position is unknown. It is not operational.
  • unknown - Due to a hardware error or other condition, the state of the shutter cannot be determined.

Type: string, null
Default: null

cashDispenser/positions/positionStatus

Returns information regarding items which may be at the output position. If the device is a recycler it is possible that the output position will not be empty due to a previous cash-in operation. This property is null in Common.Status if the device is not capable of reporting whether items are at the position, otherwise the following values are possible:

  • empty - The position is empty.
  • notEmpty - The position is not empty.
  • unknown - Due to a hardware error or other condition, the state of the position cannot be determined.

Type: string, null
Default: null

cashDispenser/positions/transport

Supplies the state of the transport mechanism. The transport is defined as any area leading to or from the position. This property is null in Common.Status if the device has no transport or transport state reporting is not supported, otherwise the following values are possible:

  • ok - The transport is in a good state.
  • inoperative - The transport is inoperative due to a hardware failure or media jam.
  • unknown - Due to a hardware error or other condition the state of the transport cannot be determined.

Type: string, null
Default: null

cashDispenser/positions/transportStatus

Returns information regarding items which may be on the transport. If the device is a recycler device it is possible that the transport will not be empty due to a previous cash-in operation. This property is null in Common.Status if the device has no transport or is not capable of reporting whether items are on the transport, otherwise the following values are possible:

  • empty - The transport is empty.
  • notEmpty - The transport is not empty.
  • notEmptyCustomer - Items which a customer has had access to are on the transport.
  • unknown - Due to a hardware error or other condition it is not known whether there are items on the transport.

Type: string, null
Default: null

cashManagement

Status information for XFS4IoT services implementing the CashManagement interface. This will be null if the CashManagement interface is not supported.

Type: object, null
Default: null

cashManagement/dispenser

Supplies the state of the storage units for dispensing cash. This may be null in Common.Status if the device is not capable of dispensing cash, otherwise the following values are possible:

  • ok - All storage units present are in a good state.
  • attention - One or more of the storage units is in a low, empty, inoperative or manipulated condition. Items can still be dispensed from at least one of the storage units.
  • stop - Due to a storage unit failure dispensing is impossible. No items can be dispensed because all of the storage units are empty, missing, inoperative or in a manipulated condition. This state may also occur when a reject/retract storage unit is full or no reject/retract storage unit is present, or when appLockOut is set to true on every storage unit which can be locked.
  • unknown - Due to a hardware error or other condition, the state of the storage units cannot be determined.

Type: string, null
Default: null

cashManagement/acceptor

Supplies the state of the storage units for accepting cash. This may be null in Common.Status if the device is not capable of accepting cash, otherwise the following values are possible:

  • ok - All storage units present are in a good state.
  • attention - One or more of the storage units is in a high, full, inoperative or manipulated condition. Items can still be accepted into at least one of the storage units.
  • stop - Due to a storage unit failure accepting is impossible. No items can be accepted because all of the storage units are in a full, inoperative or manipulated condition. This state may also occur when a retract storage unit is full or no retract storage unit is present, or when appLockIn is set to true on every storage unit which can be locked, or when items are to be automatically retained within storage units (see retainAction), but all of the designated storage units for storing them are full or inoperative.
  • unknown - Due to a hardware error or other condition, the state of the storage units cannot be determined.

Type: string, null
Default: null

check

Status information for XFS4IoT services implementing the Check interface. This will be null if the Check interface is not supported.

Type: object, null
Default: null

check/acceptor

Supplies the state of the overall acceptor storage units. This may be null in Common.StatusChangedEvent if the state has not changed. The following values are possible:

  • ok - All storage units present are in a good state.
  • state - One or more of the storage units is in a high, full or inoperative condition. Items can still be accepted into at least one of the storage units. The status of the storage units can be obtained through the Storage.GetStorage command.
  • stop - Due to a storage unit problem accepting is impossible. No items can be accepted because all of the storage units are in a full or in an inoperative condition.
  • unknown - Due to a hardware error or other condition, the state of the storage units cannot be determined.

Type: string, null
Default: null

check/media

Specifies the state of the media. This may be null in Common.Status if the capability to report the state of the media is not supported by the device, otherwise the following values are possible:

  • present - Media is present in the device.
  • notPresent - Media is not present in the device.
  • jammed - Media is jammed in the device.
  • unknown - The state of the media cannot be determined with the device in its current state.
  • position - Media is at one or more of the input, output and refused positions.

Type: string, null
Default: null

check/toner

Specifies the state of the toner or ink supply or the state of the ribbon of the endorser. This may be null in Common.Status if the physical device does not support endorsing or the capability to report the status of the toner/ink is not supported by the device, otherwise the following values are possible:

  • full - The toner or ink supply is full or the ribbon is OK.
  • low - The toner or ink supply is low or the print contrast with a ribbon is weak.
  • out - The toner or ink supply is empty or the print contrast with a ribbon is not sufficient any more.
  • unknown - Status of toner or ink supply or the ribbon cannot be determined with the device in its current state.

Type: string, null
Default: null

check/ink

Specifies the status of the stamping ink in the device. This may be null in Common.Status if the physical device does not support stamping or the capability to report the status of the stamp ink supply is not supported by the device, otherwise the following values are possible:

  • full - Ink supply in the device is full.
  • low - Ink supply in the device is low.
  • out - Ink supply in the device is empty.
  • unknown - Status of the stamping ink supply cannot be determined with the device in its current state.

Type: string, null
Default: null

check/frontImageScanner

Specifies the status of the image scanner that captures images of the front of the media items. This may be null in Common.Status if the physical device has no front scanner or the capability to report the status of the front scanner is not supported by the device, otherwise the following values are possible:

  • ok - The front scanner is OK.
  • fading - The front scanner performance is degraded.
  • inoperative - The front scanner is inoperative.
  • unknown - Status of the front scanner cannot be determined with the device in its current state.

Type: string, null
Default: null

check/backImageScanner

Specifies the status of the image scanner that captures images of the back of the media items. This may be null in Common.Status if the physical device has no back scanner or the capability to report the status of the back scanner is not supported by the device, otherwise the following values are possible:

  • ok - The back scanner is OK.
  • fading - The back scanner performance is degraded.
  • inoperative - The back scanner is inoperative.
  • unknown - Status of the back scanner cannot be determined with the device in its current state.

Type: string, null
Default: null

check/mICRReader

Specifies the status of the MICR code line reader. This may be null in Common.Status if the physical device has no MICR code line reader or the capability to report the status of the MICR code line reader is not supported by the device, otherwise the following values are possible:

  • ok - The MICR code line reader is OK.
  • fading - The MICR code line reader performance is degraded.
  • inoperative - The MICR code line reader is inoperative.
  • unknown - Status of the MICR code line reader cannot be determined with the device in its current state.

Type: string, null
Default: null

check/stacker

Supplies the state of the stacker (also known as an escrow). The stacker is where the media items are held while the application decides what to do with them. This may be null in Common.Status if the physical device has no stacker or the capability to report the status of the stacker is not supported by the device, otherwise the following values are possible:

  • empty - The stacker is empty.
  • notEmpty - The stacker is not empty.
  • full - The stacker is full. This state is set if the number of media items on the stacker has reached maxMediaOnStacker or some physical limit has been reached.
  • inoperative - The stacker is inoperative.
  • unknown - Due to a hardware error or other condition, the state of the stacker cannot be determined.

Type: string, null
Default: null

check/rebuncher

Supplies the state of the re-buncher (return stacker). The re-buncher is where media items are re-bunched ready for return to the customer. This may be null in Common.Status if the physical device has no re-buncher or the capability to report the status of the re-buncher is not supported by the device, otherwise the following values are possible:

  • empty - The re-buncher is empty.
  • notEmpty - The re-buncher is not empty.
  • full - The re-buncher is full. This state is set if the number of media items on the re-buncher has reached its physical limit.
  • inoperative - The re-buncher is inoperative.
  • unknown - Due to a hardware error or other condition, the state of the re-buncher cannot be determined.

Type: string, null
Default: null

check/mediaFeeder

Supplies the state of the media feeder. This value indicates if there are items on the media feeder waiting for processing via the Check.GetNextItem command. If null, the device has no media feeder or the capability to report the status of the media feeder is not supported by the device. This value can be one of the following values:

  • empty - The media feeder is empty.
  • notEmpty - The media feeder is not empty.
  • inoperative - The media feeder is inoperative.
  • unknown - Due to a hardware error or other condition, the state of the media feeder cannot be determined.

Type: string, null
Default: null

check/positions

Specifies the status of the input, output and refused positions. This may be null in Common.StatusChangedEvent if no position states have changed.

Type: object, null
MinProperties: 1
Default: null

check/positions/input

Specifies the status of the input position. This may be null in Common.StatusChangedEvent if no states have changed for the position.

Type: object, null
Default: null

check/positions/input/shutter

Specifies the state of the shutter. This property is null in Common.Status if the physical device has no shutter or shutter state reporting is not supported, otherwise the following values are possible:

  • closed - The shutter is operational and is closed.
  • open - The shutter is operational and is open.
  • jammed - The shutter is jammed and is not operational.
  • unknown - Due to a hardware error or other condition, the state of the shutter cannot be determined.

Type: string, null
Default: null

check/positions/input/positionStatus

The status of the position. This property is null in Common.Status if the physical device is not capable of reporting whether or not items are at the position, otherwise the following values are possible:

  • empty - The position is empty.
  • notEmpty - The position is not empty.
  • unknown - Due to a hardware error or other condition, the state of the position cannot be determined.

Type: string, null
Default: null

check/positions/input/transport

Specifies the state of the transport mechanism. The transport is defined as any area leading to or from the position. This property is null in Common.Status if the physical device has no transport or transport state reporting is not supported, otherwise the following values are possible:

  • ok - The transport is in a good state.
  • inoperative - The transport is inoperative due to a hardware failure or media jam.
  • unknown - Due to a hardware error or other condition, the state of the transport cannot be determined.

Type: string, null
Default: null

check/positions/input/transportMediaStatus

Returns information regarding items which may be present on the transport. This property is null in Common.Status if the physical device is not capable of reporting whether or not items are on the transport, otherwise the following values are possible:

  • empty - The transport is empty.
  • notEmpty - The transport is not empty.
  • unknown - Due to a hardware error or other condition it is not known whether there are items on the transport.

Type: string, null
Default: null

check/positions/input/jammedShutterPosition

Returns information regarding the position of the jammed shutter. This property is null in Common.Status if the physical device has no shutter or the reporting of the position of a jammed shutter is not supported, otherwise the following values are possible:

  • notJammed - The shutter is not jammed.
  • open - The shutter is jammed, but fully open.
  • partiallyOpen - The shutter is jammed, but partially open.
  • closed - The shutter is jammed, but fully closed.
  • unknown - The position of the shutter is unknown.

Type: string, null
Default: null

check/positions/output

Specifies the status of the output position. This may be null in Common.StatusChangedEvent if no states have changed for the position.

Type: object, null
Default: null

check/positions/refused

Specifies the status of the refused position. This may be null in Common.StatusChangedEvent if no states have changed for the position.

Type: object, null
Default: null

mixedMedia

Status information for XFS4IoT services implementing the MixedMedia interface. This will be null if the MixedMedia interface is not supported.

Type: object, null
Default: null

mixedMedia/modes

Specifies the state of the transaction modes supported by the service.

Type: object
MinProperties: 1
Required

mixedMedia/modes/cashAccept

Specifies whether transactions can accept cash. This property may be null if no change is required, or if its state has not changed in Common.StatusChangedEvent.

Type: boolean, null
Default: null

mixedMedia/modes/checkAccept

Specifies whether transactions can accept checks. This property may be null if no change is required, or if its state has not changed in Common.StatusChangedEvent.

Type: boolean, null
Default: null

keyManagement

Status information for XFS4IoT services implementing the KeyManagement interface. This will be null if the KeyManagement interface is not supported.

Type: object, null
Default: null

keyManagement/encryptionState

Specifies the state of the encryption module.

  • ready - The encryption module is initialized and ready (at least one key is imported into the encryption module).
  • notReady - The encryption module is not available or not ready due to hardware error or communication error.
  • notInitialized - The encryption module is not initialized (no master key loaded).
  • busy - The encryption module is busy (implies that the device is busy).
  • undefined - The encryption module state is undefined.
  • initialized - The encryption module is initialized and master key (where required) and any other initial keys are loaded; ready to import other keys. This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

keyManagement/certificateState

Specifies the state of the public verification or encryption key in the PIN certificate module.

  • unknown - The state of the certificate module is unknown or the device does not have this capability.
  • primary - All pre-loaded certificates have been loaded and that primary verification certificates will be accepted for the commands LoadCertificate or ReplaceCertificate.
  • secondary - Primary verification certificates will not be accepted and only secondary verification certificates will be accepted. If primary certificates have been compromised (which the certificate authority or the host detects), then secondary certificates should be used in any transaction. This is done by the commands LoadCertificate or ReplaceCertificate.
  • notReady - The certificate module is not ready. (The device is powered off or physically not present). This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

keyboard

Status information for XFS4IoT services implementing the Keyboard interface. This will be null if the Keyboard interface is not supported.

Type: object, null
Default: null

keyboard/autoBeepMode

Specifies whether automatic beep tone on key press is active or not. Active and inactive key beeping is reported independently.

Type: object
Required

keyboard/autoBeepMode/activeAvailable

Specifies whether an automatic tone will be generated for all active keys. This may be null in Common.StatusChangedEvent if unchanged.

Type: boolean, null
Default: null

keyboard/autoBeepMode/inactiveAvailable

Specifies whether an automatic tone will be generated for all inactive keys. This may be null in Common.StatusChangedEvent if unchanged.

Type: boolean, null
Default: null

textTerminal

Status information for XFS4IoT services implementing the TextTerminal interface. This will be null if the TextTerminal interface is not supported.

Type: object, null
Default: null

textTerminal/keyboard

Specifies the state of the keyboard in the text terminal unit. This property will be null in Common.Status if the keyboard is not available, otherwise one of the following values:

  • on - The keyboard is activated.
  • off - The keyboard is not activated.

Type: string, null
Default: null

textTerminal/keyLock

Specifies the state of the keyboard lock of the text terminal unit. This property will be null in Common.Status if the keyboard lock switch is not available, otherwise one of the following values:

  • on - The keyboard lock switch is activated.
  • off - The keyboard lock switch is not activated.

Type: string, null
Default: null

textTerminal/displaySizeX

Specifies the horizontal size of the display of the text terminal unit (the number of columns that can be displayed). This property will be null in Common.StatusChangedEvent if unchanged.

Type: integer, null
Minimum: 0
Default: null

textTerminal/displaySizeY

Specifies the vertical size of the display of the text terminal unit (the number of rows that can be displayed). This property will be null in Common.StatusChangedEvent if unchanged.

Type: integer, null
Minimum: 0
Default: null

printer

Status information for XFS4IoT services implementing the Printer interface. This will be null if the Printer interface is not supported.

Type: object, null
Default: null

printer/media

Specifies the state of the print media (i.e. receipt, statement, passbook, etc.) as one of the following values. This property will be null in Common.Status for journal printers or if the capability to report the state of the print media is not supported by the device:

  • unknown - The state of the print media cannot be determined with the device in its current state.
  • present - Media is in the print position, on the stacker or on the transport (i.e. a passbook in the parking station is not considered to be present). On devices with continuous paper supplies, this value is set when paper is under the print head. On devices with no supply or individual sheet supplies, this value is set when paper/media is successfully inserted/loaded.
  • notPresent - Media is not in the print position or on the stacker.
  • jammed - Media is jammed in the device.
  • entering - Media is at the entry/exit slot of the device.
  • retracted - Media was retracted during the last command which controlled media.

Type: string, null
Default: null

printer/paper

Specifies the state of paper supplies as one of the following values. Each individual supply state will be null in Common.Status if not applicable:

  • unknown - Status cannot be determined with device in its current state.
  • full - The paper supply is full.
  • low - The paper supply is low.
  • out - The paper supply is empty.
  • jammed - The paper supply is jammed.

Type: object, null
Default: null

printer/paper/upper

The state of the upper paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/lower

The state of the lower paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/external

The state of the external paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/aux

The state of the auxiliary paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/aux2

The state of the second auxiliary paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/park

The state of the parking station paper supply. See paper for valid values.

Type: string, null
Default: null

printer/paper/vendorSpecificPaperSupply (example name)

The state of the additional vendor specific paper supplies. See paper for valid values.

Type: string, null
Default: null

printer/toner

Specifies the state of the toner or ink supply or the state of the ribbon. The property will be null in Common.Status if the capability is not supported by device, otherwise one of the following:

  • unknown - Status of toner or ink supply or the ribbon cannot be determined with device in its current state.
  • full - The toner or ink supply is full or the ribbon is OK.
  • low - The toner or ink supply is low or the print contrast with a ribbon is weak.
  • out - The toner or ink supply is empty or the print contrast with a ribbon is not sufficient any more.

Type: string, null
Default: null

printer/ink

Specifies the status of the stamping ink in the printer. The property will be null in Common.Status if the capability is not supported by device, otherwise one of the following:

  • unknown - Status of the stamping ink supply cannot be determined with device in its current state.
  • full - Ink supply in device is full.
  • low - Ink supply in device is low.
  • out - Ink supply in device is empty.

Type: string, null
Default: null

printer/lamp

Specifies the status of the printer imaging lamp. The property will be null in Common.Status if the capability is not supported by device, otherwise one of the following:

  • unknown - Status of the imaging lamp cannot be determined with device in its current state.
  • ok - The lamp is OK.
  • fading - The lamp should be changed.
  • inop - The lamp is inoperative.

Type: string, null
Default: null

printer/mediaOnStacker

The number of media on the stacker; applicable only to printers with stacking capability therefore null if not applicable.

Type: integer, null
Minimum: 0
Default: null

printer/paperType

Specifies the type of paper loaded as one of the following. Only applicable properties are reported. This may be null in Common.StatusChangedEvent if unchanged.

  • unknown - No paper is loaded, reporting of this paper type is not supported or the paper type cannot be determined.
  • single - The paper can be printed on only one side.
  • dual - The paper can be printed on both sides.

Type: object, null
Default: null

printer/paperType/upper

The upper paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/lower

The lower paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/external

The external paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/aux

The auxiliary paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/aux2

The second auxiliary paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/park

The parking station paper supply paper type. See paperType for valid values.

Type: string, null
Default: null

printer/paperType/exampleProperty1 (example name)

The additional vendor specific paper types. See paperType for valid values.

Type: string, null
Default: null

printer/blackMarkMode

Specifies the status of the black mark detection and associated functionality. The property is null if not supported.

  • unknown - The status of the black mark detection cannot be determined.
  • on - Black mark detection and associated functionality is switched on.
  • off - Black mark detection and associated functionality is switched off.

Type: string, null
Default: null

barcodeReader

Status information for XFS4IoT services implementing the Barcode Reader interface. This will be null if the Barcode Reader interface is not supported.

Type: object, null
Default: null

barcodeReader/scanner

Specifies the scanner status (laser, camera or other technology) as one of the following:

  • on - Scanner is enabled for reading.
  • off - Scanner is disabled.
  • inoperative - Scanner is inoperative due to a hardware error.
  • unknown - Scanner status cannot be determined.

Type: string
Required

biometric

Status information for XFS4IoT services implementing the Biometrics interface. This will be null if the Biometrics interface is not supported.

Type: object, null
Default: null

biometric/subject

Specifies the state of the subject to be scanned (e.g. finger, palm, retina, etc) as one of the following values:

  • present - The subject to be scanned is on the scanning position.
  • notPresent - The subject to be scanned is not on the scanning position.
  • unknown - The subject to be scanned cannot be determined with the device in its current state (e.g. the value of device is noDevice, powerOff, offline, or hwError).

This property is null if the physical device does not support the ability to report whether or not a subject is on the scanning position.

Type: string, null
Default: null

biometric/capture

Indicates whether scanned biometric data has been captured using the Biometric.Read and is currently stored and ready for comparison. This will be set to false when scanned data is cleared using the Biometric.Clear. This may be null in Common.StatusChangedEvent if unchanged.

Type: boolean, null
Default: null

biometric/dataPersistence

Specifies the current data persistence mode. The data persistence mode controls how biometric data that has been captured using the Biometric.Read will be handled. This property is null if the property persistenceModes is null or both properties persist and clear are false. The following values are possible:

  • persist - Biometric data captured using the Biometric.Read can persist until all sessions are closed, the device is power failed or rebooted, or the Biometric.Read is requested again. This captured biometric data can also be explicitly cleared using the Biometric.Clear or Biometric.Reset.
  • clear - Captured biometric data will not persist. Once the data has been either returned in the Biometric.Read or used by the Biometric.Match, then the data is cleared from the device.

Type: string, null
Default: null

biometric/remainingStorage

Specifies how much of the reserved storage specified by the capability templateStorage is remaining for the storage of templates in bytes. if null, this property is not supported.

Type: integer, null
Minimum: 0
Default: null

camera

Status information for XFS4IoT services implementing the Camera interface. This will be null if the Camera interface is not supported.

Type: object, null
Default: null

camera/media

Specifies the state of the recording media of the cameras as one of the following. For a device which stores images on a hard disk drive or other general-purpose storage, the relevant property will be null. This property may be null in Common.StatusChangedEvent if unchanged.

  • ok - The media is in a good state.
  • high - The media is almost full (threshold).
  • full - The media is full.
  • unknown - Due to a hardware error or other condition, the state of the media cannot be determined.

Type: object, null
Default: null

camera/media/room

Specifies the state of the recording media of the camera that monitors the whole self-service area. See media for valid values.

Type: string, null
Default: null

camera/media/person

Specifies the state of the recording media of the camera that monitors the person standing in front of the self-service machine. See media for valid values.

Type: string, null
Default: null

camera/media/exitSlot

Specifies the state of the recording media of the camera that monitors the exit slot(s) of the self-service machine. See media for valid values.

Type: string, null
Default: null

camera/media/cameraExit02 (example name)

Allows vendor specific cameras to be reported. The property name is the name of the camera.

Type: string, null
Name Pattern: ^camera[0-9A-Za-z]+$
Default: null

camera/cameras

Specifies the state of the cameras as one of the following. The relevant property will be null if not supported and this property may be null in Common.StatusChangedEvent if unchanged.

  • ok - The camera is in a good state.
  • inoperative - The camera is inoperative.
  • unknown - Due to a hardware error or other condition, the state of the camera cannot be determined.

Type: object, null
Default: null

camera/cameras/room

Specifies the state of the camera that monitors the whole self-service area. See cameras for valid values.

Type: string, null
Default: null

camera/cameras/person

Specifies the state of the camera that monitors the person standing in front of the self-service machine. See cameras for valid values.

Type: string, null
Default: null

camera/cameras/exitSlot

Specifies the state of the camera that monitors the exit slot(s) of the self-service machine. See cameras for valid values.

Type: string, null
Default: null

camera/pictures

Specifies the number of images stored on the recording media of the cameras. For a device which stores images on a hard disk drive or other general-purpose storage, the value of the relevant camera's property is 0. Properties may be null in Common.StatusChangedEvent if unchanged.

Type: object, null
Default: null

camera/pictures/room

Specifies the number of images stored on the recording media of the room camera.

Type: integer, null
Minimum: 0
Default: null

camera/pictures/person

Specifies the number of images stored on the recording media of the person camera.

Type: integer, null
Minimum: 0
Default: null

camera/pictures/exitSlot

Specifies the number of images stored on the recording media of the exit slot camera.

Type: integer, null
Minimum: 0
Default: null

camera/pictures/cameraExit02 (example name)

Allows vendor specific cameras to be reported. The property name is the name of the camera.

Type: integer, null
Minimum: 0
Name Pattern: ^camera[0-9A-Za-z]+$
Default: null

camera/mediaSize

Specifies the total size (kilobytes) of images stored on the recording media of the cameras. For a device which stores images on a hard disk drive or other general-purpose storage, the value of the relevant camera's property is 0.

Properties may be null in Common.StatusChangedEvent if unchanged or if the relevant camera is unavailable.

Type: object, null
MinProperties: 1
Default: null

camera/mediaSize/room

Specifies the total size (kilobytes) of images stored on the recording media of the room camera.

Type: integer, null
Minimum: 0
Default: null

camera/mediaSize/person

Specifies the total size (kilobytes) of images stored on the recording media of the person camera.

Type: integer, null
Minimum: 0
Default: null

camera/mediaSize/exitSlot

Specifies the total size (kilobytes) of images stored on the recording media of the exit slot camera.

Type: integer, null
Minimum: 0
Default: null

lights

Status information for XFS4IoT services implementing the Lights interface. This will be null if the Lights interface is not supported.

Type: object, null
Default: null

lights/cardReader

Card Reader Light. This property is null if not applicable.

Type: object, null
Default: null

lights/cardReader/right (example name)

Indicates the light position. It can be one of the following:

  • left - The left position.
  • right - The right position.
  • center - The center position.
  • top - The top position.
  • bottom - The bottom position.
  • front - The front position.
  • rear - The rear position.
  • default - The default position.
  • ^[a-zA-Z]([a-zA-Z0-9]*)$ - The vendor-specific position.

Type: object
MinProperties: 1
Name Pattern: ^left$|^right$|^center$|^top$|^bottom$|^front$|^rear$|^default$|^[a-zA-Z]([a-zA-Z0-9]*)$

lights/cardReader/right/flashRate

The light flash rate. This may be null in a Common.StatusChangedEvent if unchanged, otherwise one of the following values:

  • off - The light is turned off.
  • slow - The light is flashing slowly.
  • medium - The light is flashing at medium frequency.
  • quick - The light is flashing quickly.
  • continuous - The light is continuous (steady).

Type: string, null
Default: null

lights/cardReader/right/color

The light color. This property can be null if not supported, only supports a single color or in a Common.StatusChangedEvent if unchanged, otherwise one of the following values:

  • red - The light is red.
  • green - The light is green.
  • yellow - The light is yellow.
  • blue - The light is blue.
  • cyan - The light is cyan.
  • magenta - The light is magenta.
  • white - The light is white.

Type: string, null
Default: null

lights/cardReader/right/direction

The light direction. This property can be null if not supported or in a Common.StatusChangedEvent if unchanged, otherwise one of the following values:

  • entry - The light is indicating entry.
  • exit - The light is indicating exit.

Type: string, null
Default: null

lights/pinPad

Pin Pad Light. This property is null if not applicable.

Type: object, null
Default: null

lights/notesDispenser

Notes Dispenser Light. This property is null if not applicable.

Type: object, null
Default: null

lights/coinDispenser

Coin Dispenser Light. This property is null if not applicable.

Type: object, null
Default: null

lights/receiptPrinter

Receipt Printer Light. This property is null if not applicable.

Type: object, null
Default: null

lights/passbookPrinter

Passbook Printer Light. This property is null if not applicable.

Type: object, null
Default: null

lights/envelopeDepository

Envelope Depository Light. This property is null if not applicable.

Type: object, null
Default: null

lights/checkUnit

Check Unit Light. This property is null if not applicable.

Type: object, null
Default: null

lights/billAcceptor

Bill Acceptor Light. This property is null if not applicable.

Type: object, null
Default: null

lights/envelopeDispenser

Envelope Dispenser Light. This property is null if not applicable.

Type: object, null
Default: null

lights/documentPrinter

Document Printer Light. This property is null if not applicable.

Type: object, null
Default: null

lights/coinAcceptor

Coin Acceptor Light. This property is null if not applicable.

Type: object, null
Default: null

lights/scanner

Scanner Light. This property is null if not applicable.

Type: object, null
Default: null

lights/contactless

Contactless Reader Light. This property is null if not applicable.

Type: object, null
Default: null

lights/cardReader2

Card Reader 2 Light. This property is null if not applicable.

Type: object, null
Default: null

lights/notesDispenser2

Notes Dispenser 2 Light. This property is null if not applicable.

Type: object, null
Default: null

lights/billAcceptor2

Bill Acceptor 2 Light. This property is null if not applicable.

Type: object, null
Default: null

lights/statusGood

Status Indicator light - Good. This property is null if not applicable.

Type: object, null
Default: null

lights/statusWarning

Status Indicator light - Warning. This property is null if not applicable.

Type: object, null
Default: null

lights/statusBad

Status Indicator light - Bad. This property is null if not applicable.

Type: object, null
Default: null

lights/statusSupervisor

Status Indicator light - Supervisor. This property is null if not applicable.

Type: object, null
Default: null

lights/statusInService

Status Indicator light - In service. This property is null if not applicable.

Type: object, null
Default: null

lights/fasciaLight

Fascia Light. This property is null if not applicable.

Type: object, null
Default: null

lights/vendorSpecificLight (example name)

Additional vendor-specific lights.

Type: object, null
Default: null

auxiliaries

Status information for XFS4IoT services implementing the Auxiliaries interface. This will be null if the Auxiliaries interface is not supported.

Type: object, null
Default: null

auxiliaries/operatorSwitch

Specifies the state of the Operator switch.

  • run - The switch is in run mode.
  • maintenance - The switch is in maintenance mode.
  • supervisor - The switch is in supervisor mode.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/tamperSensor

Specifies the state of the Tamper sensor.

  • off - There is no indication of a tampering attempt.
  • on - There has been a tampering attempt.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/internalTamperSensor

Specifies the state of the Internal Tamper Sensor for the internal alarm. This sensor indicates whether the internal alarm has been tampered with (such as a burglar attempt). Specified as one of the following:

  • off - There is no indication of a tampering attempt.
  • on - There has been a tampering attempt.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/seismicSensor

Specifies the state of the Seismic Sensor. This sensor indicates whether the terminal has been shaken (e.g. burglar attempt or seismic activity). Specified as one of the following:

  • off - The seismic activity has not been high enough to trigger the sensor.
  • on - The seismic or other activity has triggered the sensor.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/heatSensor

Specifies the state of the Heat Sensor. This sensor is triggered by excessive heat (fire) near the terminal. Specified as one of the following:

  • off - The heat has not been high enough to trigger the sensor.
  • on - The heat has been high enough to trigger the sensor.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/proximitySensor

Specifies the state of the Proximity Sensor. This sensor is triggered by movements around the terminal. Specified as one of the following:

  • present - The sensor is showing that there is someone present at the terminal.
  • notPresent - The sensor cannot sense any people around the terminal.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/ambientLightSensor

Specifies the state of the Ambient Light Sensor. This sensor indicates the level of ambient light around the terminal. Interpretation of this value is vendor-specific and therefore it is not guaranteed to report a consistent actual ambient light level across different vendor hardware. Specified as one of the following:

  • veryDark - The level of light is very dark.
  • dark - The level of light is dark.
  • mediumLight - The level of light is medium light.
  • light - The level of light is light.
  • veryLight - The level of light is very light.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/enhancedAudioSensor

Specifies the presence or absence of a consumer’s headphone connected to the Audio Jack. Specified as one of the following:

  • present - There is a headset connected.
  • notPresent - There is no headset connected.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/bootSwitchSensor

Specifies the state of the Boot Switch Sensor. This sensor is triggered whenever the terminal is about to be rebooted or shut down due to a delayed effect switch. Specified as one of the following:

  • off - The sensor has not been triggered.
  • on - The terminal is about to be rebooted or shutdown.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/consumerDisplaySensor

Specifies the state of the Consumer Display. Specified as one of the following:

  • off - The Consumer Display is switched off.
  • on - The Consumer Display is in a good state and is turned on.
  • displayError - The Consumer Display is in an error state.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/operatorCallButtonSensor

Specifies the state of the Operator Call Button as one of the following:

  • off - The Operator Call Button is released (not pressed).
  • on - The Operator Call Button is being pressed.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/handsetSensor

Specifies the state of the Handset, which is a device similar to a telephone receiver. Specified as one of the following:

  • onTheHook - The Handset is on the hook.
  • offTheHook - The Handset is off the hook.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/headsetMicrophoneSensor

Specifies the presence or absence of a consumer’s headset microphone connected to the Microphone Jack. Specified as one of the following:

  • present - There is a headset microphone connected.
  • notPresent - There is no headset microphone connected.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/fasciaMicrophoneSensor

Specifies the state of the fascia microphone as one of the following:

  • off - The Fascia Microphone is turned off.
  • on - The Fascia Microphone is turned on.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/cabinetDoor

Specifies the overall state of the Cabinet Doors. Cabinet Doors are doors that open up for consumables, and hardware that does not have to be in a secure place. Specified as one of the following:

  • closed - All Cabinet Doors are closed.
  • open - At least one of the Cabinet Doors is open.
  • locked - All Cabinet Doors are closed and locked.
  • bolted - All Cabinet Doors are closed, locked and bolted.
  • tampered - At least one of the Cabinet Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/safeDoor

Specifies the state of the Safe Doors. Safe Doors are doors that open up for secure hardware, such as the note dispenser, the security device, etc. Specified as one of the following:

  • closed - The Safe Doors are closed.
  • open - At least one of the Safe Doors is open.
  • locked - All Safe Doors are closed and locked.
  • bolted - All Safe Doors are closed, locked and bolted.
  • tampered - At least one of the Safe Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/vandalShield

Specifies the state of the Vandal Shield. The Vandal Shield is a door that opens up for consumer access to the terminal. Specified as one of the following:

  • closed - The Vandal Shield is closed.
  • open - The Vandal Shield is fully open.
  • locked - The Vandal Shield is closed and locked.
  • service - The Vandal Shield is in service position.
  • keyboard - The Vandal Shield position permits access to the keyboard.
  • partiallyOpen - The Vandal Shield is partially open.
  • jammed - The Vandal Shield is jammed.
  • tampered - The Vandal Shield has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/cabinetFrontDoor

Specifies the overall state of the Front Cabinet Doors. The front is defined as the side facing the customer/consumer. Cabinet Doors are doors that open up for consumables, and hardware that does not have to be in a secure place. Specified as one of the following:

  • closed - All front Cabinet Doors are closed.
  • open - At least one of the front Cabinet Doors is open.
  • locked - All front Cabinet Doors are closed and locked.
  • bolted - All front Cabinet Doors are closed, locked and bolted.
  • tampered - At least one of the front Cabinet Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/cabinetRearDoor

Specifies the overall state of the Rear Cabinet Doors. The rear is defined as the side opposite the side facing the customer/consumer. Cabinet Doors are doors that open up for consumables, and hardware that does not have to be in a secure place. Specified as one of the following:

  • closed - All rear Cabinet Doors are closed.
  • open - At least one of the rear Cabinet Doors is open.
  • locked - All rear Cabinet Doors are closed and locked.
  • bolted - All rear Cabinet Doors are closed, locked and bolted.
  • tampered - At least one of the rear Cabinet Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/cabinetLeftDoor

Specifies the overall state of the Left Cabinet Doors. The left is defined as the side to the left as seen by the customer/consumer. Cabinet Doors are doors that open up for consumables, and hardware that does not have to be in a secure place. Specified as one of the following:

  • closed - All left Cabinet Doors are closed.
  • open - At least one of the left Cabinet Doors is open.
  • locked - All left Cabinet Doors are closed and locked.
  • bolted - All left Cabinet Doors are closed, locked and bolted.
  • tampered - At least one of the left Cabinet Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/cabinetRightDoor

Specifies the overall state of the Right Cabinet Doors. The right is defined as the side to the right as seen by the customer/consumer. Cabinet Doors are doors that open up for consumables, and hardware that does not have to be in a secure place. Specified as one of the following:

  • closed - All right Cabinet Doors are closed.
  • open - At least one of the right Cabinet Doors is open.
  • locked - All right Cabinet Doors are closed and locked.
  • bolted - All right Cabinet Doors are closed, locked and bolted.
  • tampered - At least one of the right Cabinet Doors has potentially been tampered with.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/openClosedIndicator

Specifies the state of the Open/Closed Indicator as one of the following:

  • closed - The terminal is closed for a consumer.
  • open - The terminal is open to be used by a consumer.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/audio

Specifies the state of the Audio Indicator. This property is null if not applicable.

Type: object, null
Default: null

auxiliaries/audio/rate

Specifies the state of the Audio Indicator as one of the following values. This may be null in Common.StatusChangedEvent if unchanged.

  • on - Turn on the Audio Indicator.
  • off - Turn off the Audio Indicator.
  • continuous - Turn the Audio Indicator to continuous.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/audio/signal

Specifies the Audio sound as one of the following values. This may be null in Common.StatusChangedEvent if unchanged.

  • keypress - Sound a key click signal.
  • exclamation - Sound an exclamation signal.
  • warning - Sound a warning signal.
  • error - Sound an error signal.
  • critical - Sound a critical error signal.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/heating

Specifies the state of the internal heating as one of the following:

  • off - The internal heating is turned off.
  • on - The internal heating is turned on.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/consumerDisplayBacklight

Specifies the Consumer Display Backlight as one of the following:

  • off - The Consumer Display Backlight is turned off.
  • on - Consumer Display Backlight is turned on.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/signageDisplay

Specifies the state of the Signage Display. The Signage Display is a lighted banner or marquee that can be used to display information or an advertisement. Any dynamic data displayed must be loaded by a means external to the service. Specified as one of the following:

  • off - The Signage Display is turned off.
  • on - The Signage Display is turned on.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/volume

Specifies the value of the Volume Control. The value of Volume Control is defined in an interval from 1 to 1000 where 1 is the lowest volume level and 1000 is the highest volume level. The interval is defined in logarithmic steps, e.g. a volume control on a radio. Note: The Volume Control property is vendor-specific and therefore it is not possible to guarantee a consistent actual volume level across different vendor hardware. This property is null if not applicable.

Type: integer, null
Minimum: 1
Maximum: 1000
Default: null

auxiliaries/UPS

Specifies the state of the Uninterruptible Power Supply. This property is null if not applicable. Properties contained in this property may be null in Common.StatusChangedEvent if unchanged.

Type: object, null
Default: null

auxiliaries/UPS/low

The charge level of the UPS is low.

Type: boolean, null
Default: null

auxiliaries/UPS/engaged

The UPS is engaged.

Type: boolean, null
Default: null

auxiliaries/UPS/powering

The UPS is powering the system.

Type: boolean, null
Default: null

auxiliaries/UPS/recovered

The UPS was engaged when the main power went off.

Type: boolean, null
Default: null

auxiliaries/audibleAlarm

Species the state of the Audible Alarm device as one of the following:

  • off - The Alarm is turned off.
  • on - The Alarm is turned on.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/enhancedAudioControl

Specifies the state of the Enhanced Audio Controller. The Enhanced Audio Controller controls how private and public audio are broadcast when the headset is inserted into/removed from the audio jack and when the handset is off-hook/on-hook. In the following, Privacy Device is used to refer to either the headset or handset. The Enhanced Audio Controller state is specified as one of the following:

  • publicAudioManual - The Enhanced Audio Controller is in manual mode and is in the public state (i.e. audio will be played through speakers). Activating a Privacy Device (headset connected/handset off-hook) will have no impact, i.e. Output will remain through the speakers and no audio will be directed to the Privacy Device.
  • publicAudioAuto - The Enhanced Audio Controller is in auto mode and is in the public state (i.e. audio will be played through speakers). When a Privacy Device is activated, the device will go to the private state.
  • publicAudioSemiAuto - The Enhanced Audio Controller is in semi-auto mode and is in the public state (i.e. audio will be played through speakers). When a Privacy Device is activated, the device will go to the private state.
  • privateAudioManual - The Enhanced Audio Controller is in manual mode and is in the private state (i.e. audio will be played only through a connected Privacy Device). In private mode, no audio is transmitted through the speakers.
  • privateAudioAuto - The Enhanced Audio Controller is in auto mode and is in the private state (i.e. audio will be played only through a connected Privacy Device). In private mode, no audio is transmitted through the speakers. When a Privacy Device is deactivated (headset disconnected/handset on-hook), the device will go to the public state. Where there is more than one Privacy Device, the device will go to the public state only when all Privacy Devices have been deactivated.
  • privateAudioSemiAuto - The Enhanced Audio Controller is in semi-auto mode and is in the private state (i.e. audio will be played only through a connected Privacy Device). In private mode, no audio is transmitted through the speakers. When a Privacy Device is deactivated, the device will remain in the private state.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/enhancedMicrophoneControl

Specifies the state of the Enhanced Microphone Controller. The Enhanced Microphone Controller controls how private and public audio input are transmitted when the headset is inserted into/removed from the audio jack and when the handset is off-hook/on-hook. In the following, Privacy Device is used to refer to either the headset or handset. The Enhanced Microphone Controller state is specified as one of the following values:

  • publicAudioManual - The Enhanced Microphone Controller is in manual mode and is in the public state (i.e. the microphone in the fascia is active). Activating a Privacy Device (headset connected/handset off-hook) will have no impact, i.e. input will remain through the fascia microphone and any microphone associated with the Privacy Device will not be active.
  • publicAudioAuto - The Enhanced Microphone Controller is in auto mode and is in the public state (i.e. the microphone in the fascia is active). When a Privacy Device with a microphone is activated, the device will go to the private state.
  • publicAudioSemiAuto - The Enhanced Microphone Controller is in semi-auto mode and is in the public state (i.e. the microphone in the fascia is active). When a Privacy Device with a microphone is activated, the device will go to the private state.
  • privateAudioManual - The Enhanced Microphone Controller is in manual mode and is in the private state (i.e. audio input will be via a microphone in the Privacy Device). In private mode, no audio input is transmitted through the fascia microphone.
  • privateAudioAuto - The Enhanced Microphone Controller is in auto mode and is in the private state (i.e. audio input will be via a microphone in the Privacy Device). In private mode, no audio input is transmitted through the fascia microphone. When a Privacy Device with a microphone is deactivated (headset disconnected/handset on-hook), the device will go to the public state. Where there is more than one Privacy Device with a microphone, the device will go to the public state only when all such Privacy Devices have been deactivated.
  • privateAudioSemiAuto - The Enhanced Microphone Controller is in semi-auto mode and is in the private state (i.e. audio input will be via a microphone in the Privacy Device). In private mode, no audio is transmitted through the fascia microphone. When a Privacy Device with a microphone is deactivated, the device will remain in the private state.

This property is null if not applicable.

Type: string, null
Default: null

auxiliaries/microphoneVolume

Specifies the value of the Microphone Volume Control. The value of Volume Control is defined in an interval from 1 to 1000 where 1 is the lowest volume level and 1000 is the highest volume level. The interval is defined in logarithmic steps, e.g. a volume control on a radio. Note: The Microphone Volume Control property is vendor-specific and therefore it is not possible to guarantee a consistent actual volume level across different vendor hardware. This property is null if not applicable.

Type: integer, null
Minimum: 1
Maximum: 1000
Default: null

deposit

Status information for XFS4IoT services implementing the Deposit interface. This will be null if the Deposit interface is not supported.

Type: object, null
Default: null

deposit/depTransport

Specifies the state of the deposit transport mechanism that transports the envelope into the deposit container. This property is null in Common.Status if the device has no deposit transport, otherwise the following values are possible:

  • ok - The deposit transport is in a good state.
  • inoperative - The deposit transport is inoperative due to a hardware failure or media jam.
  • unknown - Due to a hardware error or other condition the state of the deposit transport cannot be determined.

Type: string, null
Default: null

deposit/envDispenser

Specifies the state of the envelope dispenser.

This property is null in Common.Status if the device has no envelope dispenser, otherwise the following values are possible:

  • ok- The envelope dispenser is present and in a good state.
  • inoperative - The envelope dispenser is present but in an inoperable state. No envelopes can be dispensed.
  • unknown - Due to a hardware error or other condition, the state of the envelope dispenser cannot be determined.

Type: string, null
Default: null

deposit/printer

Specifies the state of the printer.

This property is null in Common.Status if the device has no printer, otherwise the following values are possible:

  • ok- The printer is present and in a good state.
  • inoperative - The printer is in an inoperable state.
  • unknown - Due to a hardware error or other condition, the state of the printer cannot be determined.

Type: string, null
Default: null

deposit/toner

Specifies the state of the toner (or ink) for the printer. This may be null in Common.Status if the physical device does not support printing or the capability to report the status of the toner/ink is not supported by the device, otherwise the following values are possible:

  • full - The toner or ink supply is full or the ribbon is OK.
  • low - The toner or ink supply is low or the print contrast with a ribbon is weak.
  • out - The toner or ink supply is empty or the print contrast with a ribbon is not sufficient any more.
  • unknown - Status of toner or ink supply or the ribbon cannot be determined with the device in its current state.

Type: string, null
Default: null

deposit/shutter

Specifies the state of the shutter or door.

This may be null in Common.Status if the physical device has no shutter, otherwise the following values are possible:

  • closed - The shutter is closed.
  • open - The shutter is open.
  • jammed - The shutter is jammed.
  • unknown - Due to a hardware error or other condition, the state of the shutter cannot be determined.

Type: string, null
Default: null

deposit/depositLocation

Specifies the location of the item deposited at the end of the last Deposit.Entry command.

This may be null in Common.Status if not supported or in Common.StatusChangedEvent if unchanged, otherwise the following values are possible:

  • unknown - Cannot determine the location of the last deposited item.
  • container - The item is in the container.
  • transport - The item is in the transport.
  • printer - The item is in the printer.
  • shutter - The item is at the shutter (available for removal).
  • none - No item was entered on the last Deposit.Entry.
  • removed - The item was removed.

Type: string, null
Default: null

vendorMode

Status information for XFS4IoT services implementing the VendorMode interface. This will be null if the VendorMode interface is not supported.

Type: object, null
Default: null

vendorMode/service

Specifies the service state. This property may be null in events if the state did not change, otherwise will be one of the following values:

  • enterPending - The service is waiting for one or more registered clients to acknowledge the enter mode request.
  • active - Vendor Mode is active.
  • exitPending - The service is waiting for one or more registered clients to acknowledge the exit mode request.
  • inactive - Vendor Mode is inactive.

Type: string, null
Default: null

vendorMode/clients

Specifies the list of clients currently registered to participate in Vendor Mode. This property may be null if the service state is active or inactive or if no clients have registered to participate in Vendor Mode.

Type: array (object), null
Default: null

vendorMode/clients/appName

The name specified by the client when it registered to participate in Vendor Mode.

Type: string
Required

vendorMode/clients/state

Specifies the client state. This property may be null in events if the state did not change, otherwise will be one of the following values:

  • enterPending - The service is waiting for the client to acknowledge the enter mode request..
  • active - Vendor Mode is active.
  • exitPending - The service is waiting for the client to acknowledge the exit mode request.
  • inactive - Vendor Mode is inactive. inactive.

Type: string
Required

vendorApplication

Status information for XFS4IoT services implementing the Vendor Application interface. This will be null in Common.Status if the interface is not supported.

Type: object, null
Default: null

vendorApplication/accessLevel

Reports the current access level as one of the following values:

  • notActive - The application is not active.
  • basic - The application is active for the basic access level.
  • intermediate - The application is active for the intermediate access level.
  • full - The application is active for the full access level.

Type: string
Required

powerManagement

Status information for XFS4IoT services implementing the PowerManagement interface. This will be null if the PowerManagement interface is not supported.

Type: object, null
Default: null

powerManagement/info

Information that can be generically applied to module providing power ranging from a simple non-rechargeable battery to a more complex device such as a UPS. This will be null if is not supported.

Type: object, null
Default: null

powerManagement/info/powerInStatus

Specify the input power or mains power status. Specified as one of the following:

  • powering - The input power source is live and supplying power to the power supply module.
  • noPower - The input power source is not supplying power to the power supply module.

This property may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

powerManagement/info/powerOutStatus

Specify the output power status. Specified as one of the following:

  • powering - The power supply module is supplying power to the connected devices.
  • noPower - The power supply module is not supplying power to the connected devices.

This property may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

powerManagement/info/batteryStatus

The charge level of the battery. Specified as one of the following:

  • full - The battery charge level is full, either the battery is new or fully charged for a rechargeable battery.
  • low - Although the battery level is still operational, this is an advance notice which should trigger a maintenance schedule without delay.
  • operational - The charge level is nominally between the levels "full" and "low".
  • critical - The battery level is no longer operational, this is an alert which should trigger maintenance without delay. Consider that the device may also not be powered properly.
  • failure - A battery fault detected. The device powered by the battery is no longer powered properly. Immediate maintenance should be performed. This may be a failure from the battery charging module for a rechargeable battery.

This property may be null in Common.StatusChangedEvent if unchanged or if the device does not have a battery.

Type: string, null
Default: null

powerManagement/info/batteryChargingStatus

The charging status of the battery. This will be null if the battery is not rechargeable. Specified as one of the following:

  • charging - The battery is charging power. When the battery is fully charged, the state changes to "notCharging" and the property BatteryStatus reports "full".
  • discharging - The battery is discharging power.
  • notCharging - The battery is not charging power.

This property may be null in Common.StatusChangedEvent if unchanged or if the battery is not rechargeable.

Type: string, null
Default: null

powerManagement/powerSaveRecoveryTime

Specifies the actual number of seconds required by the device to resume its normal operational state from the current power saving mode. This value is 0 if the power saving mode has not been activated. This property is null if power save control is not supported or Common.StatusChangedEvent if unchanged..

Type: integer, null
Minimum: 0
Default: null

banknoteNeutralization

The status of the banknote neutralization. If this property is null in Common.Status, banknote neutralization is not supported. It may be null in Common.StatusChangedEvent but that does not mean the interface is not supported, only that its properties haven't changed.

Type: object, null
Default: null

banknoteNeutralization/state

The state of the banknote neutralization. The client application can monitor and verify it before deciding to continue operations. This state can be specified more precisely by using the optional property submode

Type: object
Required

banknoteNeutralization/state/mode

The state of the banknote neutralization.

  • fault - A system fault occurred or due to a hardware error or other condition, the status cannot be determined.
  • armed - The protection is now armed.
  • disarmed - The protection is now disarmed.
  • neutralizationTriggered - The neutralization trigger occurred.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/state/submode

Additional information related to the current mode of the banknote neutralization. If this property is null, it is not applicable in the current context or it has not changed.

  • allSafeSensorsIgnored - Intentionally the protection is now partially armed in response to SetProtection "ignoreAllSafeSensors". All the safe sensors are ignored meanwhile the banknote neutralization in the Storage Unit remains armed.
  • armPending - The protection activation is intentionally delayed by configuration.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/safeDoor

The state of the safe door viewed by the sensors dedicated to the banknote neutralization.

  • fault - A fault has occurred on this sensor.
  • doorOpened - The door is opened.
  • doorClosed - The door is closed.
  • disabled - This sensor is disabled by configuration.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/safeBolt

The state of the safe bolt viewed by the sensors dedicated to the banknote neutralization.

  • fault - A fault has occurred on this sensor.
  • boltUnlocked - The bolt is unlocked.
  • boltLocked - The bolt is locked.
  • disabled - This sensor is disabled by configuration.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/tilt

Specifies the tilt state as one of the following values:

  • fault - A fault has occurred on this sensor.
  • notTilted - It is in normal operating position.
  • tilted - It has been tilted from its normal operating position.
  • disabled - This sensor is disabled by configuration.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/light

Specifies the light sensing as one of the following values:

  • fault - A fault has occurred on this sensor.
  • notConfigured - The light module is found but it is not enabled by configuration.
  • detected - Light is detected.
  • notDetected - No light is detected.
  • disabled - This sensor is disabled by configuration.

If the light module is not supported, null will be reported in Common.Status. This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/gas

Specifies the gas sensing as one of the following values:

  • initializing - The status is not available yet. It is important to mention that the warm-up and calibration of the gas sensor can take a few minutes.
  • fault - A fault has occurred on this sensor.
  • notConfigured - The gas module is found but it is not enabled by configuration.
  • notDetected - No gas detected.
  • partialWarningLevel - A warning level of gas is partially detected.
  • warningLevel - A warning level of gas is undoubtedly detected.
  • partialCriticalLevel - A critical level of gas is partially detected.
  • criticalLevel - A critical level of gas is undoubtedly detected.
  • disabled - This sensor is disabled by configuration.

If the gas module is not supported, null will be reported in Common.Status. This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/temperature

Specifies the temperature sensing as one of the following values:

  • fault - A fault has occurred on this sensor.
  • ok - The temperature is in the operating range.
  • tooCold - Too cold temperature.
  • tooHot - Too hot temperature.
  • disabled - This sensor is disabled by configuration.

This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/seismic

Specifies the seismic sensing in the banknote neutralization as one of the following values:

  • fault - A fault has occurred on this sensor.
  • notConfigured - The seismic sensor is found but it is not enabled by configuration.
  • notDetected - No seismic activity detected.
  • warningLevel - A warning level of seismic activity has been detected.
  • criticalLevel - A critical level of seismic activity has been detected.
  • disabled - This sensor is disabled by configuration.

If the seismic module is not supported, null will be reported in Common.Status. This may be null in Common.StatusChangedEvent if unchanged.

Type: string, null
Default: null

banknoteNeutralization/customInputs

A list of state for one or more custom input accordingly to those defined in CustomInputs in Capabilities. If there is no available configured Custom inputs, null will be reported in Common.Status This may be null in Common.StatusChangedEvent if unchanged.

Type: object, null
Default: null

banknoteNeutralization/customInputs/disableGas (example name)

Describes what an input is capable of or can be configured to handle:

The following standard names are defined:

  • maintenance - Request the banknote neutralization to go in maintenance mode.
  • triggerNeutralization - Request the banknote neutralization to trigger the neutralization.
  • disableGas - Request the banknote neutralization to disable the gas detection.
  • disableSeismic - Request the banknote neutralization to disable the seismic detection.
  • disableSafeDoorAttack - Request the banknote neutralization to disable the safe door attack detection.

Additional non-standard input type names are also allowed:

  • oem[A-Z][a-zA-Z]* - a non standard input type name.

Type: object
Name Pattern: ^(maintenance|triggerNeutralization|disableGas|disableSeismic|disableSafeDoorAttack|oem[A-Z][a-zA-Z]*)$

banknoteNeutralization/customInputs/disableGas/inputState

Specifies the status of a custom input as one of the following values:

  • fault - A fault has occurred on the custom input, the status cannot be determined.
  • ok - The custom input is in a non-triggered state.
  • triggered - The custom input has been triggered.
  • disabled - The custom input is disabled by configuration.

Type: string
Default: "disabled"

banknoteNeutralization/warnings

This indicates warnings that require special attention but banknote neutralization is still operational. Each status is reflected by a boolean value which is true if the warning status is detected otherwise it is false.

Type: object, null
Default: null

banknoteNeutralization/warnings/protectionArmingFault

At least one banknote neutralization protection of a Storage Unit stayed disarmed after attempting to arm it.

Type: boolean
Default: false

banknoteNeutralization/warnings/protectionDisarmingFault

At least one banknote neutralization protection of a Storage Unit stayed armed after attempting to disarm it.

Type: boolean
Default: false

banknoteNeutralization/warnings/externalMainPowerOutage

A main power outage of the banknote neutralization occurred.

Type: boolean
Default: false

banknoteNeutralization/warnings/storageUnitLowPowerSupply

At least the power supply of one banknote neutralization of a Storage Unit is low.

Type: boolean
Default: false

banknoteNeutralization/warnings/armedAutonomous

The protection is armed but at least one banknote neutralization of a Storage Unit runs in an autonomous mode.

Type: boolean
Default: false

banknoteNeutralization/warnings/armedAlarm

The protection is armed but the banknote neutralization is in alarm mode.

Type: boolean
Default: false

banknoteNeutralization/warnings/gasWarningLevel

A warning level of gas is detected.

Type: boolean
Default: false

banknoteNeutralization/warnings/seismicActivityWarningLevel

A warning level of the seismic activity is detected.

Type: boolean
Default: false

banknoteNeutralization/errors

This indicates errors reflect reasons of failure requiring immediate attention. Each status is reflected by a boolean value which is true if the error status is detected otherwise it is false. If one of them is true, banknote neutralization no longer works under normal conditions and may no longer be fully operational.

Type: object, null
Default: null

banknoteNeutralization/errors/protectionEnablingFailure

A critical error occurred while arming it.

Type: boolean
Default: false

banknoteNeutralization/errors/protectionDisarmingFailure

A critical error occurred while disarming it.

Type: boolean
Default: false

banknoteNeutralization/errors/storageUnitPowerSupplyFailure

There is a failure of at least one banknote neutralization power supply of a Storage Unit.

Type: boolean
Default: false

banknoteNeutralization/errors/backupBatteryFailure

There is a failure of the backup battery.

Type: boolean
Default: false

banknoteNeutralization/errors/gasCriticalLevel

A critical level of gas is detected.

Type: boolean
Default: false

banknoteNeutralization/errors/light

Light is detected.

Type: boolean
Default: false

banknoteNeutralization/errors/tilted

At least one banknote neutralization unit has been tilted from its normal operating position.

Type: boolean
Default: false

banknoteNeutralization/errors/seismicActivityCriticalLevel

A critical level of the seismic activity is detected.

Type: boolean
Default: false

4.2.2 - Common.ErrorEvent

This event reports that an error has occurred. In most cases, this is in addition to being reported via the error code that is returned as the command completion.

In order to supply the maximum information, these events should be sent as soon as an error is detected. In particular, if an error is detected during the processing of a command, then the event should be sent before the command completion message.

Unsolicited Message

Payload, Version 2.0, Required
{ "eventId": "hardware", "action": "reset", "vendorDescription": "An error occurred in position B." }
Properties

eventId

Specifies the type of error. Following values are possible:

  • hardware - The error is a hardware error.
  • software - The error is a software error.
  • user - The error is a user error.
  • fraudAttempt - Some devices are capable of identifying a malicious physical attack which attempts to defraud valuable information or media. In this circumstance, this is returned to indicate a fraud attempt has occurred.

Type: string
Required

action

The action required to manage the error. This can be null if no action is required. Possible values are:

  • reset - Reset device to attempt recovery using a Reset command, but should not be used excessively due to the potential risk of damage to the device. Intervention is not required, although if repeated attempts are unsuccessful then maintenance may be reported.
  • softwareError - A software error occurred. Contact software vendor.
  • configuration - A configuration error occurred. Check configuration.
  • clear - Recovery is not possible. A manual intervention for clearing the device is required. This value is typically returned when a hardware error has occurred which banking personnel may be able to clear without calling for technical maintenance, e.g. 'replace paper', or 'remove cards from retain bin'.
  • maintenance - Recovery is not possible. A technical maintenance intervention is required. This value is only used for hardware errors and fraud attempts. This value is typically returned when a hardware error or fraud attempt has occurred which requires field engineer specific maintenance activity. A Reset command may be used to attempt recovery after intervention, but should not be used excessively due to the potential risk of damage to the device. Vendor Application may be required to recover the device.
  • suspend - Device will attempt auto recovery and will advise any further action required via a Common.StatusChangedEvent or another Common.ErrorEvent.

Type: string, null
Default: null

vendorDescription

A vendor-specific description of the error. May be null if not applicable.

Type: string, null
Default: null

4.2.3 - Common.NonceClearedEvent

This event reports that the end-to-end security nonce value has been cleared on the device. This could be because the nonce was explicitly cleared with Common.ClearCommandNonce, automatically cleared by a timeout, or cleared by actions documented for each device.

Unsolicited Message

Payload, Version 2.0
{ "reasonDescription": "Nonce cleared by timeout" }
Properties

reasonDescription

Optional text describing why the nonce was cleared. The value of this text should not be relied on.

Type: string, null
Default: null

4.2.4 - Common.ConfigurationChangedEvent

This event indicates the service configuration has changed.

The payload will contain the current values of the configuration items which changed.

Configuration payloads are service specific. See Configuration for details of how to get and set service specific configuration.

Unsolicited Message

Payload, Version 1.0
This message does not define any properties.

5 - Card Reader Interface

This chapter defines the Card Reader interface functionality and messages.

This interface allows for the operation of the following categories of card readers:

  • Motorized card reader/writer
  • Swipe card reader (writing facilities only partially included)
  • Dip card reader
  • Latched dip card reader
  • Contactless chip card readers
  • Permanent chip card readers (each chip is accessed through a unique service)

Some motorized card reader/writers have storage units from which cards can be dispensed. Some have storage units in which a card can temporarily be parked to enable another card to be moved into the card reader.

The following tracks/chips and the corresponding international standards are considered in this document:

  • Track 1 - ISO 7811
  • Track 2 - ISO 7811
  • Track 3 - ISO 7811 / ISO 4909
  • Cash Transfer Card Track 1 - (JIS I: 8 bits/char) Japan
  • Cash Transfer Card Track 3 - (JIS I: 8 bits/char) Japan
  • Front Track 1 - (JIS II) Japan
  • Watermark - Sweden
  • Chip (contacted) - ISO 7816
  • Chip (contactless) - ISO 10536, ISO 14443 and ISO 18092

In addition to the pure reading of the tracks mentioned above, security boxes can be used via this service to check the data of writable tracks for manipulation. These boxes (such as CIM or MM) are sensor-equipped devices that can check some other information on the card and compare it with the track data.

When the service controls a permanently connected chip card, unsupportedCommand will be returned to all commands except Common.Status, Common.Capabilities, CardReader.ChipPower, CardReader.ChipIO and CardReader.Reset.

The following defines the roles and responsibilities of an application within EMV: A distinction needs to be made between EMV Contact support and EMV Contactless support.

When defining an EMV Contact implementation:

  • EMV Level 2 interaction is handled by the client or above.
  • EMV Level 1 interaction is handled by the device.

All EMV status information that is defined as a Level 1 responsibility in the EMV specification should be handled by the service.

EMVCo grants EMV Level 1 Approvals to contact IFMs and EMVCo Level 2 Approvals to Application Kernels.

When defining an EMV Contactless implementation, the responsibilities will depend on the type of EMV contactless product being implemented.

There are different EMVCo defined product types. They can be found in the EMVCo Type Approval - Contactless Product - Administrative Process document [Ref. cardreader-1]. In this specification when referring to the Contactless Product Type, Intelligent Card Reader, the following must be included and handled by the device:

  • An EMVCo Approved Level 1 Contactless PCD
  • Entry Point and POS System Architecture according to Book A and B
  • EMV Kernels according to Book C1 to C7 (minimum one kernel needs to be supported)

The Network, Consumer and Merchant Interfaces will be managed by the client or above.

5.1 - General Information

5.1.1 - References

ID Description
cardreader-1 EMVCo Terminal Type Approval Contactless Product Administrative Process 2.9
cardreader-2 EMVCo Integrated Circuit Card Specifications for Payment Systems Version 4.3
cardreader-3 EMVCo Contactless Specifications for Payment Systems, Version 2.4
cardreader-4 ISO 8583:1987 Bank card originated messages — Interchange message specifications — Content for financial transactions
cardreader-5 ISO 4217

5.1.2 - Intelligent Contactless Card Reader

In relation to contactless transactions, the terminology used in this specification is based on the EMV Contactless Specifications for Payment Systems. See References.

There are a number of types of payment systems (or EMV) compliant contactless card readers, from the Intelligent Card Reader where the reader device handles most of the transaction processing and only returns the result, to a transparent card reader where the contactless card reader device provides a generic communication channel to the card without having any in-built transaction processing capabilities.

A contactless payment system transaction can be performed in two different ways, magnetic stripe emulation where the data returned from the chip is formatted as if it was read from the magnetic stripe, and EMV-like where, in a similar way to a contact EMV transaction, the chip returns a full set of BER-TLV (Basic Encoding Rules-Tag Length Value) data. Each payment system defines when each type, or profile, is used for a transaction, but it is usually dependent on both the configuration of the terminal and contactless card being tapped.

This specification will use “magnetic stripe emulation” and “EMV-like” to identify the two profiles of contactless transactions.

Support for a generic contactless communication channel to the card is provided via the CardReader.ChipIO command. This is suitable for use with a transparent contactless card reader or with an intelligent contactless card reader device operating in a pass-through mode.

The CardReader.ReadRawData command can be used with an intelligent contactless card reader device to provide magnetic track emulation transactions. Only magnetic track emulation transactions can be supported using this command.

When using an intelligent contactless card reader to support both EMV-like and magnetic track emulation transactions a number of commands are required. The CardReader.EMVClessConfigure command allows the exchange of data to configure the reader for card acceptance and the CardReader.EMVClessPerformTransaction command enables the reader and performs the transaction with the card when it is tapped. In most cases all the transaction steps involving the card are completed within the initial card tap. A sequence diagram showing the expected command sequences, as well as the cardholder and client actions when performing a contactless card based transaction.

Some contactless payment systems allow a 2nd tap of the contactless card. For example, a 2nd tap can be used to process authorization data received from the host. In the case of issuer update data this second tap is performed via the CardReader.EMVClessIssuerUpdate command. A sequence diagram showing the expected CardReader command sequences, as well as the cardholder and client actions. The CardReader.EMVClessQueryApplications and CardReader.EMVClessConfigure commands specified later in this document refer to the EMV terminology “Application Identifier (AID) - Kernel Combinations”. A detailed explanation can be found in Refs. [cardreader-2] and [cardreader-3].

This document refers to BER-TLV tags. These are defined by each individual payment systems and contain the data exchanged between the client, contactless card and an intelligent contactless card reader. They are used to configure and prepare the intelligent contactless card reader for a transaction and are also part of the data that is returned by the reader on completion of a card tap.

Based on the applicable payment system application is expected to know which tags are required to be configured, what values to use for the tags and how to interpret the tags returned. Intelligent readers are expected to know the BER-TLV tag definitions supported per payment system application. The tags provided in this document are examples of the types of tags applicable to each command. They are not intended to be a definite list.

5.1.3 - Intelligent Contactless Card Reader Sequence Diagrams

This section illustrates the sequence diagrams of EMV-like contactless intelligent card reader transactions.

5.1.3.1 - Single Tap Transaction Without Issuer Update Processing

GeneratedDiagram

5.1.3.2 - Double Tap Transaction With Issuer Update Processing

GeneratedDiagram

5.1.3.3 - Card Removed Before Completion

GeneratedDiagram

5.2 - Command Messages

5.2.1 - CardReader.QueryIFMIdentifier

This command is used to retrieve the complete list of registration authority Interface Module (IFM) identifiers. The primary registration authority is EMVCo, but other organizations are also supported for historical or local country requirements.

New registration authorities may be added in the future so applications should be able to handle the return of any additional properties included in ifmIDs.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "ifmIdentifiers": { "emv": "Example IFM Identifier", "europay": See ifmIdentifiers/emv } }
Properties

ifmIdentifiers

An array of the IFM identifiers supported by the service or null if none are supported.

Type: object, null
Default: null

ifmIdentifiers/emv (example name)

Specifies a single IFM identifier supported by the service. The property name is the IFM authority, the property value is the IFM identifier of the chip card reader (or IFM) as assigned by the specified authority. The following IFM authorities are available:

  • emv - The Level 1 Type Approval IFM identifier assigned by EMVCo.
  • europay - The Level 1 Type Approval IFM identifier assigned by Europay.
  • visa - The Level 1 Type Approval IFM identifier assigned by VISA.
  • giecb - The IFM identifier assigned by GIE Cartes Bancaires.

Type: string
Name Pattern: ^emv$|^europay$|^visa$|^giecb$

Event Messages

None

5.2.2 - CardReader.EMVClessQueryApplications

This command is used to retrieve the supported payment system applications available within an intelligent contactless card unit. The payment system application can either be identified by an AID or by the AID in combination with a Kernel Identifier. The Kernel Identifier has been introduced by the EMVCo specifications; see [Ref. cardreader-3].

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 3.0
{ "appData": [{ "aid": "O2gAUACFyEARAJAC", "kernelIdentifier": "O2gAUACFyEARAJAC" }] }
Properties

appData

An array of application data objects which specifies a supported application identifier (AID) and associated Kernel Identifier.

Type: array (object), null
MinItems: 1
Default: null

appData/aid

Contains the Base64 encoded payment system application identifier (AID) supported by the intelligent contactless card unit.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

appData/kernelIdentifier

Contains the Base64 encoded Kernel Identifier associated with the aid. This data may be null if the reader does not support Kernel Identifiers for example in the case of legacy approved contactless readers.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null

Event Messages

None

5.2.3 - CardReader.ReadRawData

For motor driven card readers, the card unit checks whether a card has been inserted. If so, all specified tracks are read immediately. If reading the chip is requested, the chip will be contacted and reset and the ATR (Answer To Reset) data will be read. When this command completes the chip will be in contacted position. This command can also be used for an explicit cold reset of a previously contacted chip.

This command should only be used for user cards and should not be used for permanently connected chips.

If no card has been inserted, and for all other categories of card readers, the card unit waits for the period of time specified in the call for a card to be either inserted or pulled through. The next step is trying to read all tracks specified.

The CardReader.InsertCardEvent will be generated when there is no card in the card reader and the device is ready to accept a card.

For non-motorized card readers which read track data on card exit, the invalidData completion code is returned when a call to this command is made to read both track data and chip data.

For latched dip card readers, the device may, dependent on configuration, automatically latch the card when the chip card will be read, i.e. chip is specified. To make sure the card is unlatched so that it can be removed by the card holder, the CardReader.Move command must be issued.

For contactless chip card readers, a collision of two or more card signals may happen. In this case, if the device is not able to pick the strongest signal, the cardCollision error will be returned.

Command Message

Payload, Version 2.0
{ "track1": false, "track2": false, "track3": false, "chip": false, "security": false, "fluxInactive": false, "watermark": false, "memoryChip": false, "track1Front": false, "frontImage": false, "backImage": false, "track1JIS": false, "track3JIS": false, "ddi": false }
Properties

track1

Track 1 of the magnetic stripe will be read.

Type: boolean
Default: false

track2

Track 2 of the magnetic stripe will be read.

Type: boolean
Default: false

track3

Track 3 of the magnetic stripe will be read.

Type: boolean
Default: false

chip

The chip will be read.

Type: boolean
Default: false

security

A security check will be performed.

Type: boolean
Default: false

fluxInactive

If the Flux Sensor is programmable it will be disabled in order to allow chip data to be read on cards which have no magnetic stripes.

Type: boolean
Default: false

watermark

The Swedish Watermark track will be read.

Type: boolean
Default: false

memoryChip

The memory chip will be read.

Type: boolean
Default: false

track1Front

Track 1 data is read from the magnetic stripe located on the front of the card. In some countries this track is known as JIS II track.

Type: boolean
Default: false

frontImage

The front image of the card will be read in Base64 PNG format.

Type: boolean
Default: false

backImage

The back image of the card will be read in Base64 PNG format.

Type: boolean
Default: false

track1JIS

Track 1 of Japanese cash transfer card will be read. In some countries this track is known as JIS I track 1 (8bits/char).

Type: boolean
Default: false

track3JIS

Track 3 of Japanese cash transfer card will be read. In some countries this track is known as JIS I track 3 (8bits/char).

Type: boolean
Default: false

ddi

Dynamic Digital Identification data of the magnetic stripe will be read.

Type: boolean
Default: false

Completion Message

Payload, Version 3.0
{ "errorCode": "mediaJam", "track1": { "status": "dataMissing", "data": "O2gAUACFyEARAJAC" }, "track2": See track1 properties "track3": See track1 properties "chip": [{ "status": See track1/status, "data": See track1/data }], "security": { "status": See track1/status, "data": "readLevel1" }, "watermark": See track1 properties "memoryChip": { "status": See track1/status, "protocol": "chipT0", "data": "O2gAUACFyEARAJAC" }, "track1Front": See track1 properties "frontImage": "O2gAUACFyEARAJAC", "backImage": "O2gAUACFyEARAJAC", "track1JIS": See track1 properties "track3JIS": See track1 properties "ddi": See track1 properties }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • mediaJam - The card is jammed. Operator intervention is required.
  • shutterFail - The open of the shutter failed due to manipulation or hardware error. Operator intervention is required.
  • noMedia - The card was removed before completion of the read action (the event CardReader.MediaInsertedEvent has been generated). For motor driven devices, the read is disabled; i.e. another command has to be issued to enable the reader for card entry.
  • invalidMedia - No track or chip found; card may have been inserted or pulled through the wrong way.
  • cardTooShort - The card that was inserted is too short. When this error occurs the card remains at the exit slot.
  • cardTooLong - The card that was inserted is too long. When this error occurs the card remains at the exit slot.
  • securityFail - The security module failed reading the card's security and no other data source was requested.
  • cardCollision - There was an unresolved collision of two or more contactless card signals.

Type: string, null
Default: null

track1

Contains the data read from track 1. The property is null if not requested.

Type: object, null
Default: null

track1/status

The status values applicable to all data sources. This property is null if the data is OK.

The status values applicable to all data sources. This property is null if the data is OK.

Possible values are:

  • dataMissing - The track/chip/memory chip is blank.
  • dataInvalid - The data contained on the track/chip/memory chip is invalid. This will typically be returned when data reports badReadLevel or dataInvalid.
  • dataTooLong - The data contained on the track/chip/memory chip is too long.
  • dataTooShort - The data contained on the track/chip/memory chip is too short.
  • dataSourceNotSupported - The data source to read from is not supported by the service.
  • dataSourceMissing - The data source to read from is missing on the card, or is unable to be read due to a hardware problem, or the module has not been initialized. For example, this will be returned on a request to read a Memory Card and the customer has entered a magnetic card without associated memory chip. This will also be reported when data reports noData, notInitialized or hardwareError. This will also be reported when the image reader could not create a BMP file due to the state of the image reader or due to a failure.

Type: string, null
Default: null

track1/data

Base64 encoded representation of the data. This property is null if not read.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null
Sensitive

track2

Contains the data read from track 2. The property is null if not requested.

Type: object, null
Default: null

track3

Contains the data read from track 3. The property is null if not requested.

Type: object, null
Default: null

chip

Contains the ATR data read from the chip. For contactless chip card readers, multiple identification information can be returned if the card reader detects more than one chip. Each chip identification information is returned as an individual data array element. The property is null if not requested.

Type: array (object), null
MinProperties: 1
MinItems: 1
Default: null

security

Contains the data returned by the security module (i.e., MM, CIM86). If the check could not be executed, status and data indicate the cause of the security check failure; the errorCode will only be securityFail if no other data source is requested. The property is null if not requested.

Type: object, null
Default: null

security/data

The security data can be one of the following: This property is null if there is no security data on the card.

  • readLevel1 - The security data readability level is 1.
  • readLevel2 - The security data readability level is 2.
  • readLevel3 - The security data readability level is 3.
  • readLevel4 - The security data readability level is 4.
  • readLevel5 - The security data readability level is 5.
  • badReadLevel - The security data reading quality is not acceptable.
  • dataInvalid - The validation of the security data with the specific data on the magnetic stripe was not successful.
  • hardwareError - The security module could not be used because of a hardware error.
  • notInitialized - The security module could not be used because it was not initialized (e.g., CIM key is not loaded).

Type: string, null
Default: null

watermark

Contains the data read from the Swedish Watermark track. The property is null if not requested.

Type: object, null
Default: null

memoryChip

Memory Card Identification data read from the memory chip. The property is null if not requested.

Type: object, null
Default: null

memoryChip/protocol

The memory card protocol used to communicate with the card. It can be one of the following:

  • chipT0 - The card reader has used the T=0 protocol.
  • chipT1 - The card reader has used the T=1 protocol.
  • chipTypeAPart3 - The card reader has used the ISO 14443 (Part3) Type A contactless chip card protocol.
  • chipTypeAPart4 - The card reader has used the ISO 14443 (Part4) Type A contactless chip card protocol.
  • chipTypeB - The card reader has used the ISO 14443 Type B contactless chip card protocol.
  • chipTypeNFC - The card reader has used the ISO 18092 (106/212/424kbps) contactless chip card protocol.

Type: string
Required

memoryChip/data

Contains the data read from the memory chip in Base64. This property is null if not read.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null

track1Front

Contains the data read from the front track 1. In some countries this track is known as JIS II track. This property is null if not read.

Type: object, null
Default: null

frontImage

Base64 encoded representation of the BMP image file for the front of the card.

The property is null if not requested or not read.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null

backImage

Base64 encoded representation of the BMP image file for the back of the card.

The property is null if not requested or not read.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null

track1JIS

Contains the data read from JIS I track 1 (8bits/char). The property is null if not requested.

Type: object, null
Default: null

track3JIS

Contains the data read from JIS I track 3 (8bits/char). The property is null if not requested.

Type: object, null
Default: null

ddi

Contains the dynamic digital identification data read from magnetic stripe. The property is null if not requested.

Type: object, null
Default: null

Event Messages

5.2.4 - CardReader.WriteRawData

For motor-driven card readers, the ID card unit checks whether a card has been inserted. If so, the data is written to the tracks.

If no card has been inserted, and for all other categories of devices, the ID card unit waits for the application specified timeout for a card to be either inserted or pulled through. The next step is writing the data to the respective tracks.

The CardReader.InsertCardEvent event will be generated when there is no card in the card reader and the device is ready to accept a card.

The application must pass the magnetic stripe data in ASCII without any sentinels, encoded in Base64 (See CardReader.ReadRawData). If the data passed in is too long the invalidData error code will be returned.

This procedure is followed by data verification.

If power fails during a write the outcome of the operation will be vendor specific, there is no guarantee that the write will have succeeded.

Command Message

Payload, Version 3.0
{ "track1": { "data": "O2gAUACFyEARAJAC", "writeMethod": "loco" }, "track2": See track1 properties "track3": See track1 properties "track1Front": See track1 properties "track1JIS": See track1 properties "track3JIS": See track1 properties "acmeTrack1": See track1 properties "acmeTrack2": See track1 properties }
Properties

track1

Specifies data is to be written to track 1. This property is null if not applicable.

Type: object, null
Default: null

track1/data

Base64 encoded representation of the data.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

track1/writeMethod

Indicates whether a low coercivity or high coercivity magnetic stripe is to be written. If this property is null, the service will determine whether low or high coercivity is to be used.

Specifies the write method as one of the following:

  • loco - Write using low coercivity.
  • hico - Write using high coercivity.

Type: string, null
Default: null

track2

Specifies data is to be written to track 2. This property is null if not applicable.

Type: object, null
Default: null

track3

Specifies data is to be written to track 3. This property is null if not applicable.

Type: object, null
Default: null

track1Front

Specifies data is to be written to the front track 1. In some countries this track is known as JIS II track. This property is null if not applicable.

Type: object, null
Default: null

track1JIS

Specifies data is to be written to JIS I track 1 (8bits/char). This property is null if not applicable.

Type: object, null
Default: null

track3JIS

Specifies data is to be written to JIS I track 3 (8bits/char). This property is null if not applicable.

Type: object, null
Default: null

acmeTrack1 (example name)

Specifies data is to be written to a vendor specific track. This property is null if not applicable.

Type: object, null
Default: null

Completion Message

Payload, Version 2.0
{ "errorCode": "mediaJam" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • mediaJam - The card is jammed. Operator intervention is required.
  • shutterFail - The open of the shutter failed due to manipulation or hardware error. Operator intervention is required.
  • noMedia - The card was removed before completion of the write action (the event CardReader.MediaInsertedEvent has been generated). For motor driven devices, the write is disabled, i.e., another command has to be issued to enable the reader for card entry.
  • invalidMedia - No track found; card may have been inserted or pulled through the wrong way.
  • writeMethod - The writeMethod value is inconsistent with device capabilities.
  • cardTooShort - The card that was inserted is too short. When this error occurs the card remains at the exit slot.
  • cardTooLong - The card that was inserted is too long. When this error occurs the card remains at the exit slot.

Type: string, null
Default: null

Event Messages

5.2.5 - CardReader.Move

This command is only applicable to motorized and latched dip card readers.

If after a successful completion event the card is at the exit position, the card will be accessible to the user. A CardReader.MediaRemovedEvent is generated to inform the application when the card is taken.

Motorized card readers

Motorized card readers can physically move cards from or to the transport or exit positions or a storage unit. The default operation is to move a card in the transport position to the exit position.

If the card is being moved from the exit position to the exit position, these are valid behaviors:

  1. The card does not move as the card reader can detect the card is already in the correct position.
  2. The card is moved back into the card reader then moved back to the exit to ensure the card is in the correct position.

Latched dip card readers

Latched dips card readers can logically move cards from the transport position to the exit position by unlatching the card. That is, the card will not physically move but will unlatch the card so that it can be removed by the card holder. If the media state is latched this command must be issued to make sure the card is unlatched so that it can be removed by the card holder. Dependent on configuration, the card may be physically latched or unlatched.

Command Message

Payload, Version 2.0
{ "from": "unit1", "to": "exit" }
Properties

from

Specifies where the card should be moved from as one of the following:

  • exit - The card will be moved from the exit position.
  • transport - The card will be moved from the transport position. This is the only value applicable to latched dip card readers.
  • <storage unit identifier> - The card will be moved from the storage unit with matching identifier. The storage unit type must be either dispense or park.

Type: string
Pattern: ^exit$|^transport$|^unit[0-9A-Za-z]+$
Default: "transport"

to

Specifies where the card should be moved to as one of the following:

  • exit - The card will be moved to the exit. This is the only value applicable to latched dip card readers.
  • transport - The card will be moved to the transport just behind the exit slot.
  • <storage unit identifier> - The card will be moved to the storage unit with matching identifier. The storage unit type must be either retain or park.

Type: string
Pattern: ^exit$|^transport$|^unit[0-9A-Za-z]+$
Default: "exit"

Completion Message

Payload, Version 2.0
{ "errorCode": "mediaJam" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • mediaJam - The card is jammed. Operator intervention is required.
  • shutterFail - The open of the shutter failed due to manipulation or hardware error. Operator intervention is required.
  • noMedia - No card is in the requested from position.
  • occupied - A card already occupies the requested to position.
  • full - The to position is full. The card is still in the device.
  • mediaRetained - The card has been retained during attempts to move it to the exit position. The device is clear and can be used.

Type: string, null
Default: null

Event Messages

None

5.2.6 - CardReader.SetKey

This command is used for setting the DES key that is necessary for operating a CIM86 module. The command must be executed before the first read command is issued to the card reader.

Command Message

Payload, Version 3.0, Required
{ "keyValue": "O2gAUACFyEARAJAC" }
Properties

keyValue

Contains the Base64 encoded payment containing the CIM86 DES key. This key is supplied by the vendor of the CIM86 module.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

Completion Message

Payload, Version 2.0
{ "errorCode": "invalidKey" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • invalidKey - The key does not fit to the security module.

Type: string, null
Default: null

Event Messages

None

5.2.7 - CardReader.ChipIO

This command is used to communicate with the chip. Transparent data is sent from the application to the chip and the response of the chip is returned transparently to the application.

The identification information, e.g., ATR of the chip must be obtained before issuing this command. The identification information for a user card or the Memory Card Identification (when available) must initially be obtained using CardReader.ReadRawData. The identification information for subsequent resets of a user card can be obtained using either CardReader.ReadRawData or CardReader.ChipPower. The ATR for permanent connected chips is always obtained through CardReader.ChipPower.

For contactless chip card readers, applications need to specify which chip to contact with, as part of chipData, if more than one chip has been detected and multiple identification data has been returned by the CardReader.ReadRawData command.

For contactless chip card readers a collision of two or more card signals may happen. In this case, if the device is not able to pick the strongest signal, the cardCollision error code will be returned.

Command Message

Payload, Version 3.0, Required
{ "chipProtocol": "chipT1", "chipData": "O2gAUACFyEARAJAC" }
Properties

chipProtocol

Identifies the protocol that is used to communicate with the chip. Possible values are those described in CardReader chipProtocols. This property is ignored in communications with Memory Cards. The service knows which memory card type is currently inserted and therefore there is no need for the application to manage this.

It can be one of the following:

  • chipT0 - Use the T=0 protocol to communicate with the chip.
  • chipT1 - Use the T=1 protocol to communicate with the chip.
  • chipProtocolNotRequired - The service will automatically determine the protocol used to communicate with the chip.
  • chipTypeAPart3 - Use the ISO 14443 (Part3) Type A contactless chip card protocol to communicate with the chip.
  • chipTypeAPart4 - Use the ISO 14443 (Part4) Type A contactless chip card protocol to communicate with the chip.
  • chipTypeB - Use the ISO 14443 Type B contactless chip card protocol to communicate with the chip.
  • chipTypeNFC - Use the ISO 18092 (106/212/424kbps) contactless chip card protocol to communicate with the chip.

Type: string
Default: "chipProtocolNotRequired"

chipData

The Base64 encoded data to be sent to the chip.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

Completion Message

Payload, Version 3.0
{ "errorCode": "mediaJam", "chipProtocol": "chipT0", "chipData": "O2gAUACFyEARAJAC" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • mediaJam - The card is jammed. Operator intervention is required.
  • noMedia - There is no card inside the device.
  • invalidMedia - No chip found; card may have been inserted the wrong way.
  • invalidData - An error occurred while communicating with the chip.
  • protocolNotSupported - The protocol used was not supported by the service.
  • atrNotObtained - The ATR has not been obtained.
  • cardCollision - There was an unresolved collision of two or more contactless card signals.

Type: string, null
Default: null

chipProtocol

Identifies the protocol that is used to communicate with the chip. This contains the same value as the corresponding property in the payload. This property is null for Memory Card dialogs.

It can be one of the following:

  • chipT0 - The T=0 protocol has been used to communicate with the chip.
  • chipT1 - The T=1 protocol has been used to communicate with the chip.
  • chipProtocolNotRequired - The service has automatically determined the protocol used to communicate with the chip.
  • chipTypeAPart3 - The ISO 14443 (Part3) Type A contactless chip card protocol has been used to communicate with the chip.
  • chipTypeAPart4 - The ISO 14443 (Part4) Type A contactless chip card protocol has been used to communicate with the chip.
  • chipTypeB - The ISO 14443 Type B contactless chip card protocol has been used to communicate with the chip.
  • chipTypeNFC - The ISO 18092 (106/212/424kbps) contactless chip card protocol has been used to communicate with the chip.

Type: string, null
Default: null

chipData

The Base64 encoded data received from the chip. This property is null if no data received.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null
Sensitive

Event Messages

None

5.2.8 - CardReader.Reset

For a top level description of the generic behavior, expectations and use of a reset command, see Service Reset.

If the device is a user card reader:

  • Dependent on the command properties, the device will attempt to move a card in transport or exit positions to the exit or transport positions or a retain storage unit.

  • For each card in the device (including parking storage units), a CardReader.MediaDetectedEvent will indicate the position or state of the card on completion of this command.

  • Dependent on device state, it may not be possible to move a card.

If the device is a permanent chip card unit, this command will power-off the chip.

Command Message

Payload, Version 2.0
{ "to": "retain", "storageId": "unit4" }
Properties

to

Specifies the position a card in the transport or exit position should be moved to as one of the following:

  • exit - Move the card to the exit position. If the card is already at the exit, it may be moved to ensure it is in the correct position to be taken.
  • retain - Move the card to a retain storage unit.
  • currentPosition - Keep the card in its current position. If the card is in the transport, it may be moved in the transport to verify it is not jammed.
  • auto - The service will select the position to which the card will be moved based on device capabilities, retain storage units available and service specific configuration.

Type: string
Default: "auto"

storageId

If the card is to be moved to a retain storage unit, this indicates the retain storage unit to which the card should be moved.

If null, the service will select the retain storage unit based on the number of retain storage units available and service specific configuration.

Type: string, null
Pattern: ^unit[0-9A-Za-z]+$
Default: null

Completion Message

Payload, Version 2.0
{ "errorCode": "mediaJam" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • mediaJam - The card is jammed. Operator intervention is required.
  • shutterFail - The device is unable to open and close its shutter.
  • retainBinFull - The retain bin is full; no more cards can be retained. The current card is still in the device.

Type: string, null
Default: null

Event Messages

None

5.2.9 - CardReader.ChipPower

This command handles the power actions that can be done on the chip.

For user chips, this command is only used after the chip has been contacted for the first time using the CardReader.ReadRawData command. For contactless user chips, this command may be used to deactivate the contactless card communication.

For permanently connected chip cards, this command is the only way to control the chip power.

Command Message

Payload, Version 2.0, Required
{ "chipPower": "cold" }
Properties

chipPower

Specifies the action to perform as one of the following:

  • cold - The chip is powered on and reset.
  • warm - The chip is reset.
  • off - The chip is powered off.

Type: string
Required

Completion Message

Payload, Version 3.0
{ "errorCode": "chipPowerNotSupported", "chipData": "O2gAUACFyEARAJAC" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • chipPowerNotSupported - The specified action is not supported by the hardware device.
  • mediaJam - The card is jammed (only applies to contact user chips). Operator intervention is required.
  • noMedia - There is no card inside the device (may not apply for contactless user chips).
  • invalidMedia - No chip found; card may have been inserted or pulled through the wrong way.
  • invalidData - An error occurred while communicating with the chip.
  • atrNotObtained - The ATR has not been obtained (only applies to user chips).

Type: string, null
Default: null

chipData

The Base64 encoded data received from the chip. This property is null if no data received.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null

Event Messages

None

5.2.10 - CardReader.EMVClessConfigure

This command is used to configure an intelligent contactless card reader before performing a contactless transaction. This command sets terminal related data elements, the list of terminal acceptable applications with associated application specific data and any encryption key data required for offline data authentication.

This command should be used prior to CardReader.EMVClessPerformTransaction. It may be called once on application start up or when any of the configuration parameters require to be changed. The configuration set by this command is persistent.

This command should be called with a complete list of acceptable payment system applications as any previous configurations will be replaced.

Command Message

Payload, Version 3.0, Required
{ "terminalData": "O2gAUACFyEARAJAC", "aidData": [{ "aid": "O2gAUACFyEARAJAC", "partialSelection": false, "transactionType": 0, "kernelIdentifier": "O2gAUACFyEARAJAC", "configData": "O2gAUACFyEARAJAC" }], "keyData": [{ "rid": "O2gAUACFyEARAJAC", "caPublicKey": { "index": 0, "algorithmIndicator": 0, "exponent": "O2gAUACFyEARAJAC", "modulus": "O2gAUACFyEARAJAC", "checksum": "O2gAUACFyEARAJAC" } }] }
Properties

terminalData

Base64 encoded representation of the BER-TLV formatted data for the terminal, e.g., Terminal Type, Transaction Category Code, Merchant Name & Location etc. Any terminal based data elements referenced in the Payment Systems Specifications or EMVCo Contactless Payment Systems Specifications Books may be included (see [Ref. cardreader-1], [Ref. cardreader-2] and [Ref. cardreader-3] for more details).

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

aidData

Specifies the list of acceptable payment system applications. For EMVCo approved contactless card readers each AID is associated with a Kernel Identifier and a Transaction Type. Legacy approved contactless readers may use only the AID.

Each AID-Transaction Type or each AID-Kernel-Transaction Type combination will have its own unique set of configuration data. See [Ref. cardreader-2] and [Ref. cardreader-3] for more details.

Type: array (object)
Required

aidData/aid

The application identifier to be accepted by the contactless chip card reader. The CardReader.EMVClessQueryApplications command will return the list of supported application identifiers.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

aidData/partialSelection

If partialSelection is true, partial name selection of the specified AID is enabled. If partialSelection is false, partial name selection is disabled. A detailed explanation for partial name selection is given in [Ref. cardreader-2], Section 11.3.5.

Type: boolean
Default: false

aidData/transactionType

The transaction type supported by the AID. This indicates the type of financial transaction represented by the first two digits of the ISO 8583:1987 Processing Code [Ref. cardreader-4].

Type: integer
Minimum: 0
Required

aidData/kernelIdentifier

Base64 encoded representation of the EMVCo defined kernel identifier associated with the aid. This will be ignored if the reader does not support kernel identifiers. This property is null if not applicable.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null

aidData/configData

Base64 encoded representation of the list of BER-TLV formatted configuration data, applicable to the specific AID-Kernel ID-Transaction Type combination. The appropriate payment systems specifications define the BER-TLV tags to be configured.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

keyData

Specifies the encryption key information required by an intelligent contactless chip card reader for offline data authentication. This property is null if not applicable.

Type: array (object), null
Default: null

keyData/rid

Specifies the payment system's Registered Identifier (RID). RID is the first 5 bytes of the AID and identifies the payments system.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

keyData/caPublicKey

CA Public Key information for the specified rid.

Type: object
Required

keyData/caPublicKey/index

Specifies the CA Public Key Index for the specific rid.

Type: integer
Minimum: 0
Required

keyData/caPublicKey/algorithmIndicator

Specifies the algorithm used in the calculation of the CA Public Key checksum. A detailed description of secure hash algorithm values is given in EMV Book 2, Annex B3; see [Ref. cardreader-2]. For example, if the EMV specification indicates the algorithm is '01', the value of the algorithm is coded as 1.

Type: integer
Minimum: 0
Required

keyData/caPublicKey/exponent

Base64 encoded representation of the CA Public Key Exponent for the specific RID. This value is represented by the minimum number of bytes required. A detailed description of public key exponent values is given in EMV Book 2, Annex B2; see [Ref. cardreader-2]. For example, representing value ‘216 + 1’ requires 3 bytes in hexadecimal (0x01, 0x00, 0x01), while value ‘3’ is coded as 0x03.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

keyData/caPublicKey/modulus

Base64 encoded representation of the CA Public Key Modulus for the specific RID.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

keyData/caPublicKey/checksum

Base64 encoded representation of the 20 byte checksum value for the CA Public Key.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

Completion Message

Payload, Version 2.0
{ "errorCode": "invalidTerminalData" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • invalidTerminalData - Input data terminalData was invalid. Contactless chip card reader could not be configured successfully.
  • invalidAidData - Input data aidData was invalid. Contactless chip card reader could not be configured successfully.
  • invalidKeyData - Input data keyData was invalid. Contactless chip card reader could not be configured successfully.

Type: string, null
Default: null

Event Messages

None

5.2.11 - CardReader.EMVClessPerformTransaction

This command is used to enable an intelligent contactless card reader. The transaction will start as soon as the card tap is detected.

Based on the configuration of the contactless chip card and the reader device, this command could return data formatted either as magnetic stripe information or as a set of BER-TLV encoded EMV tags.

This command supports magnetic stripe emulation cards and EMV-like contactless cards but cannot be used on storage contactless cards. The latter must be managed using the CardReader.ReadRawData and CardReader.ChipIO commands.

For specific payment system's card profiles an intelligent card reader could return a set of EMV tags along with magnetic stripe formatted data. In this case, two contactless card data structures will be returned, one containing the magnetic stripe like data and one containing BER-TLV encoded tags.

If no card has been tapped, the contactless chip card reader waits for the period of time specified in the command call for a card to be tapped.

For intelligent contactless card readers, any in-built audio/visual feedback such as Beep/LEDs, need to be controlled directly by the reader. These indications should be implemented based on the EMVCo and payment system's specifications.

Command Message

Payload, Version 3.0
{ "data": "O2gAUACFyEARAJAC" }
Properties

data

Base64 encoded representation of the EMV data elements in a BER-TLV format required to perform a transaction. The types of object that could be included are:

  • Transaction Type (9C)
  • Amount Authorized (9F02)
  • Transaction Date (9A)*
  • Transaction Time (9F21)*
  • Transaction Currency Code (5F2A)

Individual payment systems could define further data elements.

Tags are not mandatory with this command and this property can therefore be null.

*Tags 9A and 9F21 could be managed internally by the reader. If tags are not supplied, tag values may be used from the configuration sent previously in the CardReader.EMVClessConfigure command.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null

Completion Message

Payload, Version 3.0
{ "errorCode": "noMedia", "chip": { "txOutcome": "multipleCards", "cardholderAction": "none", "dataRead": "O2gAUACFyEARAJAC", "clessOutcome": { "cvm": "onlinePIN", "alternateInterface": "magneticStripe", "receipt": false, "uiOutcome": { "messageId": 0, "status": "notReady", "holdTime": 0, "valueDetails": { "qualifier": "amount", "value": "000000012345", "currencyCode": 826 }, "languagePreferenceData": "en" }, "uiRestart": See chip/clessOutcome/uiOutcome properties "fieldOffHoldTime": 0, "cardRemovalTimeout": 0, "discretionaryData": "O2gAUACFyEARAJAC" } }, "track1": See chip properties "track2": See chip properties "track3": See chip properties }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • noMedia - The card was removed before completion of the read operation.
  • invalidMedia - No track or chip was found or the card tapped cannot be used with this command (e.g., contactless storage cards).
  • readerNotConfigured - This command was issued before calling CardReader.EMVClessConfigure command.

Type: string, null
Default: null

chip

Contains the BER-TLV formatted data read from the chip. This property is set after the contactless transaction has been completed with EMV mode or mag-stripe mode. This property is null if not applicable.

Type: object, null
Default: null

chip/txOutcome

If multiple data sources are returned, this property is the same for each one. Specifies the contactless transaction outcome as one of the following:

  • multipleCards - Transaction could not be completed as more than one contactless card was tapped.
  • approve - Transaction was approved offline.
  • decline - Transaction was declined offline.
  • onlineRequest - Transaction was requested for online authorization.
  • onlineRequestCompletionRequired - Transaction requested online authorization and will be completed after a re-tap of the card. Transaction should be completed by issuing the CardReader.EMVClessIssuerUpdate command.
  • tryAgain - Transaction could not be completed due to a card read error. The contactless card could be tapped again to re-attempt the transaction.
  • tryAnotherInterface - Transaction could not be completed over the contactless interface. Another interface may be suitable for this transaction (for example contact).
  • endApplication - Transaction cannot be completed on the contactless card due to an irrecoverable error.
  • confirmationRequired - Transaction was not completed because of a requirement to allow entry of confirmation code on a mobile device. Transaction should be completed by issuing the CardReader.EMVClessPerformTransaction after a card removal and a re-tap of the card.

Note: The values for outcome have been mapped against the EMV Entry Point Outcome structure values defined in the EMVCo Contactless Specifications for Payment Systems (Book A and B) [Ref. cardreader-3].

Type: string
Required

chip/cardholderAction

Specifies the card holder action as one of the following:

  • none - Transaction was completed. No further action is required.
  • retap - The contactless card should be re-tapped to complete the transaction. This value can be returned when txOutcome is onlineRequest, onlineRequestCompletionRequired or confirmationRequired.
  • holdCard - The contactless card should not be removed from the field until the transaction is completed.

Type: string
Required

chip/dataRead

The Base64 encoded representation of the data read from the chip after a contactless transaction has been completed successfully. If the member name is chip, the BER-TLV formatted data contains cryptogram tag (9F26) after a contactless chip transaction has been completed successfully. If the member name is track1, track2 or track3 this contains the data read from the chip, i.e the value returned by the card reader device and no cryptogram tag (9F26).

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required
Sensitive

chip/clessOutcome

The Entry Point Outcome specified in EMVCo Specifications for Contactless Payment Systems (Book A and B) [Ref. cardreader-3]. This can be null for contactless chip card readers that do not follow EMVCo Entry Point Specifications.

Type: object, null
Default: null

chip/clessOutcome/cvm

Specifies the card holder verification method (CVM) to be performed as one of the following:

  • onlinePIN - Online PIN should be entered by the card holder.
  • confirmationCodeVerified - A confirmation code entry has been successfully done on a mobile device.
  • sign - Application should obtain card holder signature.
  • noCVM - No CVM is required for this transaction.
  • noCVMPreference - There is no CVM preference, but application can follow the payment system's rules to process the transaction.

Type: string
Required

chip/clessOutcome/alternateInterface

This specifies the alternative interface to be used to complete a transaction if applicable as one of the following:

  • contact - txOutcome is tryAnotherInterface and the contact chip interface should be used to complete a transaction.
  • magneticStripe - txOutcome is tryAnotherInterface and the magnetic stripe interface should be used to complete a transaction.

This will be null if txOutcome is not tryAnotherInterface.

Type: string, null
Default: null

chip/clessOutcome/receipt

Specifies whether a receipt should be printed.

Type: boolean
Default: false

chip/clessOutcome/uiOutcome

The user interface details required to be displayed to the card holder after processing the outcome of a contactless transaction. If no user interface details are required, this will be null. Please refer to EMVCo Contactless Specifications for Payment Systems Book A [Ref. cardreader-3], Section 6.2 for details of the data within this object.

Type: object, null
Default: null

chip/clessOutcome/uiOutcome/messageId

Represents the EMVCo defined message identifier that indicates the text string to be displayed, e.g., 0x1B is the “Authorising Please Wait” message (see EMVCo Contactless Specifications for Payment Systems Book A [Ref. cardreader-3], Section 9.4).

Type: integer
Minimum: 0
Required

chip/clessOutcome/uiOutcome/status

Represents the EMVCo defined transaction status value to be indicated through the Beep/LEDs as one of the following:

  • notReady - Contactless card reader is not able to communicate with a card. This status occurs towards the end of a contactless transaction or if the reader is not powered on.
  • idle - Contactless card reader is powered on, but the reader field is not yet active for communication with a card.
  • readyToRead - Contactless card reader is powered on and attempting to initiate communication with a card.
  • processing - Contactless card reader is in the process of reading the card.
  • cardReadOk - Contactless card reader was able to read a card successfully.
  • processingError - Contactless card reader was not able to process the card successfully.

Type: string
Required

chip/clessOutcome/uiOutcome/holdTime

Represents the hold time in units of 100 milliseconds for which the application should display the message before processing the next user interface data.

Type: integer
Minimum: 0
Default: 0

chip/clessOutcome/uiOutcome/valueDetails

Indicates a value associated with a transaction, either an amount or a balance. See [Ref. cardreader-3] for more details. This property will be null if no amount or balance is applicable.

Type: object, null
Default: null

chip/clessOutcome/uiOutcome/valueDetails/qualifier

Qualifies value. This data is defined by EMVCo as one of the following:

  • amount - value is an Amount.
  • balance - value is a Balance.

Type: string
Required

chip/clessOutcome/uiOutcome/valueDetails/value

Represents the numeric value of the amount or balance (as specified by qualifier) to be displayed where appropriate. The format of this property is defined by EMVCo.

Type: string
Pattern: ^[0-9]{12}$
Required

chip/clessOutcome/uiOutcome/valueDetails/currencyCode

Represents the numeric value of the currency code as defined by ISO 4217 [Ref. cardreader-5].

Type: integer
Minimum: 0
Maximum: 999
Required

chip/clessOutcome/uiOutcome/languagePreferenceData

Represents the language preference (EMV Tag '5F2D') if returned by the card. If not returned, this property reports null. The application should use this data to display all messages in the specified language until the transaction concludes.

Type: string, null
Pattern: ^[a-z]{2}
Default: null

chip/clessOutcome/uiRestart

The user interface details required to be displayed to the card holder when a transaction needs to be completed with a re-tap. If no user interface details are required, this will be null.

Type: object, null
Default: null

chip/clessOutcome/fieldOffHoldTime

The application should wait for this specific hold time in units of 100 milliseconds, before re-enabling the contactless card reader by issuing either the CardReader.EMVClessPerformTransaction command or the CardReader.EMVClessIssuerUpdate command depending on the value of txOutcome. For intelligent contactless card readers, the completion of this command ensures that the contactless chip card reader field is automatically turned off, so there is no need for the application to disable the field.

Type: integer
Minimum: 0
Default: 0

chip/clessOutcome/cardRemovalTimeout

Specifies a timeout value in units of 100 milliseconds for prompting the user to remove the card.

Type: integer
Minimum: 0
Default: 0

chip/clessOutcome/discretionaryData

Base64 encoded representation of the payment system's specific discretionary data read from the chip, in a BER-TLV format, after a contactless transaction has been completed. If discretionary data is not present, this will be null.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null
Sensitive

track1

Contains the chip returned data formatted in as track 1. This property is set after the contactless transaction has been completed with mag-stripe mode. This property is null if not applicable.

Type: object, null
Default: null

track2

Contains the chip returned data formatted in as track 2. This property is set after the contactless transaction has been completed with mag-stripe mode. This property is null if not applicable.

Type: object, null
Default: null

track3

Contains the chip returned data formatted in as track 3. This property is set after the contactless transaction has been completed with mag-stripe mode. This property is null if not applicable.

Type: object, null
Default: null

Event Messages

5.2.12 - CardReader.EMVClessIssuerUpdate

This command performs the post authorization processing on payment systems contactless cards.

Before an online authorized transaction is considered complete, further chip processing may be requested by the issuer. This is only required when the authorization response includes issuer update data; either issuer scripts or issuer authentication data.

The command enables the contactless card reader and waits for the customer to re-tap their card.

The contactless chip card reader waits for the period of time specified in the command request for a card to be tapped.

Command Message

Payload, Version 3.0, Required
{ "data": "O2gAUACFyEARAJAC" }
Properties

data

Base64 encoded representation of the EMV data elements in a BER-TLV format received from the authorization response that are required to complete the transaction processing. The types of object that could be listed in data are:

  • Authorization Code (if present)
  • Issuer Authentication Data (if present)
  • Issuer Scripts or proprietary payment system's data elements (if present) and any other data elements if required.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required

Completion Message

Payload, Version 3.0
{ "errorCode": "noMedia", "chip": { "txOutcome": "multipleCards", "dataRead": "O2gAUACFyEARAJAC", "clessOutcome": { "cvm": "onlinePIN", "alternateInterface": "magneticStripe", "receipt": false, "uiOutcome": { "messageId": 0, "status": "notReady", "holdTime": 0, "valueDetails": { "qualifier": "amount", "value": "000000012345", "currencyCode": 826 }, "languagePreferenceData": "en" }, "uiRestart": See chip/clessOutcome/uiOutcome properties "fieldOffHoldTime": 0, "cardRemovalTimeout": 0, "discretionaryData": "O2gAUACFyEARAJAC" } } }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • noMedia - The card was removed before completion of the read action.
  • invalidMedia - No track or chip found or card tapped cannot be used with this command (e.g., contactless storage cards or a different card than what was used to complete the CardReader.EMVClessPerformTransaction command).
  • transactionNotInitiated - This command was issued before calling the CardReader.EMVClessPerformTransaction command.

Type: string, null
Default: null

chip

Contains the BER-TLV formatted data read from the chip. This will be null if no data has been returned.

Type: object, null
Default: null

chip/txOutcome

If multiple data sources are returned, this property is the same for each one. Specifies the contactless transaction outcome as one of the following:

  • multipleCards - Transaction could not be completed as more than one contactless card was tapped.
  • approve - Transaction was approved offline.
  • decline - Transaction was declined offline.
  • tryAgain - Transaction could not be completed due to a card read error. The contactless card could be tapped again to re-attempt the transaction.
  • tryAnotherInterface - Transaction could not be completed over the contactless interface. Another interface may be suitable for this transaction (for example contact).

Note: The values for outcome have been mapped against the EMV Entry Point Outcome structure values defined in the EMVCo Contactless Specifications for Payment Systems (Book A and B) [Ref. cardreader-3].

Type: string
Required

chip/dataRead

The Base64 encoded representation of the data read from the chip after a contactless transaction has been completed successfully. The BER-TLV formatted data contains cryptogram tag (9F26) after a contactless chip transaction has been completed successfully.

Type: string
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Required
Sensitive

chip/clessOutcome

The Entry Point Outcome specified in EMVCo Specifications for Contactless Payment Systems (Book A and B) [Ref. cardreader-3]. This can be null for contactless chip card readers that do not follow EMVCo Entry Point Specifications.

Type: object, null
Default: null

chip/clessOutcome/cvm

Specifies the card holder verification method (CVM) to be performed as one of the following:

  • onlinePIN - Online PIN should be entered by the card holder.
  • confirmationCodeVerified - A confirmation code entry has been successfully done on a mobile device.
  • sign - Application should obtain card holder signature.
  • noCVM - No CVM is required for this transaction.
  • noCVMPreference - There is no CVM preference, but application can follow the payment system's rules to process the transaction.

Type: string
Required

chip/clessOutcome/alternateInterface

This specifies the alternative interface to be used to complete a transaction if applicable as one of the following:

  • contact - txOutcome is tryAnotherInterface and the contact chip interface should be used to complete a transaction.
  • magneticStripe - txOutcome is tryAnotherInterface and the magnetic stripe interface should be used to complete a transaction.

This will be null if txOutcome is not tryAnotherInterface.

Type: string, null
Default: null

chip/clessOutcome/receipt

Specifies whether a receipt should be printed.

Type: boolean
Default: false

chip/clessOutcome/uiOutcome

The user interface details required to be displayed to the card holder after processing the outcome of a contactless transaction. If no user interface details are required, this will be null. Please refer to EMVCo Contactless Specifications for Payment Systems Book A [Ref. cardreader-3], Section 6.2 for details of the data within this object.

Type: object, null
Default: null

chip/clessOutcome/uiOutcome/messageId

Represents the EMVCo defined message identifier that indicates the text string to be displayed, e.g., 0x1B is the “Authorising Please Wait” message (see EMVCo Contactless Specifications for Payment Systems Book A [Ref. cardreader-3], Section 9.4).

Type: integer
Minimum: 0
Required

chip/clessOutcome/uiOutcome/status

Represents the EMVCo defined transaction status value to be indicated through the Beep/LEDs as one of the following:

  • notReady - Contactless card reader is not able to communicate with a card. This status occurs towards the end of a contactless transaction or if the reader is not powered on.
  • idle - Contactless card reader is powered on, but the reader field is not yet active for communication with a card.
  • readyToRead - Contactless card reader is powered on and attempting to initiate communication with a card.
  • processing - Contactless card reader is in the process of reading the card.
  • cardReadOk - Contactless card reader was able to read a card successfully.
  • processingError - Contactless card reader was not able to process the card successfully.

Type: string
Required

chip/clessOutcome/uiOutcome/holdTime

Represents the hold time in units of 100 milliseconds for which the application should display the message before processing the next user interface data.

Type: integer
Minimum: 0
Default: 0

chip/clessOutcome/uiOutcome/valueDetails

Indicates a value associated with a transaction, either an amount or a balance. See [Ref. cardreader-3] for more details. This property will be null if no amount or balance is applicable.

Type: object, null
Default: null

chip/clessOutcome/uiOutcome/valueDetails/qualifier

Qualifies value. This data is defined by EMVCo as one of the following:

  • amount - value is an Amount.
  • balance - value is a Balance.

Type: string
Required

chip/clessOutcome/uiOutcome/valueDetails/value

Represents the numeric value of the amount or balance (as specified by qualifier) to be displayed where appropriate. The format of this property is defined by EMVCo.

Type: string
Pattern: ^[0-9]{12}$
Required

chip/clessOutcome/uiOutcome/valueDetails/currencyCode

Represents the numeric value of the currency code as defined by ISO 4217 [Ref. cardreader-5].

Type: integer
Minimum: 0
Maximum: 999
Required

chip/clessOutcome/uiOutcome/languagePreferenceData

Represents the language preference (EMV Tag '5F2D') if returned by the card. If not returned, this property reports null. The application should use this data to display all messages in the specified language until the transaction concludes.

Type: string, null
Pattern: ^[a-z]{2}
Default: null

chip/clessOutcome/uiRestart

The user interface details required to be displayed to the card holder when a transaction needs to be completed with a re-tap. If no user interface details are required, this will be null.

Type: object, null
Default: null

chip/clessOutcome/fieldOffHoldTime

The application should wait for this specific hold time in units of 100 milliseconds, before re-enabling the contactless card reader by issuing either the CardReader.EMVClessPerformTransaction command or the CardReader.EMVClessIssuerUpdate command depending on the value of txOutcome. For intelligent contactless card readers, the completion of this command ensures that the contactless chip card reader field is automatically turned off, so there is no need for the application to disable the field.

Type: integer
Minimum: 0
Default: 0

chip/clessOutcome/cardRemovalTimeout

Specifies a timeout value in units of 100 milliseconds for prompting the user to remove the card.

Type: integer
Minimum: 0
Default: 0

chip/clessOutcome/discretionaryData

Base64 encoded representation of the payment system's specific discretionary data read from the chip, in a BER-TLV format, after a contactless transaction has been completed. If discretionary data is not present, this will be null.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null
Sensitive

Event Messages

5.3 - Event Messages

5.3.1 - CardReader.InsertCardEvent

This event notifies the application when the device is ready for the user to insert a card.

Event Message

Payload, Version 2.0
This message does not define any properties.

5.3.2 - CardReader.MediaInsertedEvent

This event specifies that a card was inserted into the device.

Event Message

Payload, Version 2.0
This message does not define any properties.

5.3.3 - CardReader.InvalidMediaEvent

This event specifies that the media the user is attempting to insert is not a valid card or it is a card but it is in the wrong orientation.

Event Message

Payload, Version 2.0
This message does not define any properties.

5.3.4 - CardReader.TrackDetectedEvent

This event notifies the application what track data the inserted card has before the reading of the data has completed. This event will be posted once when tracks are detected during card insertion.

Event Message

Payload, Version 2.0
{ "track1": true, "track2": false, "track3": false, "watermark": false, "frontTrack1": false }
Properties

track1

The card has track 1.

Type: boolean
Default: false

track2

The card has track 2.

Type: boolean
Default: false

track3

The card has track 3.

Type: boolean
Default: false

watermark

The card has the Swedish watermark track.

Type: boolean
Default: false

frontTrack1

The card has front track 1.

Type: boolean
Default: false

5.3.5 - CardReader.EMVClessReadStatusEvent

This notifies that the communication (i.e., the commands exchanged linked to the tap) between the card and the intelligent contactless card reader are complete. The application can use this event to display intermediate messages, progress of card read, audio signals or anything else that might be required. The intelligent contactless card reader will continue the processing and the result of the processing will be returned in the output of the CardReader.EMVClessPerformTransaction command.

Event Message

Payload, Version 2.0, Required
{ "messageId": 0, "status": "notReady", "holdTime": 0, "valueDetails": { "qualifier": "amount", "value": "000000012345", "currencyCode": 826 }, "languagePreferenceData": "en" }
Properties

messageId

Represents the EMVCo defined message identifier that indicates the text string to be displayed, e.g., 0x1B is the “Authorising Please Wait” message (see EMVCo Contactless Specifications for Payment Systems Book A [Ref. cardreader-3], Section 9.4).

Type: integer
Minimum: 0
Required

status

Represents the EMVCo defined transaction status value to be indicated through the Beep/LEDs as one of the following:

  • notReady - Contactless card reader is not able to communicate with a card. This status occurs towards the end of a contactless transaction or if the reader is not powered on.
  • idle - Contactless card reader is powered on, but the reader field is not yet active for communication with a card.
  • readyToRead - Contactless card reader is powered on and attempting to initiate communication with a card.
  • processing - Contactless card reader is in the process of reading the card.
  • cardReadOk - Contactless card reader was able to read a card successfully.
  • processingError - Contactless card reader was not able to process the card successfully.

Type: string
Required

holdTime

Represents the hold time in units of 100 milliseconds for which the application should display the message before processing the next user interface data.

Type: integer
Minimum: 0
Default: 0

valueDetails

Indicates a value associated with a transaction, either an amount or a balance. See [Ref. cardreader-3] for more details. This property will be null if no amount or balance is applicable.

Type: object, null
Default: null

valueDetails/qualifier

Qualifies value. This data is defined by EMVCo as one of the following:

  • amount - value is an Amount.
  • balance - value is a Balance.

Type: string
Required

valueDetails/value

Represents the numeric value of the amount or balance (as specified by qualifier) to be displayed where appropriate. The format of this property is defined by EMVCo.

Type: string
Pattern: ^[0-9]{12}$
Required

valueDetails/currencyCode

Represents the numeric value of the currency code as defined by ISO 4217 [Ref. cardreader-5].

Type: integer
Minimum: 0
Maximum: 999
Required

languagePreferenceData

Represents the language preference (EMV Tag '5F2D') if returned by the card. If not returned, this property reports null. The application should use this data to display all messages in the specified language until the transaction concludes.

Type: string, null
Pattern: ^[a-z]{2}
Default: null

5.4 - Unsolicited Messages

5.4.1 - CardReader.MediaRemovedEvent

This unsolicited event indicates the card was manually removed by the user either during processing of a command which requires the card to be present or the card is removed from the exit position.

Unsolicited Message

Payload, Version 2.0
This message does not define any properties.

5.4.2 - CardReader.CardActionEvent

This event specifies where a card has been moved to by either the automatic power on or power off action of the device.

Unsolicited Message

Payload, Version 2.0, Required
{ "to": "unit1", "from": "transport" }
Properties

to

Position where the card was moved to. Possible values are:

  • exit - The card was moved to the exit position.
  • transport - The card was moved to the transport position.
  • <storage unit identifier> - The card was moved to the storage unit with matching identifier. The storage unit type must be retain.

Type: string
Pattern: ^exit$|^transport$|^unit[0-9A-Za-z]+$
Required

from

Position where the card was moved from. Possible values are:

  • unknown - The position of the card cannot be determined.
  • exit - The card was in the exit position.
  • transport - The card was in the transport position.
  • <storage unit identifier> - The card was in a storage unit with matching identifier. The storage unit type must be park.

Type: string
Pattern: ^unknown$|^exit$|^transport$|^unit[0-9A-Za-z]+$
Required

5.4.3 - CardReader.MediaDetectedEvent

This is generated if media is detected during a CardReader.Reset. The event payload informs the application of the position or state of a card on the completion of the CardReader.Reset command. For devices with park storage units, there will be one event for each card found.

Unsolicited Message

Payload, Version 2.0, Required
{ "position": "unit1" }
Properties

position

Specifies a card position or jammed state as one of the following:

  • exit - A card is at the exit position.
  • transport - A card is in the transport position.
  • <storage unit identifier> - A card is in the identified retain or park storage unit.
  • jammed - A card is jammed in the device.

Type: string
Pattern: ^exit$|^transport$|^jammed$|^unit[0-9A-Za-z]+$
Required

6 - Cash Management Interface

This chapter defines the Cash Management interface functionality and messages.

This specification describes the functionality of an XFS4IoT compliant Cash Management interface. It defines the service-specific commands that can be issued to the service using the WebSocket endpoint.

This interface is to be used together with Storage, Cash Dispenser and/or Cash Acceptor interfaces to handle management of storage units, cash counts and banknote information.

6.1 - General Information

6.1.1 - References

ID Description
cashmanagement-1 ISO 4217

6.1.2 - Note Classification

Cash items are classified by the XFS4IoT specification according to the following definitions. Local requirements or device capability define which of these classifications are supported - see Common.Capabilities classifications. A cash item can only be classified as one of the following:

  1. Not recognized (level 1 in XFS 3.x), defined as unrecognized in XFS4IoT.

  2. Recognized counterfeit item (level 2 in XFS 3.x), defined as counterfeit in XFS4IoT.

  3. Suspected counterfeit item (level 3 in XFS 3.x), defined as suspect in XFS4IoT.

  4. Inked, defined as inked in XFS4IoT. Inked-stained banknotes are typically items which have been stained by anti-theft devices.

  5. Genuine note (level 4 in XFS 3.x). Genuine items are further classified as follows:

  • Fit for recycling, defined as fit in XFS4IoT
  • Unfit for recycling, defined as unfit in XFS4IoT

Once classified as such, how items are handled may depend on local requirements or legislative note handling standards that may exist in various countries and economic regions. This can be used to support note handling functionality which includes:

  1. Whether counterfeit or suspect items allowed to be returned to the customer during a cash-in transaction

  2. The ability to remove counterfeit notes from circulation.

  3. Reporting of recognized, counterfeit and suspected counterfeit notes.

  4. Creating and reporting of note signatures in order to allow back-tracing of notes.

A note's classification can be changed based on the item's serial number, currency and value by specifying a classification list - see CashManagement.SetClassificationList. A classification list can be used to re-classify a matching item to a lower level, including classifying a genuine note as unfit for dispensing. Once reclassified, the note will be automatically handled according to the local country specific note handling standard or legislation for the note's new note classification, including any note retention rules. Any reclassification will result in the normal events and behavior, for example a CashManagement.InfoAvailableEvent will reflect the note's reclassification. Reclassification can be used to make dynamic changes to note handling procedures without a software upgrade, enabling functionality such as taking older notes out of circulation or handling of counterfeit notes on a local basis (commonly known as a blacklist). Note that if reclassification of an item is performed after a command which generates a CashManagement.InfoAvailableEvent, it has no impact on the content of the note information; the note’s classification remains what it was reported when the note was classified.

Reclassification cannot be used to change a note's classification to a level which makes it more likely to be accepted, for example, a note recognized as counterfeit by the device cannot be reclassified as genuine. In addition, it is not possible to re-classify a counterfeit note as unrecognized. No particular use case has been identified for reclassifying suspect or genuine items as unrecognized, but there is no reason to restrict this reclassification.

Classification lists can be specified using CashManagement.SetClassificationList and retrieved using CashManagement.GetClassificationList.

The classification list functionality can use a mask to specify serial numbers. The mask is defined as follows: A '?' character (0x003F) is the wildcard used to match a single Unicode character, and a '*' character (0x002A) is the wildcard used to match one or more Unicode characters.

For example, "S8H9??16?4" would represent a match for the serial numbers "S8H9231654" and "S8H9761684". A mask of "HD90*2" would be used to match serial numbers that begin with "HD90" and end with "2", for example "HD9028882", "HD9083276112". Note that the mask can only use one asterisk, and if a real character is required then it must be preceded by a backslash, for example: '\\' for a backslash, '\*' for an asterisk or '\?' for a question mark. Note that this flexibility means that it is possible to overlap definitions, for example "HD90*" and "HD902*" would both match on the serial number HD9028882".

6.2 - Command Messages

6.2.1 - CashManagement.GetBankNoteTypes

This command is used to obtain information about the banknote types that can be detected by the banknote reader or are supported by the configuration.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "items": { "type20USD1": { "cashItem": { "noteID": 25, "currency": "USD", "value": 20.00, "release": 1 }, "enabled": true }, "type10GBP2": See items/type20USD1 properties } }
Properties

items

An object listing which cash items the device is capable of handling and whether the cash items are enabled for acceptance. May be null if empty.

Type: object, null
Default: null

items/type20USD1 (example name)

Specifies a cash item supported by the device and whether it is enabled for acceptance.

Type: object
Name Pattern: ^type[0-9A-Z]+$

items/type20USD1/cashItem

An object containing information about a single cash item supported by the device.

Type: object
Required

items/type20USD1/cashItem/noteID

Assigned by the service. A unique number identifying a single cash item. Each unique combination of the other properties will have a different noteID. Can be used for migration of usNoteID from XFS 3.x.

Type: integer
Minimum: 1
Required

items/type20USD1/cashItem/currency

ISO 4217 currency identifier [Ref. cashmanagement-1].

Type: string
Pattern: ^[A-Z]{3}$
Required

items/type20USD1/cashItem/value

Absolute value of a cash item or items. May be a floating-point value to allow for coins and notes which have a value which is not a whole multiple of the currency unit.

If applied to a storage unit, this applies to all contents, may be 0 if mixed and may only be modified in an exchange state if applicable.

Type: number
Minimum: 0
Required

items/type20USD1/cashItem/release

The release of the cash item. The higher this number is, the newer the release.

If 0 or not reported, there is only one release of that cash item or the device is not capable of distinguishing different release of the item, for example in a simple cash dispenser.

An example of how this can be used is being able to sort different releases of the same denomination note to different storage units to take older notes out of circulation.

This value is device, banknote reader and currency description configuration data dependent, therefore a release number of the same cash item will not necessarily have the same value in different systems and any such usage would be specific to a specific device's configuration.

Type: integer
Minimum: 0
Default: 0

items/type20USD1/enabled

If true, the banknote reader will accept this note type during a cash-in operations. If false, the banknote reader will refuse this note type unless it must be retained by note classification rules.

Type: boolean
Default: true

Event Messages

None

6.2.2 - CashManagement.GetTellerInfo

This command only applies to Teller devices. It allows the application to obtain counts for each currency assigned to the teller. These counts represent the total amount of currency dispensed by the teller in all transactions.

This command also enables the application to obtain the position assigned to each teller. The teller information is persistent.

Command Message

Payload, Version 2.0
{ "tellerID": 0, "currency": "USD" }
Properties

tellerID

Identification of the teller. If invalid the error invalidTellerId is reported. If null, all tellers are reported.

Type: integer, null
Minimum: 0
Default: null

currency

ISO 4217 format currency identifier [Ref. cashmanagement-1]. If null, all currencies are reported for tellerID.

Type: string, null
Pattern: ^[A-Z]{3}$
Default: null

Completion Message

Payload, Version 2.0
{ "errorCode": "invalidCurrency", "tellerDetails": [{ "tellerID": 104, "inputPosition": "inDefault", "outputPosition": "outDefault", "tellerTotals": { "EUR": { "itemsReceived": 1405.00, "itemsDispensed": 1405.00, "coinsReceived": 0.05, "coinsDispensed": 0.05, "cashBoxReceived": 1407.15, "cashBoxDispensed": 1407.15 }, "GBP": See tellerDetails/tellerTotals/EUR properties } }] }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • invalidCurrency - Specified currency not currently available.
  • invalidTellerId - Invalid teller ID.

Type: string, null
Default: null

tellerDetails

Array of teller detail objects. May be null if no teller defined.

Type: array (object), null
Default: null

tellerDetails/tellerID

Identification of the teller.

Type: integer
Minimum: 0
Required

tellerDetails/inputPosition

Supplies the input position as one of the following values. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.

Type: string
Default: "inDefault"

tellerDetails/outputPosition

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

tellerDetails/tellerTotals

List of teller total objects. There is one object per currency.

Type: object
Required

tellerDetails/tellerTotals/EUR (example name)

The property name is the ISO 4217 currency identifier [Ref. cashmanagement-1].

Type: object
Name Pattern: ^[A-Z]{3}$

tellerDetails/tellerTotals/EUR/itemsReceived

The total absolute value of items (other than coins) of the specified currency accepted. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

tellerDetails/tellerTotals/EUR/itemsDispensed

The total absolute value of items (other than coins) of the specified currency dispensed. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

tellerDetails/tellerTotals/EUR/coinsReceived

The total absolute value of coin currency accepted. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

tellerDetails/tellerTotals/EUR/coinsDispensed

The total absolute value of coin currency dispensed. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

tellerDetails/tellerTotals/EUR/cashBoxReceived

The total absolute value of cash box currency accepted. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

tellerDetails/tellerTotals/EUR/cashBoxDispensed

The total absolute value of cash box currency dispensed. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

Event Messages

None

6.2.3 - CashManagement.SetTellerInfo

This command allows the application to initialize counts for each currency assigned to the teller. The values set by this command are persistent. This command only applies to Teller ATMs.

Command Message

Payload, Version 2.0, Required
{ "action": "create", "tellerDetails": { "tellerID": 104, "inputPosition": "inDefault", "outputPosition": "outDefault", "tellerTotals": { "EUR": { "itemsReceived": 1405.00, "itemsDispensed": 1405.00, "coinsReceived": 0.05, "coinsDispensed": 0.05, "cashBoxReceived": 1407.15, "cashBoxDispensed": 1407.15 }, "GBP": See tellerDetails/tellerTotals/EUR properties } } }
Properties

action

The action to be performed. Following values are possible:

  • create - A teller is to be added.
  • modify - Information about an existing teller is to be modified.
  • delete - A teller is to be removed.

Type: string
Required

tellerDetails

Teller details object.

Type: object
Required

tellerDetails/tellerID

Identification of the teller.

Type: integer
Minimum: 0
Required

tellerDetails/inputPosition

Supplies the input position as one of the following values. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.

Type: string
Default: "inDefault"

tellerDetails/outputPosition

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

tellerDetails/tellerTotals

List of teller total objects. There is one object per currency.

Type: object
Required

tellerDetails/tellerTotals/EUR (example name)

The property name is the ISO 4217 currency identifier [Ref. cashmanagement-1].

Type: object
Name Pattern: ^[A-Z]{3}$

tellerDetails/tellerTotals/EUR/itemsReceived

The total absolute value of items (other than coins) of the specified currency accepted. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

tellerDetails/tellerTotals/EUR/itemsDispensed

The total absolute value of items (other than coins) of the specified currency dispensed. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

tellerDetails/tellerTotals/EUR/coinsReceived

The total absolute value of coin currency accepted. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

tellerDetails/tellerTotals/EUR/coinsDispensed

The total absolute value of coin currency dispensed. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

tellerDetails/tellerTotals/EUR/cashBoxReceived

The total absolute value of cash box currency accepted. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

tellerDetails/tellerTotals/EUR/cashBoxDispensed

The total absolute value of cash box currency dispensed. The amount is expressed as a floating-point value.

Type: number
Minimum: 0
Default: 0

Completion Message

Payload, Version 2.0
{ "errorCode": "invalidCurrency" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • invalidCurrency - The specified currency is not currently available.
  • invalidTellerId - The teller ID is invalid.
  • unsupportedPosition - The position specified is not supported.
  • exchangeActive - The target teller is currently in the middle of an exchange operation.

Type: string, null
Default: null

Event Messages

None

6.2.4 - CashManagement.GetItemInfo

This command is used to get information about detected items. It can be used to get information about individual items, all items of a certain classification, or all items that have information available. This information is available from the point where the first CashManagement.InfoAvailableEvent is generated until a transaction or replenishment command is executed including the following:

In addition, since the item information is not cumulative and can be replaced by any command that can move notes, it is recommended that applications that are interested in the available information should query for it following the CashManagement.InfoAvailableEvent but before any other command is executed.

Command Message

Payload, Version 2.0
{ "items": { "level": "fit", "index": 1 }, "itemInfoType": { "serialNumber": true, "signature": true, "image": true } }
Properties

items

Specifies which item or items to return information for. If null, all information on all items is returned.

Type: object, null
Default: null

items/level

Specifies the item's classification. Following values are possible:

  • unrecognized - The item is not recognized.
  • counterfeit - The item is recognized as counterfeit.
  • suspect - The item is recognized as suspected counterfeit.
  • fit - The item is genuine and fit for recycling.
  • unfit - The item is genuine, but not fit for recycling.
  • inked - The item is genuine, but ink stained.

Type: string
Required

items/index

Specifies the zero-based index for the item information required. If null, all items of the specified level will be returned.

Type: integer, null
Minimum: 0
Default: null

itemInfoType

Specifies the type of information required. If null, all available information will be returned.

Type: object, null
Default: null

itemInfoType/serialNumber

Request the serial number of the item.

Type: boolean
Default: true

itemInfoType/signature

Request the signature of the item.

Type: boolean
Default: true

itemInfoType/image

Request the image of the item.

Type: boolean
Default: true

Completion Message

Payload, Version 3.0
{ "itemsList": [{ "noteType": "type20USD1", "orientation": "frontTop", "signature": "O2gAUACFyEARAJAC", "level": "fit", "serialNumber": "AB12345YG", "image": "O2gAUACFyEARAJAC", "onClassificationList": "onClassificationList", "itemLocation": "unit1" }] }
Properties

itemsList

Array of objects listing the item information. May be null, if empty.

Type: array (object), null
Default: null

itemsList/noteType

A cash item as reported by CashManagement.GetBankNoteTypes. This is null if the item was not identified as a cash item.

Type: string, null
Pattern: ^type[0-9A-Z]+$
Default: null

itemsList/orientation

Specifies the note orientation. This property is null if the hardware is not capable to determine the orientation The following values are possible:

  • frontTop - If note is inserted wide side as the leading edge, the note was inserted with the front image facing up and the top edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the front image face up and the left edge was inserted first.
  • frontBottom - If note is inserted wide side as the leading edge, the note was inserted with the front image facing up and the bottom edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the front image face up and the right edge was inserted first.
  • backTop - If note is inserted wide side as the leading edge, the note was inserted with the back image facing up and the top edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the back image face up and the left edge was inserted first.
  • backBottom - If note is inserted wide side as the leading edge, the note was inserted with the back image facing up and the bottom edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the back image face up and the right edge was inserted first.
  • unknown - The orientation for the inserted note cannot be determined.

Type: string, null
Default: null

itemsList/signature

Base64 encoded vendor specific signature data. If no signature is available or has not been requested, then this is null.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null

itemsList/level

Specifies the item's classification. Following values are possible:

  • unrecognized - The item is not recognized.
  • counterfeit - The item is recognized as counterfeit.
  • suspect - The item is recognized as suspected counterfeit.
  • fit - The item is genuine and fit for recycling.
  • unfit - The item is genuine, but not fit for recycling.
  • inked - The item is genuine, but ink stained.

Type: string
Required

itemsList/serialNumber

This property contains the serial number of the item as a string. A '?' character is used to represent any serial number character that cannot be recognized. If no serial number is available or has not been requested then this is null.

Type: string, null
Default: null

itemsList/image

Base64 encoded binary image data. If the service does not support this function or the image has not been requested then this is null.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null

itemsList/onClassificationList

Specifies if the item is on the classification list. If the classification list reporting capability is not supported this property will be null. Following values are possible:

  • onClassificationList - The serial number of the items is on the classification list.
  • notOnClassificationList - The serial number of the items is not on the classification list.
  • classificationListUnknown - It is unknown if the serial number of the item is on the classification list.

Type: string, null
Default: null

itemsList/itemLocation

Specifies the location of the item. Following values are possible:

  • customer - The item has been presented to the customer.
  • unknown - The item location is unknown, for example, it may have been removed manually.
  • stacker - The item is in the intermediate stacker.
  • output - The item is at the output position. The items have not been in customer access.
  • transport - The item is in an intermediate location in the device.
  • deviceUnknown - The item is in the device, but its location is unknown.
  • <storage unit identifier> - The item is in a storage unit with matching identifier.

Type: string
Pattern: ^customer$|^unknown$|^stacker$|^output$|^transport$|^deviceUnknown$|^unit[0-9A-Za-z]+$
Default: "unknown"

Event Messages

None

6.2.5 - CashManagement.GetClassificationList

This command is used to retrieve the entire note classification information pre-set inside the device or set via the CashManagement.SetClassificationList command. This provides the functionality to blacklist notes and allows additional flexibility, for example to specify that notes can be taken out of circulation by specifying them as unfit. Any items not returned in this list will be handled according to normal classification rules.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "version": "Version 1.2", "classificationElements": [{ "serialNumber": "AB1234D", "currency": "USD", "value": 20.00, "level": "fit" }] }
Properties

version

This is an application defined string that sets the version identifier of the classification list. This property can be null if it has no version identifier.

Type: string, null
Default: null

classificationElements

Array of objects defining the classification list. May be null if empty.

Type: array (object), null
Default: null

classificationElements/serialNumber

This string defines the serial number or a mask of serial numbers of one element with the defined currency and value. For a definition of the mask see Note Classification.

Type: string
Required

classificationElements/currency

ISO 4217 currency identifier [Ref. cashmanagement-1].

Type: string
Pattern: ^[A-Z]{3}$
Required

classificationElements/value

Absolute value of a cash item or items. May be a floating-point value to allow for coins and notes which have a value which is not a whole multiple of the currency unit.

If applied to a storage unit, this applies to all contents, may be 0 if mixed and may only be modified in an exchange state if applicable.

Type: number
Minimum: 0
Required

classificationElements/level

Specifies the item's classification. Following values are possible:

  • unrecognized - The item is not recognized.
  • counterfeit - The item is recognized as counterfeit.
  • suspect - The item is recognized as suspected counterfeit.
  • fit - The item is genuine and fit for recycling.
  • unfit - The item is genuine, but not fit for recycling.
  • inked - The item is genuine, but ink stained.

Type: string
Required

Event Messages

None

6.2.6 - CashManagement.SetClassificationList

This command is used to specify the entire note classification list. Any items not specified in this list will be handled according to normal classification rules. This information is persistent. Information set by this command overrides any existing classification list. If a note is reclassified, it is handled as though it was a note of the new classification. For example, a fit note reclassified as unfit would be treated as though it were unfit, which may mean that the note is not dispensed. Reclassification cannot be used to change a note’s classification to a higher level, for example, a note recognized as counterfeit by the device cannot be reclassified as genuine. In addition, it is not possible to re-classify a counterfeit note as unrecognized. If two or more classification elements specify overlapping note definitions, but different level values then the first one takes priority.

Command Message

Payload, Version 2.0, Required
{ "version": "Version 1.2", "classificationElements": [{ "serialNumber": "AB1234D", "currency": "USD", "value": 20.00, "level": "fit" }] }
Properties

version

This is an application defined string that sets the version identifier of the classification list. This property can be null if it has no version identifier.

Type: string, null
Default: null

classificationElements

Array of objects defining the classification list.

Type: array (object)
Required

classificationElements/serialNumber

This string defines the serial number or a mask of serial numbers of one element with the defined currency and value. For a definition of the mask see Note Classification.

Type: string
Required

classificationElements/currency

ISO 4217 currency identifier [Ref. cashmanagement-1].

Type: string
Pattern: ^[A-Z]{3}$
Required

classificationElements/value

Absolute value of a cash item or items. May be a floating-point value to allow for coins and notes which have a value which is not a whole multiple of the currency unit.

If applied to a storage unit, this applies to all contents, may be 0 if mixed and may only be modified in an exchange state if applicable.

Type: number
Minimum: 0
Required

classificationElements/level

Specifies the item's classification. Following values are possible:

  • unrecognized - The item is not recognized.
  • counterfeit - The item is recognized as counterfeit.
  • suspect - The item is recognized as suspected counterfeit.
  • fit - The item is genuine and fit for recycling.
  • unfit - The item is genuine, but not fit for recycling.
  • inked - The item is genuine, but ink stained.

Type: string
Required

Completion Message

Payload, Version 2.0
This message does not define any properties.

Event Messages

None

6.2.7 - CashManagement.CloseShutter

This command closes the shutter.

Command Message

Payload, Version 2.0
{ "position": "inLeft" }
Properties

position

Supplies the input or output position as one of the following values. If not specified, the default position applies. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

Completion Message

Payload, Version 2.0
{ "errorCode": "unsupportedPosition" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • unsupportedPosition - The position specified is not supported.
  • shutterClosed - Shutter was already closed.
  • exchangeActive - The device is in an exchange state.
  • shutterNotClosed - Shutter failed to close.
  • tooManyItems - There were too many items inserted for the shutter to close.
  • foreignItemsDetected - Foreign items have been detected in the input position. The shutter is open.

Type: string, null
Default: null

Event Messages

None

6.2.8 - CashManagement.OpenShutter

This command opens the shutter.

In cases where multiple bunches are to be returned under explicit shutter control and the first bunch has already been presented and taken and the output position is empty, this command moves the next bunch to the output position before opening the shutter. This does not apply if the output position is not empty, for example if items had been re-inserted or dropped back into the output position as the shutter closed.

Command Message

Payload, Version 2.0
{ "position": "inLeft" }
Properties

position

Supplies the input or output position as one of the following values. If not specified, the default position applies. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

Completion Message

Payload, Version 2.0
{ "errorCode": "unsupportedPosition" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • unsupportedPosition - The position specified is not supported.
  • shutterNotOpen - Shutter failed to open.
  • shutterOpen - Shutter was already open.
  • exchangeActive - The device is in an exchange state.
  • foreignItemsDetected - Foreign items have been detected in the input position.

Type: string, null
Default: null

Event Messages

None

6.2.9 - CashManagement.Retract

This command retracts items from an output position or internal areas within the device. Retracted items will be moved to either a retract bin, a reject bin, cash-in/recycle storage units, the transport or an intermediate stacker area. If items from internal areas within the device are preventing items at an output position from being retracted, then the items from the internal areas will be retracted first. When the items are retracted from an output position the shutter is closed automatically, even if property shutterControl is false.

This command terminates a running transaction. The transaction is terminated even if this command does not complete successfully.

As the items to be retracted may be in different areas of the device, it may be possible to have combinations of events and completions related to how these discrete bunches are handled. For example if items are in the stacker and other items are presented, and the customer takes the presented items, then it is possible to post a CashManagement.ItemsTakenEvent as well as an additional Storage.StorageErrorEvent or a CashManagement.IncompleteRetractEvent for the remaining items.

If during command execution the counts of one or more storage units have changed, a Storage.CountsChangedEvent will be sent.

Command Message

Payload, Version 2.0
{ "location": { "outputPosition": "outDefault", "retractArea": "retract", "index": 1 } }
Properties

location

Specifies where items are to be retracted from and where they are to be retracted to.

Type: object, null
Default: null

location/outputPosition

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

location/retractArea

This value specifies the area to which the items are to be retracted. Following values are possible:

  • retract - Retract the items to a retract storage unit.
  • transport - Retract the items to the transport.
  • stacker - Retract the items to the intermediate stacker area.
  • reject - Retract the items to a reject storage unit.
  • itemCassette - Retract the items to the storage units which would be used during a cash-in transaction including recycling storage units.
  • cashIn - Retract the items to the storage units which would be used during a cash-in transaction but not including recycling storage units.

Type: string
Required

location/index

If target is set to retract this property defines a position inside the retract storage units. index starts with a value of 1 for the first retract position and increments by one for each subsequent position. If there are several retract storage units (of type cashInRetract or cashOutRetract as appropriate to the operation and as reported by types in Storage.GetStorage), index would be incremented from the first position of the first retract storage unit to the last position of the last retract storage unit. The maximum value of index is the sum of maximum of each retract storage unit. If retractArea is not set to retract the value of this property is ignored and may be null in command data.

Type: integer, null
Minimum: 1
Default: null

Completion Message

Payload, Version 2.0
{ "errorCode": "cashUnitError", "transport": { "unrecognized": 5, "type20USD1": { "fit": 15, "unfit": 0, "suspect": 0, "counterfeit": 0, "inked": 0 }, "type50USD1": See transport/type20USD1 properties }, "stacker": See transport properties }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • cashUnitError - A problem occurred with a storage unit. A Storage.StorageErrorEvent will be sent with the details.
  • noItems - There were no items to retract.
  • exchangeActive - The device is in an exchange state.
  • shutterNotClosed - The shutter failed to close.
  • itemsTaken - Items were present at the output position at the start of the operation, but were removed before the operation was complete - some or all of the items were not retracted.
  • invalidRetractPosition - The index is not supported.
  • notRetractArea - The retract area specified in retractArea is not supported.
  • foreignItemsDetected - Foreign items have been detected inside the input position.
  • positionNotEmpty - The retract area specified in retractArea is not empty so the retract operation is not possible.
  • incompleteRetract - Some or all of the items were not retracted for a reason not covered by other error codes. The detail will be reported with a CashManagement.IncompleteRetractEvent.

Type: string, null
Default: null

transport

List of items moved to transport by this transaction or command.

Type: object, null
Default: null

transport/unrecognized

Count of unrecognized items handled by the cash interface. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

transport/type20USD1 (example name)

Counts of a given cash item (as reported by CashManagement.GetBankNoteTypes) broken down by classification.

Type: object, null
Default: null

transport/type20USD1/fit

Count of genuine cash items which are fit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

transport/type20USD1/unfit

Count of genuine cash items which are unfit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

transport/type20USD1/suspect

Count of suspected counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

transport/type20USD1/counterfeit

Count of counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

transport/type20USD1/inked

Count of cash items which have been identified as ink stained. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

stacker

List of items moved to stacker by this transaction or command.

Type: object, null
Default: null

Event Messages

6.2.10 - CashManagement.Reset

For a top level description of the generic behavior, expectations and use of a reset command, see Service Reset.

If a cash-in transaction is active or exchange is active then this command will end the transaction or exchange state as appropriate, even if this command does not complete successfully.

Persistent values, such as counts and configuration information are not cleared by this command.

The device will attempt to move any items found anywhere within the device to the position specified within the command parameters. This may not always be possible because of hardware problems. If the application does not wish to specify a storage unit or position it can set target to null. In this case the device will determine where to move any items found.

When end-to-end (E2E) security is being enforced by a device, if this command would result in notes being moved to a position where they would be accessible, this command will be blocked from executing. The exact definition of 'accessible' is hardware dependent but, for example, any position outside the safe, or any position where a attacker could access the cash should mean the command is blocked. Any attempt to execute the command will complete with the completion code unsupportedCommand. This is required because there is currently no E2E security defined for this command, and if the command were permitted it would be possible to extract cash and bypass E2E security.

As the items to be retracted may be in different areas of the device, it may be possible to have combinations of events and completions related to how these discrete bunches are handled. For example if items are in the stacker and other items are presented, and the customer takes the presented items, then it is possible to post a CashManagement.ItemsTakenEvent as well as an additional Storage.StorageErrorEvent or a CashManagement.IncompleteRetractEvent for the remaining items.

If items are found inside the device one or more CashManagement.MediaDetectedEvents will be generated to inform the application where the items have been moved to.

The shutterControl property will determine whether the shutter is controlled implicitly by this command or whether the application must explicitly open and close the shutter using the CashManagement.OpenShutter, CashManagement.CloseShutter or CashAcceptor.PresentMedia commands. If shutterControl is false then this command does not operate the shutter in any way, the application is responsible for all shutter control. If shutterControl is true, then this command operates the shutter as necessary so that the shutter is closed after the command completes successfully and any items returned to the customer have been removed.

The presentControl property will determine whether it is necessary to call the CashAcceptor.PresentMedia command in order to move items to the output position. If presentControl is true then all items are moved immediately to the correct output position for removal (a CashManagement.OpenShutter command will be needed in the case of explicit shutter control). If presentControl is false, then items are not returned immediately and must be presented to the correct output position for removal using the CashAcceptor.PresentMedia command.

If requested, items are returned in a single bunch or multiple bunches in the same way as described for the CashAcceptor.CashIn command.

If performing a Mixed Media transaction and media items are to be moved to a storage unit or units, the requested unit(s) must support types appropriate to the media being stored.

If during command execution the counts of one or more storage units have changed, a Storage.CountsChangedEvent will be sent.

Command Message

Payload, Version 2.0
{ "position": { "target": "singleUnit", "unit": "unit4", "index": 1 } }
Properties

position

Defines where items are to be moved to as one of the following:

  • A single storage unit, further specified by unit.
  • Internal areas of the device.
  • An output position.

This may be null if the service is to determine where items are to be moved.

Type: object, null
Default: null

position/target

This property specifies the target. Following values are possible:

  • singleUnit - A single storage unit defined by unit.
  • retract - A retract storage unit defined by index.
  • transport - The transport.
  • stacker - Intermediate stacker area.
  • reject - Reject storage unit.
  • itemCassette - Storage units which would be used during a cash-in transaction including recycling storage units.
  • cashIn - Storage units which would be used during a cash-in transaction but not including recycling storage units.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

position/unit

If target is set to singleUnit, this property specifies the object name (as stated by the Storage.GetStorage command) of a single storage unit. Ignored and may be null for all other cases.

Type: string, null
Pattern: ^unit[0-9A-Za-z]+$
Default: null

position/index

If target is set to retract this property defines a position inside the retract storage units. index starts with a value of 1 for the first retract position and increments by one for each subsequent position. If there are several retract storage units (of type cashInRetract or cashOutRetract as appropriate to the operation and as reported by types in Storage.GetStorage), index would be incremented from the first position of the first retract storage unit to the last position of the last retract storage unit. The maximum value of index is the sum of maximum of each retract storage unit. If retractArea is not set to retract the value of this property is ignored and may be null in command data.

Type: integer, null
Minimum: 1
Default: null

Completion Message

Payload, Version 2.0
{ "errorCode": "cashUnitError", "transport": { "unrecognized": 5, "type20USD1": { "fit": 15, "unfit": 0, "suspect": 0, "counterfeit": 0, "inked": 0 }, "type50USD1": See transport/type20USD1 properties }, "stacker": See transport properties }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • cashUnitError - There is a problem with a storage unit. A Storage.StorageErrorEvent will be posted with the details.
  • unsupportedPosition - The output position specified is not supported.
  • invalidCashUnit - The storage unit number specified is not valid.
  • invalidRetractPosition - The index is not supported.
  • notRetractArea - The retract area specified in retractArea is not supported.
  • positionNotEmpty - The retract area specified in retractArea is not empty so the moving of items was not possible.
  • foreignItemsDetected - Foreign items have been detected in the input position.
  • incompleteRetract - Some or all of the items were not retracted for a reason not covered by other error codes. The detail will be reported with a CashManagement.IncompleteRetractEvent.

Type: string, null
Default: null

transport

List of items moved to transport by this transaction or command.

Type: object, null
Default: null

transport/unrecognized

Count of unrecognized items handled by the cash interface. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

transport/type20USD1 (example name)

Counts of a given cash item (as reported by CashManagement.GetBankNoteTypes) broken down by classification.

Type: object, null
Default: null

transport/type20USD1/fit

Count of genuine cash items which are fit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

transport/type20USD1/unfit

Count of genuine cash items which are unfit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

transport/type20USD1/suspect

Count of suspected counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

transport/type20USD1/counterfeit

Count of counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

transport/type20USD1/inked

Count of cash items which have been identified as ink stained. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

stacker

List of items moved to stacker by this transaction or command.

Type: object, null
Default: null

Event Messages

6.2.11 - CashManagement.CalibrateCashUnit

This command will cause a vendor dependent sequence of hardware events which will calibrate one storage unit. This is necessary if a new type of bank note is put into the storage unit as the command enables the device to obtain the measures of the new bank notes.

This command cannot be used to calibrate storage units which have been locked by the application. An error code will be returned and a Storage.StorageErrorEvent generated.

Command Message

Payload, Version 2.0, Required
{ "unit": "unit1", "numOfBills": 40, "position": { "target": "singleUnit", "unit": "unit4", "index": 1 } }
Properties

unit

The object name of the storage unit as stated by the Storage.GetStorage command.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

numOfBills

The number of bills to be dispensed during the calibration process. If null, the service may decide how many bills are required. This may also be ignored if the device always dispenses a default number of bills.

Type: integer, null
Minimum: 1
Default: null

position

Defines where items are to be moved to as one of the following:

  • A single storage unit, further specified by unit.
  • Internal areas of the device.
  • An output position.

This may be null if the service is to determine where items are to be moved.

Type: object, null
Default: null

position/target

This property specifies the target. Following values are possible:

  • singleUnit - A single storage unit defined by unit.
  • retract - A retract storage unit defined by index.
  • transport - The transport.
  • stacker - Intermediate stacker area.
  • reject - Reject storage unit.
  • itemCassette - Storage units which would be used during a cash-in transaction including recycling storage units.
  • cashIn - Storage units which would be used during a cash-in transaction but not including recycling storage units.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

position/unit

If target is set to singleUnit, this property specifies the object name (as stated by the Storage.GetStorage command) of a single storage unit. Ignored and may be null for all other cases.

Type: string, null
Pattern: ^unit[0-9A-Za-z]+$
Default: null

position/index

If target is set to retract this property defines a position inside the retract storage units. index starts with a value of 1 for the first retract position and increments by one for each subsequent position. If there are several retract storage units (of type cashInRetract or cashOutRetract as appropriate to the operation and as reported by types in Storage.GetStorage), index would be incremented from the first position of the first retract storage unit to the last position of the last retract storage unit. The maximum value of index is the sum of maximum of each retract storage unit. If retractArea is not set to retract the value of this property is ignored and may be null in command data.

Type: integer, null
Minimum: 1
Default: null

Completion Message

Payload, Version 2.0
{ "errorCode": "cashUnitError", "result": { "unit": "unit1", "numOfBills": 20, "position": { "target": "singleUnit", "unit": "unit4", "index": 1 } } }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • cashUnitError - A storage unit caused an error. A Storage.StorageErrorEvent will be sent with the details.
  • unsupportedPosition - The position specified is not valid.
  • exchangeActive - The device is in an exchange state.
  • invalidCashUnit - The storage unit number specified is not valid.

Type: string, null
Default: null

result

The result of the command, detailing where items were moved from and to. May be null if no items were moved.

Type: object, null
Default: null

result/unit

The object name of the storage unit which has been calibrated as stated by Storage.GetStorage.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

result/numOfBills

Number of items that were actually dispensed during the calibration process. This value may be different from that passed in using the input structure if the device always dispenses a default number of bills. When bills are presented to an output position this is the count of notes presented to the output position, any other notes rejected during the calibration process are not included in this count as they will be accounted for within the storage unit counts.

Type: integer
Minimum: 0
Default: 0

result/position

Defines where items have been moved to as one of the following:

  • A single storage unit, further specified by unit.
  • Internal areas of the device.
  • An output position.

This may be null if no items were moved.

Type: object, null
Default: null

result/position/target

This property specifies the target. Following values are possible:

  • singleUnit - A single storage unit defined by unit.
  • retract - A retract storage unit defined by index.
  • transport - The transport.
  • stacker - Intermediate stacker area.
  • reject - Reject storage unit.
  • itemCassette - Storage units which would be used during a cash-in transaction including recycling storage units.
  • cashIn - Storage units which would be used during a cash-in transaction but not including recycling storage units.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

result/position/unit

If target is set to singleUnit, this property specifies the object name (as stated by the Storage.GetStorage command) of a single storage unit. Ignored and may be null for all other cases.

Type: string, null
Pattern: ^unit[0-9A-Za-z]+$
Default: null

result/position/index

If target is set to retract this property defines a position inside the retract storage units. index starts with a value of 1 for the first retract position and increments by one for each subsequent position. If there are several retract storage units (of type cashInRetract or cashOutRetract as appropriate to the operation and as reported by types in Storage.GetStorage), index would be incremented from the first position of the first retract storage unit to the last position of the last retract storage unit. The maximum value of index is the sum of maximum of each retract storage unit. If retractArea is not set to retract the value of this property is ignored and may be null in command data.

Type: integer, null
Minimum: 1
Default: null

Event Messages

6.3 - Event Messages

6.3.1 - CashManagement.NoteErrorEvent

This event specifies the reason for a note detection error during the execution of a command.

Event Message

Payload, Version 2.0, Required
{ "reason": "doubleNote" }
Properties

reason

The reason for the note detection error. Following values are possible:

  • doubleNote - A double note has been detected.
  • longNote - A long note has been detected.
  • skewedNote - A skewed note has been detected.
  • incorrectCount - An item counting error has occurred.
  • notesTooClose - Notes have been detected as being too close.
  • otherNoteError - An item error not covered by the other values has been detected.
  • shortNote - A short note has been detected.

Type: string
Required

6.3.2 - CashManagement.InfoAvailableEvent

This event is generated when information is available for items detected during the cash processing operation.

Event Message

Payload, Version 2.0, Required
{ "itemInfoSummary": [{ "level": "fit", "numOfItems": 2 }] }
Properties

itemInfoSummary

Array of itemInfoSummary objects, one object for every level.

Type: array (object)
Required

itemInfoSummary/level

Specifies the item's classification. Following values are possible:

  • unrecognized - The item is not recognized.
  • counterfeit - The item is recognized as counterfeit.
  • suspect - The item is recognized as suspected counterfeit.
  • fit - The item is genuine and fit for recycling.
  • unfit - The item is genuine, but not fit for recycling.
  • inked - The item is genuine, but ink stained.

Type: string
Required

itemInfoSummary/numOfItems

Number of items classified as level which have information available.

Type: integer
Minimum: 1
Required

6.3.3 - CashManagement.IncompleteRetractEvent

This event is generated when an attempt to retract items has completed with an error and not all items have been retracted.

Event Message

Payload, Version 2.0, Required
{ "itemNumberList": { "unit1": { "retractOperations": 15, "deposited": { "unrecognized": 5, "type20USD1": { "fit": 15, "unfit": 0, "suspect": 0, "counterfeit": 0, "inked": 0 }, "type50USD1": See itemNumberList/unit1/deposited/type20USD1 properties }, "retracted": See itemNumberList/unit1/deposited properties "rejected": See itemNumberList/unit1/deposited properties "distributed": See itemNumberList/unit1/deposited properties "transport": See itemNumberList/unit1/deposited properties }, "unit2": See itemNumberList/unit1 properties }, "reason": "retractFailure" }
Properties

itemNumberList

Object containing the storage units which have had items inserted during the associated operation or transaction. Only storage units whose contents have been modified are included.

Type: object, null
Default: null

itemNumberList/unit1 (example name)

List of items moved to this storage unit by this transaction or command. The property name is the same as reported by Storage.GetStorage.

Type: object, null
Name Pattern: ^unit[0-9A-Za-z]+$
Default: null

itemNumberList/unit1/retractOperations

Number of cash retract operations which resulted in items entering this storage unit. This can be used where devices do not have the capability to count or validate items after presentation. May be null in command data and events if not changing.

Type: integer, null
Minimum: 0
Default: null

itemNumberList/unit1/deposited

The items deposited in the storage unit during a cash-in transaction. Can be null, if all values are 0.

Type: object, null
Default: null

itemNumberList/unit1/deposited/unrecognized

Count of unrecognized items handled by the cash interface. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

itemNumberList/unit1/deposited/type20USD1 (example name)

Counts of a given cash item (as reported by CashManagement.GetBankNoteTypes) broken down by classification.

Type: object, null
Default: null

itemNumberList/unit1/deposited/type20USD1/fit

Count of genuine cash items which are fit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

itemNumberList/unit1/deposited/type20USD1/unfit

Count of genuine cash items which are unfit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

itemNumberList/unit1/deposited/type20USD1/suspect

Count of suspected counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

itemNumberList/unit1/deposited/type20USD1/counterfeit

Count of counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

itemNumberList/unit1/deposited/type20USD1/inked

Count of cash items which have been identified as ink stained. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

itemNumberList/unit1/retracted

The items retracted into the storage unit after being accessible to a customer. This may be inaccurate or not counted if items are not counted or re-validated after presentation, the number of retract operations is also reported separately in retractOperations. Can be null if all values are 0.

Type: object, null
Default: null

itemNumberList/unit1/rejected

The items deposited in this storage unit originating from another storage unit but rejected due to being invalid. This count may be inaccurate due to the nature of rejected items. Can be null if all values are 0.

Type: object, null
Default: null

itemNumberList/unit1/distributed

The items deposited in this storage unit originating from another storage unit but not rejected. Can be null if all values are 0.

Type: object, null
Default: null

itemNumberList/unit1/transport

The items which were intended to be deposited in this storage unit but are not yet deposited. Typical use case for this property is tracking items after a jam during CashAcceptor.CashInEnd. This is not reset if initial is set for this unit by Storage.GetStorage. Can be null if all values are 0.

Type: object, null
Default: null

reason

The reason for not having retracted items. Following values are possible:

  • retractFailure - The retract has partially failed for a reason not covered by the other reasons listed in this event, for example failing to pick an item to be retracted.
  • retractAreaFull - The storage area specified in the command payload has become full during the retract operation.
  • foreignItemsDetected - Foreign items have been detected.
  • invalidBunch - An invalid bunch of items has been detected, e.g. it is too large or could not be processed.

Type: string
Required

6.4 - Unsolicited Messages

6.4.1 - CashManagement.TellerInfoChangedEvent

This event is generated when the counts assigned to a teller have changed. This event is only returned as a result of a CashManagement.SetTellerInfo command.

Unsolicited Message

Payload, Version 2.0, Required
{ "tellerID": 0 }
Properties

tellerID

Integer holding the ID of the teller whose counts have changed.

Type: integer
Minimum: 0
Required

6.4.2 - CashManagement.ItemsTakenEvent

This specifies that items have been taken. This event may be generated at any time.

Unsolicited Message

Payload, Version 2.0, Required
{ "position": "inLeft", "additionalBunches": "1" }
Properties

position

Supplies the input or output position as one of the following values. If not specified, the default position applies. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

additionalBunches

Specifies how many more bunches will be required to present the request. Following values are possible:

  • <number> - The number of additional bunches to be presented.
  • unknown - More than one additional bunch is required but the precise number is unknown.

Type: string
Pattern: ^unknown$|^[0-9]*$
Default: "0"

6.4.3 - CashManagement.ItemsInsertedEvent

This specifies that items have been inserted into the position by the user. This event may be generated at any time.

Unsolicited Message

Payload, Version 2.0, Required
{ "position": "inLeft" }
Properties

position

Supplies the input or output position as one of the following values. If not specified, the default position applies. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

6.4.4 - CashManagement.ItemsPresentedEvent

This specifies that items have been presented to the user, and the shutter has been opened to allow the user to take the items.

Unsolicited Message

Payload, Version 2.0, Required
{ "position": "inLeft", "additionalBunches": "1" }
Properties

position

Supplies the input or output position as one of the following values. If not specified, the default position applies. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

additionalBunches

Specifies how many more bunches will be required to present the request. Following values are possible:

  • <number> - The number of additional bunches to be presented.
  • unknown - More than one additional bunch is required but the precise number is unknown.

Type: string
Pattern: ^unknown$|^[0-9]*$
Default: "0"

6.4.5 - CashManagement.MediaDetectedEvent

This is generated if media is detected during a CashManagement.Reset command. The payload specifies the position of the media on completion of the command. If the device has been unable to successfully move the items found, then target will be null.

Unsolicited Message

Payload, Version 2.0, Required
{ "target": "singleUnit", "unit": "unit4", "index": 1 }
Properties

target

This property specifies the target. Following values are possible:

  • singleUnit - A single storage unit defined by unit.
  • retract - A retract storage unit defined by index.
  • transport - The transport.
  • stacker - Intermediate stacker area.
  • reject - Reject storage unit.
  • itemCassette - Storage units which would be used during a cash-in transaction including recycling storage units.
  • cashIn - Storage units which would be used during a cash-in transaction but not including recycling storage units.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

unit

If target is set to singleUnit, this property specifies the object name (as stated by the Storage.GetStorage command) of a single storage unit. Ignored and may be null for all other cases.

Type: string, null
Pattern: ^unit[0-9A-Za-z]+$
Default: null

index

If target is set to retract this property defines a position inside the retract storage units. index starts with a value of 1 for the first retract position and increments by one for each subsequent position. If there are several retract storage units (of type cashInRetract or cashOutRetract as appropriate to the operation and as reported by types in Storage.GetStorage), index would be incremented from the first position of the first retract storage unit to the last position of the last retract storage unit. The maximum value of index is the sum of maximum of each retract storage unit. If retractArea is not set to retract the value of this property is ignored and may be null in command data.

Type: integer, null
Minimum: 1
Default: null

6.4.6 - CashManagement.ShutterStatusChangedEvent

⚠️ This event is deprecated.

Within the limitations of the hardware sensors this event is generated whenever the status of a shutter changes. The shutter status can change because of an explicit, implicit or manual operation depending on how the shutter is operated.

This event is marked deprecated because it is replaced by Common.StatusChangedEvent.

Unsolicited Message

Payload, Version 2.0, Required
{ "position": "inLeft", "shutter": "closed" }
Properties

position

Supplies the input or output position as one of the following values. If not specified, the default position applies. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

shutter

Specifies the state of the shutter. Following values are possible:

  • closed - The shutter is fully closed.
  • open - The shutter is opened.
  • jammed - The shutter is jammed.
  • unknown - Due to a hardware error or other condition, the state of the shutter cannot be determined.

Type: string
Required

7 - Cash Dispenser Interface

This chapter defines the Cash Dispenser interface functionality and messages.

This specification describes the functionality of an XFS4IoT compliant Cash Dispenser interface. It defines the service-specific commands that can be issued to the service using the WebSocket endpoint.

Persistent values are maintained through power failures, open sessions, close sessions and system resets.

This specification covers the dispensing of items. An "item" is defined as any media that can be dispensed and includes coupons, documents, bills and coins.

7.1 - General Information

7.1.1 - References

ID Description
cashdispenser-1 ISO 4217

7.2 - Command Messages

7.2.1 - CashDispenser.GetMixTypes

This command is used to obtain a list of supported mix algorithms and available house mix tables.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "mixes": { "mix1": { "type": "algorithm", "algorithm": "minimumBills", "name": "Minimum Bills" }, "mixIndividual": See mixes/mix1 properties } }
Properties

mixes

Object containing mix specifications including mix tables and pre-defined algorithms. The property name of each mix can be used as the mix in the CashDispenser.Dispense and CashDispenser.Denominate commands.

Mix tables are defined by CashDispenser.SetMixTable. A mix table's definition can be queried using its property name as input to CashDispenser.GetMixTable. Can be null if empty.

Type: object, null
Default: null

mixes/mix1 (example name)

An object containing a single mix specification. The property name is assigned by the service.

Type: object
Name Pattern: ^mix[0-9A-Za-z]+$

mixes/mix1/type

Specifies the mix type as one of the following:

  • individual - the mix is not calculated by the service, completely specified by the application.
  • algorithm - the mix is calculated using one of the algorithms specified by algorithm.
  • table - the mix is calculated using a mix table - see CashDispenser.GetMixTable.

Type: string
Required

mixes/mix1/algorithm

If type is algorithm, specifies the algorithm type as one of the following. There are three pre-defined algorithms, additional vendor-defined algorithms can also be defined. null if the mix is not an algorithm.

  • minimumBills - Select a mix requiring the minimum possible number of items.
  • equalEmptying - The denomination is selected based upon criteria which ensure that over the course of its operation the storage units will empty as far as possible at the same rate and will therefore go low and then empty at approximately the same time.
  • maxCashUnits - The denomination is selected based upon criteria which ensures the maximum number of storage units are used.
  • <vendor-defined mix> - A vendor defined mix algorithm.

Type: string, null
Pattern: ^minimumBills$|^equalEmptying$|^maxCashUnits$|^[A-Za-z0-9]*$
Default: null

mixes/mix1/name

Name of the table or algorithm used. May be null if not defined.

Type: string, null
Default: null

Event Messages

None

7.2.2 - CashDispenser.GetMixTable

This command is used to obtain the specified house mix table. Mix tables can be set using CashDispenser.SetMixTable.

Command Message

Payload, Version 2.0, Required
{ "mix": "mixTable21" }
Properties

mix

A house mix table as defined by one of the mixes reported by CashDispenser.GetMixTypes.

Type: string
Required

Completion Message

Payload, Version 2.0
{ "errorCode": "invalidMix", "mixNumber": 21, "name": "House mix 21", "mixRows": [{ "amount": 0.30, "mix": [{ "value": 0.05, "count": 6 }] }] }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • invalidMix - The mix property does not correspond to a defined mix table.

Type: string, null
Default: null

mixNumber

Number identifying the house mix table (optional).

Type: integer, null
Minimum: 1
Default: null

name

Name of the house mix table. Null if not defined.

Type: string, null
Default: null

mixRows

Array of rows of the mix table.

Type: array (object)
Required

mixRows/amount

Absolute value of the amount denominated by this mix row.

Type: number
Minimum: 0
Required

mixRows/mix

The items used to create amount. Each element in this array defines the quantity of a given item used to create the mix. An example showing how 0.30 can be broken down would be:

[
  {
    "value": 0.05,
    "count": 2
  },
  {
    "value": 0.10,
    "count": 2
  }
]

Type: array (object)
Required

mixRows/mix/value

The absolute value of a single cash item.

Type: number
Minimum: 0
Required

mixRows/mix/count

The number of items of value contained in the mix.

Type: integer
Minimum: 1
Required

Event Messages

None

7.2.3 - CashDispenser.GetPresentStatus

This command is used to obtain the status of the most recent attempt to dispense and/or present items to the customer from a specified output position. The items may have been dispensed and/or presented as a result of the CashDispenser.Present or CashDispenser.Dispense command. This status is not updated as a result of any other command that can dispense/present items.

This value is persistent and is valid until the next time an attempt is made to present or dispense items to the customer, including across power cycles.

The denominations reported by this command may not accurately reflect the operation if the storage units have been re-configured, e.g., if the values associated with a storage unit are changed, or new storage units are configured.

If end-to-end security is supported, then this value is not cleared if a CashDispenser.Dispense with an invalid token is received. If a dispense token is invalid the dispense will fail with an invalidToken error, and the command will continue to report the existing status. This is to stop an attacker being able to reset the present status and conceal the last present result.

If end-to-end security is supported by the hardware, the present status will be protected by a security token. If end-to-end security is not supported then it's not possible to guarantee that the present status hasn't been altered, possibly by an attacker trying to hide the fact that cash was presented. To avoid this risk the client must always call this command and validate the security token.

If end-to-end security is being used the caller must pass in a nonce value. This value will be included in the security token that is returned. The caller must check that the original nonce value matches the token - if they do not match then the token is invalid.

Command Message

Payload, Version 2.0
{ "position": "outDefault", "nonce": "254611E63B2531576314E86527338D61" }
Properties

position

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

nonce

A nonce value to be used when creating the end-to-end security token in the response. If no token is requested this property should be null. See the generic end-to-end security documentation for more details.

Type: string, null
Pattern: ^[0-9A-F]{32}$|^[0-9]*$
Format: nonce
Default: null

Completion Message

Payload, Version 3.0
{ "errorCode": "unsupportedPosition", "denomination": { "currencies": { "EUR": 10.00, "USD": See denomination/currencies/EUR }, "values": { "unit1": 5, "unit2": See denomination/values/unit1 }, "cashBox": { "currencies": See denomination/currencies properties } }, "presentState": "presented", "token": "NONCE=1414,TOKENFORMAT=1,TOKENLENGTH=0268,DISPENSEID=CB735612FD6141213C2827FB5A6A4F4846D7A7347B15434916FEA6AC16F3D2F2,DISPENSED1=50.00EUR,PRESENTED1=YES,PRESENTEDAMOUNT1=50.00EUR,RETRACTED1=NO,HMACSHA256=55D123E9EE64F0CC3D1CD4F953348B441E521BBACCD6998C6F51D645D71E6C83" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • unsupportedPosition - The specified output position is not supported.

Type: string, null
Default: null

denomination

Denomination structure which contains the amount dispensed from the specified output position and the number of items dispensed from each storage unit. This is cumulative across a series of CashDispenser.Dispense calls that add additional items to the stacker.

May be null where no items were dispensed.

Type: object, null
Default: null

denomination/currencies

List of currency and amount combinations for denomination requests or output. There will be one entry for each currency in the denomination.

Type: object
Required

denomination/currencies/EUR (example name)

The absolute amount to be or which has been denominated or dispensed of the currency. The property name is the ISO 4217 currency identifier [Ref. cashdispenser-1]. The property value can include a decimal point to specify fractions of the currency, for example coins.

Type: number
Minimum: 0.001
Name Pattern: ^[A-Z]{3}$

denomination/values

This list specifies the number of items to take, or which have been taken from the storage units. If specified in a request, the output denomination must include these items.

The property name is storage unit object name as stated by the Storage.GetStorage command. The value of the entry is the number of items to take from that unit.

Type: object
Required

denomination/values/unit1 (example name)

The number of items that have been dispensed from the specified storage unit to meet the request.

Type: integer
Minimum: 1
Name Pattern: ^unit[0-9A-Za-z]+$

denomination/cashBox

Only applies to Teller Dispensers. Amount to be paid from the teller's cash box.

Type: object, null
Default: null

presentState

Supplies the status of the last dispense or present operation. Following values are possible:

  • presented - The items were presented. This status is set as soon as the customer has access to the items.
  • notPresented - The customer has not had access to the items.
  • unknown - It is not known if the customer had access to the items.

Type: string
Required

token

The present status token that protects the present status. Only provided if the command message contained the nonce property. See end-to-end security for more information.

Type: string, null
Pattern: ^(?=[!-~]{0,1024}$)NONCE=[0-9A-F]+,TOKENFORMAT=1,TOKENLENGTH=[0-9]{4},(?:[A-Z0-9]+=[^,=]+?,)+HMACSHA256=[0-9A-F]{64}$
Format: e2eToken
Default: null

Event Messages

None

7.2.4 - CashDispenser.Denominate

This command provides a denomination which specifies the number of items which are required from each storage unit to satisfy a given request and can be used to validate that any request supplied by the application can be dispensed. Requests are validated against the number of items and availability of each requested storage unit.

The request contains one of the following items:

  • A service mix where the amount to be denominated is provided and the service determines the mix of items to meet the request. The algorithm or mix table used to determine the mix is specified and may include a partial list of items from specific storage units which must be included in the denomination. A partial mix must be specified if items of no currency value are to be included such as coupons or documents.
  • An application mix where the number of items from each storage unit in the denomination is pre-determined and the request confirms whether it is possible to dispense that mix of items.

Multiple currencies may be specified using currencies.

If cashBox is true, then if the entire request cannot be satisfied by the service, the denomination may include an amount to be supplied from the teller's cash box.

Command Message

Payload, Version 3.0, Required
{ "request": { "denomination": { "app": { "currencies": { "EUR": 10.00, "USD": See request/denomination/app/currencies/EUR }, "counts": { "unit1": 5, "unit2": See request/denomination/app/counts/unit1 }, "cashBox": { "currencies": See request/denomination/app/currencies properties } }, "service": { "currencies": See request/denomination/app/currencies properties "partial": { "unit1": See request/denomination/app/counts/unit1, "unit2": See request/denomination/app/counts/unit1 }, "mix": "mix1", "cashBox": See request/denomination/app/cashBox properties } }, "tellerID": 0 } }
Properties

request

The request to be denominated.

Type: object
Required

request/denomination

The items to be denominated or dispensed as appropriate. The mix of items is either determined by the service or the Application.

Type: object
MinProperties: 1
MaxProperties: 1
Required

request/denomination/app

Specifies a denomination request where the application determines the mix of items based on the inputs.

Type: object, null
Default: null

request/denomination/app/currencies

List of currency and amount combinations for denomination requests or output. There will be one entry for each currency in the denomination.

Type: object
Required

request/denomination/app/currencies/EUR (example name)

The absolute amount to be or which has been denominated or dispensed of the currency. The property name is the ISO 4217 currency identifier [Ref. cashdispenser-1]. The property value can include a decimal point to specify fractions of the currency, for example coins.

Type: number
Minimum: 0.001
Name Pattern: ^[A-Z]{3}$

request/denomination/app/counts

This list specifies the number of items to take, or which have been taken from the storage units. If specified in a request, the output denomination must include these items.

The property name is storage unit object name as stated by the Storage.GetStorage command. The value of the entry is the number of items to take from that unit.

Type: object
Required

request/denomination/app/counts/unit1 (example name)

The number of items that have been dispensed from the specified storage unit to meet the request.

Type: integer
Minimum: 1
Name Pattern: ^unit[0-9A-Za-z]+$

request/denomination/app/cashBox

Only applies to Teller Dispensers. Amount to be paid from the teller's cash box.

Type: object, null
Default: null

request/denomination/service

Specifies a denomination request where the service is to determine the mix of items based on the inputs. The mix may require specific items to be included using partial.

Type: object, null
Default: null

request/denomination/service/partial

This list specifies items which must be included in a denominate or dispense request. Mixes may only be valid if they contain at least these specified items. This may be null if there are no minimum requirements.

The property name is storage unit object name as stated by the Storage.GetStorage command. The value of the entry is the number of items to take from that unit.

Type: object, null
Default: null

request/denomination/service/mix

Mix algorithm or house mix table to be used as defined by mixes reported by CashDispenser.GetMixTypes.

Type: string
Pattern: ^mix[0-9A-Za-z]+$
Required

request/tellerID

Only applies to Teller Dispensers, null if not applicable. Identification of teller.

Type: integer, null
Minimum: 0
Default: null

Completion Message

Payload, Version 3.0
{ "errorCode": "invalidCurrency", "result": { "currencies": { "EUR": 10.00, "USD": See result/currencies/EUR }, "values": { "unit1": 5, "unit2": See result/values/unit1 }, "cashBox": { "currencies": See result/currencies properties } } }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • invalidCurrency - There are no storage units in the device of the currency specified in the request.
  • invalidTellerID - Invalid teller ID. This error will never be generated by a Self-Service device.
  • cashUnitError - There is a problem with a storage unit. A Storage.StorageErrorEvent will be posted with the details.
  • invalidDenomination - No mix is specified and the sum of the values for counts and cashBox does not match the non-zero currencies specified.
  • invalidMixNumber - Unknown mix algorithm.
  • noCurrencyMix - The storage units specified in the request were not all the same currency and this device does not support multiple currencies.
  • notDispensable - The amount is not dispensable by the device. This error code is also returned if a unit is specified in the counts list which is not a dispensing storage unit, e.g., a retract/reject storage unit.
  • tooManyItems - The request requires too many items to be dispensed.
  • exchangeActive - The device is in an exchange state (see Storage.StartExchange).
  • noCashBoxPresent - Cash box amount needed, but teller is not assigned a cash box.
  • amountNotInMixTable - A mix table is being used to determine the denomination but the amount specified in the request is not in the mix table.

Type: string, null
Default: null

result

Specifies the denomination if successful. May be null where a denomination could not be determined.

Type: object, null
Default: null

result/currencies

List of currency and amount combinations for denomination requests or output. There will be one entry for each currency in the denomination.

Type: object
Required

result/currencies/EUR (example name)

The absolute amount to be or which has been denominated or dispensed of the currency. The property name is the ISO 4217 currency identifier [Ref. cashdispenser-1]. The property value can include a decimal point to specify fractions of the currency, for example coins.

Type: number
Minimum: 0.001
Name Pattern: ^[A-Z]{3}$

result/values

This list specifies the number of items to take, or which have been taken from the storage units. If specified in a request, the output denomination must include these items.

The property name is storage unit object name as stated by the Storage.GetStorage command. The value of the entry is the number of items to take from that unit.

Type: object
Required

result/values/unit1 (example name)

The number of items that have been dispensed from the specified storage unit to meet the request.

Type: integer
Minimum: 1
Name Pattern: ^unit[0-9A-Za-z]+$

result/cashBox

Only applies to Teller Dispensers. Amount to be paid from the teller's cash box.

Type: object, null
Default: null

Event Messages

7.2.5 - CashDispenser.Dispense

This command dispenses items from the storage units. See CashDispenser.Denominate for a description of how the denomination may be specified. The items are moved to the intermediate stacker if the device has one, and a CashDispenser.Present command is used to present the items to the user. If the device does not have an intermediate stacker the items will be presented to the user using this command. The position property in the command data specifies which output position the items are intended to be presented to, and applies whether or not the items are actually presented by this command as items may need to be stacked in a particular position ready for presentation at the intended output position.

If cashBox is true and the entire denomination cannot be satisfied, a partial denomination will be returned with the remaining amount to be supplied from the teller's cash box.

If the device is a Teller Dispenser, position can be set to outDefault. If this is the case the tellerID is used to perform the dispense operation to the assigned teller position.

Note that a genuine note can be dispensed, but is not necessarily presented to the customer, e.g., a note can be skewed or can be unfit for dispensing.

The values in the completion message report the amount dispensed and the number of items dispensed from each storage unit.

If the dispensed amount cannot be presented in one bunch of items, but the device can automatically split it into multiple bunches, this will be denoted by the bunches property in the completion message. If it is set to "unknown" or a value larger than "1" multiple presents will be necessary. If the value is set to "1" the dispensed amount can be presented in one present operation.

The process of dispensing and presenting cash may be protected by end-to-end security. This means that the hardware will generate a command nonce (returned by Common.GetCommandNonce) and the caller must use this to create a security token that authorizes dispensing the cash.

It is possible to do multiple dispense and present operations in a row using the same dispense token, as long as the total value of cash doesn't exceed the value authorized by the token.

The device will track the command nonce and E2E token used during dispense operations. Only one token can be used with the current nonce - once a dispense command is called with a token then that token will be remembered, and it will not be possible to perform a dispense command with a different token until the original nonce and token are cleared.

The device will track the total value of cash that has been dispensed and presented using the current token. The device will block any attempt to dispense or present more cash than authorized by the current token.

Once the value of cash that has been dispensed and presented reaches the value of the token, the command nonce stored in the device will be cleared. This has the effect of making any existing tokens invalid so that they can't be used again. No more cash can be dispensed until a new command nonce is read and a new token is generated.

The command nonce may be cleared for other reasons too, for example after a power failure or after a fixed time. Any tokens using the old command nonce value will become invalid when the command nonce is cleared.

If during command execution the counts of one or more storage units have changed, a Storage.CountsChangedEvent will be sent.

Command Message

Payload, Version 3.0, Required
{ "denomination": { "denomination": { "app": { "currencies": { "EUR": 10.00, "USD": See denomination/denomination/app/currencies/EUR }, "counts": { "unit1": 5, "unit2": See denomination/denomination/app/counts/unit1 }, "cashBox": { "currencies": See denomination/denomination/app/currencies properties } }, "service": { "currencies": See denomination/denomination/app/currencies properties "partial": { "unit1": See denomination/denomination/app/counts/unit1, "unit2": See denomination/denomination/app/counts/unit1 }, "mix": "mix1", "cashBox": See denomination/denomination/app/cashBox properties } }, "tellerID": 0 }, "position": "outDefault", "token": "NONCE=254611E63B2531576314E86527338D61,TOKENFORMAT=1,TOKENLENGTH=0164,DISPENSE1=50.00EUR,HMACSHA256=CB735612FD6141213C2827FB5A6A4F4846D7A7347B15434916FEA6AC16F3D2F2" }
Properties

denomination

Denomination object describing the contents of the dispense operation.

Type: object
Required

denomination/denomination

The items to be denominated or dispensed as appropriate. The mix of items is either determined by the service or the Application.

Type: object
MinProperties: 1
MaxProperties: 1
Required

denomination/denomination/app

Specifies a denomination request where the application determines the mix of items based on the inputs.

Type: object, null
Default: null

denomination/denomination/app/currencies

List of currency and amount combinations for denomination requests or output. There will be one entry for each currency in the denomination.

Type: object
Required

denomination/denomination/app/currencies/EUR (example name)

The absolute amount to be or which has been denominated or dispensed of the currency. The property name is the ISO 4217 currency identifier [Ref. cashdispenser-1]. The property value can include a decimal point to specify fractions of the currency, for example coins.

Type: number
Minimum: 0.001
Name Pattern: ^[A-Z]{3}$

denomination/denomination/app/counts

This list specifies the number of items to take, or which have been taken from the storage units. If specified in a request, the output denomination must include these items.

The property name is storage unit object name as stated by the Storage.GetStorage command. The value of the entry is the number of items to take from that unit.

Type: object
Required

denomination/denomination/app/counts/unit1 (example name)

The number of items that have been dispensed from the specified storage unit to meet the request.

Type: integer
Minimum: 1
Name Pattern: ^unit[0-9A-Za-z]+$

denomination/denomination/app/cashBox

Only applies to Teller Dispensers. Amount to be paid from the teller's cash box.

Type: object, null
Default: null

denomination/denomination/service

Specifies a denomination request where the service is to determine the mix of items based on the inputs. The mix may require specific items to be included using partial.

Type: object, null
Default: null

denomination/denomination/service/partial

This list specifies items which must be included in a denominate or dispense request. Mixes may only be valid if they contain at least these specified items. This may be null if there are no minimum requirements.

The property name is storage unit object name as stated by the Storage.GetStorage command. The value of the entry is the number of items to take from that unit.

Type: object, null
Default: null

denomination/denomination/service/mix

Mix algorithm or house mix table to be used as defined by mixes reported by CashDispenser.GetMixTypes.

Type: string
Pattern: ^mix[0-9A-Za-z]+$
Required

denomination/tellerID

Only applies to Teller Dispensers, null if not applicable. Identification of teller.

Type: integer, null
Minimum: 0
Default: null

position

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

token

The dispense token that authorizes the dispense operation, as created by the authorizing host. See the section on end-to-end security for more information.

The same token may be used multiple times with multiple calls to the CashDispenser.Dispense and CashDispenser.Present commands, as long as the total value stacked does not exceed the value given in the token. The hardware will track the total value of the cash and will raise an invalidToken error for any attempt to dispense or present more cash than authorized by the token.

The token contains a nonce returned by Common.GetCommandNonce which must match the nonce stored in the hardware. The nonce value stored in the hardware will be cleared automatically at various times, meaning that all tokens will become invalid.

The hardware will also track the token being used and block any attempt to use multiple tokens with the same nonce. The same token must be used for all calls to dispense, until the nonce is cleared and a new nonce and token is created. Any attempt to use a different token will trigger an invalidToken error.

For maximum security the client should also explicitly clear the command nonce (and hence invalidate and existing tokens,) with the Common.ClearCommandNonce command as soon as it's finished using the current token.

The dispense token will follow the standard token format, and will contain the standard keys plus the following key:

DISPENSE1: The maximum value to be dispensed. This will be a number string that may contain a fractional part. The decimal character will be ".". The value, including the fractional part, will be defined by the ISO 4217 currency identifier [Ref. cashdispenser-1]. The number will be followed by the ISO 4217 currency code. The currency code will be upper case.

For example, "123.45EUR" will be €123 and 45 cents.

The "DISPENSE" key may appear multiple times with a number suffix. For example, DISPENSE1, DISPENSE2, DISPENSE3. The number will start at 1 and increment. Each key can only be given once. Each key must have a value in a different currency. For example, DISPENSE1=100.00EUR,DISPENSE2=200.00USD

The actual amount dispensed will be given by the denomination. The value in the token MUST be greater or equal to the amount in the denomination property. If the Token has a lower value, or the Token is invalid for any reason, then the command will fail with an invalid data error code.

Type: string, null
Pattern: ^(?=[!-~]{0,1024}$)NONCE=[0-9A-F]+,TOKENFORMAT=1,TOKENLENGTH=[0-9]{4},(?:[A-Z0-9]+=[^,=]+?,)+HMACSHA256=[0-9A-F]{64}$
Format: e2eToken
Default: null

Completion Message

Payload, Version 3.0
{ "errorCode": "invalidCurrency", "denomination": { "currencies": { "EUR": 10.00, "USD": See denomination/currencies/EUR }, "values": { "unit1": 5, "unit2": See denomination/values/unit1 }, "cashBox": { "currencies": See denomination/currencies properties } }, "bunches": "1", "storage": { "in": { "unit1": { "retractOperations": 15, "deposited": { "unrecognized": 5, "type20USD1": { "fit": 15, "unfit": 0, "suspect": 0, "counterfeit": 0, "inked": 0 }, "type50USD1": See storage/in/unit1/deposited/type20USD1 properties }, "retracted": See storage/in/unit1/deposited properties "rejected": See storage/in/unit1/deposited properties "distributed": See storage/in/unit1/deposited properties "transport": See storage/in/unit1/deposited properties }, "unit2": See storage/in/unit1 properties }, "out": { "unit3": { "presented": See storage/in/unit1/deposited properties "rejected": See storage/in/unit1/deposited properties "distributed": See storage/in/unit1/deposited properties "unknown": See storage/in/unit1/deposited properties "stacked": See storage/in/unit1/deposited properties "diverted": See storage/in/unit1/deposited properties "transport": See storage/in/unit1/deposited properties }, "unit4": See storage/out/unit3 properties } } }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • invalidCurrency - There are no storage units in the device of the currency specified in the request.
  • invalidTellerID - Invalid teller ID. This error will never be generated by a Self-Service device.
  • cashUnitError - There is a problem with a storage unit. A Storage.StorageErrorEvent will be posted with the details.
  • invalidDenomination - No mix is specified and the sum of the values for counts and cashBox does not match the non-zero currencies specified.
  • invalidMixNumber - Unknown mix algorithm.
  • noCurrencyMix - The storage units specified in the request were not all of the same currency and this device does not support multiple currencies.
  • notDispensable - The amount is not dispensable by the device. This error code is also returned if a unit is specified in the counts list which is not a dispensing storage unit, e.g., a retract/reject storage unit.
  • tooManyItems - The request requires too many items to be dispensed.
  • exchangeActive - The device is in an exchange state (see Storage.StartExchange).
  • noCashBoxPresent - Cash box amount needed, however teller is not assigned a cash box.
  • amountNotInMixTable - A mix table is being used to determine the denomination but the amount specified in the request is not in the mix table.
  • unsupportedPosition - The specified output position is not supported.
  • itemsLeft - Items have been left in the transport or exit slot because of a prior dispense, present or recycler cash-in operation.
  • shutterOpen - The service cannot dispense items with an open output shutter.
  • safeDoorOpen - The safe door is open. This device requires the safe door to be closed to perform this operation (see Common.Status property).

Type: string, null
Default: null

denomination

Denomination object describing the contents of the dispense operation.

Type: object, null
Default: null

denomination/currencies

List of currency and amount combinations for denomination requests or output. There will be one entry for each currency in the denomination.

Type: object
Required

denomination/currencies/EUR (example name)

The absolute amount to be or which has been denominated or dispensed of the currency. The property name is the ISO 4217 currency identifier [Ref. cashdispenser-1]. The property value can include a decimal point to specify fractions of the currency, for example coins.

Type: number
Minimum: 0.001
Name Pattern: ^[A-Z]{3}$

denomination/values

This list specifies the number of items to take, or which have been taken from the storage units. If specified in a request, the output denomination must include these items.

The property name is storage unit object name as stated by the Storage.GetStorage command. The value of the entry is the number of items to take from that unit.

Type: object
Required

denomination/values/unit1 (example name)

The number of items that have been dispensed from the specified storage unit to meet the request.

Type: integer
Minimum: 1
Name Pattern: ^unit[0-9A-Za-z]+$

denomination/cashBox

Only applies to Teller Dispensers. Amount to be paid from the teller's cash box.

Type: object, null
Default: null

bunches

Specifies how many bunches will be required to present the request. Following values are possible:

  • <number> - The number of bunches to be presented.
  • unknown - More than one bunch is required but the precise number is unknown.

Type: string
Pattern: ^unknown$|^[0-9]*$
Default: "1"

storage

Object which lists the storage units which have had items removed or inserted during the associated operation or transaction. Only storage units whose contents have been modified are included. This property is null if no items are moved.

Type: object, null
Default: null

storage/in

Object containing the storage units which have had items inserted during the associated operation or transaction. Only storage units whose contents have been modified are included.

Type: object, null
Default: null

storage/in/unit1 (example name)

List of items moved to this storage unit by this transaction or command. The property name is the same as reported by Storage.GetStorage.

Type: object, null
Name Pattern: ^unit[0-9A-Za-z]+$
Default: null

storage/in/unit1/retractOperations

Number of cash retract operations which resulted in items entering this storage unit. This can be used where devices do not have the capability to count or validate items after presentation. May be null in command data and events if not changing.

Type: integer, null
Minimum: 0
Default: null

storage/in/unit1/deposited

The items deposited in the storage unit during a cash-in transaction. Can be null, if all values are 0.

Type: object, null
Default: null

storage/in/unit1/deposited/unrecognized

Count of unrecognized items handled by the cash interface. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

storage/in/unit1/deposited/type20USD1 (example name)

Counts of a given cash item (as reported by CashManagement.GetBankNoteTypes) broken down by classification.

Type: object, null
Default: null

storage/in/unit1/deposited/type20USD1/fit

Count of genuine cash items which are fit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

storage/in/unit1/deposited/type20USD1/unfit

Count of genuine cash items which are unfit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

storage/in/unit1/deposited/type20USD1/suspect

Count of suspected counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

storage/in/unit1/deposited/type20USD1/counterfeit

Count of counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

storage/in/unit1/deposited/type20USD1/inked

Count of cash items which have been identified as ink stained. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

storage/in/unit1/retracted

The items retracted into the storage unit after being accessible to a customer. This may be inaccurate or not counted if items are not counted or re-validated after presentation, the number of retract operations is also reported separately in retractOperations. Can be null if all values are 0.

Type: object, null
Default: null

storage/in/unit1/rejected

The items deposited in this storage unit originating from another storage unit but rejected due to being invalid. This count may be inaccurate due to the nature of rejected items. Can be null if all values are 0.

Type: object, null
Default: null

storage/in/unit1/distributed

The items deposited in this storage unit originating from another storage unit but not rejected. Can be null if all values are 0.

Type: object, null
Default: null

storage/in/unit1/transport

The items which were intended to be deposited in this storage unit but are not yet deposited. Typical use case for this property is tracking items after a jam during CashAcceptor.CashInEnd. This is not reset if initial is set for this unit by Storage.GetStorage. Can be null if all values are 0.

Type: object, null
Default: null

storage/out

Object containing the storage units which have had items removed during the associated operation or transaction. Only storage units whose contents have been modified are included.

Type: object
Required

storage/out/unit3 (example name)

List of items removed from this storage unit by this transaction or command. The property name is the same as reported by Storage.GetStorage.

Type: object, null
Name Pattern: ^unit[0-9A-Za-z]+$
Default: null

storage/out/unit3/presented

The items dispensed from this storage unit which are or were customer accessible. Will be null if no items were presented.

Type: object, null
Default: null

storage/out/unit3/rejected

The items dispensed from this storage unit which were invalid and were diverted to a reject storage unit and were not customer accessible during the operation. Will be null if no items were rejected.

Type: object, null
Default: null

storage/out/unit3/distributed

The items dispensed from this storage unit which were moved to a storage unit other than a reject storage unit and were not customer accessible during the operation. Will be null if no items were distributed.

Type: object, null
Default: null

storage/out/unit3/unknown

The items dispensed from this storage unit which moved to an unknown position. Will be null if no items were unknown.

Type: object, null
Default: null

storage/out/unit3/stacked

The items dispensed from this storage unit which are not customer accessible and are currently stacked awaiting presentation to the customer. This item list can increase and decrease as items are moved around in the device. This is not reset if initial is set for this unit by Storage.GetStorage. Will be null if no items were stacked.

Type: object, null
Default: null

storage/out/unit3/diverted

The items dispensed from this storage unit which are not customer accessible and were diverted to a temporary location due to being invalid and have not yet been deposited in a storage unit. This item list can increase and decrease as items are moved around in the device. This is not reset if initial is set for this unit by Storage.GetStorage. Will be null if no items were diverted.

Type: object, null
Default: null

storage/out/unit3/transport

The items dispensed from this storage unit which are not customer accessible and which have jammed in the transport. This item list can increase and decrease as items are moved around in the device. This is not reset if initial is set for this unit by Storage.GetStorage. Will be null if no items apply.

Type: object, null
Default: null

Event Messages

7.2.6 - CashDispenser.Present

This command will move items to the exit position for removal by the user. If a shutter exists, then it will be implicitly controlled during the present operation, even if shutterControl is false. The shutter will be closed when the user removes the items or the items are retracted. If the default position is specified the position set in the CashDispenser.Dispense command which caused these items to be dispensed will be used.

In the case where the shutter is unlocked but deliberately held shut, if the items could have been in customer access, then the errorCode presentErrorItems will be returned.

When this command successfully completes the items are in customer access.

If the previous CashDispenser.Dispense command specified that the amount must be presented in multiple bunches, the completion message includes details about remaining bunches. The additionalBunches property specifies whether there are any additional bunches to be dispensed to the customer and the number of outstanding present operations.

If the dispense operation is protected by end-to-end security, then the device will track the total value of cash presented. Once the value of cash that has been dispensed and presented reaches the value of the token, the command nonce stored in the device will be cleared. This has the effect of making any existing tokens invalid so that they can't be used again. No more cash can be dispensed until a new command nonce is read and a new token is generated.

Command Message

Payload, Version 2.0
{ "position": "outDefault" }
Properties

position

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

Completion Message

Payload, Version 2.0
{ "errorCode": "shutterNotOpen", "position": { "position": "inLeft", "additionalBunches": "1" } }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • shutterNotOpen - The shutter did not open when it should have. No items presented.
  • shutterOpen - The shutter is open when it should be closed. No items presented.
  • noItems - There are no items on the stacker.
  • exchangeActive - The device is in an exchange state (see Storage.StartExchange).
  • presentErrorNoItems - There was an error during the present operation - no items were presented.
  • presentErrorItems - There was an error during the present operation - at least some of the items were presented.
  • presentErrorUnknown - There was an error during the present operation - the position of the items is unknown. Intervention may be required to reconcile the cash amount totals.
  • unsupportedPosition - The position specified is not supported.

Type: string, null
Default: null

position

Provides information about the presented items. May be null if no items were presented.

Type: object, null
Default: null

position/position

Supplies the input or output position as one of the following values. If not specified, the default position applies. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

position/additionalBunches

Specifies how many more bunches will be required to present the request. Following values are possible:

  • <number> - The number of additional bunches to be presented.
  • unknown - More than one additional bunch is required but the precise number is unknown.

Type: string
Pattern: ^unknown$|^[0-9]*$
Default: "0"

Event Messages

7.2.7 - CashDispenser.Reject

This command will move items from the intermediate stacker to a reject storage unit. The storage unit's counts are incremented by the number of items that were or were thought to be present at the time of the Reject or the number counted by the device during the Reject. Note that the Reject storage unit counts may be unreliable.

If during command execution the counts of one or more storage units have changed, a Storage.CountsChangedEvent will be sent.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "errorCode": "cashUnitError" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • cashUnitError - A storage unit caused a problem. A Storage.StorageErrorEvent will be posted with the details.
  • noItems - There were no items to reject.
  • exchangeActive - The device is in an exchange state (see Storage.StartExchange).

Type: string, null
Default: null

Event Messages

7.2.8 - CashDispenser.SetMixTable

This command is used to set up the mix table specified by the mixNumber. Mix tables are persistent and are available to all applications in CashDispenser.Dispense and CashDispenser.Denominate commands. If mix table specified by the mixNumber already exists, then the information is overwritten with the new information.

A mix specifies how a given requested amount is composed of a set of cash items, for example USD 100 could be 5 x USD 20 or 10 x USD 10. A mix table specifies multiple mixes. An amount can be specified multiple times to include different combinations of cash items, if an amount is specified more than once the service will attempt to denominate or dispense the first amount in the table. If this mix is not possible (e.g., because of a storage unit failure) the service will search for the first mix which is possible. The service can only dispense amounts which are explicitly mentioned in the mix table.

Available mixes are reported by CashDispenser.GetMixTypes and the details of a stored mix table can be queried using CashDispenser.GetMixTable.

Command Message

Payload, Version 2.0, Required
{ "mixNumber": 21, "name": "House mix 21", "mixRows": [{ "amount": 0.30, "mix": [{ "value": 0.05, "count": 6 }] }] }
Properties

mixNumber

Number identifying the house mix table (optional).

Type: integer, null
Minimum: 1
Default: null

name

Name of the house mix table. Null if not defined.

Type: string, null
Default: null

mixRows

Array of rows of the mix table.

Type: array (object)
Required

mixRows/amount

Absolute value of the amount denominated by this mix row.

Type: number
Minimum: 0
Required

mixRows/mix

The items used to create amount. Each element in this array defines the quantity of a given item used to create the mix. An example showing how 0.30 can be broken down would be:

[
  {
    "value": 0.05,
    "count": 2
  },
  {
    "value": 0.10,
    "count": 2
  }
]

Type: array (object)
Required

mixRows/mix/value

The absolute value of a single cash item.

Type: number
Minimum: 0
Required

mixRows/mix/count

The number of items of value contained in the mix.

Type: integer
Minimum: 1
Required

Completion Message

Payload, Version 2.0
{ "errorCode": "invalidMixNumber" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • invalidMixNumber - The mixNumber is invalid.
  • invalidMixTable - The contents of at least one of the defined rows of the mix table is incorrect.

Type: string, null
Default: null

Event Messages

None

7.2.9 - CashDispenser.TestCashUnits

This command is used to test cash dispense storage units following replenishment. The command payload specifies where items dispensed as a result of this command should be moved to.

The operation performed to test the storage units is vendor dependent.

All storage units which match the following criteria are tested.

If the hardware is able to do so tests are continued even if an error occurs while testing one of the storage units. The command completes with success completion message if the service successfully manages to test all the testable cash units regardless of the outcome of the test. This is the case if all testable storage units could be tested and a dispense was possible from at least one of the storage units.

A Storage.StorageErrorEvent will be sent for any cashOut unit which cannot be tested, or which failed the test. If no storage units could be tested or no storage units are testable then a cashUnitError code will be returned and Storage.StorageErrorEvent events generated for every storage unit that encountered a problem.

If during command execution the counts of one or more storage units have changed, a Storage.CountsChangedEvent will be sent.

When end-to-end (E2E) security is being enforced by a device, if this command would result in notes being moved to a position where they would be accessible, this command will be blocked from executing. The exact definition of 'accessible' is hardware dependent but, for example, any position outside the safe, or any position where a attacker could access the cash should mean the command is blocked. Any attempt to execute the command will complete with the completion code unsupportedCommand. This is required because there is currently no E2E security defined for this command, and if the command were permitted it would be possible to extract cash and bypass E2E security.

Command Message

Payload, Version 2.0
{ "target": { "target": "singleUnit", "unit": "unit4", "index": 1 } }
Properties

target

Defines where items are to be moved to as one of the following:

  • A single storage unit, further specified by unit.
  • Internal areas of the device.
  • An output position.

This may be null if the service is to determine where items are to be moved.

Type: object, null
Default: null

target/target

This property specifies the target. Following values are possible:

  • singleUnit - A single storage unit defined by unit.
  • retract - A retract storage unit defined by index.
  • transport - The transport.
  • stacker - Intermediate stacker area.
  • reject - Reject storage unit.
  • itemCassette - Storage units which would be used during a cash-in transaction including recycling storage units.
  • cashIn - Storage units which would be used during a cash-in transaction but not including recycling storage units.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Required

target/unit

If target is set to singleUnit, this property specifies the object name (as stated by the Storage.GetStorage command) of a single storage unit. Ignored and may be null for all other cases.

Type: string, null
Pattern: ^unit[0-9A-Za-z]+$
Default: null

target/index

If target is set to retract this property defines a position inside the retract storage units. index starts with a value of 1 for the first retract position and increments by one for each subsequent position. If there are several retract storage units (of type cashInRetract or cashOutRetract as appropriate to the operation and as reported by types in Storage.GetStorage), index would be incremented from the first position of the first retract storage unit to the last position of the last retract storage unit. The maximum value of index is the sum of maximum of each retract storage unit. If retractArea is not set to retract the value of this property is ignored and may be null in command data.

Type: integer, null
Minimum: 1
Default: null

Completion Message

Payload, Version 2.0
{ "errorCode": "cashUnitError" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • cashUnitError - A storage unit caused a problem that meant all storage units could not be tested or no storage units were testable. One or more Storage.StorageErrorEvent events will be posted with the details.
  • unsupportedPosition - The position specified is not supported.
  • shutterNotOpen - The shutter is not open or did not open when it should have. No items presented.
  • shutterOpen - The shutter is open when it should be closed. No items presented.
  • invalidCashUnit - The storage unit number specified is not valid.
  • exchangeActive - The device is in an exchange state (see Storage.StartExchange).
  • presentErrorNoItems - There was an error during the present operation - no items were presented.
  • presentErrorItems - There was an error during the present operation - at least some of the items were presented.
  • presentErrorUnknown - There was an error during the present operation - the position of the items is unknown. Intervention may be required to reconcile the cash amount totals.

Type: string, null
Default: null

Event Messages

7.2.10 - CashDispenser.Count

This command empties the specified storage unit(s). All items dispensed from the unit are counted and moved to the specified output location.

The number of items counted can be different from the number of items dispensed in cases where the Dispenser can detect this information. If the Dispenser cannot differentiate between what is dispensed and what is counted, then dispensed will be the same as counted.

Upon successful command execution the storage unit(s) counts are reset.

When end-to-end (E2E) security is being enforced by a device this command will be blocked from executing. Any attempt to execute the command will complete with the completion code unsupportedData. This is required because there is currently no E2E security defined for this command, and if the command were permitted it would be possible to extract cash and bypass E2E security.

Command Message

Payload, Version 2.0
{ "unit": "unit1", "position": "outDefault" }
Properties

unit

Specifies the unit to empty. If this property is null, all units are emptied. Following values are possible:

  • <storage unit identifier> - The storage unit to be emptied as identifier.

Type: string, null
Pattern: ^unit[0-9A-Za-z]+$
Default: null

position

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

Completion Message

Payload, Version 2.0
{ "errorCode": "cashUnitError", "countedCashUnits": { "unit1": { "dispensed": 100, "counted": 100, "replenishmentStatus": "ok", "status": "ok" }, "unit2": See countedCashUnits/unit1 properties } }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

  • cashUnitError - A storage unit caused a problem. A Storage.StorageErrorEvent will be posted with the details.
  • unsupportedPosition - The position specified is not supported.
  • safeDoorOpen - The safe door is open. This device requires the safe door to be closed in order to perform this operation (see Common.Status property).
  • exchangeActive - The device is in an exchange state (see command Storage.StartExchange).

Type: string, null
Default: null

countedCashUnits

List of counted storage unit objects. Will be null if no units were counted.

Type: object, null
Default: null

countedCashUnits/unit1 (example name)

Counted storage unit object. Object name is the same as used in Storage.GetStorage.

Type: object
Name Pattern: ^unit[0-9A-Za-z]+$

countedCashUnits/unit1/dispensed

The number of items that were dispensed during the emptying of the storage unit.

Type: integer
Minimum: 1
Required

countedCashUnits/unit1/counted

The number of items that were counted during the emptying of the storage unit.

Type: integer
Minimum: 1
Required

countedCashUnits/unit1/replenishmentStatus

The state of the media in the unit if it can be determined. Note that overall status of the storage unit must be considered when deciding whether the storage unit is usable and whether replenishment status is applicable. If the overall status is missing this will not be reported. May be null in events if not changing, otherwise the following values are possible:

  • ok - The storage unit media is in a good state.
  • full - The storage unit is full. This is based on hardware detection, either on sensors or counts.
  • high - The storage unit is almost full (either sensor based or exceeded the highThreshold).
  • low - The storage unit is almost empty (either sensor based or below the lowThreshold).
  • empty - The storage unit is empty, or insufficient items in the storage unit are preventing further dispense operations. If the storage unit has hardwareSensors, this state is not set by counts.

Type: string, null
Default: null

countedCashUnits/unit1/status

The state of the unit. This property may be null in events if the state did not change, otherwise the following values are possible:

  • ok - The storage unit is in a good state.
  • inoperative - The storage unit is inoperative.
  • missing - The storage unit is missing.
  • notConfigured - The storage unit has not been configured for use.
  • manipulated - The storage unit has been inserted (including removal followed by a reinsertion) when the device was not in the exchange state - see command Storage.StartExchange. This storage unit cannot be used. Only applies to services which support the exchange state.

Type: string, null
Default: null

Event Messages

7.2.11 - CashDispenser.PrepareDispense

On some hardware it can take a significant amount of time for the Cash Dispenser to get ready to dispense media. On this type of hardware this command can be used to improve transaction performance.

If this command is supported, then applications can help to improve the time taken to dispense media by issuing this command as soon as the application knows that a dispense is likely to happen. This command either prepares the device for the next dispense operation or terminates the dispense preparation if the subsequent dispense operation is no longer required.

With the exception of the CashDispenser.Denominate and CashDispenser.Dispense commands, which will not stop the dispense preparation, any mechanical command on CashDispenser or CashAcceptor will automatically stop the dispense preparation.

If this command is executed and the device is already in the specified action state, then this execution will have no effect and will complete with a successful completion message.

Command Message

Payload, Version 2.0, Required
{ "action": "start" }
Properties

action

A value specifying the type of actions. Following values are possible:

  • start - Initiates the action to prepare for the next dispense command. This command does not wait until the device is ready to dispense before returning a completion, it completes as soon as the preparation has been initiated.
  • stop - Stops the previously activated dispense preparation. For example, the motor of the transport will be stopped. This should be used if for some reason the subsequent dispense operation is no longer required.

Type: string
Required

Completion Message

Payload, Version 2.0
{ "errorCode": "exchangeActive" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. Following values are possible:

Type: string, null
Default: null

Event Messages

None

7.3 - Event Messages

7.3.1 - CashDispenser.DelayedDispenseEvent

This event is generated if the start of a dispense operation has been delayed.

Event Message

Payload, Version 2.0, Required
{ "delay": 0.10 }
Properties

delay

The time in seconds by which the dispense operation will be delayed.

Type: number
Required

7.3.2 - CashDispenser.StartDispenseEvent

This event is generated when a delayed dispense operation begins.

Event Message

Payload, Version 2.0
This message does not define any properties.

7.3.3 - CashDispenser.IncompleteDispenseEvent

This event is generated during CashDispenser.Dispense when it has not been possible to dispense the entire denomination, but part of the requested denomination is on the intermediate stacker or in customer access. Note that in this case the values in this payload report the amount and number of each denomination that are in customer access or on the intermediate stacker. CashDispenser.GetPresentStatus can be used to determine whether the items are in customer access.

Event Message

Payload, Version 3.0, Required
{ "currencies": { "EUR": 10.00, "USD": See currencies/EUR }, "values": { "unit1": 5, "unit2": See values/unit1 }, "cashBox": { "currencies": See currencies properties } }
Properties

currencies

List of currency and amount combinations for denomination requests or output. There will be one entry for each currency in the denomination.

Type: object
Required

currencies/EUR (example name)

The absolute amount to be or which has been denominated or dispensed of the currency. The property name is the ISO 4217 currency identifier [Ref. cashdispenser-1]. The property value can include a decimal point to specify fractions of the currency, for example coins.

Type: number
Minimum: 0.001
Name Pattern: ^[A-Z]{3}$

values

This list specifies the number of items to take, or which have been taken from the storage units. If specified in a request, the output denomination must include these items.

The property name is storage unit object name as stated by the Storage.GetStorage command. The value of the entry is the number of items to take from that unit.

Type: object
Required

values/unit1 (example name)

The number of items that have been dispensed from the specified storage unit to meet the request.

Type: integer
Minimum: 1
Name Pattern: ^unit[0-9A-Za-z]+$

cashBox

Only applies to Teller Dispensers. Amount to be paid from the teller's cash box.

Type: object, null
Default: null

8 - Cash Acceptor Interface

This chapter defines the Cash Acceptor interface functionality and messages.

This specification describes the functionality of an XFS4IoT compliant Cash Acceptor interface. It defines the interface-specific commands that can be issued to the service using the WebSocket endpoint.

Persistent values are maintained through power failures, open sessions, close sessions and system resets.

This specification covers the acceptance of items. An "item" is defined as any media that can be accepted and includes coupons, documents, bills and coins.

8.1 - Command Messages

8.1.1 - CashAcceptor.GetCashInStatus

This command is used to get information about the status of the currently active cash-in transaction, or in the case where no cash-in transaction is active the status of the most recently ended cash-in transaction. This value is persistent and is valid until the next CashAcceptor.CashInStart command and is not deleted by a dispense or check-in transaction.

If end-to-end security is supported by the hardware, the cash-in status will be protected by a security token. If end-to-end security is not supported then it's not possible to guarantee that the cash-in status hasn't been altered, possibly by an attacker. To avoid this risk the client must always call this command and validate the security token.

If end-to-end security is being used the caller must pass in a nonce value. This value will be included in the security token that is returned. The caller must check that the original nonce value matches the token - if they do not match then the token is invalid.

If end-to-end security is being used the caller must also call Common.StartSecureOperation with a unique ID before starting any cash in commands. This unique ID will be included in the token and is used so that a single token can protect multiple transactions. Note that the cash values in the token include all values since Common.StartSecureOperation was called. This means that, if there have been multiple cash in transactions, the token values will not match the other values in the result of this command. The token values will be the sum of all previous transactions since Common.StartSecureOperation was called.

Command Message

Payload, Version 2.1
{ "nonce": "646169ECDD0E440C2CECC8DDD7C27C22" }
Properties

nonce

A nonce value to be used when creating the end-to-end security token in the response. If no token is requested this property should be null. See the generic end-to-end security documentation for more details.

Type: string, null
Pattern: ^[0-9A-F]{32}$|^[0-9]*$
Default: null

Completion Message

Payload, Version 2.0
{ "status": "unknown", "numOfRefused": 0, "noteNumberList": { "unrecognized": 5, "type20USD1": { "fit": 15, "unfit": 0, "suspect": 0, "counterfeit": 0, "inked": 0 }, "type50USD1": See noteNumberList/type20USD1 properties }, "token": "string" }
Properties

status

Status of the currently active or most recently ended cash-in transaction. The following values are possible:

  • ok - The cash-in transaction is complete and has ended with CashAcceptor.CashInEnd.
  • rollback - The cash-in transaction ended with CashAcceptor.CashInRollback.
  • active - There is a cash-in transaction active. See the CashAcceptor.CashInStart command description for a definition of an active cash-in transaction.
  • retract - The cash-in transaction ended with CashManagement.Retract.
  • unknown - The state of the cash-in transaction is unknown. This status is also set if the noteNumberList details are not known or are not reliable.
  • reset - The cash-in transaction ended with CashManagement.Reset.

Type: string
Default: "unknown"

numOfRefused

Specifies the number of items refused during the currently active or most recently ended cash-in transaction period. May be null if no items were refused.

Type: integer, null
Minimum: 0
Default: null

noteNumberList

List of banknote types that were inserted, identified, and accepted during the currently active or most recently ended cash-in transaction period. If items have been rolled back (status is rollback) they will be included in this list. It will be null if no banknotes were accepted.

Includes any identified notes.

Type: object, null
Default: null

noteNumberList/unrecognized

Count of unrecognized items handled by the cash interface. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

noteNumberList/type20USD1 (example name)

Counts of a given cash item (as reported by CashManagement.GetBankNoteTypes) broken down by classification.

Type: object, null
Default: null

noteNumberList/type20USD1/fit

Count of genuine cash items which are fit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

noteNumberList/type20USD1/unfit

Count of genuine cash items which are unfit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

noteNumberList/type20USD1/suspect

Count of suspected counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

noteNumberList/type20USD1/counterfeit

Count of counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

noteNumberList/type20USD1/inked

Count of cash items which have been identified as ink stained. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

token

The cash-in status token that protects the cash-in status. Only returned if a nonce was included in the command, and Common.StartSecureOperation was called at the start of a cash-in transaction. See end-to-end security for more information.

An example is

NONCE=1414,TOKENFORMAT=1,TOKENLENGTH=0182,UNIQUEID=4321,VALIDATEDAMOUNT1=500.00EUR,SUSPECTAMOUNT1=50.00EUR,HMACSHA256=2AD289ECA5FD2DBBFA147796F99C6DC2ED07A975DBADC0CDA81263E1C6966729            

Note that VALIDATEDAMOUNT, SUSPECTAMOUNT, etc are the sum of values since Common.StartSecureOperation was called, and may be different to the noteNumberList property.

Type: string, null
Pattern: ^(?=[!-~]{0,1024}$)NONCE=[0-9A-F]+,TOKENFORMAT=1,TOKENLENGTH=[0-9]{4},(?:[A-Z0-9]+=[^,=]+?,)+HMACSHA256=[0-9A-F]{64}$
Format: e2eToken
Default: null

Event Messages

None

8.1.2 - CashAcceptor.GetReplenishTarget

This command is used to determine which storage units can be specified as targets for a given source storage unit with the CashAcceptor.Replenish command. For example, it can be used to determine which targets can be used for replenishment from a replenishment container or from a recycle unit.

Command Message

Payload, Version 2.0, Required
{ "source": "unit2" }
Properties

source

The name of the storage unit (as stated by the Storage.GetStorage command) which would be used as the source of the replenishment operation.

Type: string
Required

Completion Message

Payload, Version 2.0
{ "targets": [{ "target": "unit1" }] }
Properties

targets

Array of all suitable replenish targets. Empty if no suitable target was found.

Type: array (object), null
Default: null

targets/target

The name of the storage unit (as stated by the Storage.GetStorage command) that can be used as a target.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

Event Messages

None

8.1.3 - CashAcceptor.GetDeviceLockStatus

This command is used to retrieve the lock/unlock statuses of the CashAcceptor device and each of its storage units. This is only supported if the physical locking and unlocking of the device or the storage units is supported.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "deviceLockStatus": "lockUnknown", "unitLock": [{ "storageUnit": "unit1", "unitLockStatus": "lockUnknown" }] }
Properties

deviceLockStatus

Specifies the physical lock/unlock status of the CashAcceptor device. The following values are possible:

  • lock - The device is physically locked.
  • unlock - The device is physically unlocked.
  • lockUnknown - Due to a hardware error or other condition, the physical lock/unlock status of the device cannot be determined.
  • lockNotSupported - The service does not support reporting the physical lock/unlock status of the device.

Type: string
Default: "lockUnknown"

unitLock

Array specifying the physical lock/unlock status of storage units. Units that do not support the physical lock/unlock control are not contained in the array. If there are no units that support physical lock/unlock control this will be empty.

Type: array (object), null
Default: null

unitLock/storageUnit

Object name of the storage unit as stated by Storage.GetStorage.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

unitLock/unitLockStatus

Specifies the physical lock/unlock status of storage units supported. The following values are possible:

  • lock - The storage unit is physically locked.
  • unlock - The storage unit is physically unlocked.
  • lockUnknown - Due to a hardware error or other condition, the physical lock/unlock status of the storage unit cannot be determined.

Type: string
Default: "lockUnknown"

Event Messages

None

8.1.4 - CashAcceptor.GetDepleteSource

This command is used to determine which storage units can be specified as source storage units for a given target storage unit with the CashAcceptor.Deplete command. For example, it can be used to determine which sources can be used for depletion to a replenishment container or to a cash-in storage unit.

Command Message

Payload, Version 2.0, Required
{ "cashUnitTarget": "unit2" }
Properties

cashUnitTarget

Object name of the storage unit (as stated by the Storage.GetStorage command) which would be used as the target of the depletion operation.

Type: string
Required

Completion Message

Payload, Version 2.0
{ "depleteSources": [{ "cashUnitSource": "unit1" }] }
Properties

depleteSources

Array of all suitable deplete sources. Empty if no suitable source was found.

Type: array (object), null
Default: null

depleteSources/cashUnitSource

The name of the storage unit (as stated by the Storage.GetStorage command) that can be used as a source.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

Event Messages

None

8.1.5 - CashAcceptor.GetPresentStatus

This command is used to obtain the status of the most recent attempt to present or return items to the customer. This information includes the number of items previously moved to the output position and the number of items which have yet to be returned as a result of the following commands: CashAcceptor.CashIn, CashAcceptor.CashInRollback, CashAcceptor.PreparePresent, CashAcceptor.PresentMedia, CashManagement.OpenShutter (in the case of returning multiple bunches).

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "position": "outDefault", "presentState": "unknown", "additionalBunches": "unknown", "bunchesRemaining": 0, "returnedItems": { "unrecognized": 5, "type20USD1": { "fit": 15, "unfit": 0, "suspect": 0, "counterfeit": 0, "inked": 0 }, "type50USD1": See returnedItems/type20USD1 properties }, "totalReturnedItems": See returnedItems properties "remainingItems": See returnedItems properties }
Properties

position

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

presentState

Supplies the status of the items that were to be presented by the most recent attempt to present or return items to the customer. The following values are possible:

  • presented - The items were presented. This status is set as soon as the customer has access to the items.
  • notPresented - The customer has not had access to the items.
  • unknown - It is not known if the customer had access to the items.

Type: string
Default: "unknown"

additionalBunches

Specifies whether additional bunches of items are remaining to be presented as a result of the most recent operation. The following values are possible:

  • none - No additional bunches remain.
  • oneMore - At least one additional bunch remains.
  • unknown - It is unknown whether additional bunches remain.

Type: string
Default: "unknown"

bunchesRemaining

If additionalBunches is oneMore, specifies the number of additional bunches of items remaining to be presented as a result of the current operation. This property is null if any of the following are true:

  • If the number of additional bunches is at least one, but the precise number is unknown.
  • additionalBunches is not oneMore.

Type: integer, null
Minimum: 0
Default: null

returnedItems

Array holding a list of counts of banknotes which have been moved to the output position as a result of the most recent operation.

Type: object, null
Default: null

returnedItems/unrecognized

Count of unrecognized items handled by the cash interface. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

returnedItems/type20USD1 (example name)

Counts of a given cash item (as reported by CashManagement.GetBankNoteTypes) broken down by classification.

Type: object, null
Default: null

returnedItems/type20USD1/fit

Count of genuine cash items which are fit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

returnedItems/type20USD1/unfit

Count of genuine cash items which are unfit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

returnedItems/type20USD1/suspect

Count of suspected counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

returnedItems/type20USD1/counterfeit

Count of counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

returnedItems/type20USD1/inked

Count of cash items which have been identified as ink stained. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

totalReturnedItems

Array of cumulative counts of banknotes which have been moved to the output position. This value will be reset when a CashAcceptor.CashInStart, CashAcceptor.CashIn, CashAcceptor.CashInEnd, CashManagement.Retract, CashManagement.Reset or CashAcceptor.CashInRollback command is executed.

Type: object, null
Default: null

remainingItems

Array of counts of banknotes on the intermediate stacker or transport which have not been yet moved to the output position.

Type: object, null
Default: null

Event Messages

None

8.1.6 - CashAcceptor.CashInStart

Before initiating a cash-in operation, an application must issue this command to begin a cash-in transaction. During a cash-in transaction any number of CashAcceptor.CashIn commands may be issued. The transaction is ended when either a CashAcceptor.CashInRollback, CashAcceptor.CashInEnd, CashManagement.Retract or CashManagement.Reset command is sent. Where shutterControl is false this command precedes any explicit operation of the shutters.

If an application wishes to determine where the notes went during a transaction it can execute a Storage.GetStorage before and after the transaction and then derive the difference.

A hardware failure during the cash-in transaction does not reset the note number list information; instead, the note number list information will include items that could be accepted and identified up to the point of the hardware failure.

If supported by cashInLimit, an individual cash-in transaction can be limited to a maximum number of items (totalItemsLimit) or a maximum amount (amountLimit). If not supported or specified, the number of items accepted in the transaction is limited by the capacity of the intermediateStacker. Any limitations specified by these parameters only apply to the individual cash-in transaction; subsequent transactions are not affected. The following table shows some examples of how the transaction can be limited.

Transaction limits totalItemsLimit amountLimit
EUR 100 or GBP 200 or USD 500
Maximum number of items allowed limited by physical capability.
0 EUR 100
GBP 200
USD 500
EUR 100 or GBP 200, USD refused
Maximum 50 items allowed.
50 EUR 100
GBP 200
USD 500, no limit on GBP, other currencies refused
Maximum number of items allowed limited by physical capability.
0 GBP 0
USD 500
EUR limited by physical capability of the device. Other currencies refused. 0 EUR 0
EUR limited by physical capability of the device. GBP 100, USD refused. 0 EUR 0
GBP 100

Command Message

Payload, Version 2.0
{ "tellerID": 0, "useRecycleUnits": true, "outputPosition": "outDefault", "inputPosition": "inDefault", "totalItemsLimit": 0, "amountLimit": [{ "currency": "USD", "value": 20.00 }] }
Properties

tellerID

Identification of teller. This property is not applicable to Self-Service devices and can therefore be null.

Type: integer, null
Minimum: 0
Default: null

useRecycleUnits

Specifies whether the recycle storage units should be used when items are cashed in on a successful CashAcceptor.CashInEnd command. This property will be ignored if there are no recycle storage units or the hardware does not support this.

Type: boolean
Default: true

outputPosition

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

inputPosition

Supplies the input position as one of the following values. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.

Type: string
Default: "inDefault"

totalItemsLimit

If set to a non-zero value, specifies a limit on the total number of items to be accepted during the cash-in transaction. If set to 0, there will be no limit on the number of items. This limitation can only be used if byTotalItems is true.

Type: integer
Minimum: 0
Default: 0

amountLimit

If specified, provides a list of the maximum amount of one or more currencies to be accepted during the cash-in transaction. This limitation can only be used if byAmount is true.

If not specified, no currency specific limit is placed on the transaction.

If specified for one currency and the device can handle multiple currencies in a single cash-in transaction, any currencies not defined in this array are refused.

If a value of null is specified for a currency, there is no amount limit applied to the currency.

Type: array (object), null
Default: null

amountLimit/currency

ISO 4217 currency identifier [Ref. cashmanagement-1].

Type: string
Pattern: ^[A-Z]{3}$
Required

amountLimit/value

Absolute value of a cash item or items. May be a floating-point value to allow for coins and notes which have a value which is not a whole multiple of the currency unit.

If applied to a storage unit, this applies to all contents, may be 0 if mixed and may only be modified in an exchange state if applicable.

May be null in command data or events if not being modified.

Type: number, null
Minimum: 0
Default: null

Completion Message

Payload, Version 2.0
{ "errorCode": "invalidTellerId" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • invalidTellerId - The teller ID is invalid. This error will never be generated by a Self-Service device.
  • unsupportedPosition - The position specified is not supported.
  • exchangeActive - The device is in the exchange state.
  • cashInActive - The device is already in the cash-in state due to a previous CashAcceptor.CashInStart command.
  • safeDoorOpen - The safe door is open. This device requires the safe door to be closed in order to perform this command (see Common.Status property).

Type: string, null
Default: null

Event Messages

None

8.1.7 - CashAcceptor.CashIn

This command moves items into the cash device from an input position.

On devices with implicit shutter control, the CashAcceptor.InsertItemsEvent will be generated when the device is ready to start accepting media.

The items may pass through the banknote reader for identification. Failure to identify items does not mean that the command has failed - even if some or all of the items are rejected by the banknote reader the command may return success. In this case one or more CashAcceptor.InputRefuseEvent events will be sent to report the rejection. See also the paragraph below about returning refused items.

If the device does not have a banknote reader, then the completion message will be empty.

If the device has a cash-in stacker then this command will cause inserted genuine items (see Note Classification) to be moved there after validation. Counterfeit, suspect or inked items may also be moved to the cash-in stacker, but some devices may immediately move them to a designated storage unit. Items on the stacker will remain there until the current cash-in transaction is either cancelled by the CashAcceptor.CashInRollback command or confirmed by the CashAcceptor.CashInEnd command. These commands will cause any non-genuine items on the cash-in stacker to be moved to the appropriate storage unit. If there is no cash-in stacker then this command will move items directly to the storage units and the CashAcceptor.CashInRollback command will not be supported. Storage unit information will be updated accordingly whenever notes are moved to a storage unit during this command.

Note that the acceptor status property may change value during a cash-in transaction. If media has been retained to storage units during a cash-in transaction, it may mean that acceptor is set to stop, which means subsequent cash-in operations may not be possible. In this case, the subsequent command fails with errorCode cashUnitError.

The shutterControl property will determine whether the shutter is controlled implicitly by this command or whether the application must explicitly open and close the shutter using the CashManagement.OpenShutter, CashManagement.CloseShutter or CashAcceptor.PresentMedia commands. If shutterControl is false then this command does not operate the shutter in any way, the application is responsible for all shutter control. If shutterControl is true, this command opens the shutter at the start of the command and closes it once bills are inserted.

The presentControl property will determine whether it is necessary to call the CashAcceptor.PresentMedia command in order to move items to the output position. If presentControl is true, then all items are moved immediately to the correct output position for removal (a CashManagement.OpenShutter command will be needed in the case of explicit shutter control). If presentControl is false, then items are not returned immediately and must be presented to the correct output position for removal using the CashAcceptor.PresentMedia command.

It is possible that a device may divide bill or coin accepting into a series of sub-operations under hardware control. In this case a CashAcceptor.SubCashInEvent may be sent after each sub-operation, if the hardware capabilities allow it.

Returning items (single bunch):

If shutterControl is true, and a single bunch of items is returned then this command will complete once the notes have been returned. A CashManagement.ItemsPresentedEvent will be generated.

If shutterControl is false, and a single bunch of items is returned then this command will complete without generating a CashManagement.ItemsPresentedEvent, instead the event will be generated by the subsequent CashManagement.OpenShutter or CashAcceptor.PresentMedia command.

Returning items (multiple bunches):

It is possible that a device will in certain situations return refused items in multiple bunches. In this case, this command will not complete until the final bunch has been presented and after the last CashManagement.ItemsPresentedEvent has been generated. For these devices shutterControl and presentControl fields of the positionCapabilities structure returned from the Common.Capabilities / CashAcceptor.PositionCapabilities query must both be true otherwise it will not be possible to return multiple bunches. Additionally it may be possible to request the completion of this command with a Common.Cancel before the final bunch is presented so that after the completion of this command the CashManagement.Retract or CashManagement.Reset command can be used to move the remaining bunches, although the ability to do this will be hardware dependent.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "errorCode": "cashUnitError", "items": { "unrecognized": 5, "type20USD1": { "fit": 15, "unfit": 0, "suspect": 0, "counterfeit": 0, "inked": 0 }, "type50USD1": See items/type20USD1 properties } }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • cashUnitError - A problem occurred with a storage unit. A Storage.StorageErrorEvent will be sent with the details.
  • tooManyItems - There were too many items inserted previously. The cash-in stacker is full at the beginning of this command. This may also be reported where a limit specified by CashAcceptor.CashInStart has already been reached at the beginning of this command.
  • noItems - There were no items to cash-in.
  • exchangeActive - The device is in an exchange state.
  • shutterNotClosed - Shutter failed to close. In the case of explicit shutter control the application should close the shutter first.
  • noCashInActive - There is no cash-in transaction active.
  • positionNotEmpty - The output position is not empty so a cash-in is not possible.
  • safeDoorOpen - The safe door is open. This device requires the safe door to be closed in order to perform this command (see Common.Status property).
  • foreignItemsDetected - Foreign items have been detected inside the input position.
  • shutterNotOpen - Shutter failed to open.

Type: string, null
Default: null

items

Items detected during the command. May be null if no items were detected. This information is not cumulative over multiple CashIn commands.

Type: object, null
Default: null

items/unrecognized

Count of unrecognized items handled by the cash interface. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

items/type20USD1 (example name)

Counts of a given cash item (as reported by CashManagement.GetBankNoteTypes) broken down by classification.

Type: object, null
Default: null

items/type20USD1/fit

Count of genuine cash items which are fit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

items/type20USD1/unfit

Count of genuine cash items which are unfit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

items/type20USD1/suspect

Count of suspected counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

items/type20USD1/counterfeit

Count of counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

items/type20USD1/inked

Count of cash items which have been identified as ink stained. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

Event Messages

8.1.8 - CashAcceptor.CashInEnd

This command ends a cash-in transaction. If cash items are on the stacker as a result of a CashAcceptor.CashIn command these items are moved to the appropriate storage units.

The cash-in transaction is ended even if this command does not complete successfully.

In the special case where all the items inserted by the customer are classified as counterfeit and/or suspect items and the service is configured to automatically retain these item types then the command will complete with success even if the hardware may have already moved the counterfeit and/or suspect items to their respective storage units on the CashAcceptor.CashIn command and there are no items on the stacker at the start of the command. This allows the location of the notes retained to be reported in the completion payload. If no items are available for cash-in for any other reason, the noItems error code is returned.

If during command execution the counts of one or more storage units have changed, a Storage.CountsChangedEvent will be sent.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "errorCode": "cashUnitError" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • cashUnitError - A problem occurred with a storage unit. A Storage.StorageErrorEvent will be sent with the details.
  • noItems - There were no items to cash-in.
  • exchangeActive - The device is in an exchange state.
  • noCashInActive - There is no cash-in transaction active.
  • positionNotEmpty - The input or output position is not empty.
  • safeDoorOpen - The safe door is open. This device requires the safe door to be closed in order to perform this command (see Common.Status property).

Type: string, null
Default: null

Event Messages

8.1.9 - CashAcceptor.CashInRollback

This command is used to roll back a cash-in transaction. It causes all the cash items cashed in since the last CashAcceptor.CashInStart command to be returned to the customer.

This command ends the current cash-in transaction. The cash-in transaction is ended even if this command does not complete successfully.

The shutterControl property will determine whether the shutter is controlled implicitly by this command or whether the application must explicitly open and close the shutter using the CashManagement.OpenShutter, CashManagement.CloseShutter or CashAcceptor.PresentMedia commands. If shutterControl is false then this command does not operate the shutter in any way, the application is responsible for all shutter control. If shutterControl is true, then this command opens the shutter and it is closed when all items are removed.

The presentControl property will determine whether it is necessary to call the CashAcceptor.PresentMedia command in order to move items to the output position. If presentControl is true then all items are moved immediately to the correct output position for removal (a CashManagement.OpenShutter command will be needed in the case of explicit shutter control). If presentControl is false, then items are not returned immediately and must be presented to the correct output position for removal using the CashAcceptor.PresentMedia command.

Items are returned in a single bunch or multiple bunches in the same way as described for the CashAcceptor.CashIn command.

In the special case where all the items inserted by the customer are classified as counterfeit and/or suspect, and the service is configured to automatically retain these item types, then the command will complete with success even though no items are returned to the customer. This allows the location of the notes retained to be reported in the completion payload. The application can tell if items have been returned or not via the CashManagement.ItemsPresentedEvent. This event will be generated before the command completes when items are returned. This event will not be generated if no items are returned. If no items are available to rollback for any other reason, the noItems error code is returned.

If during command execution the counts of one or more storage units have changed, a Storage.CountsChangedEvent will be sent.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 2.0
{ "errorCode": "cashUnitError" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • cashUnitError - A problem occurred with a storage unit. A Storage.StorageErrorEvent will be sent with the details.
  • shutterNotOpen - The shutter failed to open. In the case of explicit shutter control the application may have failed to open the shutter before issuing the command.
  • exchangeActive - The device is in an exchange state.
  • noCashInActive - There is no cash-in transaction active.
  • positionNotEmpty - The input or output position is not empty.
  • noItems - There were no items to rollback.

Type: string, null
Default: null

Event Messages

8.1.10 - CashAcceptor.ConfigureNoteTypes

This command is used to change the note types the banknote reader should accept during cash-in. Only note types which are to be changed need to be specified in the command payload. If an unknown note type is given the completion code unsupportedData will be returned.

The values set by this command are persistent.

Command Message

Payload, Version 2.0, Required
{ "items": [{ "item": "type20USD1", "enabled": false }] }
Properties

items

An array which specifies which note types are to be disabled or re-enabled.

Type: array (object)
Required

items/item

A cash item as reported by CashManagement.GetBankNoteTypes.

Type: string
Pattern: ^type[0-9A-Z]+$
Required

items/enabled

If true, the banknote reader will accept this note type during a cash-in operations. If false, the banknote reader will refuse this note type, unless it must be retained by note classification rules.

Type: boolean
Required

Completion Message

Payload, Version 2.0
{ "errorCode": "exchangeActive" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • exchangeActive - The device is in the exchange state.
  • cashInActive - A cash-in transaction is active. This device requires that no cash-in transaction is active in order to perform the command.

Type: string, null
Default: null

Event Messages

None

8.1.11 - CashAcceptor.CreateSignature

This command is used to create a reference signature which can be compared with the available signatures of the cash-in transactions to track back the customer.

When this command is executed, the device waits for a note to be inserted at the input position, transports the note to the recognition module, creates the signature and then returns the note to the output position.

The shutterControl property will determine whether the shutter is controlled implicitly by this command or whether the application must explicitly open and close the shutter using the CashManagement.OpenShutter, CashManagement.CloseShutter or CashAcceptor.PresentMedia commands. If shutterControl is false, then this command does not operate the shutter in any way, and the application is responsible for all shutter control. If shutterControl is true, then this command opens and closes the shutter at various times during the command execution and the shutter is finally closed when all items are removed.

The presentControl property will determine whether it is necessary to call the CashAcceptor.PresentMedia command in order to move items to the output position. If presentControl is true, then all items are moved immediately to the correct output position for removal (a CashManagement.OpenShutter command will be needed in the case of explicit shutter control). If presentControl is false, then items are not returned immediately and must be presented to the correct output position for removal using the CashAcceptor.PresentMedia command.

On devices with implicit shutter control, the CashAcceptor.InsertItemsEvent will be generated when the device is ready to start accepting media.

The application may have to execute this command repeatedly to make sure that all possible signatures are captured.

If a single note is entered and returned to the customer but cannot be processed fully (e.g. no recognition software in the recognition module, the note is not recognized, etc.) then a CashAcceptor.InputRefuseEvent will be sent and the command will complete. In this case, no note specific output properties will be returned.

Command Message

Payload, Version 2.0
This message does not define any properties.

Completion Message

Payload, Version 3.0
{ "errorCode": "tooManyItems", "noteType": "type20USD1", "orientation": "frontTop", "signature": "O2gAUACFyEARAJAC" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • tooManyItems - There was more than one banknote inserted for creating a signature.
  • noItems - There was no banknote to create a signature.
  • cashInActive - A cash-in transaction is active.
  • exchangeActive - The device is in the exchange state.
  • positionNotEmpty - The output position is not empty so a banknote cannot be inserted.
  • shutterNotOpen - Shutter failed to open.
  • shutterNotClosed - Shutter failed to close.
  • foreignItemsDetected - Foreign items have been detected in the input position.

Type: string, null
Default: null

noteType

A cash item as reported by CashManagement.GetBankNoteTypes. This is null if the item was not identified as a cash item.

Type: string, null
Pattern: ^type[0-9A-Z]+$
Default: null

orientation

Specifies the note orientation. This property is null if the hardware is not capable to determine the orientation The following values are possible:

  • frontTop - If note is inserted wide side as the leading edge, the note was inserted with the front image facing up and the top edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the front image face up and the left edge was inserted first.
  • frontBottom - If note is inserted wide side as the leading edge, the note was inserted with the front image facing up and the bottom edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the front image face up and the right edge was inserted first.
  • backTop - If note is inserted wide side as the leading edge, the note was inserted with the back image facing up and the top edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the back image face up and the left edge was inserted first.
  • backBottom - If note is inserted wide side as the leading edge, the note was inserted with the back image facing up and the bottom edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the back image face up and the right edge was inserted first.
  • unknown - The orientation for the inserted note cannot be determined.

Type: string, null
Default: null

signature

Base64 encoded vendor specific signature data. If no signature is available or has not been requested, then this is null.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null

Event Messages

8.1.12 - CashAcceptor.ConfigureNoteReader

This command is used to configure the currency description configuration data into the banknote reader module. The format and location of the configuration data is vendor and/or hardware dependent.

Command Message

Payload, Version 2.0
{ "loadAlways": false }
Properties

loadAlways

If set to true, the service loads the currency description data into the note reader, even if it is already loaded.

Type: boolean
Default: false

Completion Message

Payload, Version 2.0
{ "errorCode": "exchangeActive", "rebootNecessary": false }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • exchangeActive - The device is in the exchange state.
  • cashInActive - A cash-in transaction is active.
  • loadFailed - The load failed because the device is in a state that will not allow the configuration data to be loaded at this time, for example on some devices there may be notes present in the storage units when they should not be.

Type: string, null
Default: null

rebootNecessary

If set to true, the machine needs a reboot before the note reader can be accessed again.

Type: boolean
Default: false

Event Messages

None

8.1.13 - CashAcceptor.CompareSignature

This command is used to compare the signatures of a reference item with the available signatures of the cash-in transactions.

The reference signatures are created by the CashAcceptor.CreateSignature command.

The transaction signatures are obtained through the CashManagement.GetItemInfo command.

The signatures (1 to 4) of the reference banknote are typically the signatures of the four orientations of the banknote.

The CashAcceptor.CompareSignature command may return a single indication or a list of indications to the matching signatures, each one associated to a confidence level factor. If the service does not support the confidence level factor, it returns a single indication to the best matching signature with the confidence level factor set to 0.

If the comparison completed with no matching signatures found, then the command returns with completionCode set to null and signaturesIndex empty.

This command must be used outside of cash-in transactions and outside of the exchange state.

Due to the potential for signatures to be large, as well as the possibility that it may be necessary to compare the reference signature with a large number of signatures, applications should be aware of the amount of data passed as input to this command. In some cases, it may be necessary to execute this command more than once, with subsets of the total signatures, and then afterward compare the results from each execution.

Command Message

Payload, Version 3.0, Required
{ "referenceSignatures": [{ "noteType": "type20USD1", "orientation": "frontTop", "signature": "O2gAUACFyEARAJAC" }], "signatures": See referenceSignatures properties }
Properties

referenceSignatures

Array of Signature structures.

Each structure represents the signature corresponding to one orientation of a single reference banknote. At least one orientation must be provided.

Type: array (object)
Required

referenceSignatures/noteType

A cash item as reported by CashManagement.GetBankNoteTypes. This is null if the item was not identified as a cash item.

Type: string, null
Pattern: ^type[0-9A-Z]+$
Default: null

referenceSignatures/orientation

Specifies the note orientation. This property is null if the hardware is not capable to determine the orientation The following values are possible:

  • frontTop - If note is inserted wide side as the leading edge, the note was inserted with the front image facing up and the top edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the front image face up and the left edge was inserted first.
  • frontBottom - If note is inserted wide side as the leading edge, the note was inserted with the front image facing up and the bottom edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the front image face up and the right edge was inserted first.
  • backTop - If note is inserted wide side as the leading edge, the note was inserted with the back image facing up and the top edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the back image face up and the left edge was inserted first.
  • backBottom - If note is inserted wide side as the leading edge, the note was inserted with the back image facing up and the bottom edge of the note was inserted first. If the note is inserted short side as the leading edge, the note was inserted with the back image face up and the right edge was inserted first.
  • unknown - The orientation for the inserted note cannot be determined.

Type: string, null
Default: null

referenceSignatures/signature

Base64 encoded vendor specific signature data. If no signature is available or has not been requested, then this is null.

Type: string, null
Pattern: ^([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{4}|[a-zA-Z0-9+/]{2}([a-zA-Z0-9+/]|=)=)$
Format: base64
Default: null

signatures

Array of Signature structures. Each structure represents a signature from the cash-in transactions, to be compared with the reference signatures in referenceSignatures. At least one signature must be provided.

Type: array (object)
Required

Completion Message

Payload, Version 2.0
{ "errorCode": "cashInActive", "signaturesIndex": [{ "index": 0, "confidenceLevel": 95, "comparisonData": "Example comparison data." }] }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • cashInActive - A cash-in transaction is active. This device requires that no cash-in transaction is active in order to perform the command.
  • exchangeActive - The device is in the exchange state.
  • invalidReferenceSignature - At least one of the reference signatures is invalid. The application should prompt the operator to carefully retry the creation of the reference signatures.
  • invalidTransactionSignature - At least one of the transaction signatures is invalid.

Type: string, null
Default: null

signaturesIndex

Array of compare results. This is null when the compare operation completes with no matches found. If there are matches found, signaturesIndex contains the indices of the matching signatures from the input property signatures. If there is a match found but the service does not support the confidence level factor, signaturesIndex contains a single index with confidenceLevel set to 0.

Type: array (object), null
Default: null

signaturesIndex/index

Specifies the index (0 to #signatures - 1) of the matching signature from the input property signatures.

Type: integer
Minimum: 0
Required

signaturesIndex/confidenceLevel

Specifies the level of confidence for the match found. This value is in a scale 1 - 100, where 100 is the maximum confidence level. This value is 0 if the service does not support the confidence level factor.

Type: integer
Minimum: 0
Maximum: 100
Default: 0

signaturesIndex/comparisonData

Vendor dependent comparison result data. This data may be used as justification for the signature match or confidence level. This property is null if no additional comparison data is returned.

Type: string, null
Default: null

Event Messages

None

8.1.14 - CashAcceptor.Replenish

This command replenishes items from a single storage unit to multiple storage units. Applications can use this command to ensure that there is the optimum number of items in the cassettes by moving items from a source storage unit to a target storage unit. This is especially applicable if a replenishment storage unit is used for the replenishment and can help to minimize manual replenishment operations.

The CashAcceptor.GetReplenishTarget command can be used to determine what storage units can be specified as target storage units for a given source storage unit. Any items which are removed from the source cash unit that are not of the correct currency and value for the target storage unit during execution of this command will be returned to the source storage unit.

The counts returned with the Storage.GetStorage command will be updated as part of the execution of this command.

If the command fails after some items have been moved, the command will complete with an appropriate error code, and a CashAcceptor.IncompleteReplenishEvent will be sent.

Command Message

Payload, Version 2.0, Required
{ "source": "unit1", "replenishTargets": [{ "target": "unit1", "numberOfItemsToMove": 100 }] }
Properties

source

Name of the storage unit (as stated by the Storage.GetStorage command) from which items are to be removed.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

replenishTargets

Array of target elements specifying how many items are to be moved and to where. There must be at least one array element.

Type: array (object)
Required

replenishTargets/target

Object name of the storage unit (as stated by the Storage.GetStorage command) to which items are to be moved.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

replenishTargets/numberOfItemsToMove

The number of items to be moved to the target storage unit. If 0, all items will be moved. Any items which are removed from the source storage unit that are not of the correct currency and value for the target storage unit during execution of this command will be returned to the source storage unit.

Type: integer
Minimum: 0
Default: 0

Completion Message

Payload, Version 2.0
{ "errorCode": "cashUnitError", "numberOfItemsRemoved": 20, "numberOfItemsRejected": 2, "replenishTargetResults": [{ "target": "unit1", "cashItem": "type20USD1", "numberOfItemsReceived": 20 }] }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • cashUnitError - A problem occurred with a storage unit. A Storage.StorageErrorEvent will be sent with the details. If appropriate a CashAcceptor.IncompleteReplenishEvent will also be sent.
  • invalidCashUnit - The source or target storage unit specified is invalid for this operation. The CashAcceptor.GetReplenishTarget command can be used to determine which source or target is valid.
  • exchangeActive - The device is in the exchange state.
  • cashInActive - A cash-in transaction is active.

Type: string, null
Default: null

numberOfItemsRemoved

Total number of items removed from the source storage unit including rejected items during execution of this command. This property is null if no items were removed.

Type: integer, null
Minimum: 1
Default: null

numberOfItemsRejected

Total number of items rejected during execution of this command. This property is null if no items were rejected.

Type: integer, null
Minimum: 1
Default: null

replenishTargetResults

Breakdown of which notes were moved and where they moved to. In the case where one note type has several releases and these are moved, or where items are moved from a multi denomination storage unit to a multi denomination storage unit, each target can receive several note types.

For example:

  • If one single target was specified with the replenishTargets input structure, and this target received two different note types, then this property will have two elements.
  • If two targets were specified and the first target received two different note types and the second target received three different note types, then this property will have five elements.

Type: array (object), null
Default: null

replenishTargetResults/target

Name of the storage unit (as stated by the Storage.GetStorage command) to which items have been moved.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

replenishTargetResults/cashItem

A cash item as reported by CashManagement.GetBankNoteTypes. This is null if the item was not identified as a cash item.

Type: string, null
Pattern: ^type[0-9A-Z]+$
Default: null

replenishTargetResults/numberOfItemsReceived

Total number of items received in this target storage unit of the cashItem note type.

Type: integer
Minimum: 1
Required

Event Messages

8.1.15 - CashAcceptor.CashUnitCount

This command counts the items in the storage unit(s). If it is necessary to move items internally to count them, the items should be returned to the unit from which they originated before completion of the command. If items could not be moved back to the storage unit they originated from and did not get rejected, the command will complete with an appropriate error.

During the execution of this command one Storage.StorageChangedEvent will be generated for each storage unit that has been counted successfully, or if the counts have changed, even if the overall command fails.

If an application wishes to determine where the notes went during the command it can execute a Storage.GetStorage before and after the transaction and then derive the difference.

This command is designed to be used on devices where the counts cannot be guaranteed to be accurate and therefore may need to be automatically counted periodically. Upon successful completion, for those storage units that have been counted, the counts are accurately reported with the Storage.GetStorage command.

Command Message

Payload, Version 2.0, Required
{ "units": ["unit1", "unit2"] }
Properties

units

Array containing the identifiers of the individual storage units to be counted. If an invalid storage unit is contained in this list, the command will fail with a cashUnitError errorCode.

Type: array (string)
Required

Completion Message

Payload, Version 2.0
{ "errorCode": "invalidCashUnit" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • invalidCashUnit - At least one of the storage units specified is either invalid or does not support being counted. No storage units have been counted.
  • cashInActive - A cash-in transaction is active.
  • exchangeActive - The device is in the exchange state.
  • tooManyItemsToCount - There were too many items. The required internal position may have been of insufficient size. All items should be returned to the storage unit from which they originated.
  • countPositionNotEmpty - A required internal position is not empty so a storage unit count is not possible.
  • cashUnitError - A storage unit caused a problem. A Storage.StorageErrorEvent will be posted with the details.

Type: string, null
Default: null

Event Messages

8.1.16 - CashAcceptor.DeviceLockControl

This command can be used to lock or unlock a CashAcceptor device or one or more storage units. CashAcceptor.GetDeviceLockStatus can be used to obtain the current lock state of any items which support locking.

During normal device operation the device and storage units will be locked, and removal will not be possible. If supported, the device or storage units can be unlocked, ready for removal. In this situation the device will remain online and cash-in or dispense operations will be possible, as long as the device or storage units are not physically removed from their normal operating position.

If the lock action is specified and the device or storage units are already locked, or if the unlock action is specified and the device or storage units are already unlocked then the action will complete successfully.

Once a storage unit has been removed and reinserted it may then have a manipulated status. This status can only be cleared by issuing a Storage.StartExchange / Storage.EndExchange command sequence.

The device and all storage units will also be locked implicitly as part of the execution of the Storage.EndExchange or the CashManagement.Reset command.

The normal command sequence is as follows:

  1. CashAcceptor.DeviceLockControl command is executed to unlock the device and some or all the storage units.

  2. Optionally a cash-in transaction or a dispense transaction on a cash recycler device may be performed.

  3. The operator was not required to remove any of the storage units, all storage units are still in their original position.

  4. CashAcceptor.DeviceLockControl command is executed to lock the device and the storage units.

The relation of lock/unlock control with the Storage.StartExchange and the Storage.EndExchange commands is as follows:

  1. CashAcceptor.DeviceLockControl command is executed to unlock the device and some or all the storage units.

  2. Optionally a CashAcceptor.CashInStart / CashAcceptor.CashIn / CashAcceptor.CashInEnd cash-in transaction or a CashDispenser.Dispense / CashDispenser.Present transaction on a cash recycler device may be performed.

  3. The operator removes and reinserts one or more of the previously unlocked storage units. The associated Storage.StorageChangedEvent will be posted and after the reinsertion the storage unit will show the status manualInsertion.

  4. Storage.StartExchange command is executed.

  5. Storage.EndExchange command is executed. During this command execution the service implicitly locks the device and all previously unlocked storage units. The status of the previously removed unit will be reset.

Command Message

Payload, Version 2.0
{ "deviceAction": "noLockAction", "cashUnitAction": "noLockAction", "unitLockControl": [{ "storageUnit": "unit1", "unitAction": "lock" }] }
Properties

deviceAction

Specifies locking or unlocking the device in its normal operating position. The following values are possible:

  • lock - Locks the device so that it cannot be removed from its normal operating position.
  • unlock - Unlocks the device so that it can be removed from its normal operating position.
  • noLockAction - No lock/unlock action will be performed on the device.

Type: string
Default: "noLockAction"

cashUnitAction

Specifies the type of lock/unlock action on storage units. The following values are possible:

  • lockAll - Locks all storage units supported.
  • unlockAll - Unlocks all storage units supported.
  • lockIndividual - Locks/unlocks storage units individually as specified in the unitLockControl property.
  • noLockAction - No lock/unlock action will be performed on storage units.

Type: string
Default: "noLockAction"

unitLockControl

Array of structures, one for each storage unit to be locked or unlocked. Only valid in the case where lockIndividual is specified in the cashUnitAction property otherwise this will be ignored.

Type: array (object), null
Default: null

unitLockControl/storageUnit

Name of the storage unit (as stated by the Storage.GetStorage command) to be locked or unlocked.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

unitLockControl/unitAction

Specifies whether to lock or unlock the storage unit indicated in the storageUnit property. The following values are possible:

  • lock - Locks the specified storage unit so that it cannot be removed from the device.
  • unlock - Unlocks the specified storage unit so that it can be removed from the device.

Type: string
Required

Completion Message

Payload, Version 2.0
{ "errorCode": "invalidCashUnit" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • invalidCashUnit - The storage unit type specified is invalid.
  • cashInActive - A cash-in transaction is active.
  • exchangeActive - The device is in the exchange state.
  • deviceLockFailure - The device and/or the storage units specified could not be locked/unlocked, e.g., the lock action could not be performed because the storage unit specified to be locked had been removed.

Type: string, null
Default: null

Event Messages

8.1.17 - CashAcceptor.PresentMedia

This command opens the shutter and presents items to be taken by the customer. The shutter is automatically closed after the media is taken. The command can be called after a CashAcceptor.CashIn, CashAcceptor.CashInRollback, CashManagement.Reset or CashAcceptor.CreateSignature command and can be used with explicit and implicit shutter control. The command is only valid on positions where usage is rollback or refuse and where presentControl is false.

This command cannot be used to present items stacked through the CashDispenser interface. Where this is attempted the command fails with errorCode sequenceError.

Command Message

Payload, Version 2.0
{ "position": "inLeft" }
Properties

position

Supplies the input or output position as one of the following values. If not specified, the default position applies. Supported positions are reported in Common.Capabilities.

  • inDefault - Default input position.
  • inLeft - Left input position.
  • inRight - Right input position.
  • inCenter - Center input position.
  • inTop - Top input position.
  • inBottom - Bottom input position.
  • inFront - Front input position.
  • inRear - Rear input position.
  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

Completion Message

Payload, Version 2.0
{ "errorCode": "unsupportedPosition" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • unsupportedPosition - The position specified is not supported or is not a valid position for this command.
  • shutterNotOpen - Shutter failed to open.
  • noItems - There were no items to present at the specified position.
  • exchangeActive - The device is in the exchange state.
  • foreignItemsDetected - Foreign items have been detected in the input position.

Type: string, null
Default: null

Event Messages

None

8.1.18 - CashAcceptor.Deplete

This command moves items from multiple storage units to a single storage unit. Applications can use this command to ensure that there are the optimum number of items in the cassettes by moving items from source storage units to a target storage unit. This is especially applicable if surplus items are removed from multiple recycle storage units to a replenishment storage unit and can help to minimize manual replenishment operations.

The CashAcceptor.GetDepleteSource command can be used to determine what storage units can be specified as source storage units for a given target storage unit.

The counts returned by the Storage.GetStorage command will be updated as part of the execution of this command.

If the command fails after some items have been moved, the command will complete with an appropriate error code, and a CashAcceptor.IncompleteDepleteEvent will be sent.

Command Message

Payload, Version 2.0, Required
{ "depleteSources": [{ "source": "unit1", "numberOfItemsToMove": 100 }], "cashUnitTarget": "unit1" }
Properties

depleteSources

Array of objects listing which storage units are to be depleted. There must be at least one element in this array.

Type: array (object)
Required

depleteSources/source

Name of the storage unit (as stated by the Storage.GetStorage command) from which items are to be removed.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

depleteSources/numberOfItemsToMove

The number of items to be moved from the source storage unit. If 0, all items will be moved. If non-zero, this must be equal to or less than the count of items reported for the storage unit specified by cashUnitSource.

Type: integer
Minimum: 0
Default: 0

cashUnitTarget

Name of the storage unit (as stated by the Storage.GetStorage command) to which items are to be moved.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

Completion Message

Payload, Version 2.0
{ "errorCode": "cashUnitError", "numberOfItemsReceived": 100, "numberOfItemsRejected": 10, "depleteSourceResults": [{ "cashUnitSource": "unit1", "cashItem": "type20USD1", "numberOfItemsRemoved": 0 }] }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • cashUnitError - A problem occurred with a storage unit. A Storage.StorageErrorEvent will be sent with the details. If appropriate a CashAcceptor.IncompleteDepleteEvent will also be sent.
  • invalidCashUnit - The source or target storage unit specified is invalid for this operation. The CashAcceptor.GetDepleteSource command can be used to determine which source or target is valid.
  • cashInActive - A cash-in transaction is active.
  • exchangeActive - The device is in the exchange state.

Type: string, null
Default: null

numberOfItemsReceived

Total number of items received in the target storage unit during execution of this command.

Type: integer
Minimum: 0
Default: 0

numberOfItemsRejected

Total number of items rejected during execution of this command.

Type: integer
Minimum: 0
Default: 0

depleteSourceResults

Breakdown of which notes were moved where. In the case where one item type has several releases and these are moved, or where items are moved from a multi denomination storage unit to a multi denomination storage unit, each source can move several note types.

For example:

  • If one single source was specified with the input structure, and this source moved two different note types, then this will have two elements.
  • If two sources were specified and the first source moved two different note types and the second source moved three different note types, then this will have five elements.

Type: array (object), null
Default: null

depleteSourceResults/cashUnitSource

Name of the storage unit (as stated by the Storage.GetStorage command) from which items have been removed.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

depleteSourceResults/cashItem

A cash item as reported by CashManagement.GetBankNoteTypes. This is null if the item was not identified as a cash item.

Type: string, null
Pattern: ^type[0-9A-Z]+$
Default: null

depleteSourceResults/numberOfItemsRemoved

Total number of items removed from this source storage unit of the cashItem item type. Not reported if this source storage unit did not move any items of this item type, for example due to a storage unit or transport jam.

Type: integer
Minimum: 0
Default: 0

Event Messages

8.1.19 - CashAcceptor.PreparePresent

In cases where multiple bunches are to be returned under explicit shutter control, this command is used for the purpose of moving a remaining bunch to the output position explicitly before using the following commands:

CashManagement.OpenShutter

CashAcceptor.PresentMedia

The application can tell whether the additional items were left by using the CashAcceptor.GetPresentStatus command. This command does not affect the status of the current cash-in transaction.

Command Message

Payload, Version 2.0
{ "position": "outDefault" }
Properties

position

Supplies the output position as one of the following values. Supported positions are reported in Common.Capabilities.

  • outDefault - Default output position.
  • outLeft - Left output position.
  • outRight - Right output position.
  • outCenter - Center output position.
  • outTop - Top output position.
  • outBottom - Bottom output position.
  • outFront - Front output position.
  • outRear - Rear output position.

Type: string
Default: "outDefault"

Completion Message

Payload, Version 2.0
{ "errorCode": "unsupportedPosition" }
Properties

errorCode

Specifies the error code if applicable, otherwise null. The following values are possible:

  • unsupportedPosition - The position specified is not supported or is not a valid position for this command.
  • positionNotEmpty - The input or output position is not empty.
  • noItems - There were no items to present at the specified position.
  • cashUnitError - A storage unit caused a problem. A Storage.StorageErrorEvent will be posted with the details.

Type: string, null
Default: null

Event Messages

8.2 - Event Messages

8.2.1 - CashAcceptor.InputRefuseEvent

This event specifies that the device has refused either a portion or all the items.

Event Message

Payload, Version 2.0, Required
{ "reason": "cashInUnitFull" }
Properties

reason

Reason for refusing a part of the amount. The following values are possible:

  • cashInUnitFull - storage unit is full.
  • invalidBill - Recognition of the items took place, but one or more of the items are invalid.
  • noBillsToDeposit - There are no items in the input area.
  • depositFailure - A deposit has failed for a reason not covered by the other reasons and the failure is not a fatal hardware problem, for example failing to pick an item from the input area.
  • commonInputComponentFailure - Failure of a common input component which is shared by all storage units.
  • stackerFull - The intermediate stacker is full.
  • foreignItemsDetected - Foreign items have been detected in the input position.
  • invalidBunch - Recognition of the items did not take place. The bunch of notes inserted is invalid, e.g. it is too large or was inserted incorrectly.
  • counterfeit - One or more counterfeit items have been detected and refused. This is only applicable where notes are not classified as level 2 and the device is capable of differentiating between invalid and counterfeit items.
  • limitOverTotalItems - Number of items inserted exceeded the limitation set with the CashAcceptor.CashInStart command.
  • limitOverAmount - Amount exceeded the limitation set with the CashAcceptor.CashInStart command.

Type: string
Required

8.2.2 - CashAcceptor.SubCashInEvent

This event is generated when one of the sub cash-in operations into which the cash-in operation was divided has finished successfully.

Event Message

Payload, Version 2.0
{ "unrecognized": 5, "type20USD1": { "fit": 15, "unfit": 0, "suspect": 0, "counterfeit": 0, "inked": 0 }, "type50USD1": See type20USD1 properties }
Properties

unrecognized

Count of unrecognized items handled by the cash interface. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

type20USD1 (example name)

Counts of a given cash item (as reported by CashManagement.GetBankNoteTypes) broken down by classification.

Type: object, null
Default: null

type20USD1/fit

Count of genuine cash items which are fit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

type20USD1/unfit

Count of genuine cash items which are unfit for recycling. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

type20USD1/suspect

Count of suspected counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

type20USD1/counterfeit

Count of counterfeit cash items. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

type20USD1/inked

Count of cash items which have been identified as ink stained. May be null in command data and events if not changed or not to be changed.

Type: integer, null
Minimum: 0
Default: null

8.2.3 - CashAcceptor.InsertItemsEvent

This event notifies the application when the device is ready for the user to insert items.

Event Message

Payload, Version 2.0
This message does not define any properties.

8.2.4 - CashAcceptor.IncompleteReplenishEvent

This event is generated when some items had been moved before the CashAcceptor.Replenish command failed with an error code (not "success"), but some items were moved then the details will be reported with this event. This event can only occur once per command.

Event Message

Payload, Version 2.0, Required
{ "replenish": { "numberOfItemsRemoved": 20, "numberOfItemsRejected": 2, "replenishTargetResults": [{ "target": "unit1", "cashItem": "type20USD1", "numberOfItemsReceived": 20 }] } }
Properties

replenish

Note that in this case the values in this structure report the amount and number of each denomination that have actually been moved during the replenishment command.

Type: object
Required

replenish/numberOfItemsRemoved

Total number of items removed from the source storage unit including rejected items during execution of this command. This property is null if no items were removed.

Type: integer, null
Minimum: 1
Default: null

replenish/numberOfItemsRejected

Total number of items rejected during execution of this command. This property is null if no items were rejected.

Type: integer, null
Minimum: 1
Default: null

replenish/replenishTargetResults

Breakdown of which notes were moved and where they moved to. In the case where one note type has several releases and these are moved, or where items are moved from a multi denomination storage unit to a multi denomination storage unit, each target can receive several note types.

For example:

  • If one single target was specified with the replenishTargets input structure, and this target received two different note types, then this property will have two elements.
  • If two targets were specified and the first target received two different note types and the second target received three different note types, then this property will have five elements.

Type: array (object), null
Default: null

replenish/replenishTargetResults/target

Name of the storage unit (as stated by the Storage.GetStorage command) to which items have been moved.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

replenish/replenishTargetResults/cashItem

A cash item as reported by CashManagement.GetBankNoteTypes. This is null if the item was not identified as a cash item.

Type: string, null
Pattern: ^type[0-9A-Z]+$
Default: null

replenish/replenishTargetResults/numberOfItemsReceived

Total number of items received in this target storage unit of the cashItem note type.

Type: integer
Minimum: 1
Required

8.2.5 - CashAcceptor.IncompleteDepleteEvent

This event is generated when the CashAcceptor.Deplete command failed with an error code (not "success"), but some items were moved. In this case the details will be reported with this event. This event can only occur once per command.

Event Message

Payload, Version 2.0, Required
{ "deplete": { "numberOfItemsReceived": 100, "numberOfItemsRejected": 10, "depleteSourceResults": [{ "cashUnitSource": "unit1", "cashItem": "type20USD1", "numberOfItemsRemoved": 0 }] } }
Properties

deplete

Note that in this case the values in this structure report the amount and number of each denomination that have actually been moved during the depletion command.

Type: object
Required

deplete/numberOfItemsReceived

Total number of items received in the target storage unit during execution of this command.

Type: integer
Minimum: 0
Default: 0

deplete/numberOfItemsRejected

Total number of items rejected during execution of this command.

Type: integer
Minimum: 0
Default: 0

deplete/depleteSourceResults

Breakdown of which notes were moved where. In the case where one item type has several releases and these are moved, or where items are moved from a multi denomination storage unit to a multi denomination storage unit, each source can move several note types.

For example:

  • If one single source was specified with the input structure, and this source moved two different note types, then this will have two elements.
  • If two sources were specified and the first source moved two different note types and the second source moved three different note types, then this will have five elements.

Type: array (object), null
Default: null

deplete/depleteSourceResults/cashUnitSource

Name of the storage unit (as stated by the Storage.GetStorage command) from which items have been removed.

Type: string
Pattern: ^unit[0-9A-Za-z]+$
Required

deplete/depleteSourceResults/cashItem

A cash item as reported by CashManagement.GetBankNoteTypes. This is null if the item was not identified as a cash item.

Type: string, null
Pattern: ^type[0-9A-Z]+$
Default: null

deplete/depleteSourceResults/numberOfItemsRemoved

Total number of items removed from this source storage unit of the cashItem item type. Not reported if this source storage unit did not move any items of this item type, for example due to a storage unit or transport jam.

Type: integer
Minimum: 0
Default: 0

9 - Check Interface

Check Processing Modules accept one or more media items (Checks, Giros, etc) and process these items according to application requirements. The Check Interface supports devices that can handle a single item as well as those devices that can handle bunches of items. The following are the three main device types:

  • Single Item: can accept and process a single item at a time.
  • Multi-Item Feed with no stacker (known as an escrow in some environments): can accept a bunch of media from the customer but each item has to be processed fully (i.e. deposited in a storage unit or returned) before the next item can be processed.
  • Multi-Item Feed with a stacker: can accept a bunch of media from the customer and all items can be processed together.

In the U.S., checks are always encoded in magnetic ink for reading by Magnetic Ink Character Recognition (MICR), and a single font is always used. In Europe some countries use MICR and some use Optical Character Recognition (OCR) character sets, with different fonts, for their checks.

The Check specification provides applications with an interface to control the following functions (depending on the capabilities of the specific underlying device):

  • Capture an image of the front of an item in multiple formats and bit depths.
  • Capture an image of the back of an item in multiple formats and bit depths.
  • Read the code line of an item using a MICR reader.
  • Read the code line of an item using OCR.
  • Endorse (print text) on an item.
  • Stamp an item.
  • Return an item to the customer.
  • Deposit an item in a storage unit.
  • Retract items left by the customer.

The Check specification uses the concept of a Media-In transaction to track and control a customer's interaction with the device. A Media-In transaction consists of one or more Check.MediaIn commands. The transaction is initiated by the first Check.MediaIn command and remains active until the transaction is either confirmed through Check.MediaInEnd, or terminated by Check.MediaInRollback, Check.RetractMedia or Check.Reset. While a transaction is active the Check.GetTransactionStatus command reports the status of the current transaction. When a transaction is not active the Check.GetTransactionStatus command reports the status of the last transaction as well as some current status values.

In this the specification the terms "long edge" and "short edge" are used to describe the orientation of a check and length of its edges.

This interface is to be used together with the Storage interface to handle management of storage units.

9.1 - General Information

9.1.1 - References

ID Description
check-1 OCR-A font - ANSI X3.17-1981 figure E1
check-2 OCR-B font - ANSI X3.49-1975 figure C2
check-3 E-13B MICR font - ISO 1004-1:2013
check-4 CMC7 MICR font - ISO 1004-2:2013
check-5 https://www.unicode.org/charts/PDF/U2440.pdf

9.1.2 - Code Line Characters

This section describes how code line data is returned in the Check specification depending on how the code line was read:

  • OCR-A font will conform to [Ref. check-1].
  • OCR-B font will conform to [Ref. check-2].
  • E-13B MICR font will conform to [Ref. check-3]. Note that the special E-13B banking symbols are defined by Unicode (see [Ref. check-5]), therefore E-13B code lines are provided without mapping - see Table 1 below for more details.
  • CMC7 MICR font will conform to [Ref. check-4]. The special banking symbols in this font are not defined in Unicode, therefore they are mapped to standard characters as shown in Table 2 below.

In all cases unrecognized characters are reported as the REJECT/SUB character, 0x1A.

Table 1 - E-13B Special Banking Symbols

Symbol MICR Definition Unicode Unicode Definition
Transit U+2446 OCR Bank Branch Identification
Amount U+2447 OCR Amount of Check
On Us U+2448 OCR Dash
Dash U+2449 OCR Customer Account Number

Table 2 - CMC7 Special Banking Symbols

Symbol Meaning Mapping
S1 S1 - Start of Bank Account a
S2 S2 - Start of the Amount field b
S3 S3 - Terminate Routing c
S4 S4 - Unused d
S5 S5 - Transit / Routing e

Example

Check code line code line reported in XFS4IoT
S1ABCDS21234S3 aABCDb1234c

9.1.3 - Example Transaction flows

This section describes example check only flows.

9.1.3.1 - Devices with stacker

This section describes flows for modules with stacker.

9.1.3.1.1 - Successful Check Bunch Processing

This flow describes a successful Check processing flow using Check commands.

GeneratedDiagram

9.1.3.1.2 - Partial Return Processing

This flow describes a Check processing flow using Check commands where some items are returned.

GeneratedDiagram

9.1.3.1.3 - Processing with errors

This flow describes a Check processing flow with some errors items using Check commands.

GeneratedDiagram

9.1.3.1.4 - Processing with rollback

This flow describes a Check processing flow with rollback using Check commands. This flow is identical to Successful Check Bunch Processing up to Check.SetMediaParameters completion message.

GeneratedDiagram

9.1.3.1.5 - Processing with retract

This flow describes a Check processing flow with retract using Check commands. This flow is identical to Successful Check Bunch Processing up to Check.SetMediaParameters completion message.

GeneratedDiagram

9.1.3.1.6 - Processing with application refuse

This flow describes a Check processing flow using Check commands where the application can refuse items. Only applicable if applicationRefuse is true.

GeneratedDiagram

9.1.3.1.7 - Processing with application refuse and items refused

This flow describes a Check processing flow using Check commands where the application refuses some items. Only applicable if applicationRefuse is true.

GeneratedDiagram

9.1.3.2 - Devices without stacker

This section describes flows for modules without stacker. In the following flows, single and bunch check devices follow the same flow, except that only one item is inserted for single devices and the Check.GetNextItem command always return reporting that there are no more items to process.

9.1.3.2.1 - Successful Check Bunch Processing - No Stacker

This flow describes a successful Check processing flow using Check commands on a module without stacker.

GeneratedDiagram

9.1.3.2.2 - Check Bunch Processing with some items returned - No Stacker

This flow describes a Check processing flow using Check commands on a module without stacker where some items are returned.

GeneratedDiagram

9.1.3.2.3 - Check Bunch Processing with errors - No Stacker

This flow describes a Check processing flow using Check commands on a module without stacker where the next item's code line can't be read.