# Accept Terminal Payments (/how-to/pos/accept-terminal-payments)



Once you have a registered card reader and a pending POS order, you can collect a card-present payment. This guide covers the terminal payment flow from start to finish.

Prerequisites [#prerequisites]

* POS is enabled (see [Set Up POS](/how-to/pos/set-up-pos))
* At least one reader is registered (see [Register a Terminal](/how-to/pos/register-a-terminal))
* A pending POS order exists (see [Process a POS Order](/how-to/pos/process-a-pos-order))

How Terminal Payments Work [#how-terminal-payments-work]

The payment flow involves three parties: the Resytech dashboard (your browser), the Stripe API, and the physical card reader.

1. **Initiate**: Resytech creates a Stripe PaymentIntent for the amount due and sends it to the selected reader.
2. **Collect**: The reader prompts the customer to tap, insert, or swipe their card.
3. **Confirm**: Once the reader reports success, Resytech confirms the payment and records it against the order.

If the customer cancels or the card is declined, you can cancel the pending payment and try again.

Step-by-Step: Collect a Terminal Payment [#step-by-step-collect-a-terminal-payment]

1. Navigate to the order detail page (&#x2A;*Dashboard > POS > Orders > \[order]**), or arrive here automatically after creating an order.
2. Click **Record Payment**.
3. In the payment dialog, select the **Terminal / Card** payment method (if available alongside cash and check options).
4. Choose the reader you want to use. If you have only one reader, it is pre-selected.
5. Enter the payment amount. By default, it is set to the full amount due. You can enter a partial amount for split payments.
6. Click **Process Payment**. This creates a PaymentIntent on Stripe and sends it to the reader.
7. The reader's screen prompts the customer to present their card.
8. After the customer taps, inserts, or swipes:
   * **Success**: The payment is confirmed automatically. The order's payment record is updated with the card brand (e.g., Visa), last four digits, and Stripe PaymentIntent ID.
   * **Decline**: An error message appears. You can retry or switch to a different payment method.
9. If the payment amount equals or exceeds the remaining balance, the order status changes to **Completed**.

Canceling a Pending Terminal Payment [#canceling-a-pending-terminal-payment]

If the reader is waiting for a card and you need to cancel:

1. On the order detail page, click **Cancel Payment** (or close the payment dialog).
2. Resytech cancels the PaymentIntent on Stripe, and the reader returns to its idle state.
3. No payment is recorded.

Split Payments [#split-payments]

You can collect partial payments across multiple methods. For example:

1. Collect $20 via the card reader (enter $20 as the amount).
2. After the terminal payment succeeds, the remaining amount due updates.
3. Record the remaining balance as cash or another payment method.

Each partial payment is recorded separately with its own reference ID and appears in the order's payment history.

Charging a Saved Card [#charging-a-saved-card]

If the order has a customer attached and that customer has a card on file (from a previous booking), you can charge it without a physical reader:

1. On the order detail page, click **Record Payment**.
2. Select the saved card payment method.
3. Choose the card from the customer's payment methods.
4. The charge processes immediately (off-session, card-not-present) and the payment is recorded.

This option is only available if **Allow Saved Card Payments** is enabled in POS settings and the order has a customer with a Stripe customer ID.

Payment Types Recorded [#payment-types-recorded]

Each payment on an order records a payment type:

| Type               | Description                                                   |
| ------------------ | ------------------------------------------------------------- |
| `card-present`     | Card tapped, inserted, or swiped on a Stripe Terminal reader. |
| `card-not-present` | Saved card charged without a physical reader.                 |
| `cash`             | Cash payment recorded manually by staff.                      |
| `check`            | Check payment recorded manually by staff.                     |
| `electronic`       | Electronic payment (e.g., Zelle, Venmo) recorded manually.    |
| `other`            | Any other payment type recorded manually.                     |

Troubleshooting [#troubleshooting]

Reader is not responding [#reader-is-not-responding]

* Check that the reader is powered on and connected to the network.
* Refresh the terminal list at **Dashboard > POS > Terminals** to check the reader's status.
* Power-cycle the reader if it is unresponsive.

"No pending terminal payment" error [#no-pending-terminal-payment-error]

* The PaymentIntent may have already been canceled or timed out. Create a new payment attempt.

Payment succeeds on the reader but order does not update [#payment-succeeds-on-the-reader-but-order-does-not-update]

* The confirmation step may have failed due to a network issue. Refresh the order detail page -- the payment may have been recorded.
* If the payment is missing from the order, check Stripe Dashboard for the PaymentIntent status. Contact support if the charge succeeded in Stripe but is not reflected in Resytech.

"Stripe account not configured" error [#stripe-account-not-configured-error]

* Your Stripe account is not connected. See [Stripe Setup](/docs/payments/stripe-setup).

What to Do Next [#what-to-do-next]

* [Manage POS Orders](/how-to/pos/manage-pos-orders) -- view payment history, void orders, and handle manual payments.
