Card Present
Currently, this feature is only available in our sandbox environment.
Unlock seamless card-present payment processing with Tilled's API, empowering partners to effortlessly enhance app experiences.
If you are already acquainted with collecting card-not-present transactions using Tilled, the process for card-present transactions will be quite similar. If not, you can learn more about collecting payments in our payment intent documentation.
Here are the steps to collect a card-present transaction:
-
Retrieve a List of Terminals:
- When a merchant orders a card-present reader, Tilled associates the device's serial number with the merchant and assigns a terminal ID.
- Before processing a payment, retrieve a list of available terminals associated with the merchant. This allows you to specify the device from which the payment will be collected.
- Make a GET request to:
https://sandbox-app.tilled.com/v1/terminal-readers
- Example:
1curl --location --request GET 'https://sandbox-app.tilled.com/v1/terminal-readers?limit=30&offset=0' \ 2--header 'tilled-account: {{MERCHANT_ACCOUNT_ID}}' \ 3--header 'tilled-api-key: {{SECRET_KEY}}'
-
Create a Payment Method:
- To confirm the payment_intent, attach a payment_method. This payment_method should have the type set to 'card_present' and the
[terminal_id]
of the device from which the payment will be collected. - Make a POST request to
https://sandbox-app.tilled.com/v1/payment_methods
- Example:
1curl --location --request POST 'https://sandbox-app.tilled.com/v1/payment-methods' \ 2--header 'tilled-api-key: {{SECRET_KEY}}' \ 3--header 'tilled-account: {{MERCHANT_ACCOUNT_ID}}' \ 4--header 'Content-Type: application/json' \ 5--data '{ 6 "type": "card_present", 7 "terminal_reader_id": "term_xxxxxxxxx" 8}'
- To confirm the payment_intent, attach a payment_method. This payment_method should have the type set to 'card_present' and the
-
Collect the Payment:
- Similar to creating a card-not-present transaction, start by creating a payment intent.
- Specify
[card_present]
as the value for thepayment_method_type
property and include the payment_method_id from the response in step 2. - When you confirm the payment_intent, this will put the payment_intent into a status of requires_action, indicating that the payment_intent has been pushed to the terminal, and the customer will be prompted to complete the payment.
- Make a POST request to
Tilled/v1/payment_intents
- Example:
1curl --location --request POST 'https://sandbox-app.tilled.com/v1/payment-intents' \ 2--header 'Content-Type: application/json' \ 3--header 'tilled-api-key: {{SECRET_KEY}}' \ 4--header 'tilled-account: {{MERCHANT_ACCOUNT_ID}}' \ 5--data '{ 6 "amount" : 10003, 7 "currency": "usd", 8 "payment_method_types": [ "card_present" ], 9 "payment_method_id": "{{PAYMENT_METHOD_ID}}", 10 "confirm": true 11}'
-
Receive the Transaction Response:
- Create a webhook (learn more in our Webhooks Documentation) for
payment_intent_events
, and we will send updates regarding the success of the payment intent and the associated transaction details.
- Create a webhook (learn more in our Webhooks Documentation) for
The specific details provided in these examples are subject to change when this feature is publicly released.