Point of Sale (POS)
Take card-present EMV payments on a POS device: prerequisites, device setup and pairing, payments and refunds.
The POS module lets platforms, sellers and PSPs take card-present EMV payments on a physical payment device and get the result through the Payments API.
How to: Take in-person payments with a POS device walks through the whole flow, including pairing a device yourself (pos/pair, pos/authenticate) and transmitting the day's transactions (pos/transmit).
Supported payment methods
The device accepts payment cards (Visa, Mastercard, American Express, Diners Club). Other methods depend on the device; ask PayMe Partners (partners@payme.io) for the current list.
Before you start
| Item | Description |
|---|---|
seller_payme_id |
The seller's MPL. It authenticates payments and refunds. |
payme_client_key |
Partners only. Needed to order devices with vas-enable. A seller can take payments with seller_payme_id alone. |
| Active POS service | The seller must have an active POS service; otherwise payment calls return error 720. |
| A paired device | A supported POS device, paired and authenticated. Its pos_id names the device in each payment request. |
Set up a device
- Order the devices with Order POS devices. A new terminal takes up to 5 business days.
- PayMe pairs the device and then authenticates it. Each step sends a callback:
point-of-sale-action-pair-update, which carries thepos_id, thenpoint-of-sale-action-authenticate-update. The device can't take payments until both steps are done. - The device ships to the seller.
Take a payment
Call Create a POS payment (POST /sales) with payment.method pos and the device's payment.pos_id. PayMe pushes the payment to the device and waits for the buyer. The result comes back in the same response; there is nothing to poll.
A declined or canceled payment returns HTTP 200 with status_code 1. Always check status_code, not the HTTP status.
You can also do it in two steps: create the sale with generate-sale and sale_payment_method pos, then push it to the device with PUT /sales/{payme_sale_id}, sending seller_payme_id and a payment object with method pos and pos_id.
Refund a payment
Call Refund a POS sale (PUT /sales/{payme_sale_id}) with payment.action refund. The refund is sent to the device.
Base URLs
| Environment | Base URL |
|---|---|
| Sandbox | https://sandbox.payme.io/api |
| Production | https://live.payme.io/api |
Endpoints
- Order POS devices: POST /vas-enable
- Create a POS payment: POST /sales
- Refund a POS sale: PUT /sales/{sale_guid}