I am not quite sure how involved this integration would be. Looks like this does offer an easier integration that other gateways as there is a prefered card reader that connects with the gateway via wifi, not connecting through the terminal. As far as I can tell, they allow at least the 3 following devices... castles mp200 -- https://www.castlestech.com/products/mp200/ verifone mx series devices -- https://www.verifone.com/en/us/devices/multilane/mx-915 ingenico isc 480 -- https://ingenico.us/smart-terminals/telium2/payment-terminals/isc-series/isc-touch-480.html Out of these three devices it looks like the castles mp200 would be the easiest to use for integration as it connects via wifi and so no software is needed on the client's computer. It also has good documentation -- https://docs.paymentengine.io/terminals/castles_mp200/ The other 2 options the client would need to download the "Connection Manager" -- https://docs.paymentengine.io/connection_manager/ -- on their computer and potentially need to manually set ports for based on which card reader is being used (a little more complicated, not as straight forward) -- https://docs.paymentengine.io/cloud/firewall/ The nice thing is the card reader can be setup and status can be checked inside the usaepay console online. We would need to take the devince key from the usaepay console and store it as an other setting in the merchant settings as it will be required as part of the payment process. The body will be sent in json instead of soap (xml) -- https://docs.paymentengine.io/cloud/payments/post-payrequests/ Once the the initial payment request is sent, it will pass back a request key that we will use to check up on the request. it will also pass back an expiration date/time for the request (when it will timeout). You can check up on the status of the request to see what stage in the process and if completed get the transaction object -- https://docs.paymentengine.io/cloud/payments/get-payrequests-key/ if a transaction needs to be cancelled during the card reader process it can be done -- https://docs.paymentengine.io/cloud/payments/delete-payrequests-key/ we could queue off of if a merchant account has the device key as a setting on if we are going to use the old integration, or this new integration. -- main page for documentation on doing the emv integration -- https://docs.paymentengine.io/cloud/home/ -- this has some test cc numbers --- https://help.usaepay.com/developer/sandbox