Device Based Transaction Error Codes

Request Code Status Code Error Message Endpoint Cause
PUT 500 404 - {\"error\":\"Unknown devicekey sa_\",\"errorcode\":21121 /deviceTransactions/ The secure source key in the Maven-UI for this location/OID does not match the source key set up for the device in Merchant Portal-UI. Maven saves the source key info to the organization table. But Merchant Portal saves the source key info to the remote devices table. They must match. And in Maven-UI the "use for emergepay" flag on the source key must be set and match the source key that was set on the device.
PUT 500 "409 - {\"error\":\"Device is currently offline\",\"errorcode\":21145} /deviceTransactions/ The transaction was started with a call to the VTS with an incorrect device name in the request body. So the device is "offline". OR The device hasn't been used in > 20 minutes. The device went into hibernation mode. This requires the user to press the green button on the device to wake it back up (does not initiate a boot sequence)
PUT 400 "message": "Unable to retrieve settings for device name: " /deviceTransactions/ The transaction was started with an incorrect device name in the request body. OR The device hasn't been added for this merchant at all. The merchant is created in Maven-UI but the device is not set up on Merchant Portal. The user needs to add a Cloud Controller and MP200L device using the Terminal Configuration page on that website.
PUT 500 "message": "A credential value is required" /deviceTransactions/ Maven-UI has the source key set without the "use for emergepay" box checked
PUT 500 "message": "OID to SourceKeyId lookup Error [from TSL] - No SourceKeyId found" /deviceTransactions/ Device was in hibernate mode when PUT call was done for device initialization?
PUT 409 "message": "Unable to start the device" /deviceTransactions/ The device was already initialized to run a transaction when another device initialization call was made to the same device.
PUT 504 Endpoint request timed out /deviceTransactions/ We theorize that the EPsl was being deployed at the time of the request to initialize the device. This caused a API gateway timeout on AWS
PUT 424 "message": "Failed validation", "target": "device_name", /deviceTransactions/ The transaction was started with an empty string for the device name in the request body.
PUT 424 "message": "field value is missing", "target": "device_name", "recoverable": true /deviceTransactions/ The transaction was started with "signature_capture" true and "signature_required" true but no device name was specified in the startTransaction call
GET 409 "message": "Unable to retrieve transaction response. Transaction was either not started or hasn't completed." /deviceTransactions/ The caller is attempting to retrieve device transaction results before the transaction has run (card has not be swiped or the transaction is in the process of being run by the gateway)
GET 200 resultMessage:"Terminal configuration error" /deviceTransactions/ When polling the device endpoint for the transaction result you see a resultStatus of "false" and a message of: transactionResponse: uniqueTransId: "9230018ce44d4c068bc9f66a52cc8ba8-00000000000000000000000000000000" batchNumber:"" resultMessage:"Terminal configuration error" resultStatus:"false" approvalNumberResult:"000000" amountProcessed:"0.00" amount:"0.02" This is due to the account getting deactivated on First Data. Reach out to Tim to have the account reactivated. We have no idea why the accounts are getting deactivated.
GET 500 "message": "Key: _session_data is longer than the allowed max of 250. It is 502 long" /deviceTransactions/ The caller issue a GET request to the device endpoint /device/v1/devicetTransactions/ where the x-token value was not created by our VTS endpoint, instead one was passed in via a likely coding error during integration
GET 404 "message": "Invalid Transaction Token", "target": "xtoken", "recoverable": true /deviceTransactions/ The caller issue a GET request to the device endpoint /device/v1/devicetTransactions/ where the x-token value was either expired or an invalid string
GET 403 "message": not a valid key=value pair (missing equal-sign) in Authorization header: 'Bearer ' /deviceTransactions/ The caller issue a GET request to the device endpoint /device/v1/devicetTransactions/ where the x-token value was either expired or an invalid string that contained "/" characters
PATCH 500 "message": "Request key is required" /deviceTransactions/ The caller attempted to convertToKeyed before the transaction was sent to the device
PATCH 500 "message": "409 - {\"error\":\"Request can not be cancelled\",\"errorcode\":21142}" /deviceTransactions/ The caller is attempting to convert to a keyed transaction after the card has been swiped and the transaction is in flight to USAePay for processing. A subsequent GET call to /deviceTransactions/ shows that the transaction did indeed complete
PATCH 409 "message": "Unable to convert device transaction to keyed." /deviceTransactions/ The caller is attempting to convert to keyed after the transaction is complete (approved/declined/cancelled/converted)
DEL 500 "message": "Request key is required" /deviceTransactions/ The caller attempted to cancel a device transaction on the DTS endpoint before it had been sent to the device
DEL 409 "message": "Unable to perform requested function" /deviceTransactions/ The caller attempted to cancel a device transaction after the transaction had completed (approved/declined/cancelled/converted)
DEL 404 "message": "Invalid Transaction Token", "target": "xtoken", "recoverable": true /deviceTransactions/ The caller issue a DELETE request to the device endpoint /device/v1/devicetTransactions/ where the x-token value was either expired or an invalid string
DEL 500 "message": "Key: _session_data is longer than the allowed max of 250. It is 1021 long" /deviceTransactions/ The caller issue a DEL request to the device endpoint /device/v1/devicetTransactions/ where the x-token value was not created by our VTS endpoint, instead one was passed in via a likely coding error during integration
DEL 403 "message": not a valid key=value pair (missing equal-sign) in Authorization header: 'Bearer ' /deviceTransactions/ The caller issue a DEL request to the device endpoint /device/v1/devicetTransactions/ where the x-token value was either expired or an invalid string that contained "/" characters
POST 403 "message": not a valid key=value pair (missing equal-sign) in Authorization header: 'Bearer ' /orgs/{oid}/transactions/acknowledgements/{externalTranId} The caller issued a POST request to the POS ack endpoint when they should have sent a PUT request
POST 403 "message": not a valid key=value pair (missing equal-sign) in Authorization header: 'Bearer ' /orgs/{oid}/transactions/acknowledgements/{externalTranId} The caller issued a PUT to the POS ack endpoint but did not include the externalTranId in the URL of the request
PUT 500 The recorded transaction is missing the gatewayTransRefNum which is necessary to run the transaction /orgs/{oid}/transactions/tokenizedRefund
/orgs/{oid}/transactions/tokenizedPayment
The caller is using a uniqueTransId in the tokenizedRefund that comes from a creditSale/creditReturn that was declined/canceled. There is not gatewayTransRefNum record in the Azure database for emergeapy to go use to look up a CipCardTokenId to run a tokenized payment.
GET 400 "message": "The recorded method for this transaction is not /transactions/ startTransaction was called with the method of urlPage || modal || hostedFields, but the subsequent call to get the HTML stream was incorrectly calling the endpoint for another transaction type
GET 200 "resultMessage": "Transaction request has timed out" /transactions/ startTransaction was called and the device was initialized and waiting for Swipe/Insert/Tap but no card was run. The transaction timed out after 3 minutes
GET 200 "resultMessage": "Command timeout (B001) /transactions/ startTransaction was called and USAePay did not complete the transaction
POST 400 "message": "Unrecognized field", "target": "device_name", /orgs/{oid}/transactions/start The endpoint is called for a CreditSaveCard transaction which doesn't support devices. The error message is relating that a device_name in the request body is not a recognized field for a CreditSaveCard transaction
DEL 400 "message": "Device transactions cannot be canceled from this endpoint" /virtualterminal/v1/transactions/ The device transaction is started and you cannot try to cancel it by sending a DEL request to the VTS endpoint. You need to send it to the Device (DTS) endpoint instead. /deviceTransactions/