> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thanx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pre Cert Checklist POS Kiosk

# Pre-Certification Self-Check: POS / Kiosk Integration

Complete ALL items before contacting [developer.support@thanx.com](mailto:developer.support@thanx.com) for certification.

***

## API Headers & General

*This integration uses two separate APIs with different header requirements.*

### Partner API Headers (Create Access Token, Get Merchants, Get Locations)

* [ ] `Authorization: Bearer {access_token}`
* [ ] `X-ClientId: {client_id}`
* [ ] `Accept-Version: v4.0`
* [ ] `Content-Type: application/json`
* [ ] `User-Agent: {partner}/1.0.0`

### Loyalty API Headers (Get Account, Baskets)

* [ ] `Authorization: Bearer {user_access_token}`
* [ ] `Merchant-Key: {merchant_key}`
* [ ] `Accept: application/vnd.thanx-v1+json`
* [ ] `Content-Type: application/json`
* [ ] `User-Agent: {partner}/1.0.0`

### General

* [ ] No unnecessary duplicate API requests
* [ ] Error messages are handled gracefully for end users
* [ ] API requests are only issued in response to end-user interactions (no rapid polling)

## Authentication

* [ ] User can authenticate via phone number, email, or QR code scan
* [ ] QR code scan correctly parses `{user_id}|{reward_id}` format
* [ ] Access token acquired via Create Access Token endpoint using user ID, email, or phone
* [ ] Get Account endpoint called after authentication to retrieve user details and rewards

## Reward Redemption (Required)

* [ ] User can view available rewards (via Get Account endpoint)
* [ ] User can select a reward to redeem
* [ ] Reward redemption applied via Create or Update Basket endpoint
* [ ] Amount-off rewards supported
* [ ] Item-based rewards supported

## Points Product Exchange (Required)

* [ ] User can view points products eligible for exchange based on points balance (via Get Account)
* [ ] User can submit points products as part of basket to complete exchange (via Create or Update Basket)
* [ ] Amount-off points products supported
* [ ] Item-based points products supported

## Basket Submission (Required)

* [ ] Basket state transitions follow the correct lifecycle:
  * [ ] `checkout` — basket created/updated during browsing
  * [ ] `placed` — order submitted, reward locked
  * [ ] `billed` — payment charged, loyalty accrued
  * [ ] `completed` — order handed to customer (recommended, not required)
* [ ] `location_uid` included in basket (mapped via Get Locations endpoint)
* [ ] `items` array populated with `price` per item in every basket state
* [ ] `payments` array populated with `amount` per entry
* [ ] `order_timestamp` in ISO 8601 format (UTC)

## Refunds & Cancellations (Recommended)

* [ ] Voided orders send `voided` state (canceled before billing)
* [ ] Refunded orders send `refunded` state (canceled after billing)
* [ ] Redeemed rewards are restored on void/refund
* [ ] Points product behavior understood (points spent are not returned to the user's balance, but the points product reward is restored for future redemption)

## Automated Location Mapping

* [ ] Location IDs mapped from your system to Thanx Location IDs via Get Locations endpoint
* [ ] Correct `location_uid` sent with every basket submission

## Error Handling

* [ ] Handle authentication failures gracefully
* [ ] Handle reward redemption errors (expired, already used)
* [ ] Handle basket submission errors
* [ ] Display meaningful error messages to end users

## Submission Format

* [ ] Integration tested against Thanx Sandbox environment
* [ ] All sandbox API calls visible in DataDog logs
* [ ] Ready to demo on a video call: authentication, loyalty lookup, order submission with/without redemption, all supported loyalty types, error handling

***

**After completing all items above, email [developer.support@thanx.com](mailto:developer.support@thanx.com) to schedule your certification call.**
