Skip to main content

Build with AI agents

Handpoint provides machine-readable resources so AI coding agents (Claude Code, Codex, Cursor, and others) can generate accurate payment integrations without hallucinating API fields, acquirer constraints, or unsupported capability combinations.

Quick start for agents​

1. Fetch https://developer.handpoint.com/llms.txt for the full machine-readable reference:
acquirer × feature support matrix, per-path code examples, and all reference page URLs.

2. Load the handpoint skill before writing any integration code:
https://developer.handpoint.com/.well-known/skills/handpoint.md

3. Load a task-specific skill for the operation you are implementing.

Machine-readable reference — llms.txt​

/llms.txt contains:

  • The complete acquirer × feature support matrix (which acquirer supports which capability on which integration path)
  • Per-path code guidance (Cloud API, Android PAX, Android HiLite, iOS, Cordova, Back Office)
  • All reference page URLs

Fetch it at the start of any Handpoint integration task.

Agent skills​

Task-focused skill files provide precise, condensed guidance for specific integration tasks. Load only the skills relevant to your task.

The skills index is at /.well-known/skills/index.json.

SkillWhen to load
handpointAlways — load first. Global context, architecture overview, and which path and acquirer skill to load next.
paths/cloud-apiImplementing a REST API sale (any language, commands PAX terminal via Handpoint Cloud)
paths/android-paxBuilding an Android app that runs on-device on a PAX SmartPOS terminal
paths/android-hiliteBuilding an Android app paired with a HiLite Bluetooth reader
paths/ios-hiliteBuilding an iOS app paired with a HiLite Bluetooth reader
acquirers/epiEPI (North America) — batch close schedule, tip adjustment, pre-auth support
acquirers/paysafePaysafe (North America) — supported operations and constraints
acquirers/emerchantpayEmerchantPay (Europe) — tip-in-sale, pre-auth, supported operations
acquirers/paystraxPaystrax (Europe) — tip-in-sale, pre-auth, supported operations
optional/back-officeBack-office operations — reversals, refunds, pre-auth capture, MOTO
optional/transaction-feedTransaction reporting, reconciliation, and result recovery

Integration paths — quick reference​

What you're buildingPathHardware
Server controls PAX terminal via HTTP (any language)Cloud API (REST)PAX SmartPOS
Android app running on the PAX terminal itselfAndroid SDK (PAX)PAX SmartPOS
Android or iOS app paired with a portable card readerAndroid / iOS SDK (HiLite)HiLite Bluetooth
Server-side operations without a terminalBack Office REST APINone
EU online checkoutSmartBoardNone

Common agent mistakes to avoid​

  • Do not assume all acquirers support the same features. EPI requires daily batch close; PAYSAFE does not support remote sale or pre-authorization; EmerchantPay/Paystrax include tipAmount in the sale, not post-sale. Always load acquirer-selection first.
  • Do not retry UNDEFINED transactions. finStatus: UNDEFINED means the result is unknown — retrying may double-charge. Use the Transaction Feed API to recover.
  • The header is ApiKeyCloud, not Authorization or Api-Key.
  • Amount units differ by endpoint — see Cloud API code-generation facts below.
  • Reversals are synchronous; sales and refunds are asynchronous. Poll for sales and refunds; reversal response is immediate.
  • Determine the acquirer and integration path before generating implementation code — not all features are supported by all acquirers, and SDK methods differ per integration path.

Merchant vertical → integration path​

Merchant verticalPrimary pathKey featuresDetailed guide
Restaurant (tableside)Android SDK (PAX)Pre-auth tabs, tip adjustment, batch close/guides/restaurant
Restaurant (counter POS)Cloud APISame features, server-led/guides/restaurant
Practice ManagementCloud API or Android PAX + Multi-MIDexternalId routing, MOTO for phone payments/guides/practice-management
Salons & SpasCloud API, Android/iOS HiLite + Multi-MIDPer-worker MIDs, on-device tipping, mobile reader/guides/salons
Field service (mobile)Android or iOS SDK (HiLite)Bluetooth reader, transaction recovery/guides/field-service
Retail / Counter POSCloud API, JavaScript SDK, or Windows SDKStandard sale/refund/reversal/reference/cloud-api-integration-guide
Events / StadiumAndroid SDK (PAX)High-volume, Interac, multi-MID, UNDEFINED recovery, batch close/guides/events
Back office / MOTOCloud API back-office endpointsNo terminal needed/reference/backoffice-integration-guide

Integration paths are not mutually exclusive. A single ISV can implement multiple paths under one Handpoint account. Example: Cloud API at the counter + Android HiLite for field staff + back-office MOTO for phone orders — all sharing the same merchant credentials and transaction feed.

Back-office operations are always available regardless of integration path. Tip adjustment, reversal, refund, MOTO, pre-auth capture, and deferred tokenization are server-side REST calls that work alongside any card-present integration. Subject to acquirer support — see your acquirer's page for per-feature availability: EPI · PAYSAFE · EmerchantPay · Paystrax.

Cloud API code-generation facts​

Common sources of incorrect code.

Amount units differ by endpoint:

  • POST /transactions → amount is minor units as a string (digits only, no decimal) — "1000" = $10.00
  • POST /moto/sale, POST /moto/refund, POST /reversal → amount is major-unit decimal — "10.00" = $10.00
  • Do not use the same amount-formatting logic for both endpoint families.

finStatus — complete enum (use this to generate exhaustive switch/match blocks):

IN_PROGRESS → not final, keep polling
UNDEFINED → not final, run recovery flow before retrying
AUTHORISED → final, approved
DECLINED → final, declined — do not retry without cardholder action
FAILED → final, technical failure — run recovery flow before retrying
PARTIAL_APPROVAL → NOT final — terminal showing accept/decline prompt (US only); continue polling for 60s+ or until final transaction-result; can change to CANCELLED if declined
CANCELLED → final, cardholder cancelled
PROCESSED → final, non-financial operation complete (tokenizeCard)
REFUNDED → final, refund processed
CAPTURED → final, pre-auth captured

operation — valid values for POST /transactions:

sale, refund, saleAndTokenizeCard, tokenizeCard
moToSale, moToRefund, moToPreAuthorization, moToReversal
preAuthorization, preAuthorizationIncrease, preAuthorizationCapture, preAuthorizationReversal
saleReversal, refundReversal
stopCurrentTransaction, pingDevice, printReceipt

Auth header: ApiKeyCloud: YOUR_API_KEY (not Authorization, not X-Api-Key)

Full parameter tables with types, required/optional flags, and enum values: Cloud API — Operations Reference

Full documentation​