# CLAUDE Source: https://docs.hitpayapp.com/CLAUDE # Changelog Entry Conventions ## Structure of individual changelog detail pages (`/changelog/*.mdx`) Each changelog entry file follows this structure: ```mdx theme={"system"} --- title: "Feature Name" description: "Short description." --- [← Back to Changelog](/changelog) # Feature Name **Month DD, YYYY** · Tag ![Alt text](image_url) Intro paragraph... ### Section heading - bullet - bullet ``` **Rules:** * `[← Back to Changelog](/changelog)` appears **only once, at the top** — do NOT add it at the bottom * Tags: `New`, `Improvement`, `Fix`, `Deprecation` * Images are hosted on `framerusercontent.com` # About HitPay Source: https://docs.hitpayapp.com/about HitPay is an omnichannel payments and commerce platform for growing businesses across Asia-Pacific, accepting 40+ payment methods. ## What is HitPay? HitPay is an omnichannel payments and commerce platform for growing businesses across Asia-Pacific. With a single integration, partners can accept **40+ payment methods** — including PayNow, FPX, QRIS, GrabPay, DuitNow, PromptPay, and major card networks — across Singapore, Malaysia, Philippines, Indonesia, Thailand, Hong Kong, Australia, and New Zealand. Over **20,000+ partners** use HitPay to collect **USD 1.5B+** in payments across online, in-person, and recurring channels. ### Products Shareable checkout links for one-off charges, invoices, or donations — no code required. Point-of-sale app paired with card terminals for in-person card and QR payments. Send branded invoices with embedded payment options and auto-reminders. Online store builder with a hosted storefront, themes, and checkout built in. 1st-party plugins for Shopify, WooCommerce, Wix, Magento, Xero, Zapier, and more. Accept 9 cross-border QR schemes in a single scan with automatic FX. ## Built for Developers HitPay's REST API lets developers integrate payments in three steps: create a payment request, redirect partners to the hosted checkout (or embed a QR code), and handle the webhook confirmation. Redirect or embedded checkout with 40+ payment methods. Native rendering for PayNow, DuitNow, QRIS, PromptPay, and more. Subscription plans, saved payment methods, and off-session charges. Drive card readers and QR terminals from your own app. HMAC-SHA256-signed events for payments, orders, invoices, and payouts. Test the full API with sandbox credentials before going live. Prefer to use AI? Connect Claude to your business data with the [HitPay MCP Server](/apis/guide/mcp-server), or build integrations with the [Claude Code Plugin](/apis/guide/claude-code-plugin), [Agent Skills](/apis/guide/ai-skills), and [HitPay CLI](/apis/guide/cli) under [AI Tools](/apis/guide/ai-developer-tools). ## Trust & Compliance HitPay is licensed and registered with regulators across every market it serves, is **PCI compliant**, and is security-tested on a regular cadence. | Regulator | Jurisdiction | | ---------------------------------------------------------------- | ------------------------------------- | | [Monetary Authority of Singapore (MAS)](https://www.mas.gov.sg/) | Singapore — Major Payment Institution | | [Bank Negara Malaysia (BNM)](https://www.bnm.gov.my/) | Malaysia | | [Bangko Sentral ng Pilipinas (BSP)](https://www.bsp.gov.ph/) | Philippines | | [AUSTRAC](https://www.austrac.gov.au/) | Australia | | [FinCEN](https://www.fincen.gov/) | United States | HitPay is backed by **Y Combinator**, **Tiger Global**, and **Global Founders Capital**. ## Get in Touch For questions or support, contact [support@hit-pay.com](mailto:support@hit-pay.com) or visit the [HitPay contact page](https://hitpayapp.com/contact-us). # Announcements Source: https://docs.hitpayapp.com/announcements Operational notices, migrations, and compliance updates from HitPay ## Stripe account connection update Eligible HitPay users outside Singapore and Malaysia may move from the custom Stripe connection to Stripe Standard onboarding—we will notify you if you are affected. [Read more →](/announcements/standard-connect-migration) # Overview Source: https://docs.hitpayapp.com/announcements/overview Non-product notices from HitPay—migrations, compliance, and operational changes that may require your action. Announcements here are **not** product release notes. They cover migrations, compliance, connect-account or platform changes, and similar notices that may require action—separate from the [Changelog](/changelog), where we publish features, improvements, and fixes. Card payment users outside Singapore, Malaysia, the Philippines, and Indonesia—what is changing, what to expect, and how to complete the migration when prompted. # ⚠️ Cards Migration to Stripe Standard Connect Source: https://docs.hitpayapp.com/announcements/standard-connect-migration Card payment users outside Singapore, Malaysia, the Philippines, and Indonesia must complete this migration by 5 June 2026 or card payments may be disrupted. **Action required by 5 June 2026.** This affects HitPay users who accept card payments and are based **OUTSIDE** Singapore, Malaysia, the Philippines, and Indonesia. If you do not complete the migration before this date, your ability to accept card payments may be interrupted. ### What is changing? HitPay is discontinuing support for **Stripe Custom Connect** for accounts that enabled Cards outside of Singapore, Malaysia, Phillipines and Indonesia. Merchants affected would need to reconnect Stripe Standard Connect within the HitPay dashboard to continue using cards with HitPay. ### What needs to be done before 5 June 2026? Log in to your **HitPay Dashboard** and go to **Settings → Payment Methods**. You will see a **Cards (Stripe Standard Account)** option — click on it to begin. Payment Methods page showing Cards and Cards (Stripe Standard Account) The Stripe onboarding page will open. You can either: * **Connect an existing Stripe account** using your existing Stripe email, or * **Create a new Stripe account** with a new email address. Follow the prompts to complete the connection. Stripe onboarding page showing Get started with Stripe Fill in your business details as requested by Stripe. This may include business information, identity verification, and banking details. Complete all steps to activate your card payment capability. Once done, you will see **Stripe Standard Connect** shown as active in your Payment Methods page. When you log in to your Stripe Dashboard, you will see the HitPay logo alongside your company logo — this confirms your Standard account is successfully linked to HitPay. Stripe Dashboard showing HitPay Payment Solutions under the account name Payment Methods page showing Cards (Stripe Standard Account) as Active and legacy Cards as Inactive The process typically takes a few minutes. You will see a confirmation once your account is successfully migrated. ### What are the actionables for terminal users? **WiFi Terminals ⚠️ Action required** After completing your Stripe Standard Connect migration, you must re-register all WiFi terminals: 1. Go to **Point of Sale → Card Terminals** in your HitPay Dashboard. 2. For each WiFi terminal, open the terminal details. 3. Select **Delete Terminal**, then **Register Terminal** to re-add it. 4. Repeat this process for every WiFi terminal. **Important:** WiFi terminals will not work until you complete this re-registration process. **Tap to Pay ⚠️ Action may be required** After migration, you may need to reconfigure Tap to Pay: * Your Tap to Pay functionality may need to be re-enabled on your new Standard account. * Open your HitPay App > More > Terminal > Forget Terminal * Reinitiate Tap to Pay pairing **Bluetooth Terminals — no action needed** Bluetooth terminals are not affected by this migration and will continue to work as normal. ### What changes after migration? Rest assured, you can still accept card payments through HitPay in the same way you do today once migration is complete. Your transaction history and other payment methods are not affected. With a Stripe Standard Connect account, your relationship with Stripe becomes more direct. Payouts and card balances can only be accessed via Stripe. For a full breakdown of what changes — including pricing and FAQ — see the [Standard Connect Integration guide](/connections/stripe/standard-connect). ### FAQ Stripe Standard Connect through HitPay is available in the following countries: | | | | | | ------------------- | ------------------ | ------------------ | ------------------------- | | Australia (AU) | Austria (AT) | Belgium (BE) | Bulgaria (BG) | | Canada (CA) | Croatia (HR) | Cyprus (CY) | Czech Republic (CZ) | | Denmark (DK) | Estonia (EE) | Finland (FI) | France (FR) | | Germany (DE) | Gibraltar (GI) | Greece (GR) | Hong Kong (HK) | | Hungary (HU) | India (IN) | Ireland (IE) | Italy (IT) | | Japan (JP) | Latvia (LV) | Liechtenstein (LI) | Lithuania (LT) | | Luxembourg (LU) | Malta (MT) | Mexico (MX) | Netherlands (NL) | | New Zealand (NZ) | Norway (NO) | Poland (PL) | Portugal (PT) | | Romania (RO) | Slovakia (SK) | Slovenia (SI) | Spain (ES) | | Sweden (SE) | Switzerland (CH) | Thailand (TH) | United Arab Emirates (AE) | | United Kingdom (GB) | United States (US) | | | If your country is not listed, contact **[support@hit-pay.com](mailto:support@hit-pay.com)** for assistance. ### Need help? Contact **[support@hit-pay.com](mailto:support@hit-pay.com)** and include your registered email address. If you are close to the deadline and have not yet received a migration email, reach out immediately so we can assist you. # Get Account Status Source: https://docs.hitpayapp.com/apis/accounts/account-status get /v1/account-status Retrieve your HitPay account status including verification and payment provider setup # Export Balance Transactions Source: https://docs.hitpayapp.com/apis/balance/export-transactions post /v1/balances/{balance_provider}/transactions/export Export balance transaction history to CSV via email # Get Balances Source: https://docs.hitpayapp.com/apis/balance/get-balances get /v1/balances Retrieve account balances across all payment providers # List Balance Transactions Source: https://docs.hitpayapp.com/apis/balance/get-transactions get /v1/balances/{balance_provider}/transactions List balance transactions with pagination and filtering # Export Charges Source: https://docs.hitpayapp.com/apis/charges/export-charges get /v1/charges/export Export charge records in bulk to CSV # Get Charge Detail Source: https://docs.hitpayapp.com/apis/charges/get-charge-detail get /v1/charges/{charge_id} Retrieve details of a specific charge by ID # List Charges Source: https://docs.hitpayapp.com/apis/charges/get-charges get /v1/charges List all charges with pagination and date filtering # Print Charge Receipt Source: https://docs.hitpayapp.com/apis/charges/print-charge-receipt post /v1/charges/{charge_id}/receipt/print Print charge or refund receipt from an All-in-One terminal # Create Customer Source: https://docs.hitpayapp.com/apis/customers/create-customer post /v1/customers Create a new customer record with name, email, and phone # Delete Customer Source: https://docs.hitpayapp.com/apis/customers/delete-customer delete /v1/customers/{customer_id} Delete a customer record by ID # List Customers Source: https://docs.hitpayapp.com/apis/customers/get-all-customer get /v1/customers List all customers with pagination # Get Customer Details Source: https://docs.hitpayapp.com/apis/customers/get-customer-details get /v1/customers/{customer_id} Retrieve a customer's full details by ID # Update Customer Source: https://docs.hitpayapp.com/apis/customers/update-customer patch /v1/customers/{customer_id} Update an existing customer's name, email, or phone # Overview Source: https://docs.hitpayapp.com/apis/guide/ai-developer-tools Use AI with HitPay: connect Claude to your business data with the MCP Server, or build payment integrations with the Claude Code Plugin, Agent Skills, and the HitPay CLI. HitPay's AI tools cover two jobs: **operating your business** from an AI assistant, and **building payment integrations** by describing what you want in natural language. There are four tools. Pick the ones that match your workflow. Connect Claude to your business data: query sales, transactions, payouts, and balances, or create payment links and invoices. Authenticates with your HitPay login over OAuth. MCP server with 28 live API tools, 5 auto-triggered skills, and 4 slash commands for building integrations. Claude Code only. Code-generation skills for Claude Code, Cursor, GitHub Copilot, and Windsurf. Install once, describe what you want. Drive the API from your terminal, scripts, and CI pipelines. Test webhooks locally with `hitpay listen` and `hitpay trigger`. ## Which tool should I use? | | MCP Server | Claude Code Plugin | Agent Skills | HitPay CLI | | ------------------------------------------ | :------------------------------: | :----------------------------------: | :---------------------------: | :-------------------: | | **Best for** | Chatting with your business data | Building integrations in Claude Code | Code generation in any AI IDE | Scripts, CI, terminal | | **Authentication** | HitPay login (OAuth) | API key | API key | API key | | **Requires coding** | ✗ | ✓ | ✓ | ✓ | | **Live data access** | ✓ | ✓ | ✗ | ✓ | | **Code generation** | ✗ | ✓ | ✓ | ✗ | | **Webhook testing** | ✗ | ✓ | ✓ | ✓ | | **Works with Cursor / Copilot / Windsurf** | ✗ | ✗ | ✓ | — | | **Sandbox support** | ✗ | ✓ (default) | ✓ | ✓ (default) | ### Recommended choices * **Querying your own business data?** Connect the [MCP Server](/apis/guide/mcp-server) to Claude to look up sales, payouts, and transactions. * **Using Claude Code to build an integration?** Start with the [Claude Code Plugin](/apis/guide/claude-code-plugin), which combines live API access with auto-triggered skills. Add Agent Skills for offline code generation templates. * **Using Cursor, Copilot, or Windsurf?** Install [Agent Skills](/apis/guide/ai-skills). It works with any AI coding assistant and generates code from natural language prompts. * **Scripting, CI, or terminal work?** Use the [HitPay CLI](/apis/guide/cli), especially for webhook development with `hitpay listen` and `hitpay trigger`. The tools can be used together; for example, the MCP Server for checking data while the CLI handles webhook testing. ## Prerequisites The **MCP Server** only needs a HitPay account. You sign in as an owner or admin of the business when connecting. The three developer tools require API credentials: 1. **HitPay Account**: [create an account](https://dashboard.hit-pay.com) or use the [sandbox environment](https://dashboard.sandbox.hit-pay.com) 2. **API Key**: found in **Settings → Payment Gateway → API Keys** 3. **Webhook Salt**: found in **Settings → Developers → Webhook Endpoints** When building integrations, always start in **sandbox** mode. The three developer tools default to the sandbox environment. Switch to production only when you are ready to accept real payments. ## Quick start by tool ### MCP Server In [claude.ai](https://claude.ai) or the Claude desktop app, add HitPay from the [Claude connector directory](https://claude.ai/directory/connectors/hitpay) (**Directory → Connectors**, search for "HitPay"). From Claude Code: ```bash theme={"system"} claude mcp add --transport http hitpay https://mcp.hit-pay.com/ ``` Sign in with your HitPay account, then ask: "What were my total sales last month?" → [Full guide](/apis/guide/mcp-server) ### Claude Code Plugin Install inside Claude Code: ``` /plugin marketplace add hit-pay/claude-code-plugin /plugin install hitpay@hitpay-plugins ``` Set your credentials: ```bash theme={"system"} export HITPAY_API_KEY=your_api_key_here export HITPAY_SALT=your_webhook_salt_here export HITPAY_ENV=sandbox ``` Then describe what you want: "Add PayNow and GrabPay to my Next.js checkout" → [Full guide](/apis/guide/claude-code-plugin) ### Agent Skills Install in your project: ```bash theme={"system"} npx skills add hit-pay/agent-skills ``` Then prompt your AI assistant: "Add HitPay payment integration to my Next.js app" → [Full guide](/apis/guide/ai-skills) ### HitPay CLI Install and log in: ```bash theme={"system"} npm install -g @hit-pay/cli hitpay login ``` Create a payment or test a webhook: ```bash theme={"system"} hitpay payment create --amount 49.90 --currency SGD --email customer@example.com hitpay listen --forward-to http://localhost:3000/api/webhooks ``` → [Full guide](/apis/guide/cli) # AI Agent Skills Source: https://docs.hitpayapp.com/apis/guide/ai-skills Pre-packaged instructions that teach AI coding assistants (Claude Code, Cursor, GitHub Copilot, Windsurf) how to integrate HitPay Integrate HitPay into your application using AI coding assistants like Claude Code, Cursor, GitHub Copilot, and Windsurf. ## What are Agent Skills? Agent Skills are pre-packaged instructions that teach AI coding assistants how to integrate HitPay. Instead of reading through documentation, your AI assistant already knows: * How to create payment requests * When to use redirect vs. embedded QR checkout * How to handle webhooks securely * How to process refunds You can tell your AI assistant "Add HitPay payments to my app" and it will generate the implementation. ## Installation Install the HitPay skill in your project: ```bash theme={"system"} npx skills add hit-pay/agent-skills ``` Installing HitPay Agent Skills This works with: * **Claude Code** (Anthropic) * **Cursor** * **GitHub Copilot** * **Windsurf** * Other AI coding assistants that support the Agent Skills format ## Usage Once installed, just describe what you want in natural language. ### Examples | Task | Prompt | | ----------------------- | ------------------------------------------------------------ | | Add a checkout flow | "Add HitPay payment integration to my Next.js app" | | Create QR code payments | "Create a PayNow QR code checkout for my React app" | | Handle webhooks | "Set up HitPay webhook handling with signature verification" | | Process refunds | "Add a refund endpoint for HitPay payments" | The AI assistant generates the code following the patterns in the skill (auth headers, webhook signature verification, error handling). ## What's Included The skill covers: | Feature | Description | | ---------------- | ------------------------------------------------------- | | Payment Requests | Create payments via redirect or embedded QR | | Frontend Options | Redirect checkout, embedded QR, payment method selector | | Webhook Handling | Signature verification, event processing | | Refunds | Full and partial refund implementation | | Code Examples | Next.js, Express.js, and vanilla TypeScript | ## How It Works Run `npx skills add hit-pay/agent-skills` in your project Tell your AI assistant what you want to build The AI creates implementation following HitPay best practices Modify the generated code for your specific requirements ## Prerequisites Before using the skill, ensure you have: 1. **HitPay Account** - [Create an account](https://dashboard.hit-pay.com) or use the [sandbox environment](https://dashboard.sandbox.hit-pay.com) 2. **API Key** - Found in Settings → Payment Gateway → API Keys 3. **Webhook Salt** - Found in Settings → Developers → Webhook Endpoints ## Environment Variables The generated code expects these environment variables: ```bash theme={"system"} HITPAY_API_KEY=your_api_key HITPAY_SALT=your_webhook_salt NEXT_PUBLIC_APP_URL=http://localhost:3000 ``` ## Resources View source and contribute API Reference Handle payment notifications Test your integration Live API access from inside Claude Code Query your business data from an AI assistant ## Feedback Have suggestions for the HitPay AI skill? [Open an issue](https://github.com/hit-pay/agent-skills/issues) on GitHub. # APM Tokenisation Source: https://docs.hitpayapp.com/apis/guide/apm-tokenisation Link and tokenise wallets like ShopeePay and GrabPay for future use. ## Overview **APM Tokenisation** lets your customer link a digital wallet (e.g., **ShopeePay** or **GrabPay**) once and reuse it securely for future payments. Use this flow when you want to: * Let customers **link their wallet once** and skip re-entering payment details for future orders. * Offer **one-click repeat checkouts** for returning buyers. * Support **recurring or subscription-based payments**, enabling automatic billing at fixed intervals. * Support **on-demand or usage-based payments**, where the final amount is confirmed only after the service is delivered. This feature is particularly useful for merchants who want to improve payment completion rates and reduce friction for repeat buyers using local APMs. It also gives customers a convenient **alternative to cards** for ongoing payments, providing more flexibility across preferred local wallets. By supporting APM tokenisation, you can **increase payment flexibility** and **boost conversions** through smoother, familiar checkout experiences. This API integration includes 3 Steps Generate a secure session and checkout link for the customer to connect their wallet. Redirect the customer to the HitPay-hosted page where they authorise wallet linking. Use the stored token to charge the linked wallet anytime in the future. ## Step 1 - Create Tokenisation Session ### HTTP Request ``` POST https://api.sandbox.hit-pay.com/v1/apm/tokenisation ``` ### Query Parameters Mandatory fields are `customer_name` and `customer_email`. Remember to include the header `Content-Type: application/x-www-form-urlencoded`. | Parameter | Description | Example | | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | | name | Display name shown on the checkout page | Spotify Premium | | description | Description displayed below the name on the checkout page | Spotify Membership | | customer\_email | Customer email | [paul@hitpayapp.com](mailto:paul@hitpayapp.com) | | customer\_name | Customer name | Paul | | payment\_methods\[] | Choice of payment methods you want to offer the customer. | shopee\_pay, grab\_pay, giro | | redirect\_url | URL where hitpay redirects the user after the users link their wallet. | [https://spotify.com/subscription-completed](https://spotify.com/subscription-completed) | | reference | Arbitrary reference number that you can map to your internal reference number. This value cannot be edited by the customer | XXXX123 | | webhook | Optional URL value to which hitpay will send a POST request when there is a new charge or if there is an error charging the wallet | [https://webhoo.site/test](https://webhoo.site/test) | | send\_email | Hitpay to send email receipts to the customer. Default value is false | true | ```shell theme={"system"} curl --location --request POST 'https://api.staging.hit-pay.com/v1/apm/tokenisation' \ --header 'X-BUSINESS-API-KEY: meowmeowmeow' \ --header 'X-Requested-With: XMLHttpRequest' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'name=Spotify Premium' \ --data-urlencode 'description=Spotify Membership' \ --data-urlencode 'customer_email=paul@hitpayapp.com' \ --data-urlencode 'customer_name=Paul' \ --data-urlencode 'payment_methods[]=shopee_pay' \ --data-urlencode 'payment_methods[]=grab_pay' \ --data-urlencode 'redirect_url=https://spotify.com/subscription-completed' \ --data-urlencode 'reference=cust_id_123' \ --data-urlencode 'webhook=https://webhoo.site/test' \ --data-urlencode 'send_email=true' ``` ### Response ```json theme={"system"} { "id": "9741164c-06a1-4dd7-a649-72cca8f9603a", "customer_name": "Paul", "customer_email": "paul@hitpayapp.com", "name": "Spotify Premium", "description": "Spotify Membership", "reference": "cust_id_123", "status": "scheduled", "send_email": true, "redirect_url": "https://github.com/", "payment_methods": ["shopee_pay", "grab_pay"], "created_at": "2025-09-13T16:33:47", "updated_at": "2025-09-13T16:33:47", "url": "https://securecheckout.staging.hit-pay.com/9673bdea-058c-44b5-a957-845a7c487bc2/recurring-plan/9741164c-06a1-4dd7-a649-72cca8f9603a", "webhook": "https://webhoo.site/test" } ``` ## Step 2 - Redirect customer to checkout page (One time set up) Redirect the customer to the "url" value. Checkout API UI Once the customer completes wallet linking, you can charge the linked wallet anytime using the Charge Linked Wallet API. ## Step 3 - Charge Linked Wallet Once the wallet is linked, you can charge it anytime using the endpoint below ### HTTP Request ``` POST https://api.sandbox.hit-pay.com/v1/charge/tokenisation/{id} ``` id is the id value from step 1 response. ### Query Parameters | Parameter | Description | Example | | ----------- | ----------------------------------------- | ----------------- | | currency | Currency related to the recurring billing | SGD | | amount | Amount related to the recurring billing | 9.90 | | description | Description of the charge | Membership charge | ```shell theme={"system"} curl --location --request POST 'https://api.sandbox.hit-pay.com/v1/charge/tokenisation/{id}' \ --header 'X-BUSINESS-API-KEY: meowmeowmeow' \ --header 'X-Requested-With: XMLHttpRequest' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI4YjdiYzdhYS1iZGUxLTQzODAtYjQ5ZS03ZjFiYWViOGMzY2UiLCJqdGkiOiJjYTA4NjVmMjMxYzA2Yjg2NTY5ODc1ZTFkNjVlMmUwM2EwMmI1ZDcxZTBiMTEwMWUwYzE4Y2Y3NWU2ZjYwZmM0MTIxYmVkMTExZWI4YjRlZSIsImlhdCI6MTY2MzExNzUxOCwibmJmIjoxNjYzMTE3NTE4LCJleHAiOjE2OTQ2NTM1MTcsInN1YiI6IjkwMjdjYTRkLTBhYmItNDk2NC04MzIxLTQ0NWQ0YjMyNzY5NCIsInNjb3BlcyI6W119.VfQoR_luqIZKSBTEXMv_srTVRApk9OfimbX_ghmRkCjrnvZUm-gCSHUbVnBUSzUcjRbVs-rCFs5wKZX4V0bL_76_WqBwxmNzsxRFf-QXFHSt1dDG7TnH6OSduHFeI-6akfQX0DGqal2pStz-UQY07lUiJ_aRe6QnvYqKZaA_eKsAn5XnEo0vn92mk8_i9KTxhvPH85qinfpg23-j3RJNlTDXeRWPn7CmufsrFfdRGtDL2h2thyqEQvju47XAM_Nyar2IjHw_ZcT9ZWnS7sskSwrsrBmOvjSuHA-ANr55ufc11GwjdRyzBPLu3SOUJ8kHJnprdep70VIpYLtO_nKG1xMzJRJzSno-Hvhn7RzjT-xpSudfUzRKb6M9z_BVmSQ8eUfuigwcmadH-pAFP67noNQAL5zeOjlr4RXGRKoMdeOOM4hxciojZRqoiBT-i74aAHg0AAlJHx4NQnM4LcDkN_Sh0kK4Ip4BHZHuxE4t9CZ24erizjXcdwvzv0UG0QCYRSfWN41PcHTbljDXQWmV719PDtPVwoAb1Ht2EKzuAQ4umuLx6NzOpBFuXpElZfwVT9XoDr22Dwts-7cW2fqj_C6igptqoAeRuCGEejDRgq2dA-UJTpRxfi6J02XXKpeDv-hGyFCYE8TUHBqTg5HMRQeHtga3-Hq05IPFhp9fmyk' \ --data-urlencode 'amount=9.90' \ --data-urlencode 'currency=SGD ``` Response ```json theme={"system"} { "payment_id": "9746f906-bdbb-4064-8372-642cf5877e0c", "id": "9746f8c2-2b7c-4c78-8832-012f203ae687", "amount": 9.9, "currency": "sgd", "status": "succeeded" } ``` ## FAQs No, customers will not be charged during the linking process. The tokenisation flow is used purely to authorise future payments securely. If the wallet does not have enough funds at the time of charge, the payment will fail, and HitPay will send an `charge.failed` webhook event. You can prompt the customer to top up and retry the charge. Yes, once your customer has attached the wallet, you can charge any amount using the Charge Linked Wallet API Ensure the following before moving to production - Change the base URL for all API calls to [https://api.hit-pay.com/v1/](https://api.hit-pay.com/v1/) - Update API keys and Salt values from the production dashboard # Claude Code Plugin Source: https://docs.hitpayapp.com/apis/guide/claude-code-plugin Claude Code plugin for building HitPay payment integrations: an MCP server with 28 live API tools, 5 auto-triggered skills, and 4 slash commands. Covers 50+ payment methods across Southeast Asia. The HitPay Claude Code Plugin connects Claude Code to the HitPay payment API. It ships an MCP server with 28 tools, 5 auto-triggered skills, and 4 slash commands. You describe the integration you need, and Claude generates the code, calling the live API where that helps (looking up payment methods, creating test payment requests, verifying results). ## Plugin vs. Agent Skills HitPay offers two AI integration approaches. Choose the one that fits your workflow. | Feature | Claude Code Plugin | [Agent Skills](/apis/guide/ai-skills) | | -------------------------- | ---------------------------------------------------- | -------------------------------------- | | **Installation** | `/plugin marketplace add hit-pay/claude-code-plugin` | `npx skills add hit-pay/agent-skills` | | **Live API access** | 28 MCP tools (read + safe create) | None, code generation only | | **Auto-triggered skills** | 5 (payment, webhook, methods, UI, QR) | 2 (payment, webhook) | | **Slash commands** | 4 (`/hitpay:init`, `/hitpay:methods`, etc.) | None | | **AI assistants** | Claude Code only | Claude Code, Cursor, Copilot, Windsurf | | **Sandbox support** | Built-in (default environment) | Via env vars | | **Destructive operations** | Excluded by design | N/A | The plugin only works in Claude Code. If you use **Cursor, GitHub Copilot, or Windsurf**, use [Agent Skills](/apis/guide/ai-skills) instead. To query your business data (sales, payouts, transactions) from an AI assistant without building an integration, use the hosted [HitPay MCP Server](/apis/guide/mcp-server) instead. It authenticates with your HitPay login rather than an API key. ## What's Included 28 live API tools: create payment requests, list charges, manage customers, generate QR codes, and more. All operations are read or safe-create. Claude activates the relevant skill based on your prompt: payment integration, webhook handling, method lookup, embedded UI, or QR checkout. Scaffolding commands for common workflows: `/hitpay:init`, `/hitpay:methods`, `/hitpay:webhook-test`, `/hitpay:qr-checkout`. ## Installation Inside Claude Code, add the marketplace and install the plugin: ``` /plugin marketplace add hit-pay/claude-code-plugin /plugin install hitpay@hitpay-plugins ``` Or clone locally for development: ```bash theme={"system"} git clone https://github.com/hit-pay/claude-code-plugin.git hitpay-plugin claude --plugin-dir ./hitpay-plugin ``` Add your HitPay API credentials: ```bash theme={"system"} export HITPAY_API_KEY=your_api_key_here export HITPAY_SALT=your_webhook_salt_here export HITPAY_ENV=sandbox ``` Get your API key from **Dashboard → Settings → Payment Gateway → API Keys**. Get your webhook salt from **Dashboard → Settings → Developers → Webhook Endpoints**. Open Claude Code and describe what you want: ``` "Add PayNow and GrabPay to my Next.js checkout" ``` Claude uses the live API and the relevant skill to generate the integration code. Always start with `HITPAY_ENV=sandbox`. Switch to `HITPAY_ENV=production` only when you are ready to accept real payments. The plugin defaults to sandbox mode. ## MCP Server: 28 API Tools The plugin's MCP server gives Claude live access to the HitPay API. All operations are either read-only or safe-create; no destructive operations are exposed. | Category | Tools | Operations | | ---------------------- | ----- | ---------------------------------------------------------------- | | **Payment Requests** | 5 | Create, get, list, update, delete (pending only) | | **Charges** | 2 | List charges, get charge detail | | **Account & Balances** | 2 | Get balances, get account status | | **Customers** | 3 | Create, list, get | | **Invoices** | 2 | Create, list | | **QR Codes** | 4 | Get supported methods, create embedded QR, create/list static QR | | **Subscriptions** | 4 | List plans, create/cancel billing, charge saved card | | **Webhooks** | 3 | Create/delete webhook events, get remitter | | **Analytics** | 1 | Get sales summary | | **Products** | 2 | List products, get account info | Refunds, transfers, and bulk deletions are intentionally excluded, so Claude cannot trigger irreversible financial operations even with a production API key. ## Auto-Triggered Skills Skills activate automatically based on what you ask Claude. No manual invocation needed. | Skill | Triggers When You Say | What It Does | | ----------------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | | **payment-integration** | "Add HitPay", "payment checkout", "accept payments" | Generates API routes, redirect/QR/selector checkout flows, auth headers, and test card setup | | **webhook-handler** | "webhook signature", "verify webhook", "payment notification" | Generates HMAC-SHA256 verification (mandatory), event routing, idempotency handling | | **payment-methods** | "methods in Malaysia", "supported methods", "which payment methods" | Returns country-to-method mapping with exact API codes, currencies, and availability | | **drop-in-ui** | "embed payment form", "HitPay.js", "checkout popup" | Generates HitPay.js script integration, init options, Next.js component, event handling | | **qr-checkout** | "QR checkout page", "QR payment page", "show QR code" | Generates a branded HTML page with scannable QR, countdown timer, offline-capable | ## Slash Commands | Command | Description | Example | | ---------------------- | --------------------------------------------------------------------- | ----------------------------------------- | | `/hitpay:init` | Scaffold a complete HitPay integration for your framework and markets | `/hitpay:init nextjs sg,my` | | `/hitpay:methods` | Look up available payment methods by country | `/hitpay:methods ph` | | `/hitpay:webhook-test` | Generate a test webhook payload and curl command | `/hitpay:webhook-test charge.created` | | `/hitpay:qr-checkout` | Generate a QR payment page for specific methods | `/hitpay:qr-checkout 100 sgd paynow,qris` | ## Supported Payment Methods The plugin covers 50+ payment methods across 8 markets with automatic cross-border support. | Market | Currency | Payment Methods | | ---------------- | -------- | -------------------------------------------------------- | | **Singapore** | SGD | PayNow, GrabPay, ShopeePay, Cards, Apple Pay, Google Pay | | **Malaysia** | MYR | FPX, Touch 'n Go, DuitNow, GrabPay, ShopeePay | | **Philippines** | PHP | GCash, Maya, QR Ph, ShopeePay | | **Thailand** | THB | PromptPay, TrueMoney | | **Indonesia** | IDR | QRIS, OVO, DANA | | **Vietnam** | VND | VietQR, ZaloPay | | **India** | INR→SGD | UPI (with automatic FX conversion) | | **Australia** | AUD | PayTo, Cards | | **Cross-border** | Auto FX | 9 borderless QR methods with real-time exchange rates | ## Usage Examples **Prompt:** "Add PayNow and card payments to my Next.js app" Claude will: 1. Create an API route at `app/api/payments/create/route.ts` 2. Generate a checkout component with redirect flow 3. Set up webhook handler with HMAC-SHA256 verification 4. Add environment variable configuration **Prompt:** "Set up HitPay webhook handling with signature verification" Claude will: 1. Generate a webhook endpoint with HMAC-SHA256 signature validation 2. Add event type routing (payment completed, refund issued, etc.) 3. Include idempotency checks to prevent duplicate processing 4. Add error handling and logging **Prompt:** "Create a PayNow QR checkout page for SGD 50" Claude will: 1. Call the live API to create an embedded QR payment request 2. Generate a branded HTML page with the QR code 3. Add a countdown timer for QR expiration 4. Include the checkout URL as a fallback link **Prompt:** "What payment methods are available in the Philippines?" Claude will: 1. Query the live API for available methods in PH 2. Return GCash, Maya, QR Ph, ShopeePay with exact API codes 3. Show currency (PHP) and any cross-border options ## Prerequisites Before installing the plugin, ensure you have: 1. **HitPay Account**: [create an account](https://dashboard.hit-pay.com) or use the [sandbox environment](https://dashboard.sandbox.hit-pay.com) 2. **API Key**: found in **Settings → Payment Gateway → API Keys** 3. **Webhook Salt**: found in **Settings → Developers → Webhook Endpoints** 4. **Claude Code**: the plugin requires [Claude Code](https://claude.ai/claude-code) (Anthropic's CLI) ## Frequently Asked Questions The HitPay Claude Code Plugin connects Claude Code to HitPay's live payment API. It includes an MCP server with 28 API tools, 5 auto-triggered skills for common integration tasks, and 4 slash commands for scaffolding. You describe what you want in natural language, and Claude generates the payment integration code. The Claude Code Plugin provides **live API access** through an MCP server: Claude can create real payment requests, query charges, and check balances. Agent Skills only provide code generation templates without API connectivity. The plugin also includes slash commands and more auto-triggered skills. However, Agent Skills work with Cursor, Copilot, and Windsurf, while the plugin only works in Claude Code. Yes. The plugin excludes all destructive operations: no refunds, no transfers, no bulk deletions. All 28 MCP tools are either read-only or safe-create operations, so Claude cannot trigger irreversible financial actions through the plugin. Yes. The plugin defaults to sandbox mode (`HITPAY_ENV=sandbox`). All API calls go to `api.sandbox.hit-pay.com` until you explicitly set `HITPAY_ENV=production`. Use test card `4242 4242 4242 4242` with any expiry and CVC in sandbox. The plugin supports 50+ payment methods across Singapore, Malaysia, Philippines, Thailand, Indonesia, Vietnam, India, and Australia. This includes PayNow, FPX, QRIS, GrabPay, GCash, PromptPay, UPI, and 9 cross-border QR methods with automatic FX conversion. No. The Claude Code Plugin requires Claude Code (Anthropic's CLI) because it uses the MCP server protocol and Claude Code's plugin system. For Cursor, GitHub Copilot, or Windsurf, use [HitPay Agent Skills](/apis/guide/ai-skills) instead. Change your environment variable from `HITPAY_ENV=sandbox` to `HITPAY_ENV=production` and update `HITPAY_API_KEY` to your production API key. Your production key is found in your live HitPay Dashboard under **Settings → Payment Gateway → API Keys**. The plugin is optimized for **Next.js** (App Router) but works with any Node.js/TypeScript framework. Claude adapts the generated code for Express, Fastify, Remix, SvelteKit, or vanilla Node.js based on your project structure. ## Resources View source, report issues, and contribute Full API documentation Handle payment notifications Test your integration Alternative for Cursor, Copilot, and Windsurf Full payment method reference ## Feedback Have suggestions or found an issue? [Open an issue](https://github.com/hit-pay/claude-code-plugin/issues) on GitHub. # HitPay CLI Source: https://docs.hitpayapp.com/apis/guide/cli Command-line tool to manage payments, test webhooks, and generate QR codes from your terminal. Available for macOS, Linux, and Windows via npm. The HitPay CLI is a command-line client for the HitPay API. Create payment requests, list charges, generate QR codes, and test webhooks end-to-end from your shell, scripts, and CI pipelines. ## What's Included Manage payment requests, charges, refunds, customers, invoices, subscriptions, beneficiaries, and transfers with a consistent `hitpay ` syntax. `hitpay listen` tunnels your local server to the public internet and auto-registers a webhook endpoint. `hitpay trigger` simulates events without waiting for live traffic. `hitpay qr create` renders scannable QR codes directly in your terminal for PayNow, QRIS, PromptPay, GCash, DuitNow, and 50+ other methods across Southeast Asia. ## Installation Install globally with npm: ```bash theme={"system"} npm install -g @hit-pay/cli ``` Or run without installing: ```bash theme={"system"} npx @hit-pay/cli --help ``` Requires **Node.js 18 or later**. Interactive login (prompts for API key): ```bash theme={"system"} hitpay login ``` Or provide the key directly for non-interactive environments like CI: ```bash theme={"system"} hitpay login --api-key sk-live-xxxxxxxxxxxx ``` Get your API key from **Dashboard → Settings → Payment Gateway → API Keys**. Check you're logged in and on the right environment: ```bash theme={"system"} hitpay whoami ``` Then run any command. For example, list recent charges: ```bash theme={"system"} hitpay charge list ``` The CLI is in **Beta** (v0.1.0). If `npm install -g @hit-pay/cli` fails with a 404, install from source until the first npm publish: ```bash theme={"system"} git clone https://github.com/hit-pay/cli.git cd cli && npm install && npm run build && npm link ``` ## Authentication & Config Credentials are stored locally at `~/.hitpay/config.json` with `0600` permissions. Inspect or update them with the `config` command: ```bash theme={"system"} hitpay config list hitpay config set environment sandbox hitpay config get currency ``` ### Environment variables Override any stored config with env vars, useful for CI: | Variable | Description | | -------------------- | ------------------------------------------ | | `HITPAY_API_KEY` | API key; overrides `~/.hitpay/config.json` | | `HITPAY_ENVIRONMENT` | `sandbox` or `production` | ### Global flags Available on every command: | Flag | Description | | --------------------- | ------------------------------------------------------- | | `--env ` | One-shot environment override (e.g. `--env production`) | | `--json` | Output raw JSON for piping to `jq`, scripts, or CI | | `--help` | Show command help | | `--version` | Print CLI version | The CLI defaults to `sandbox`. Run `hitpay config set environment production` (or pass `--env production`) only when you are ready to move real money. ## Commands | Category | Commands | | -------------------- | --------------------------------------------------------------------- | | **Account** | `login`, `logout`, `whoami`, `config set/get/list` | | **Payment Requests** | `payment create`, `payment get`, `payment list`, `payment cancel` | | **Charges** | `charge list`, `charge get`, `charge export` | | **Refunds** | `refund` | | **Customers** | `customer create/list/get/update/delete` | | **Invoices** | `invoice create/list/delete` | | **Subscriptions** | `plan create/list/get/delete`, `subscription create/list/get/cancel` | | **Payouts** | `beneficiary create/list/delete`, `transfer estimate/create/list/get` | | **QR Codes** | `qr create`, `methods` | | **Webhooks (dev)** | `listen`, `trigger` | Run `hitpay --help` for full argument details on any command. ## Webhook development flow The CLI's webhook tooling lets you build and test webhook handlers locally without ngrok setup or manual endpoint registration. ### Forward live events to localhost ```bash theme={"system"} hitpay listen --forward-to http://localhost:3000/api/webhooks ``` This opens a secure tunnel, registers a temporary webhook endpoint with HitPay, and forwards every event to your local server. When you press `Ctrl+C`, the endpoint is cleaned up automatically. ### Simulate events without live traffic ```bash theme={"system"} hitpay trigger charge.created hitpay trigger --list # show all supported event types ``` `trigger` posts a signed payload to whichever endpoint `listen` is currently forwarding, so you can exercise your handler's signature verification, idempotency, and event routing without waiting for a real payment. ## Usage Examples ```bash theme={"system"} hitpay payment create \ --amount 49.90 \ --currency SGD \ --email customer@example.com \ --reference INV-2026-001 ``` Returns the checkout URL and payment request ID. Add `--json` to parse the result in a script. ```bash theme={"system"} hitpay charge list --status completed --limit 25 --json | jq '.data[].amount' ``` Combine with `--env production` to query the live account from a sandbox-configured machine without changing config. ```bash theme={"system"} # Terminal 1: tunnel + auto-register endpoint hitpay listen --forward-to http://localhost:3000/api/webhooks # Terminal 2: simulate an event hitpay trigger charge.created ``` Inspect the forwarded payload in your local server logs. The handler receives a real signed payload identical to production. ```bash theme={"system"} hitpay qr create --amount 100 --currency SGD --methods paynow ``` Renders the QR directly in your terminal. Scan with any PayNow-compatible banking app in Singapore. ## Prerequisites 1. **HitPay Account**: [create an account](https://dashboard.hit-pay.com) or use the [sandbox environment](https://dashboard.sandbox.hit-pay.com) 2. **API Key**: found in **Settings → Payment Gateway → API Keys** 3. **Node.js 18 or later**: check with `node --version` ## Which AI tool should I use? HitPay offers four AI tooling options that can be used together. | Tool | Use when you want to… | | -------------------------------------------------------- | ------------------------------------------------------------------------------------------- | | [**MCP Server**](/apis/guide/mcp-server) | Query your sales, payouts, and transactions from Claude, signed in with your HitPay account | | [**Claude Code Plugin**](/apis/guide/claude-code-plugin) | Build payment integrations with Claude Code using live API access and auto-triggered skills | | [**Agent Skills**](/apis/guide/ai-skills) | Generate HitPay integration code with Cursor, Copilot, Windsurf, or any AI assistant | | **CLI** (this page) | Drive the API from your terminal, scripts, and CI pipelines, including webhook testing | ## Resources View source, report issues, and contribute Query your business data from an AI assistant Live API access from inside Claude Code Skills for Cursor, Copilot, and Windsurf Full API documentation Handle payment notifications Test your integration ## Feedback Have suggestions or found an issue? [Open an issue](https://github.com/hit-pay/cli/issues) on GitHub. # Cross-Border Payments Source: https://docs.hitpayapp.com/apis/guide/cross-border-payments Choose the right API for your cross-border integration — Borderless QR for custom POS, or Payment Requests for adaptive online checkout. ## Overview HitPay exposes two API-level mechanisms for cross-border payments. Both allow merchants to charge in their home currency while customers pay in their local currency — but they serve different integration scenarios. **For custom POS / in-person flows** Extend your embedded QR integration to accept cross-border payments. The API returns `qr_amount`, `qr_currency`, and `fx_rate` so you can display the conversion to the customer before they scan. **For custom online checkout** Create payment requests in your home currency. Adaptive pricing automatically presents the converted local currency amount to the customer at checkout. *** ## Which API Should I Use? | | Borderless QR API | Payment Request API (Adaptive Pricing) | | --------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | | **Channel** | In-person / custom POS | Online checkout | | **Mechanic** | Merchant charges home currency; API converts and returns local-currency QR | Merchant charges home currency; checkout displays local-currency price to customer | | **Customer action** | Scans QR code using local payment app | Pays at checkout using local payment method | | **Response extras** | `qr_amount`, `qr_currency`, `fx_rate` | Adaptive pricing shown at checkout | | **Target integrator** | Developer building custom POS or kiosk | Developer building custom online checkout | | **Reference docs** | [Borderless QR](/apis/guide/embedded-qr-code-payments/borderless-qr) | [Adaptive Pricing](/payments/adaptive-pricing) | *** ## Borderless QR API This extends the [Embedded QR Code](/apis/guide/embedded-qr-code-payments/domestic-qr) integration. Once your base embedded QR setup is in place, you can accept cross-border payments with no additional onboarding. Use the `payment_methods[]` parameter to specify cross-border payment methods: ```bash theme={"system"} POST /v1/payment-requests { "amount": 100, "currency": "SGD", "payment_methods[]": "qrph" } ``` The API response includes the converted values: * `qr_amount` — amount in the customer's local currency * `qr_currency` — customer's currency code * `fx_rate` — exchange rate applied [Full Borderless QR API docs →](/apis/guide/embedded-qr-code-payments/borderless-qr) *** ## Payment Request API (Adaptive Pricing) Create a standard payment request in your home currency. When adaptive pricing is enabled, international customers automatically see the converted price in their local currency at checkout. Use the `payment_methods[]` parameter to enable cross-border payment methods: ```bash theme={"system"} POST /v1/payment-requests { "amount": 50, "currency": "SGD", "payment_methods[]": "paynow_online" } ``` [Full Online Payments API docs →](/apis/guide/online-payments) *** ## Cross-Border Payment Methods See the [Cross-Border Payments overview](/payments/cross-border-payments) for the full list of supported payment methods and their availability for online vs in-person flows. To enable cross-border methods on your account, go to **Settings > Payment Methods** in your HitPay dashboard. # Borderless QR via API Source: https://docs.hitpayapp.com/apis/guide/embedded-qr-code-payments/borderless-qr Extend your embedded QR integration to accept cross-border payments. Display real-time currency conversion to international customers via the API. This page extends the [Embedded QR Overview](/apis/guide/embedded-qr-code-payments/domestic-qr). If you haven't set up embedded QR payments yet, start there first. ## What is Borderless QR? Once your base integration is in place, Borderless QR lets you accept payments from international customers using their local payment methods. The API automatically converts the amount and returns the converted values : * `qr_amount` * `qr_currency` * `fx_rate` So you can display the conversion clearly in your UI before the customer scans. Your payouts are always in your merchant currency. HitPay handles the conversion. *** ## Live Demo Try the interactive demo to see Borderless QR in action — including real-time currency conversion display.