Skip to content
Last updated

In-store API

The In-store API is the REST integration path for Pay In-Person: your POS drives a Tyro Pro terminal directly over HTTP, with transaction updates delivered back via webhooks. Use it when you're integrating from a backend rather than embedding the JS library or .NET library.

Requirements

RequirementDescription
Integration typeIn-person (POS/terminal), direct REST integration
WebhooksThis path is notified exclusively via webhooks — see Webhook events
Setup stepsMerchant authorises your POS in the Integration Portal, enables Integrated mode on each Tyro Pro, then pairs it — see Account authorisation
LimitationsRate limited to 1 request per 250ms per merchant/terminal combination — see Conditions and limitations below
API referenceJump to API reference

Prerequisites

  • The merchant must authorise your POS to integrate with their Tyro account(s) (MIDs) via Tyro's Integration Portal.
  • Integrated mode must be enabled on each Tyro Pro terminal that will be used.
  • Each terminal must be paired with the POS.

See Account authorisation for the full walkthrough, including portal screenshots.

How it works

  1. Create a Pay Request — Your POS sends the merchant ID, terminal ID, amount, and a unique transaction identifier to Create a pay request, which triggers the terminal to start processing.
  2. Receive status updates — The terminal's progress, such as "waiting for PIN" or "completed", is delivered to your system as webhook events.
  3. Fetch details if needed — Call Retrieve a pay request for the latest status and full details, such as approval codes and receipts, if a webhook is missed or for reconciliation.
  4. Respond to prompts or cancel — Send an answer to a terminal prompt, such as "Would you like a receipt?", via Answer a terminal prompt, or cancel the transaction via Cancel a pay request.

See How to use for the full call-by-call walkthrough, including pay request data and nuances around retries and rate limiting.

Example sequence

Pay in-person sequence

Conditions and limitations

  • Rate limiting: Requests are limited to 1 per 250ms per merchant/terminal combination. Exceeding this returns a RATE_LIMIT_EXCEEDED error — bank or debounce requests to avoid it.
  • Terminal availability: A Pay Request may not reach the terminal if it's offline or its network is down. You can safely retry the same Pay Request, unchanged, using the same origin.transactionId.

Notifications

This path delivers updates exclusively via webhooks, for timely and reliable delivery to your endpoints. See Webhook events for the full list.

If your system needs notifications through another mechanism, such as websockets, please raise a support request using our new Integration Support Portal.

API reference

The In-store API is the only one of the three Pay In-Person integration paths that's a REST API — the JS library and .NET library have no equivalent reference here.