In-Person Payments

Terminal & POS Payments

Accept in-person card payments with ClapPay Terminal. Tap, dip, or swipe - all payments sync to your dashboard automatically.

8 min read

What is ClapPay Terminal?

ClapPay Terminal lets you accept card payments in person - at your store, restaurant, market stall, or anywhere you meet customers face-to-face.

  • Accept tap (contactless), chip, and swipe payments
  • Works with Apple Pay and Google Pay
  • All payments show up in your ClapPay Dashboard
  • Same low fees as online payments

Choose Your Hardware

Card Reader

Small, portable reader. Connects to your phone or tablet via Bluetooth.

  • • Best for: Mobile businesses, markets, delivery
  • • Accepts: Tap, chip, swipe
  • • Battery: 500+ transactions per charge

Smart Terminal

All-in-one device with screen. Works standalone or with your POS system.

  • • Best for: Retail stores, restaurants
  • • Accepts: Tap, chip, swipe + receipts
  • • Screen: Shows amount, collects tips

Order hardware from your Dashboard under Settings → Terminal → Order Hardware.

Set Up Your Terminal

Step 1: Register the Device

  1. Go to Dashboard → Terminal → Readers
  2. Click Add Reader
  3. Enter the registration code from your device
  4. Give it a name (like "Front Counter" or "Mobile 1")

Step 2: Connect to WiFi

Your terminal needs internet to process payments. Connect it to your WiFi:

  1. On the terminal, go to Settings
  2. Select your WiFi network
  3. Enter the password
  4. Wait for connection

No WiFi?

Use a mobile hotspot from your phone, or get a terminal with built-in cellular connection.

Take a Payment

There are two ways to take payments - from the terminal itself, or from your own app/POS system.

Option 1: From the Terminal

  1. Enter the amount on the terminal keypad
  2. Customer taps, dips, or swipes their card
  3. Terminal shows "Approved" when done
  4. Optional: Print or email receipt

Option 2: From Your App (API)

// Create a payment intent
POST /v1/payments

{
  "amount": 2500,
  "currency": "USD",
  "payment_method_types": ["card_present"],
  "capture_method": "automatic"
}

// Then send to the terminal
POST /v1/terminal/readers/rdr_abc123/process_payment_intent

{
  "payment_intent": "pi_xyz789"
}

The terminal will prompt the customer to pay. When they do, you'll get a webhook notification.

Collect Tips

Let customers add a tip during checkout:

  1. Enable tipping in Settings → Terminal → Tipping
  2. Choose tip options (%, fixed amount, or custom)
  3. The terminal will show tip screen after amount entry
// Enable tipping via API
POST /v1/terminal/readers/rdr_abc123/process_payment_intent

{
  "payment_intent": "pi_xyz789",
  "tipping": {
    "enabled": true,
    "options": [15, 18, 20, 25]
  }
}

Process Refunds

Refund in-person payments the same way as online payments:

  1. Find the payment in your Dashboard
  2. Click Refund
  3. Enter the amount (full or partial)
  4. Click Confirm Refund

Refunds go back to the same card that was used. The customer doesn't need to be present.

Receipts

Give customers a receipt after payment:

  • Print - Smart terminals have built-in printers
  • Email - Ask for email and send digitally
  • SMS - Text the receipt link
  • No receipt - Customer can decline

Offline Mode

If your internet goes down, some terminals can accept payments offline:

  • Payments are stored on the device
  • They process automatically when internet returns
  • There's a small risk - some cards may decline later

⚠️ Offline Risk

Offline payments aren't guaranteed. A card could be over limit or stolen. Use offline mode only when necessary.

POS Integration

Connect ClapPay Terminal to your point-of-sale system:

  • JavaScript SDK - For web-based POS systems
  • iOS SDK - For iPad POS apps
  • Android SDK - For Android tablets
  • Server-driven - Control from your backend
// JavaScript SDK - Connect to reader
const terminal = ClapPayTerminal.create({
  onFetchConnectionToken: async () => {
    const response = await fetch('/connection-token');
    const data = await response.json();
    return data.secret;
  }
});

// Connect to a specific reader
await terminal.connectReader(reader);

// Collect payment
const result = await terminal.collectPaymentMethod(
  paymentIntent.client_secret
);

Troubleshooting

ProblemSolution
Terminal not connectingCheck WiFi, restart terminal, re-register if needed
Card not readingClean chip slot, try tap instead, check for damage
Payment declinedAsk customer to try different card
Slow processingCheck internet speed, move closer to router
Reader offlineCheck battery, WiFi connection, restart

Related Articles