Interac Card-Present payments done using Adyen terminal/reader hardware.
Overview
This document will outline how to collect Interac payments from using Adyen as a processor and using Adyen hardware. At this time, the P5 does not support Interac. The S1F2 and AMS1 work with Interac.
Adyen Hardware
The customer will first need to add the Adyen hardware and connect it to their account. This can be done in the payment portal, but it might also be convenient to integrate it into your own software. One reason for this is you will need the ID of the hardware for each call, so at a minimum, you need to get a list of hardware from the API if the customer uses the portal to add the hardware Terminals GET.
Step 1: Get a Payment Intent
You will need to create a payment intent either server side or client-side by calling the Payment CREATE API endpoint Create Payment Intent. The capture_method
parameter will be ignored if the customer uses an Interac card. Interac does not support an auth/capture, it is always captured.
// POST /v1/payment/intent
{
"external_account_id": "account_123456",
"amount": 12.99,
"payment_method_types": "card_present",
"capture_method": "automatic",
"external_transaction_id": "transaction_123456"
}
This will return a result that has a payment_id
and you'll need this id to authorize the payment.
Step 2: Collect Payment (synchronous or asynchronous)
The following API call will contact the terminal and collect payment. This call can be processed synchronously by waiting for the return value or asynchronously by polling. Please note that if you block and wait for the response, there is a 180 second timeout. If it does timeout, you will still need to poll to get the final status Payment Status.
To request a payment for a specific terminal, call the following auth endpoint Payment Auth. Please note that in this case terminal_id
is required.
// POST /v1/payment/auth
{
"external_account_id": "account_123456",
"payment_id": "pi_12345",
"external_payment_id", "your_id_for_the_transaction",
"terminal_id": "S1F2-1234567890",
}
If this call completes successfully, then the payment is authorized for a normal card. This payment will be automatically captured if successful. The payment status will be capture_pending
until an web hook changes it to captured. However, if the card was Interac it will be set to captured success
and will not be in an authorized or capture pending state.