# 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, 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 > **[HitPay Payment Link](/payment-links/payment-links)** > > Shareable checkout links for one-off charges, invoices, or donations — no code required. > **[HitPay POS](/pos/overview)** > > Point-of-sale app paired with card terminals for in-person card and QR payments. > **[HitPay Invoice](/invoicing/invoice-basics)** > > Send branded invoices with embedded payment options and auto-reminders. > **[HitPay Commerce](/store/setup-online-store)** > > Online store builder with a hosted storefront, themes, and checkout built in. > **[HitPay Integrations](/plugins/overview)** > > 1st-party plugins for Shopify, WooCommerce, Wix, Magento, Xero, Zapier, and more. > **[HitPay Borderless QR](/pos/borderless-qr)** > > 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. > **[Online Payments](/apis/guide/online-payments)** > > Redirect or embedded checkout with 40+ payment methods. > **[Embedded QR Codes](/apis/guide/embedded-qr-code-payments/domestic-qr)** > > Native rendering for PayNow, DuitNow, PromptPay, and more. > **[Recurring Billing](/apis/guide/recurring-billing)** > > Subscription plans, saved payment methods, and off-session charges. > **[In-Person Payments](/apis/guide/in-person-payments/overview)** > > Drive card readers and QR terminals from your own app. > **[Webhooks](/apis/guide/events)** > > HMAC-SHA256-signed events for payments, orders, invoices, and payouts. > **[Sandbox](/apis/guide/sandbox)** > > 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 **March 25, 2026** ## 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. > **[Cards Migration to Stripe Standard Connect](/announcements/standard-connect-migration)** > > 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. > [!WARNING] > > **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? **1. Go to Payment Methods** 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)](https://mintcdn.com/hitpay/yRLUTG8G8P9k656w/images/announcements/cards-migration-payment-methods.png?fit=max\&auto=format\&n=yRLUTG8G8P9k656w\&q=85\&s=aea86e6b6b935e6d163d2dfe29b691d8) **2. Connect your Stripe 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](https://mintcdn.com/hitpay/yRLUTG8G8P9k656w/images/announcements/cards-migration-stripe-connect-onboarding.png?fit=max\&auto=format\&n=yRLUTG8G8P9k656w\&q=85\&s=af1814b0472e7be9b6b76dd1597da217) **3. Complete the onboarding form** 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. **4. Confirm your account is active** 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](https://mintcdn.com/hitpay/yRLUTG8G8P9k656w/images/announcements/cards-migration-stripe-dashboard-confirmation.png?fit=max\&auto=format\&n=yRLUTG8G8P9k656w\&q=85\&s=becfe35d24b8d6f8806b13809ac2f69f) ![Payment Methods page showing Cards (Stripe Standard Account) as Active and legacy Cards as Inactive](https://mintcdn.com/hitpay/yRLUTG8G8P9k656w/images/announcements/cards-migration-active-confirmation.png?fit=max\&auto=format\&n=yRLUTG8G8P9k656w\&q=85\&s=b7982fa6aea8edd60b7556b9bd8fda6a) 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 > **Which countries are supported?** > > 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. > [!TIP] > > Want the one-step setup for your assistant? See [Build with AI](/apis/guide/build-with-ai) for Claude Code, Cursor, ChatGPT, and Windsurf. > **[HitPay MCP Server](/apis/guide/mcp-server)** > > 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. > **[WebMCP](/apis/guide/webmcp)** > > Build browser agents that use structured tools on HitPay's online store and checkout page to read the checkout, fill payer details, and complete payments. > **[Claude Code Plugin](/apis/guide/claude-code-plugin)** > > MCP server with 28 live API tools, 5 auto-triggered skills, and 4 slash commands for building integrations. Claude Code only. > **[AI Agent Skills](/apis/guide/ai-skills)** > > Code-generation skills for Claude Code, Cursor, GitHub Copilot, and Windsurf. Install once, describe what you want. > **[HitPay CLI](/apis/guide/cli)** > > Drive the API from your terminal, scripts, and CI pipelines. Test webhooks locally with `hitpay listen` and `hitpay trigger`. > **[Meta Muse](/apis/guide/meta-muse)** > > HitPay Meta Muse connector: connect via Muse Connectors (official HitPay connector, recommended) or Custom Connector backup for payment links, PayNow, invoices, and charges. > **[HitPay for Vercel](/apis/guide/vercel)** > > Install HitPay from the Vercel Marketplace so apps you build with v0 or any AI coding tool can take payments, with no API keys to copy. ## 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. ### Also connect HitPay inside Meta Muse Operators using **Meta Muse** should connect **HitPay** from Muse **Connectors** (ask Muse to connect HitPay, or **Settings → Connectors → HitPay**). If the directory listing is not available yet, the [Meta Muse guide](/apis/guide/meta-muse) documents a **Custom Connector** backup (paste prompt + API key). That is separate from the four developer tools above and from the [hosted MCP](/apis/guide/mcp-server) OAuth path. ## 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** > [!TIP] > > 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](https://mintcdn.com/hitpay/WKNMUJNjReAzRFeP/images/ai-skills-install.png?fit=max\&auto=format\&n=WKNMUJNjReAzRFeP\&q=85\&s=bf3ea2c798f13264bd32d4a8720fe913) 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 **1. Install the skill** Run `npx skills add hit-pay/agent-skills` in your project **2. Describe your task** Tell your AI assistant what you want to build **3. Review generated code** The AI creates implementation following HitPay best practices **4. Customize as needed** 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 > **[GitHub Repository](https://github.com/hit-pay/agent-skills)** > > View source and contribute > **[Create Payment Request](/apis/payment-request/create-request)** > > API Reference > **[Webhook Events](/apis/guide/events)** > > Handle payment notifications > **[Sandbox Guide](/apis/guide/sandbox)** > > Test your integration > **[Claude Code Plugin](/apis/guide/claude-code-plugin)** > > Live API access from inside Claude Code > **[HitPay MCP Server](/apis/guide/mcp-server)** > > 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 > **Create APM Tokenisation session** > > Generate a secure session and checkout link for the customer to connect their wallet. > **Customer links wallet** > > Redirect the customer to the HitPay-hosted page where they authorise wallet linking. > **Charge the linked wallet** > > 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 > [!NOTE] > > 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](https://mintcdn.com/hitpay/UhpX0kb8OfeSpvyQ/images/recurring-ui-apms.png?fit=max\&auto=format\&n=UhpX0kb8OfeSpvyQ\&q=85\&s=f7e4e0d9f1d6725d58b2e882b5fd8b9d) 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 Mandatory fields are `amount` and `currency`. Remember to include header ` Content-Type: application/x-www-form-urlencoded ` | 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 > **Is there an initial charge during wallet linking?** > > No, customers will not be charged during the linking process. The tokenisation flow is used purely to authorise future payments securely. > **What if the customer’s wallet has insufficient balance?** > > 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. > **Can I modify the amount I will charge my customer later on?** > > Yes, once your customer has attached the wallet, you can charge any amount using the Charge Linked Wallet API > **Product Checklist** > > 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 # Build with AI Source: https://docs.hitpayapp.com/apis/guide/build-with-ai Set up HitPay in Claude Code, Cursor, ChatGPT, or Windsurf in one step: Agent Skills, the Claude Code plugin, the HitPay CLI, the hosted MCP server at mcp.hit-pay.com, HitPay for Vercel, experimental WebMCP tools for browser agents, and LLM-ready docs. HitPay ships tools that let AI assistants build payment integrations for you and work with your HitPay account. This page brings them together, with a one-step setup for each assistant. | Tool | What it does | Authentication | Works with | | - | - | - | - | | [Agent Skills](/apis/guide/ai-skills) | Teaches your coding assistant how to integrate HitPay: payment requests, embedded QR, webhooks, refunds | API key (in your app's env) | Claude Code, Cursor, GitHub Copilot, Windsurf | | [Claude Code plugin](/apis/guide/claude-code-plugin) | 28 live API tools, 5 auto-triggered skills, and 4 slash commands for building integrations | API key | Claude Code | | [HitPay CLI](/apis/guide/cli) | Create payments, test webhooks locally with `hitpay listen` and `hitpay trigger`, and render QR codes in the terminal | API key | Any terminal, scripts, CI, or agent with shell access | | [MCP Server](/apis/guide/mcp-server) | Query sales, transactions, payouts, and balances, and create payment links and invoices, at `https://mcp.hit-pay.com/` | HitPay login (OAuth) | Claude, Claude Code, Codex, Cursor | | [HitPay for Vercel](/apis/guide/vercel) | Connects your HitPay account to Vercel projects from the Vercel Marketplace, so apps built with v0 or any AI coding tool can take payments without copying API keys | HitPay login (OAuth) | Vercel, v0, and any app deployed on Vercel | | [WebMCP](/apis/guide/webmcp) (experimental) | Structured tools on HitPay's online store and checkout page that a browser agent can call on behalf of the payer | None: acts as the payer who has the page open | Browser agents in browsers that support WebMCP | | [LLM-ready docs](#llm-ready-docs) | `llms.txt`, `llms-full.txt`, and a Markdown version of every page | None | Any assistant that can read a URL | > [!NOTE] > > The **developer tools** (Agent Skills, the plugin, and the CLI) use your API key and default to the [sandbox](/apis/guide/sandbox). The **MCP Server** connects an assistant to your live business data with your HitPay login. It can create payment links, invoices, products, and plans, but it can't issue refunds, move money, or change settings. ## One-step setup **Claude Code** Install the HitPay plugin from inside Claude Code: ``` /plugin marketplace add hit-pay/claude-code-plugin /plugin install hitpay@hitpay-plugins ``` Then set `HITPAY_API_KEY`, `HITPAY_SALT`, and `HITPAY_ENV=sandbox` as described in the [plugin guide](/apis/guide/claude-code-plugin), and ask: "Add PayNow checkout to my Next.js app." To connect Claude Code to your live business data as well, add the MCP Server: ```bash theme={"system"} claude mcp add --transport http hitpay https://mcp.hit-pay.com/ ``` Run `/mcp`, select **hitpay**, and choose **Authenticate**. **Cursor** Install Agent Skills in your project: ```bash theme={"system"} npx skills add hit-pay/agent-skills ``` Then ask Cursor's agent: "Add HitPay payments with webhook verification to this app." To query your live business data from Cursor, add the MCP Server to `~/.cursor/mcp.json` (or `.cursor/mcp.json` in a project) and complete the sign-in when prompted: ```json theme={"system"} { "mcpServers": { "hitpay": { "url": "https://mcp.hit-pay.com/" } } } ``` **ChatGPT** Start a chat with HitPay's docs index: ``` Read https://docs.hitpayapp.com/llms.txt and use it to help me accept PayNow in my Node.js app. ``` ChatGPT can then open the Markdown version of any page it needs. You can also use **Open in ChatGPT** from the page menu at the top of any docs page. The hosted MCP Server doesn't support ChatGPT yet: web-based clients other than claude.ai aren't currently allowlisted. If you use OpenAI's **Codex**, connect it with `codex mcp add hitpay --url https://mcp.hit-pay.com/`. **Windsurf** Install Agent Skills in your project: ```bash theme={"system"} npx skills add hit-pay/agent-skills ``` Then ask Cascade: "Add a HitPay FPX checkout to my Laravel app with webhook signature verification." The MCP Server setup guide covers Claude, Claude Code, Codex, and Cursor. Other clients that support streamable HTTP with OAuth may also connect; see [Other clients](/apis/guide/mcp-server#other-clients). ## Test webhooks from your terminal Whichever assistant you use, the [HitPay CLI](/apis/guide/cli) helps you test the code it writes. It needs Node.js 18 or later. ```bash theme={"system"} npm install -g @hit-pay/cli hitpay login hitpay listen --forward-to http://localhost:3000/api/webhooks/hitpay ``` `hitpay listen` tunnels HitPay webhooks to your local server, and `hitpay trigger` sends test events to it. ## HitPay for Vercel If you deploy on Vercel, [HitPay for Vercel](/apis/guide/vercel) connects your HitPay account to your projects with a HitPay sign-in, so there are no API keys to copy. Install the [HitPay integration](https://vercel.com/integrations/hitpay) from the Vercel Marketplace and choose your projects. Each project gets a `HITPAY_ACCESS_TOKEN` environment variable that can create and read payments. Redeploy to pick it up. If you build with v0 or another AI coding tool, install the integration on the project the app deploys to rather than pasting a token into an environment variable form. You can also point your agent at [this llms.txt file](https://vercel-connect.hitpay.dev/llms.txt), which tells AI coding tools how to get a HitPay token instead of asking you for credentials. The integration connects live HitPay accounts, so payments made while testing are real. To use scopes the integration doesn't request, or to avoid storing a token in your project, use [Vercel Connect](/apis/guide/vercel#use-vercel-connect). ## WebMCP for browser agents [WebMCP](/apis/guide/webmcp) is for agents that act on behalf of a **payer** in the browser, not for building integrations or reading your business data. [WebMCP](https://developer.chrome.com/docs/ai/webmcp) is a proposed web standard that lets a page register structured tools for an AI agent running in the user's browser. HitPay registers these tools on two pages: * **HitPay online store:** search products, read product details, manage the cart, and fill the store's checkout form (`search_products`, `get_product`, `add_to_cart`, `set_customer_details`, and others). No online store tool submits payment. * **HitPay checkout page:** read the checkout, list payment methods, fill the payer's details, select a method, get the QR code while one is on screen, and pay by card (`get_checkout_summary`, `list_payment_methods`, `fill_checkout_form`, `select_payment_method`, `get_payment_qr`, `submit_payment`). Tools change as the page changes, so agents should discover them at runtime instead of hard-coding names or schemas. `submit_payment` is marked with the `consequentialHint` annotation: get the user's confirmation before calling it. HitPay also asks the payer to confirm the merchant, amount, and currency on the page. Values that come from the merchant carry `untrustedContentHint` and should be treated as data, not instructions. > [!WARNING] > > WebMCP is an experimental browser capability based on a proposed web standard. Browser support, tool availability, and tool schemas can change, and HitPay can turn the tools off. Agents should fall back to standard browser automation when no tools are registered. ## LLM-ready docs Every page in these docs is available in formats that AI tools can read directly: * [`llms.txt`](https://docs.hitpayapp.com/llms.txt): an index of every page with a one-line summary, grouped by section * [`llms-full.txt`](https://docs.hitpayapp.com/llms-full.txt): the full text of every page in one file * **Markdown pages**: add `.md` to any page URL, for example [`/apis/guide/sandbox.md`](https://docs.hitpayapp.com/apis/guide/sandbox.md) * [OpenAPI spec](https://docs.hitpayapp.com/openapi.json): the full API definition ## Prompts to try | Goal | Prompt | | - | - | | Embedded PayNow QR | "Add a PayNow QR checkout to my Next.js App Router app using HitPay, with a webhook route that verifies Hitpay-Signature." | | FPX in Laravel | "Create a HitPay payment request for FPX in MYR from a Laravel controller and redirect to checkout." | | Webhook handler | "Write a HitPay webhook handler that verifies the Hitpay-Signature header over the raw request body." | | Vercel checkout | "Add a HitPay checkout route to my Next.js app on Vercel that uses HITPAY\_ACCESS\_TOKEN from the HitPay integration." | | Business data (MCP) | "What were my total sales last month, and which payment methods did customers use most?" | ## FAQ > **Which tool should I start with?** > > If you're building an integration in Claude Code, start with the plugin. In Cursor, Copilot, or Windsurf, install Agent Skills. To ask questions about your own sales and payouts, connect the MCP Server. If your app runs on Vercel, install HitPay for Vercel. See the comparison in the [AI tools overview](/apis/guide/ai-developer-tools). > **Do the developer tools work with the sandbox?** > > Yes. The plugin and the CLI default to the sandbox, and Agent Skills generate code that reads the API URL from your environment. The MCP Server works with live accounts only. > **Can an AI assistant issue refunds or payouts through HitPay?** > > Not through the MCP Server or the plugin: both exclude destructive operations by design. Code your assistant writes runs with whatever API key you give it, so review it before using a production key. > **Where do I find my API key and webhook salt?** > > The API key is under **Settings → API Keys** in the dashboard. Each webhook endpoint you create under **Developers → Webhook Endpoints** has its own salt, used to verify `Hitpay-Signature`. # 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 | > [!NOTE] > > The plugin only works in Claude Code. If you use **Cursor, GitHub Copilot, or Windsurf**, use [Agent Skills](/apis/guide/ai-skills) instead. > [!NOTE] > > 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 > **MCP Server** > > 28 live API tools: create payment requests, list charges, manage customers, generate QR codes, and more. All operations are read or safe-create. > **5 Auto-Triggered Skills** > > Claude activates the relevant skill based on your prompt: payment integration, webhook handling, method lookup, embedded UI, or QR checkout. > **4 Slash Commands** > > Scaffolding commands for common workflows: `/hitpay:init`, `/hitpay:methods`, `/hitpay:webhook-test`, `/hitpay:qr-checkout`. ## Installation **1. Install the plugin** 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 ``` **2. Set environment variables** 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**. **3. Start building** 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. > [!WARNING] > > 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 | > [!NOTE] > > 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` | ## 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 | 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 **Add Payments** **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 **Webhook Verification** **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 **QR Checkout** **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 **Method Lookup** **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 > **What is the HitPay Claude Code Plugin?** > > 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. > **How is the Claude Code Plugin different from HitPay Agent Skills?** > > 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. > **Is it safe to use with production API keys?** > > 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. > **Does the plugin support sandbox testing?** > > 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. > **What payment methods are supported?** > > The plugin supports 50+ payment methods across Singapore, Malaysia, Philippines, Thailand, Indonesia, Vietnam, India, and Australia. This includes PayNow, FPX, GrabPay, GCash, PromptPay, UPI, and 9 cross-border QR methods with automatic FX conversion. > **Can I use this with Cursor or GitHub Copilot?** > > 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. > **How do I switch from sandbox to production?** > > 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**. > **What frameworks does the plugin support?** > > 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 > **[GitHub Repository](https://github.com/hit-pay/claude-code-plugin)** > > View source, report issues, and contribute > **[API Reference](/apis/payment-request/create-request)** > > Full API documentation > **[Webhook Events](/apis/guide/events)** > > Handle payment notifications > **[Sandbox Guide](/apis/guide/sandbox)** > > Test your integration > **[Agent Skills](/apis/guide/ai-skills)** > > Alternative for Cursor, Copilot, and Windsurf > **[Payment Methods](/apis/guide/payment-methods-reference)** > > 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 > **Account & Payments** > > Manage payment requests, charges, refunds, customers, invoices, subscriptions, beneficiaries, and transfers with a consistent `hitpay ` syntax. > **Webhook Testing** > > `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. > **QR Codes in Terminal** > > `hitpay qr create` renders scannable QR codes directly in your terminal for PayNow, PromptPay, GCash, DuitNow, and 50+ other methods across Southeast Asia. ## Installation **1. Install the CLI** 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**. **2. Log in** 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**. **3. Verify** 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 ``` > [!WARNING] > > 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 | > [!WARNING] > > 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 ``` > [!NOTE] > > `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 **Create a payment request** ```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. **List & filter charges** ```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. **Test a webhook handler** ```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. **Generate a QR code** ```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 > **[GitHub Repository](https://github.com/hit-pay/cli)** > > View source, report issues, and contribute > **[HitPay MCP Server](/apis/guide/mcp-server)** > > Query your business data from an AI assistant > **[Claude Code Plugin](/apis/guide/claude-code-plugin)** > > Live API access from inside Claude Code > **[Agent Skills](/apis/guide/ai-skills)** > > Skills for Cursor, Copilot, and Windsurf > **[API Reference](/apis/payment-request/create-request)** > > Full API documentation > **[Webhook Events](/apis/guide/events)** > > Handle payment notifications > **[Sandbox Guide](/apis/guide/sandbox)** > > 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. > **[Borderless QR API](/apis/guide/embedded-qr-code-payments/borderless-qr)** > > **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. > **[Payment Request API](/apis/guide/online-payments)** > > **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. [Borderless QR Live Demo](https://v0-hitpay-borderless-qr-online-demo.vercel.app/) *** ## How Borderless QR Differs From Standard Embedded QR Standard embedded QR payments work within a single currency — the merchant and customer share the same currency, so no conversion is needed. Borderless QR automatically converts the amount and generates payment codes in the customer's local currency, enabling seamless cross-border transactions. | Feature | Overview (same-currency) | Borderless QR (cross-border) | | - | - | - | | **Currency** | Merchant = customer | Merchant currency differs from payment method | | **Exchange Rate** | N/A | Mid-market rate at transaction time | | **Response Fields** | `qr_code`, `qr_code_expiry` | Adds `qr_amount`, `qr_currency`, `fx_rate` | | **Use Case** | Domestic payments | International tourists and cross-border customers | ## Supported Payment Methods The following payment methods support cross-border QR payments: | Payment Method | Code | Native Currency | Country | | - | - | - | - | | [PayNow](/payment-methods/paynow) | `paynow_online` | SGD | Singapore | | [QRPH](/payment-methods/qrph) | `qrph_netbank` | PHP | Philippines | | [GCash](/payment-methods/gcash) | `gcash_qr` | PHP | Philippines | | [PromptPay](/payment-methods/promptpay_thailand) | `opn_prompt_pay` | THB | Thailand | | [TrueMoney](/payment-methods/truemoney) | `opn_true_money_qr` | THB | Thailand | | QRIS | `doku_qris` | IDR | Indonesia | | [Touch 'n Go](/payment-methods/touchngo) | `touch_n_go` | MYR | Malaysia | | [DuitNow](/payment-methods/duitnow) | `duitnow` | MYR | Malaysia | | [ShopeePay](/payment-methods/shopeepay) | `shopee_pay` | Various | Multiple | | [VietQR](/payment-methods/vietqrzalopay) | `vietqr_zalopay` | VND | Vietnam | | [ZaloPay](/payment-methods/vietqrzalopay) | `zalopay` | VND | Vietnam | > [!NOTE] > > Only payment methods from countries different from your merchant country will trigger cross-border conversion. For example, a Singapore merchant using `paynow_online` (SGD) will get standard QR behavior, but using `gcash_qr` (PHP) will trigger Borderless QR with currency conversion. *** ## How It Works **1. Select a cross-border payment method** Choose a payment method from a different country (e.g., a Singapore merchant selecting `gcash_qr` for Philippine customers) **2. System detects currency mismatch** HitPay detects that your merchant currency (SGD) differs from the payment method's native currency (PHP) **3. Automatic currency conversion** The amount is automatically converted using the mid-market exchange rate **4. QR code generated in customer's currency** The QR code displays the amount in the customer's local currency (PHP) *** ## API Request Use the same endpoint as Domestic QR: [**POST /v1/payment-requests**](/apis/payment-request/create-request) The only difference is the payment method you specify. When you use a cross-border payment method, the system automatically enables Borderless QR behavior. ### Request Parameters | Parameter | Type | Description | | - | - | - | | amount | string | Required. The amount in **your merchant currency**. | | currency | string | Required. Your merchant currency (e.g., "sgd"). | | payment\_methods\[] | array | Required. Specify exactly **one** cross-border payment method (e.g., `["gcash_qr"]`). Multiple methods are not supported for QR generation. | | generate\_qr | boolean | Required. Must be `true` to generate the QR code. | | name | string | Optional. Customer name. | | email | string | Optional. Customer email. | | phone | string | Optional. Customer phone number. | | purpose | string | Optional. Payment purpose. | | reference\_number | string | Optional. Your reference number. | ### Example Request A Singapore merchant (SGD) accepting payment from a Philippine customer via GCash (PHP): ```json theme={"system"} { "amount": "10.00", "currency": "sgd", "payment_methods": ["gcash_qr"], "generate_qr": true, "purpose": "Order #12345" } ``` *** ## API Response The response includes additional fields in `qr_code_data` for cross-border payments: > **Example Response for Borderless QR Payment Request** > > ```json theme={"system"} > { > "id": "9c262fb5-f3cd-4187-8c3e-fbe20730b9c6", > "name": null, > "email": null, > "phone": null, > "amount": "10.00", > "currency": "sgd", > "is_currency_editable": false, > "status": "pending", > "purpose": "Order #12345", > "reference_number": null, > "payment_methods": ["gcash_qr"], > "url": "https://securecheckout.hit-pay.com/payment-request/@merchant/9c262fb5-f3cd-4187-8c3e-fbe20730b9c6/checkout", > "redirect_url": null, > "webhook": null, > "send_sms": false, > "send_email": false, > "sms_status": "pending", > "email_status": "pending", > "allow_repeated_payments": false, > "expiry_date": null, > "created_at": "2024-05-28T14:37:11", > "updated_at": "2024-05-28T14:37:11", > "qr_code_data": { > "qr_code": "00020101021226...", > "qr_code_expiry": null, > "qr_image_mime": "image/png", > "qr_amount": "455.70", > "qr_currency": "php", > "fx_rate": "45.57" > } > } > ``` ### Borderless QR Response Fields The `qr_code_data` object includes these additional fields for cross-border payments: | Field | Type | Description | | - | - | - | | `qr_amount` | string | The converted amount in the customer's local currency | | `qr_currency` | string | The customer's local currency code (e.g., "php") | | `fx_rate` | string | The exchange rate used for conversion | > [!NOTE] > > **Display both amounts to your customer.** You can show "SGD 10.00 = PHP 455.70" to help customers understand the conversion before scanning. *** ## Displaying Currency Conversion When presenting the QR code to your customer, display the currency conversion details to build trust and ensure transparency. ### Response Fields to Use | Field | Example | Description | | - | - | - | | `amount` + `currency` | "10.00" + "sgd" | Your original charge amount (merchant currency) | | `qr_code_data.qr_amount` | "455.70" | Converted amount the customer will pay | | `qr_code_data.qr_currency` | "php" | Customer's local currency | | `qr_code_data.fx_rate` | "45.57" | Exchange rate used (1 merchant currency = X local currency) | ### Recommended Display Format Show customers both amounts and the exchange rate before they scan: ``` Total: SGD 10.00 Pay: PHP 455.70 Rate: 1 SGD = 45.57 PHP ``` ### Code Examples ```php PHP theme={"system"} // After receiving the API response $response = json_decode($apiResponse, true); $merchantAmount = $response['amount']; $merchantCurrency = strtoupper($response['currency']); $customerAmount = $response['qr_code_data']['qr_amount']; $customerCurrency = strtoupper($response['qr_code_data']['qr_currency']); $fxRate = $response['qr_code_data']['fx_rate']; // Format display string $displayText = sprintf( "Total: %s %s\nPay: %s %s\nRate: 1 %s = %s %s", $merchantCurrency, $merchantAmount, $customerCurrency, $customerAmount, $merchantCurrency, $fxRate, $customerCurrency ); echo $displayText; // Output: // Total: SGD 10.00 // Pay: PHP 455.70 // Rate: 1 SGD = 45.57 PHP ``` ```javascript JavaScript theme={"system"} // After receiving the API response const response = await apiResponse.json(); const merchantAmount = response.amount; const merchantCurrency = response.currency.toUpperCase(); const customerAmount = response.qr_code_data.qr_amount; const customerCurrency = response.qr_code_data.qr_currency.toUpperCase(); const fxRate = response.qr_code_data.fx_rate; // Format display string const displayText = `Total: ${merchantCurrency} ${merchantAmount} Pay: ${customerCurrency} ${customerAmount} Rate: 1 ${merchantCurrency} = ${fxRate} ${customerCurrency}`; console.log(displayText); // Output: // Total: SGD 10.00 // Pay: PHP 455.70 // Rate: 1 SGD = 45.57 PHP ``` > [!NOTE] > > **Check for borderless fields first.** The `qr_amount`, `qr_currency`, and `fx_rate` fields only appear for cross-border payments. For same-currency payments, display only the original amount. *** ## Webhook Handling Webhook handling is identical to the [Overview](/apis/guide/embedded-qr-code-payments/domestic-qr#step-4-handle-webhooks-server-communication). The payment amount in the webhook payload will be in your **merchant currency** (the original amount you requested). *** ## Refunds ### Refund support by payment method ### What happens when a refund is processed *** ## FAQs > **Why am I getting 'The selected payment method is unavailable for your account or the currency is invalid'?** > > This error typically occurs when `generate_qr` is not set to `true` in your request. For Borderless QR payments, you must include `"generate_qr": true` in your API request body. > > **Correct request:** > > ```json theme={"system"} > { > "amount": "10.00", > "currency": "sgd", > "payment_methods": ["gcash_qr"], > "generate_qr": true > } > ``` > > Other possible causes: > > * **Multiple payment methods specified** - When using `generate_qr: true`, you must specify exactly one payment method in the array > * The payment method is not enabled in your HitPay dashboard > * The payment method doesn't support QR code generation > * You're using a sandbox API key in production or vice versa > **How is the exchange rate determined?** > > The exchange rate is based on the **mid-market exchange rate** at the time the payment request is created. The mid-market rate is the average of buy and sell rates between two currencies. > **What fees apply to Borderless QR payments?** > > Merchants are charged a **1.5% payment processing fee** for cross-border QR payments, plus applicable FX fees based on your country of registration and settlement currency. Customers are not charged any additional fees. > **How do refunds work?** > > Refunds are issued in the charge currency (e.g., SGD) and deducted from your home currency wallet. If your home currency matches the charge currency (e.g., a Singapore merchant charging SGD), there is no FX conversion. If they differ, the live rate at refund time is used — not the rate from the original charge. Not all borderless QR payment methods support refunds — see the [Refund support table](#refund-support-by-payment-method) for details. > **What if my currency matches the payment method?** > > If your merchant currency matches the payment method's native currency (e.g., SGD merchant using PayNow), the response will follow standard QR behavior without the `qr_amount`, `qr_currency`, and `fx_rate` fields. > **Do I need to calculate currency conversion myself?** > > No. Simply specify the amount in your merchant currency. HitPay automatically handles the conversion and returns the converted amount in the response. > **What is the payout period for cross-border payments?** > > Cross-border payments are credited to your HitPay Balance on a **T+1 calendar day** basis. > **Production Checklist** > > Before going live: > > * Change the base URL to `https://api.hit-pay.com/v1/` > * Enable cross-border payment methods in your production dashboard > * Update API keys and salt values from production > * Register webhook URLs in production > * Test the full payment flow end-to-end # Overview Source: https://docs.hitpayapp.com/apis/guide/embedded-qr-code-payments/domestic-qr Integrate embedded payments into your platform — generate QR codes or direct links to collect payments without redirecting the users away. ## Introduction Embedded Payments allow seamless integration of payments directly into your platform without redirecting the users away. Two modes are available — pick based on the payment method and your preferred UX: | Mode | Parameter | Customer experience | | - | - | - | | **QR Code** | `generate_qr: true` | Customer scans a QR code rendered in your UI with their banking or wallet app | | **Direct Link** | `generate_direct_link: true` | Customer is redirected to the payment provider's page, then back to your site | > [!NOTE] > > **Serving international customers?** Once you've completed this setup, see [Borderless QR](/apis/guide/embedded-qr-code-payments/borderless-qr) to display real-time currency conversion for cross-border payments. ## Live Demo Try the embedded payments live demo to see QR code and direct link flows in action before you integrate. [Embedded Payments](https://embedded-payments-demo.vercel.app/) ## Core Concept The integration flow is the same for both modes — only the `generate_*` parameter and how you present the payment to the customer differ. **1. Create a Payment Request** Call `POST /v1/payment-requests` with either `generate_qr: true` or `generate_direct_link: true`. **2. Present to Customer** For QR: render the returned QR code in your UI. For direct link: redirect the customer to the provider URL. **3. Customer Completes Payment** The customer scans the QR code or pays on the provider's page. **4. Handle Webhooks** `payment_request.completed` fires when payment succeeds. Validate and fulfil the order. ## Supported Methods Some methods support both modes — choose whichever fits your UI. | Payment Method | Code | QR | Direct Link | | - | - | - | - | | PayNow | `paynow_online` | ✓ | | | ShopeePay | `shopee_pay` | ✓ | | | QRIS | `doku_qris` (Indonesia) | ✓ | | | WeChatPay | `wechat_pay` | ✓ | | | PromptPay | `opn_prompt_pay` | ✓ | | | TrueMoney | `opn_true_money_qr` | ✓ | | | GrabPay | `grabpay_direct` | ✓ | ✓ | | GrabPay PayLater | `grabpay_paylater` | ✓ | ✓ | | UPI | `upi_qr` | ✓ | | | GCash (QR) | `gcash_qr` | ✓ | | | GCash (Direct Link) | `gcash` | | ✓ | | QRPH | `qrph_netbank` | ✓ | | | Touch 'n Go | `touch_n_go` | ✓ | ✓ | | DuitNow | `duitnow` | ✓ | | | Atome | `atome` | ✓ | | | VietQR | `vietqr_zalopay` | ✓ | | | ZaloPay | `zalopay` | ✓ | ✓ | | ShopBack (QR) | `shopback_qr` (SG only) | ✓ | | | ShopBack (Direct Link) | `shopback` (SG only) | | ✓ | ## Authentication Before integration, it's essential to understand how Hitpay APIs are authenticated. Hitpay utilizes API keys to grant access to the API. You can locate this key in your dashboard under "API keys." Hitpay requires the API key to be included in all API requests to the server. This key should be placed in a header that follows the format shown below: `X-BUSINESS-API-KEY: meowmeowmeow` ```php PHP theme={"system"} $request->setHeaders(array( 'X-BUSINESS-API-KEY' => 'meowmeowmeow', 'Content-Type' => 'application/x-www-form-urlencoded', 'X-Requested-With' => 'XMLHttpRequest' )); ``` ```shell Shell theme={"system"} # With shell, you can just pass the correct header with each request curl "api_endpoint_here" -H "X-BUSINESS-API-KEY: meowmeowmeow" -H "X-Requested-With: XMLHttpRequest" ``` > [!WARNING] > > API keys should be kept confidential and only stored on your servers. Do not store it on your mobile or web client ## Step 1: Create a Payment Request **POST /v1/payment-requests** ### Request Parameters | Parameter | Type | Description | | - | - | - | | amount | string | Required. The amount to be paid. | | currency | string | Required. The currency (e.g., `"sgd"`). | | payment\_methods\[] | array | Required. The payment method. Only one method must be specified. | | generate\_qr | boolean | Set to `true` to generate QR code data. | | generate\_direct\_link | boolean | Set to `true` to generate a provider redirect URL. | | redirect\_url | string | Required when using `generate_direct_link`. URL to redirect the customer after payment. | | name | string | Optional. Customer name. | | email | string | Optional. Customer email. | | phone | string | Optional. Customer phone number. | | purpose | string | Optional. Payment purpose. | | reference\_number | string | Optional. Your internal reference number. | > [!NOTE] > > Pass either `generate_qr: true` or `generate_direct_link: true` — not both in the same request and only one payment method. **QR Code** #### Example Request ```json theme={"system"} { "amount": "123.00", "currency": "sgd", "payment_methods": ["paynow_online"], "generate_qr": true } ``` > **Example Response** **Direct Link** #### Example Request ```json theme={"system"} { "amount": "50.00", "currency": "sgd", "payment_methods": ["grabpay_direct"], "generate_direct_link": true, "redirect_url": "https://merchant.com/payment/complete" } ``` #### `direct_link` Response Object | Field | Type | Description | | - | - | - | | `direct_link_url` | string | Web redirect URL. Always present. Redirect the customer here. | | `direct_link_app_url` | string \| null | App deep link for mobile app-to-app flow (e.g. `grab://...`). `null` if the provider doesn't support it. | | `expiry_time` | string \| null | ISO 8601 datetime when the link expires. | > **Example Response** ## Step 2: Present to Customer **QR Code** Use the `qr_code_data.qr_code` value from the response to render a scannable QR code in your UI. ![QR code payment example](https://mintcdn.com/hitpay/f7_-l_Cy08o9CSGK/images/qr-payment.png?fit=max\&auto=format\&n=f7_-l_Cy08o9CSGK\&q=85\&s=a145bb707d7f2217332ba1bf81345165) > [!WARNING] > > **Note for Sandbox Testing:** > > In sandbox, the `qr_code` value may be a URL (e.g. `https://securecheckout.sandbox.hit-pay.com/...`) instead of a raw QR string. This is intended for testing — visit the URL directly or scan it with a standard QR reader. > > In production, `qr_code` is a raw payload string (e.g. a PayNow EMV string) that you should convert into a scannable QR code using a QR code library. **Direct Link** Redirect the customer to `direct_link.direct_link_url`. On mobile, use `direct_link_app_url` to open the provider's native app directly if available. ![Direct link payment example](https://mintcdn.com/hitpay/f7_-l_Cy08o9CSGK/images/direct_link_payment.png?fit=max\&auto=format\&n=f7_-l_Cy08o9CSGK\&q=85\&s=b25dc6020ebecbafe42156dae4c690c3) ```javascript Browser theme={"system"} window.location.href = response.direct_link.direct_link_url; ``` ```javascript Mobile (prefer app) theme={"system"} const url = response.direct_link.direct_link_app_url ?? response.direct_link.direct_link_url; window.location.href = url; ``` ## Step 3: Customer Completes Payment The customer scans the QR code with their banking app, or completes payment on the provider's page. For direct link payments, the provider redirects the customer back to your `redirect_url` with `reference` (payment request ID) and `status` query parameters: ``` https://merchant.com/payment/complete?reference=9c262fb5-f3cd-4187-8c3e-fbe20730b9c6&status=completed ``` > [!WARNING] > > Do not mark orders as paid based on the redirect alone — the URL can be triggered by anyone. Always use the `payment_request.completed` webhook to securely confirm payment. ## Step 4: Handle Webhooks and Server Communication After the payment is processed, handle webhooks to receive payment notifications and update the payment status in your system. ### What is a Webhook? A webhook is a POST request sent from HitPay's server to your server about the payment confirmation. You must mark your order as paid ONLY after the webhook is received and validated. ### Register Your Webhook To receive payment notifications, register a webhook URL from your HitPay Dashboard: 1. Navigate to **Developers > Webhook Endpoints** in your dashboard 2. Click on **New Webhook** 3. Enter a name and your webhook URL 4. Select the `payment_request.completed` event 5. Save your webhook configuration ![Webhook Registration](https://mintcdn.com/hitpay/zBfEahTCz9U1NPmL/images/webhook-events.png?fit=max\&auto=format\&n=zBfEahTCz9U1NPmL\&q=85\&s=ff63dad346c4a25766b3455aa35dbc28) ### Webhook Payload When a payment is completed, HitPay sends a JSON payload to your registered webhook URL with the following headers: | HTTP Header | Description | | - | - | | Hitpay-Signature | HMAC-SHA256 signature of the JSON payload, using your salt value | | Hitpay-Event-Type | `completed` | | Hitpay-Event-Object | `payment_request` | | User-Agent | `HitPay v2.0` | ### Sample Webhook Payload ```json theme={"system"} { "id": "9c262fb5-f3cd-4187-8c3e-fbe20730b9c6", "name": "John Doe", "email": "john@example.com", "phone": "+6512345678", "amount": "123.00", "currency": "SGD", "status": "completed", "purpose": "Order #12345", "reference_number": "REF123", "payment_methods": ["paynow_online"], "created_at": "2024-05-28T14:37:11", "updated_at": "2024-05-28T14:38:25", "payments": [ { "id": "9c262fb5-a1b2-4c3d-8e9f-123456789abc", "status": "succeeded", "buyer_email": "john@example.com", "currency": "sgd", "amount": "123.00", "refunded_amount": "0.00", "payment_type": "paynow_online", "fees": "0.50", "created_at": "2024-05-28T14:37:11", "updated_at": "2024-05-28T14:38:25" } ] } ``` ### Validating the Webhook To ensure the webhook is authentic, validate the `Hitpay-Signature` header: 1. Receive the JSON payload and `Hitpay-Signature` from the request 2. Use your salt value (from the dashboard) as the secret key 3. Compute HMAC-SHA256 of the JSON payload using your salt 4. Compare the computed signature with `Hitpay-Signature` - they must match ```php PHP theme={"system"} function validateWebhook($payload, $signature, $salt) { $computedSignature = hash_hmac('sha256', $payload, $salt); return hash_equals($computedSignature, $signature); } // Usage $payload = file_get_contents('php://input'); $signature = $_SERVER['HTTP_HITPAY_SIGNATURE']; $salt = 'your_salt_from_dashboard'; if (validateWebhook($payload, $signature, $salt)) { $data = json_decode($payload, true); // Process the payment confirmation // Mark order as paid } else { http_response_code(401); exit('Invalid signature'); } ``` ```javascript NodeJS theme={"system"} const crypto = require('crypto'); function validateWebhook(payload, signature, salt) { const computedSignature = crypto .createHmac('sha256', salt) .update(payload) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(computedSignature), Buffer.from(signature) ); } // Usage in Express app.post('/webhook', (req, res) => { const payload = JSON.stringify(req.body); const signature = req.headers['hitpay-signature']; const salt = 'your_salt_from_dashboard'; if (validateWebhook(payload, signature, salt)) { // Process the payment confirmation // Mark order as paid res.status(200).send('OK'); } else { res.status(401).send('Invalid signature'); } }); ``` ## FAQs > **What about the 'webhook' parameter in the API?** > > The `webhook` parameter in the payment request API is **deprecated** and will be removed in a future version. > > **Why the change?** > > * The new registered webhook system supports JSON payloads with richer data > * You can subscribe to multiple event types (not just payment completion) > * Centralized management from your dashboard > * Better scalability - one webhook URL handles all your payment requests > > **Migration:** > > 1. Register your webhook URL in **Settings > API Keys** > 2. Subscribe to `payment_request.completed` event > 3. Update your webhook handler to accept JSON payloads > 4. Remove the `webhook` parameter from your API calls > **Webhook Signature Mismatch?** > > Possible reasons for signature mismatch: > > * Ensure you are using the correct salt value from the correct environment (Sandbox or Production) > * Make sure you are computing the HMAC-SHA256 of the raw JSON payload > * Verify the signature is being read from the `Hitpay-Signature` header > **Facing Invalid Business API Key Error?** > > Possible reasons for this error: > > * You are using a production key in the sandbox or a sandbox key in production. Make sure the API base URL is correct. > * You are missing headers. Ensure you include both the 'Content-Type' and 'X-Requested-With' headers. > **Production Checklist** > > Ensure the following before moving to production: > > * Change the base URL for all API calls to `https://api.hit-pay.com/v1/` > * Complete payment method setup in production > * Update API keys and Salt values from the production dashboard > * Register your webhook URL in production # Embedded Recurring APMs Source: https://docs.hitpayapp.com/apis/guide/embedded-recurring-billing Set up recurring APM billing without redirecting customers away from your site — receive deep links or setup instructions inline via API. ## Overview Keep customers on your site when they set up a recurring payment method. Instead of redirecting them to a HitPay-hosted page, pass a method-specific parameter (`generate_direct_link`, `generate_qr`, or `generate_instructions`) to receive a link, QR code, or setup instructions directly in the API response — ready to render in your own UI. ![Embedded Recurring APMs](https://mintcdn.com/hitpay/DQTLoPqM88mOImvp/images/Embedded-Recurring-APMs.png?fit=max\&auto=format\&n=DQTLoPqM88mOImvp\&q=85\&s=55ce2f097e601f2016d2cae847b7152c) ## Supported Payment Methods | Payment Method | Code | Parameter | Response type | Currencies | | :- | :- | :- | :- | :- | | ZaloPay | `zalopay` | `generate_qr` | `qr_code_data` | VND | | WeChat Pay | `wechat_pay` | `generate_qr` | `qr_code_data` | SGD | | Shopee Pay | `shopee_pay` | `generate_direct_link` | `direct_link` (web URL) | SGD, MYR, PHP | | GrabPay | `grabpay_direct` | `generate_direct_link` | `direct_link` (web URL) | SGD, MYR | | Touch 'N Go | `touch_n_go` | `generate_direct_link` | `direct_link` (web URL) | MYR | | LINE Pay | `line_pay` | `generate_direct_link` | `direct_link` (LINE deep link) | THB | | GIRO | `giro` | `generate_instructions` | `instructions` | SGD | > [!NOTE] > > Send exactly one generate parameter per request (`generate_direct_link`, `generate_qr`, or `generate_instructions`). The parameter must match the payment method — sending `generate_qr` for `shopee_pay`, for example, returns a `400` error. Omitting all three generate parameters defaults to the hosted-page flow. ## How It Works **1. Create a Recurring Billing with the method-specific parameter** Call `POST /v1/recurring-billing` with exactly one generate parameter (`generate_direct_link`, `generate_qr`, or `generate_instructions`) and exactly one `payment_methods[]` entry. The API initiates the APM setup immediately and returns `qr_code_data`, `direct_link`, or `instructions` inline. **2. Present the Link or Instructions** Render the returned data in your UI: show the link as a button or display the setup steps for GIRO. **3. Customer Completes Setup** The customer taps the link or follows the GIRO instructions. **4. Receive Webhooks** HitPay fires `recurring_billing.method_attached` and `recurring_billing.subscription_updated` when the payment method is linked and the subscription activates. If a charge is made, `charge.created` is fired — listen to this event to confirm a successful payment. *** ## Step 1: Create a Recurring Billing ### Endpoint ``` POST /v1/recurring-billing ``` ### Request Parameters > [!NOTE] > > Send exactly one generate parameter per request. For redirect-based methods (`shopee_pay`, `grabpay_direct`, `touch_n_go`, `line_pay`), `redirect_url` is also required when using `generate_direct_link`. Sending more than one generate parameter returns a `400`. | Parameter | Description | Example | | :- | :- | :- | | `name` | Required. Name for this billing session. | Spotify Premium | | `customer_email` | Required. Customer's email address. | [paul@hitpayapp.com](mailto:paul@hitpayapp.com) | | `customer_name` | Optional. Customer's name. | Paul | | `amount` | Optional when `payment_methods` contains only APMs (`zalopay`, `shopee_pay`, `grabpay_direct`, `touch_n_go`, `line_pay`) and `save_payment_method: true`. Required otherwise. | 9.90 | | `save_payment_method` | Set to `true` to save the payment method. | true | | `currency` | Currency code. | sgd | | `payment_methods[]` | Required. Exactly one method per request. | grabpay\_direct | | `generate_direct_link` | Set to `true` to receive a `direct_link` inline. Use with `shopee_pay`, `grabpay_direct`, `touch_n_go`, or `line_pay`. | true | | `generate_qr` | Set to `true` to receive `qr_code_data` inline. Use with `zalopay` or `wechat_pay`. | true | | `generate_instructions` | Set to `true` to receive `instructions` inline. Use with `giro`. | true | | `redirect_url` | Required when using `generate_direct_link`. Not required for `generate_qr` or `generate_instructions`. | [https://example.com/success](https://example.com/success) | | `description` | Description shown to the customer. | Spotify Membership | | `reference` | Your internal reference ID for this customer or session. | cust\_123 | | `send_email` | Send email receipt to customer. Default: `false`. | true | | `customer_phone_number` | Required for `shopee_pay`. Customer's phone number. | 91234567 | | `customer_phone_number_country_code` | Required for `shopee_pay`. Country code of the phone number. | 65 | ### Example Requests ```shell Shopee Pay (Direct Link) theme={"system"} curl --location --request POST 'https://api.sandbox.hit-pay.com/v1/recurring-billing' \ --header 'X-BUSINESS-API-KEY: your_api_key' \ --header 'X-Requested-With: XMLHttpRequest' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'name=Spotify Premium' \ --data-urlencode 'customer_email=tan@example.com' \ --data-urlencode 'customer_name=Tan Ah Kow' \ --data-urlencode 'amount=9.90' \ --data-urlencode 'currency=sgd' \ --data-urlencode 'save_payment_method=true' \ --data-urlencode 'payment_methods[]=shopee_pay' \ --data-urlencode 'generate_direct_link=true' \ --data-urlencode 'customer_phone_number=91234567' \ --data-urlencode 'customer_phone_number_country_code=65' \ --data-urlencode 'redirect_url=https://merchant.com/billing/complete' ``` ```shell ZaloPay (QR Code) theme={"system"} curl --location --request POST 'https://api.sandbox.hit-pay.com/v1/recurring-billing' \ --header 'X-BUSINESS-API-KEY: your_api_key' \ --header 'X-Requested-With: XMLHttpRequest' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'name=Spotify Premium' \ --data-urlencode 'customer_email=nguyen@example.com' \ --data-urlencode 'customer_name=Nguyen Van A' \ --data-urlencode 'amount=99000' \ --data-urlencode 'currency=vnd' \ --data-urlencode 'save_payment_method=true' \ --data-urlencode 'payment_methods[]=zalopay' \ --data-urlencode 'generate_qr=true' ``` ```shell GIRO (Instructions) theme={"system"} curl --location --request POST 'https://api.sandbox.hit-pay.com/v1/recurring-billing' \ --header 'X-BUSINESS-API-KEY: your_api_key' \ --header 'X-Requested-With: XMLHttpRequest' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'name=Spotify Premium' \ --data-urlencode 'customer_email=lim@example.com' \ --data-urlencode 'customer_name=Lim Wei' \ --data-urlencode 'amount=9.90' \ --data-urlencode 'currency=sgd' \ --data-urlencode 'save_payment_method=true' \ --data-urlencode 'payment_methods[]=giro' \ --data-urlencode 'generate_instructions=true' ``` *** ## Step 2: Present the Response in Your UI The response includes all the standard recurring billing fields plus one of the following objects depending on the payment method. ### QR code (`qr_code_data`) — ZaloPay Render the `qr_code` value as a scannable QR image in your UI. > **Example Response — ZaloPay** > > ```json theme={"system"} > { > "id": "9741164c-06a1-4dd7-a649-72cca8f9603c", > "customer_name": "Nguyen Van A", > "customer_email": "nguyen@example.com", > "name": "Spotify Premium", > "cycle": "save_card", > "cycle_repeat": null, > "cycle_frequency": null, > "currency": "vnd", > "amount": 99000, > "status": "scheduled", > "save_payment_method": 1, > "payment_methods": ["zalopay"], > "qr_code_data": { > "qr_code": "00020101021238570010A000000727...", > "qr_code_expiry": "2026-04-10T15:30:00" > }, > "created_at": "2026-04-10T15:00:00", > "updated_at": null > } > ``` | Field | Type | Description | | :- | :- | :- | | `qr_code` | string | QR code string to render as a scannable image. | | `qr_code_expiry` | string | ISO 8601 timestamp when the QR code expires. | ### Direct link (`direct_link`) — Shopee Pay, GrabPay, Touch 'N Go Render `direct_link_url` as a button (e.g. "Authorise with Shopee Pay"). On mobile, use `direct_link_app_url` to open the payment app directly if available. > **Example Response — Shopee Pay** > > ```json theme={"system"} > { > "id": "9741164c-06a1-4dd7-a649-72cca8f9603a", > "customer_name": "Tan Ah Kow", > "customer_email": "tan@example.com", > "name": "Spotify Premium", > "cycle": "save_card", > "cycle_repeat": null, > "cycle_frequency": null, > "currency": "sgd", > "amount": 9.9, > "status": "scheduled", > "save_payment_method": 1, > "payment_methods": ["shopee_pay"], > "redirect_url": "https://merchant.com/billing/complete", > "direct_link": { > "direct_link_url": "https://shopeepay.sg/u/account-linking-agreement_sg?client_id=abc123...", > "direct_link_app_url": "shopeesg://main?apprl=%2Frn%2FTRANSFER_PAGE%3F...", > "expiry_time": null > }, > "created_at": "2026-04-01T15:00:00", > "updated_at": "2026-04-01T15:00:00" > } > ``` | Field | Type | Description | | :- | :- | :- | | `direct_link_url` | string | Web redirect URL. Always present. Use this on desktop or as a fallback on mobile. | | `direct_link_app_url` | string \| null | App deep link for mobile app-to-app flows. Present for Shopee Pay; `null` for GrabPay and Touch 'N Go. | ### Instructions (`instructions`) — GIRO Display the steps as a numbered list. Make the `reference` value copyable so the customer can paste it into their banking portal. > **Example Response — GIRO** > > ```json theme={"system"} > { > "id": "9741164c-06a1-4dd7-a649-72cca8f9603b", > "customer_name": "Lim Wei", > "customer_email": "lim@example.com", > "name": "Spotify Premium", > "cycle": "save_card", > "cycle_repeat": null, > "cycle_frequency": null, > "currency": "sgd", > "amount": 9.9, > "status": "scheduled", > "save_payment_method": 1, > "payment_methods": ["giro"], > "instructions": { > "reference": "RPSHISXMB1E", > "steps": [ > "Log in to your DBS/POSB Internet Banking Account on the Web", > "Click on Pay > Add GIRO Arrangement", > "Under Billing Organisation, select HitPay", > "Add RPSHISXMB1E as Bill Reference", > "Enter 0 under Payment Limit", > "Click on Next and hit Submit" > ] > }, > "created_at": "2026-04-01T15:00:00", > "updated_at": "2026-04-01T15:00:00" > } > ``` | Field | Type | Description | | :- | :- | :- | | `reference` | string | The bill reference the customer enters in their banking portal. | | `steps` | string\[] | Ordered setup instructions. Display as a numbered list. | *** ## Step 3: Customer Completes Setup > **Shopee Pay / GrabPay / TNG** > > Customer taps the link or is redirected to the provider's authorisation page, then returns to your `redirect_url`. > **ZaloPay / WeChat Pay** > > Customer scans the QR code with their payment app to authorize the recurring payment. > **GIRO** > > Customer logs in to DBS/POSB internet banking and follows the displayed steps. This may take 1–3 business days to activate. *** ## Step 4: Handle Webhooks ### Register Your Webhook 1. Navigate to **Developers > Webhook Endpoints** in your dashboard 2. Click **New Webhook** 3. Enter a name and your webhook URL 4. Select the events you want to receive: * `recurring_billing.method_attached` — Payment method successfully linked * `recurring_billing.subscription_updated` — Subscription status changes (e.g., `scheduled` → `active`) * `charge.created` — A charge was successfully processed. 5. Save your webhook configuration ### Webhook Payload When a payment is completed, HitPay sends a JSON payload to your registered webhook URL with the following headers: | HTTP Header | Description | | - | - | | Hitpay-Signature | HMAC-SHA256 signature of the JSON payload, using your salt value | | Hitpay-Event-Type | `completed` | | Hitpay-Event-Object | `payment_request` | | User-Agent | `HitPay v2.0` | ### Validating the Webhook To ensure the webhook is authentic, validate the `Hitpay-Signature` header: 1. Receive the JSON payload and `Hitpay-Signature` from the request 2. Use your salt value (from the dashboard) as the secret key 3. Compute HMAC-SHA256 of the JSON payload using your salt 4. Compare the computed signature with `Hitpay-Signature` - they must match ```php PHP theme={"system"} function validateWebhook($payload, $signature, $salt) { $computedSignature = hash_hmac('sha256', $payload, $salt); return hash_equals($computedSignature, $signature); } // Usage $payload = file_get_contents('php://input'); $signature = $_SERVER['HTTP_HITPAY_SIGNATURE']; $salt = 'your_salt_from_dashboard'; if (validateWebhook($payload, $signature, $salt)) { $data = json_decode($payload, true); // Process the payment confirmation // Mark order as paid } else { http_response_code(401); exit('Invalid signature'); } ``` ```javascript NodeJS theme={"system"} const crypto = require('crypto'); function validateWebhook(payload, signature, salt) { const computedSignature = crypto .createHmac('sha256', salt) .update(payload) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(computedSignature), Buffer.from(signature) ); } // Usage in Express app.post('/webhook', (req, res) => { const payload = JSON.stringify(req.body); const signature = req.headers['hitpay-signature']; const salt = 'your_salt_from_dashboard'; if (validateWebhook(payload, signature, salt)) { // Process the payment confirmation // Mark order as paid res.status(200).send('OK'); } else { res.status(401).send('Invalid signature'); } }); ``` *** ## FAQs > **Does this change existing integrations?** > > No. If you omit all three generate parameters, the API behaves exactly as before — returning the HitPay hosted page `url`. No migration required. > **Can I use these parameters for card payments?** > > No. The method-specific generate parameters only work for supported APMs. > **What happens if I send more than one generate parameter?** > > The API returns a `400` error. Send exactly one generate parameter per request. > **What happens if the parameter doesn't match the payment method?** > > The API returns a `400` error with a message indicating the correct parameter to use (e.g., `"shopee_pay does not support QR-based setup. Use generate_direct_link instead."`). > **What if the customer completes setup but I miss the webhook?** > > Existing webhook retry logic applies. You can also check the recurring billing status via `GET /v1/recurring-billing/{id}` — if the method is linked, `status` will be `active`. > **Production Checklist** > > * Change the base URL to `https://api.hit-pay.com/v1/` > * Update API keys and salt values from the production dashboard > * Ensure the APM provider is onboarded in your production account > * Register your webhook URL in production and subscribe to `recurring_billing.method_attached` and `recurring_billing.subscription_updated` # Webhooks Source: https://docs.hitpayapp.com/apis/guide/events Listen to key events in HitPay including payments, orders and more ## Overview HitPay provides event webhooks that are HTTP post requests triggered after key events that happen on the hitpay platform. These webhooks can be used to build your own automation and processes. ### List of Events These are the list of events you can listen to | Event Name | When does it trigger? | | - | - | | charge.created | Once a payment is successfully completed | | charge.updated | Once a payment is refunded / partially refunded | | payout.created | Once a payout is successfully completed | | order.created | Once an order is created successfully | | order.updated | Once an order status is updated | | invoice.created | Once the invoice is created | | transfer.created | Once the transfer is created | | transfer.updated | Once the transfer is updated | | transfer.processing | Once the transfer is processed | | transfer.scheduled | Once the transfer is scheduled | | transfer.paid | Once the transfer is paid | | transfer.failed | Once the transfer is failed | | transfer.canceled | Once the transfer is canceled | | payment\_request.completed | Once the payment request has been paid | | payment\_request.failed | Once the payment request received an error | | recurring\_billing.method\_attached | Once a payment method is attached to a subscription | | recurring\_billing.method\_detached | Once a payment method (APMs) is detached from a subscription | | recurring\_billing.subscription\_updated | Once a subscription is updated, including status changes (active, cancelled, paused, expired) and edits made via the dashboard | ## Register Your Webhook The first thing you need to do before you can receive the webhook is to register the URL. Navigate to "API Keys" and enter the name and the URL you wish to receive the webhook. The URL must use HTTPS and resolve to a public destination. Loopback and private network addresses are rejected. The same rules apply to `POST /v1/webhook-events` and `PUT /v1/webhook-events/{webhook_event_id}`. ![Hero Dark](https://mintcdn.com/hitpay/zBfEahTCz9U1NPmL/images/webhook-events.png?fit=max\&auto=format\&n=zBfEahTCz9U1NPmL\&q=85\&s=ff63dad346c4a25766b3455aa35dbc28) ## Platform webhooks Converting to a [Platform Account](/apis/guide/platform-apis) does not automatically start sending webhooks. The platform must register webhook endpoints on its own HitPay account first. For sub-account payments created via Platform APIs (requests include both `X-BUSINESS-API-KEY` for the sub-account and `X-PLATFORM-KEY` for the platform): * Successful/failed charge events (`charge.created`, `charge.failed`, `charge.updated`) are delivered to webhook endpoints registered on the **platform account** — not the sub-account's endpoints. * The payload is for the sub-account's transaction; use the charge or payment-request data (and `business_id` in the payload) to identify which sub-account it belongs to. * Payment request events (`payment_request.completed`, `payment_request.failed`) are currently sent to the sub-account's registered webhook endpoints. ## Webhook Payload Headers that are included in the webhook HTTP POST request | HTTP header | details | | - | - | | Hitpay-Signature | HMAC-SHA256 of the raw JSON body, using that webhook endpoint's salt | | Hitpay-Event-Type | `created` / `updated` based on the event | | Hitpay-Event-Object | The type of object. It can be `charge`/`payout`/`invoice`/`order`/`transfer` | | User-Agent | `HitPay v2.0` | HTTP request body is a JSON object and the object structure can be any of the above 5 types. Refer to the header value `Hitpay-Event-Object`to determine the object type of webhooks for `charge` `payout` `invoice` `order` `transfer` ### Event examples for `charge` `invoice` `order` ```json charge.created theme={"system"} { "id": "9e9a3451-a3e5-4fc5-9dfc-bc75e67c8808", "business_id": "98567029-f559-49f9-916b-042a4255b32a", "channel": "point_of_sale", "customer_id": "9b3503bd-fd04-4e39-9271-b2bc26fa5c96", "status": "succeeded", "customer": { "name": "Miss Vincent Marquardt", "email": "test@gmail.com", "phone_number": "666", "address": { "street": null, "city": null, "state": null, "postal_code": null, "country": null } }, "currency": "sgd", "amount": 913.84, "refunded_amount": 0, "refunded_at": null, "fixed_fee": 0, "discount_fee": 0, "discount_fee_rate": 0, "failed_reason": null, "order": { "id": "9e9a344b-2c04-44f4-b521-e36dce8f4ade", "order_display_number": 2766, "business_id": "98567029-f559-49f9-916b-042a4255b32a", "channel": "point_of_sale", "version": "2.0", "customer_id": "9b3503bd-fd04-4e39-9271-b2bc26fa5c96", "business_customer_id": "9b3503bd-fd04-4e39-9271-b2bc26fa5c96", "customer": { "name": "Miss Vincent Marquardt", "email": "test@gmail.com", "phone_number": "666", "address": { "street": null, "building": null, "street_2": null, "city": null, "state": null, "postal_code": null, "country": null } }, "customer_pickup": false, "currency": "sgd", "order_discount_name": null, "status": "completed", "remark": null, "created_at": "2025-04-05T19:09:54+08:00", "updated_at": "2025-04-05T19:09:59+08:00", "closed_at": "2025-04-05T19:09:59+08:00", "location_id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "location": null, "business_user_id": "1306", "slot_date": null, "slot_time": null, "messages": null, "products": [], "charges": [], "line_items": [ { "id": "9e9a344c-7b3c-4330-8926-0f9df43c3b08", "name": "POS TESTING - BLue", "thumbnail": null, "item_type": "product", "quantity": 1, "related_id": "9e4b75c4-cce6-4f08-ab71-abf8907f41a4", "unit_price": 913.84, "line_item_amount": 913.84, "item_unit_weight": 883, "params": null, "children": [] } ], "order_form_response": null, "coupon": null, "pickup": null, "payment_status": "paid", "fulfilment_status": "completed", "fulfilment_type": "in_store", "line_items_total": 913.84, "order_discount_amount": 0, "line_item_discount_amount": 0, "line_item_tax_amount": 0, "additional_discount_amount": 0, "total_discount_amount": 0, "line_item_price": 913.84, "shipping_amount": 0, "total_coupon_amount": 0, "amount": 913.84, "subtotal": 913.84 }, "order_id": "9e9a344b-2c04-44f4-b521-e36dce8f4ade", "remark": null, "payment_intents": [], "payment_request_id": null, "payment_request": null, "all_inclusive_fee": null, "home_currency": null, "payment_provider": { "code": "hitpay", "account_id": "98567029-f559-49f9-916b-042a4255b32a", "charge": { "type": "business_charge", "id": "9e9a3451-a3e5-4fc5-9dfc-bc75e67c8808", "method": "cash", "transfer_type": null, "details": null, "logo": "/icons/payment-methods-2/cash.png" } }, "created_at": "2025-04-05T19:09:59+08:00", "updated_at": "2025-04-05T19:10:01+08:00", "closed_at": "2025-04-05T19:09:59+08:00", "location_id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "location": { "id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "name": "API_Location_1740101762910", "address": "58 Izpod Parkway, Singapore, Singapore, sg, 079903" }, "business_user_id": "1306", "business_user_display": "TestingSG", "terminal_id": null, "relatable": null } ``` ```json charge.updated theme={"system"} { "id": "9e9a3451-a3e5-4fc5-9dfc-bc75e67c8808", "business_id": "98567029-f559-49f9-916b-042a4255b32a", "channel": "point_of_sale", "customer_id": "9b3503bd-fd04-4e39-9271-b2bc26fa5c96", "status": "partially_refunded", "customer": { "name": "Miss Vincent Marquardt", "email": "test@gmail.com", "phone_number": "666", "address": { "street": null, "city": null, "state": null, "postal_code": null, "country": null } }, "currency": "sgd", "amount": 913.84, "refunded_amount": 200, "refunded_at": "2025-04-05T19:12:39+08:00", "fixed_fee": 0, "discount_fee": 0, "discount_fee_rate": 0, "failed_reason": null, "order": { "id": "9e9a344b-2c04-44f4-b521-e36dce8f4ade", "order_display_number": 2766, "business_id": "98567029-f559-49f9-916b-042a4255b32a", "channel": "point_of_sale", "version": "2.0", "customer_id": "9b3503bd-fd04-4e39-9271-b2bc26fa5c96", "business_customer_id": "9b3503bd-fd04-4e39-9271-b2bc26fa5c96", "customer": { "name": "Miss Vincent Marquardt", "email": "test@gmail.com", "phone_number": "666", "address": { "street": null, "building": null, "street_2": null, "city": null, "state": null, "postal_code": null, "country": null } }, "customer_pickup": false, "currency": "sgd", "order_discount_name": null, "status": "completed", "remark": null, "created_at": "2025-04-05T19:09:54+08:00", "updated_at": "2025-04-05T19:12:39+08:00", "closed_at": "2025-04-05T19:09:59+08:00", "location_id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "location": null, "business_user_id": "1306", "slot_date": null, "slot_time": null, "messages": null, "products": [], "charges": [], "line_items": [ { "id": "9e9a344c-7b3c-4330-8926-0f9df43c3b08", "name": "POS TESTING - BLue", "thumbnail": null, "item_type": "product", "quantity": 1, "related_id": "9e4b75c4-cce6-4f08-ab71-abf8907f41a4", "unit_price": 913.84, "line_item_amount": 913.84, "item_unit_weight": 883, "params": null, "children": [] } ], "order_form_response": null, "coupon": null, "pickup": null, "payment_status": "partially_refunded", "fulfilment_status": "completed", "fulfilment_type": "in_store", "line_items_total": 913.84, "order_discount_amount": 0, "line_item_discount_amount": 0, "line_item_tax_amount": 0, "additional_discount_amount": 0, "total_discount_amount": 0, "line_item_price": 913.84, "shipping_amount": 0, "total_coupon_amount": 0, "amount": 913.84, "subtotal": 913.84 }, "order_id": "9e9a344b-2c04-44f4-b521-e36dce8f4ade", "remark": null, "payment_intents": [], "payment_request_id": null, "payment_request": null, "all_inclusive_fee": null, "home_currency": null, "payment_provider": { "code": "hitpay", "account_id": "98567029-f559-49f9-916b-042a4255b32a", "charge": { "type": "business_charge", "id": "9e9a3451-a3e5-4fc5-9dfc-bc75e67c8808", "method": "cash", "transfer_type": null, "details": null, "logo": "/icons/payment-methods-2/cash.png" } }, "created_at": "2025-04-05T19:09:59+08:00", "updated_at": "2025-04-05T19:12:39+08:00", "closed_at": "2025-04-05T19:09:59+08:00", "location_id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "location": { "id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "name": "API_Location_1740101762910", "address": "58 Izpod Parkway, Singapore, Singapore, sg, 079903" }, "business_user_id": "1306", "business_user_display": "TestingSG", "terminal_id": null, "relatable": null } ``` ```json order.created theme={"system"} { "id": "9e9a344b-2c04-44f4-b521-e36dce8f4ade", "order_display_number": 2766, "business_id": "98567029-f559-49f9-916b-042a4255b32a", "channel": "point_of_sale", "version": "2.0", "customer_id": "9b3503bd-fd04-4e39-9271-b2bc26fa5c96", "business_customer_id": "9b3503bd-fd04-4e39-9271-b2bc26fa5c96", "customer": { "name": "Miss Vincent Marquardt", "email": "test@gmail.com", "phone_number": "666", "address": { "street": null, "building": null, "street_2": null, "city": null, "state": null, "postal_code": null, "country": null } }, "customer_pickup": false, "currency": "sgd", "order_discount_name": null, "status": "completed", "remark": null, "created_at": "2025-04-05T19:09:54+08:00", "updated_at": "2025-04-05T19:09:59+08:00", "closed_at": "2025-04-05T19:09:59+08:00", "location_id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "location": { "id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "name": "API_Location_1740101762910", "address": "58 Izpod Parkway, Singapore, Singapore, sg, 079903" }, "business_user_id": "1306", "slot_date": null, "slot_time": null, "messages": null, "products": [], "charges": [ { "id": "9e9a3451-a3e5-4fc5-9dfc-bc75e67c8808", "business_id": "98567029-f559-49f9-916b-042a4255b32a", "channel": "point_of_sale", "customer_id": "9b3503bd-fd04-4e39-9271-b2bc26fa5c96", "status": "succeeded", "customer": { "name": "Miss Vincent Marquardt", "email": "test@gmail.com", "phone_number": "666", "address": { "street": null, "city": null, "state": null, "postal_code": null, "country": null } }, "currency": "sgd", "amount": 913.84, "refunded_amount": 0, "refunded_at": null, "fixed_fee": 0, "discount_fee": 0, "discount_fee_rate": 0, "failed_reason": null, "remark": null, "payment_intents": [], "payment_request_id": null, "all_inclusive_fee": null, "home_currency": null, "payment_provider": { "code": "hitpay", "account_id": "98567029-f559-49f9-916b-042a4255b32a", "charge": { "type": "business_charge", "id": "9e9a3451-a3e5-4fc5-9dfc-bc75e67c8808", "method": "cash", "transfer_type": null, "details": null, "logo": "/icons/payment-methods-2/cash.png" } }, "created_at": "2025-04-05T19:09:59+08:00", "updated_at": "2025-04-05T19:09:59+08:00", "closed_at": "2025-04-05T19:09:59+08:00", "location_id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "location": null, "business_user_id": "1306", "business_user_display": null, "terminal_id": null, "relatable": null } ], "line_items": [ { "id": "9e9a344c-7b3c-4330-8926-0f9df43c3b08", "name": "POS TESTING - BLue", "thumbnail": null, "item_type": "product", "quantity": 1, "related_id": "9e4b75c4-cce6-4f08-ab71-abf8907f41a4", "unit_price": 913.84, "line_item_amount": 913.84, "item_unit_weight": 883, "params": null, "children": [] } ], "order_form": null, "order_form_response": null, "coupon": null, "pickup": null, "payment_status": "paid", "fulfilment_status": "completed", "fulfilment_type": "in_store", "line_items_total": 913.84, "order_discount_amount": 0, "line_item_discount_amount": 0, "line_item_tax_amount": 0, "additional_discount_amount": 0, "total_discount_amount": 0, "line_item_price": 913.84, "shipping_amount": 0, "total_coupon_amount": 0, "amount": 913.84, "subtotal": 913.84 } ``` ```json order.updated theme={"system"} { "id": "9e9be21e-07dc-4a21-aeed-4e12e148c5b2", "order_display_number": 2767, "business_id": "98567029-f559-49f9-916b-042a4255b32a", "channel": "store_checkout", "version": "2.0", "customer_id": "9bc3f764-767f-4894-ba96-ae2d72605f68", "business_customer_id": "9bc3f764-767f-4894-ba96-ae2d72605f68", "customer": { "name": "Testing", "email": "test@gmail.com", "phone_number": "+65907777777", "address": { "street": null, "building": null, "street_2": null, "city": null, "state": null, "postal_code": null, "country": null } }, "customer_pickup": true, "currency": "sgd", "order_discount_name": null, "status": "completed", "remark": "Testing", "created_at": "2025-04-06T15:11:47+08:00", "updated_at": "2025-04-06T15:15:24+08:00", "closed_at": "2025-04-06T15:15:24+08:00", "location_id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "location": { "id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "name": "API_Location_1740101762910", "address": "58 Izpod Parkway, Singapore, Singapore, sg, 079903" }, "business_user_id": null, "slot_date": "2025-04-07", "slot_time": { "from": "02:00 PM", "to": "03:00 PM" }, "messages": [ { "status_changed": "completed" } ], "products": [], "charges": [ { "id": "9e9be221-0535-4e09-b03f-72ce8da58d26", "business_id": "98567029-f559-49f9-916b-042a4255b32a", "channel": "payment_gateway", "customer_id": "9bc3f764-767f-4894-ba96-ae2d72605f68", "status": "succeeded", "customer": { "name": "Testing", "email": "test@gmail.com", "phone_number": "+84907777777", "address": { "street": null, "city": null, "state": null, "postal_code": null, "country": null } }, "currency": "sgd", "amount": 99, "refunded_amount": 0, "refunded_at": null, "fixed_fee": 0.5, "discount_fee": 3.61, "discount_fee_rate": 3.65, "failed_reason": null, "remark": "Order #9e9be21e-07dc-4a21-aeed-4e12e148c5b2", "payment_intents": [], "payment_request_id": "9e9be21f-520f-4c75-a6f5-fb063fb970f8", "all_inclusive_fee": 4.11, "home_currency": "sgd", "payment_provider": { "code": "stripe_sg", "account_id": "acct_1MVTSCPJuNxCM62r", "charge": { "type": "charge", "id": "ch_3RAnOzAMHowMCIhZ1V2EbRFK", "method": "card", "transfer_type": "application_fee", "details": { "brand": "Visa", "last4": "4242", "country": "United States of America", "country_code": "us" }, "logo": "/icons/payment-methods-2/card.svg" } }, "created_at": "2025-04-06T15:11:49+08:00", "updated_at": "2025-04-06T15:14:10+08:00", "closed_at": "2025-04-06T15:14:06+08:00", "location_id": "9e42e6be-2ff8-4b37-ac14-07970d2e79ca", "location": null, "business_user_id": null, "business_user_display": null, "terminal_id": null, "relatable": null } ], "line_items": [ { "id": "9e9be21e-37a2-4396-abe7-9e7852deba0c", "name": "Update_Product_1690452646", "thumbnail": null, "item_type": "product", "quantity": 1, "related_id": "9b004028-212c-4900-a936-5eb71f589604", "unit_price": 100, "line_item_amount": 100, "item_unit_weight": null, "params": { "remark": null, "product_add_ons": [], "product_add_ons_amount": 0, "product_add_ons_amount_stored": 0 }, "children": [] }, { "id": "9e9be21e-4364-4d56-aec6-552bcc6d58de", "name": "Pickup 17260388868999", "thumbnail": null, "item_type": "pickup_location", "quantity": 1, "related_id": "9cfb7977-d7aa-4939-ba5e-ea79314a558f", "unit_price": 0, "line_item_amount": 0, "item_unit_weight": null, "params": null, "children": [] }, { "id": "9e9be21e-4d2e-4d2d-aff4-5e2f94eace5a", "name": "Discount10$ (SGD 10.00)", "thumbnail": null, "item_type": "discount", "quantity": 1, "related_id": "98daf119-03ea-4018-890c-ba3ea05a7be2", "unit_price": -10, "line_item_amount": -10, "item_unit_weight": null, "params": null, "children": [] } ], "order_form": null, "order_form_response": null, "coupon": null, "pickup": { "id": "9cfb7977-d7aa-4939-ba5e-ea79314a558f", "name": "Pickup 17260388868999", "address": "60 Aria Street, Singapore, Singapore State, sg, 14023", "slots": [ { "day": "Tuesday", "times": [ { "to": "03:00 PM", "from": "02:00 PM", "slots": "25" } ] }, { "day": "Friday", "times": [ { "to": "03:00 PM", "from": "02:00 PM", "slots": "25" } ] }, { "day": "Sunday", "times": [ { "to": "03:00 PM", "from": "02:00 PM", "slots": "25" } ] }, { "day": "Thursday", "times": [ { "to": "03:00 PM", "from": "02:00 PM", "slots": "25" } ] }, { "day": "Wednesday", "times": [ { "to": "03:00 PM", "from": "02:00 PM", "slots": "25" } ] }, { "day": "Monday", "times": [ { "to": "03:00 PM", "from": "02:00 PM", "slots": "25" } ] }, { "day": "Saturday", "times": [ { "to": "03:00 PM", "from": "02:00 PM", "slots": "25" } ] } ], "fulfilment_time_min": 1, "cut_off_time": "23:30:00", "fulfilment_time_max": 4, "blackout_dates": [ { "to": "2024-02-10", "from": "2024-01-08" } ], "status": "active", "location": { "id": "98a525ca-777f-4fd3-b482-4ff417e05377", "name": "Pickup 1719132368", "street": "60 Aria Street", "postal_code": "14023", "city": "Singapore", "state": "Singapore State", "country": "sg", "created_at": "2023-03-09T08:31:50.000000Z", "updated_at": "2025-04-01T12:13:14.000000Z", "active": true, "business_id": "98567029-f559-49f9-916b-042a4255b32a", "pickups": [] }, "created_at": "2024-09-11T15:14:46+08:00", "updated_at": "2025-02-17T14:29:30+08:00" }, "payment_status": "paid", "fulfilment_status": "completed", "fulfilment_type": "pickup", "line_items_total": 90, "order_discount_amount": 0, "line_item_discount_amount": 0, "line_item_tax_amount": 0, "additional_discount_amount": 0, "total_discount_amount": 10, "line_item_price": 100, "shipping_amount": 0, "total_coupon_amount": 0, "amount": 90, "subtotal": 90 } ``` ```json invoice.created theme={"system"} { "id": "9e9be3fd-5652-4f2e-b19e-532c62cc18d2", "business_id": "98567029-f559-49f9-916b-042a4255b32a", "type": "invoice", "business_customer_id": "9b4271db-ebab-471f-b674-28cea39c5231", "reference": "12456678", "invoice_number": "INV-CJHA-20250406", "email": "test@gmail.com", "status": [ "sent" ], "currency": "sgd", "amount": 100, "balance_amount": 100, "customer": { "id": "9b4271db-ebab-471f-b674-28cea39c5231", "name": "Randy Vasquez", "birth_date": null, "gender": null, "email": "test@gmail.com", "phone_number": null, "address": { "street": null, "building": null, "street_2": null, "city": null, "state": null, "postal_code": null, "country": null }, "remark": null, "phone_number_country_code": null, "created_at": "2024-02-05T09:33:23+08:00", "updated_at": "2024-02-05T09:33:23+08:00", "address_line": "" }, "send_email_by_default": true, "webhook": true, "channel": "dashboard", "tax_setting": null, "amount_no_tax": 100, "subtotal": 100, "products": [], "stackable_discounts": [], "invoice_type": "payment_by_fixed_amount", "payment_by": "amount", "send_email": true, "memo": "Invoice Description", "attached_file": null, "created_at": "2025-04-06T15:17:01+08:00", "updated_at": "2025-04-06T15:17:01+08:00", "invoice_date": "2025-04-06", "due_date": "2025-04-06", "payment_requests": [], "charges": [], "allow_partial_payments": 0, "invoice_link": "https://sandbox.hitpay.link/qotdii", "footer": "Invoice Footer", "payment_methods": [ "card", "paynow_online", "paynow_transfer", "grabpay_direct", "grabpay_paylater", "qfpay_alipay", "qfpay_wechat", "shopback", "upi_qr" ], "recipients": [ { "id": "9e9be3fd-6773-4846-8460-2ad41c7c242f", "invoice_id": "9e9be3fd-5652-4f2e-b19e-532c62cc18d2", "email": "test@gmail.com", "customer_id": "9b4271db-ebab-471f-b674-28cea39c5231", "created_at": "2025-04-06T07:17:01.000000Z", "updated_at": "2025-04-06T07:17:01.000000Z", "customer": { "id": "9b4271db-ebab-471f-b674-28cea39c5231", "business_id": "98567029-f559-49f9-916b-042a4255b32a", "name": "Randy Vasquez", "birth_date": null, "gender": null, "email": "test@gmail.com", "phone_number": null, "building": null, "street": null, "street_2": null, "city": null, "state": null, "postal_code": null, "country": null, "remark": null, "hotglue_customer_id": null, "created_at": "2024-02-05T01:33:23.000000Z", "updated_at": "2024-02-05T01:33:23.000000Z", "phone_number_country_code": null } } ], "late_fee_type": null, "late_fee_percentage": null, "late_fee_fixed_amount": null, "late_fee_grace_period": null, "void_reason": null, "voided_by_user_id": null, "voided_at": null } ``` ```json invoice.updated theme={"system"} { "id": "9e9be3fd-5652-4f2e-b19e-532c62cc18d2", "business_id": "98567029-f559-49f9-916b-042a4255b32a", "type": "invoice", "business_customer_id": "9b4271db-ebab-471f-b674-28cea39c5231", "reference": "12456678", "invoice_number": "INV-CJHA-20250406", "email": "test@gmail.com", "status": [ "paid" ], "currency": "sgd", "amount": 100, "balance_amount": 0, "customer": { "id": "9b4271db-ebab-471f-b674-28cea39c5231", "name": "Randy Vasquez", "birth_date": null, "gender": null, "email": "test@gmail.com", "phone_number": null, "address": { "street": null, "building": null, "street_2": null, "city": null, "state": null, "postal_code": null, "country": null }, "remark": null, "phone_number_country_code": null, "created_at": "2024-02-05T09:33:23+08:00", "updated_at": "2024-02-05T09:33:23+08:00", "address_line": "" }, "send_email_by_default": true, "webhook": true, "channel": "dashboard", "tax_setting": null, "amount_no_tax": 100, "subtotal": 100, "products": [], "stackable_discounts": [], "invoice_type": "payment_by_fixed_amount", "payment_by": "amount", "send_email": true, "memo": "Invoice Description", "attached_file": null, "created_at": "2025-04-06T15:17:01+08:00", "updated_at": "2025-04-06T15:17:43+08:00", "invoice_date": "2025-04-06", "due_date": "2025-04-06", "payment_requests": [ { "id": "9e9be41b-2866-4307-8621-e35c633c431f", "name": null, "email": "test@gmail.com", "phone": null, "amount": "100.00", "currency": "sgd", "is_currency_editable": false, "status": "completed", "purpose": "12456678", "reference_number": "9e9be3fd-5652-4f2e-b19e-532c62cc18d2", "payment_methods": [ "card", "paynow_online", "paynow_transfer", "grabpay_direct", "grabpay_paylater", "qfpay_alipay", "qfpay_wechat", "shopback", "upi_qr" ], "url": "https://securecheckout.sandbox.hit-pay.com/payment-request/@qasg1/9e9be41b-2866-4307-8621-e35c633c431f/checkout", "redirect_url": "https://invoice.sandbox.hit-pay.com/98567029-f559-49f9-916b-042a4255b32a/9e9be3fd-5652-4f2e-b19e-532c62cc18d2", "webhook": null, "send_sms": false, "send_email": true, "sms_status": "pending", "email_status": "sent", "allow_repeated_payments": false, "expiry_date": null, "address": null, "line_items": null, "executor_id": null, "created_at": "2025-04-06T15:17:21", "updated_at": "2025-04-06T15:17:43", "business_location_id": null, "payments": [ { "id": "9e9be41c-2869-4b8c-8701-6c44af86b7d0", "quantity": 1, "status": "succeeded", "buyer_name": null, "buyer_phone": null, "buyer_email": "test@gmail.com", "currency": "sgd", "amount": "100.00", "refunded_amount": "0.00", "payment_type": "card", "fees": "4.15", "fees_currency": "sgd", "created_at": "2025-04-06T15:17:21", "updated_at": "2025-04-06T15:17:43" } ] } ], "charges": [ { "id": "9e9be41c-2869-4b8c-8701-6c44af86b7d0", "business_id": "98567029-f559-49f9-916b-042a4255b32a", "channel": "payment_gateway", "customer_id": "9b4271db-ebab-471f-b674-28cea39c5231", "status": "succeeded", "customer": { "name": "Randy Vasquez", "email": "test@gmail.com", "phone_number": null, "address": { "street": null, "city": null, "state": null, "postal_code": null, "country": null } }, "currency": "sgd", "amount": 100, "refunded_amount": 0, "refunded_at": null, "fixed_fee": 0.5, "discount_fee": 3.65, "discount_fee_rate": 3.65, "failed_reason": null, "remark": "12456678", "payment_intents": [], "payment_request_id": "9e9be41b-2866-4307-8621-e35c633c431f", "all_inclusive_fee": 4.15, "home_currency": "sgd", "payment_provider": { "code": "stripe_sg", "account_id": "acct_1MVTSCPJuNxCM62r", "charge": { "type": "charge", "id": "ch_3RAnSUAMHowMCIhZ3etft9Y2", "method": "card", "transfer_type": "application_fee", "details": { "brand": "Visa", "last4": "4242", "country": "United States of America", "country_code": "us" }, "logo": "/icons/payment-methods-2/card.svg" } }, "created_at": "2025-04-06T15:17:21+08:00", "updated_at": "2025-04-06T15:17:43+08:00", "closed_at": "2025-04-06T15:17:42+08:00", "location_id": null, "location": null, "business_user_id": null, "business_user_display": null, "terminal_id": null, "relatable": null } ], "allow_partial_payments": 0, "invoice_link": "https://sandbox.hitpay.link/qotdii", "footer": "Invoice Footer", "payment_methods": [ "card", "paynow_online", "paynow_transfer", "grabpay_direct", "grabpay_paylater", "qfpay_alipay", "qfpay_wechat", "shopback", "upi_qr" ], "recipients": [ { "id": "9e9be3fd-6773-4846-8460-2ad41c7c242f", "invoice_id": "9e9be3fd-5652-4f2e-b19e-532c62cc18d2", "email": "test3@gmail.com", "customer_id": "9b4271db-ebab-471f-b674-28cea39c5231", "created_at": "2025-04-06T07:17:01.000000Z", "updated_at": "2025-04-06T07:17:01.000000Z", "customer": { "id": "9b4271db-ebab-471f-b674-28cea39c5231", "business_id": "98567029-f559-49f9-916b-042a4255b32a", "name": "Randy Vasquez", "birth_date": null, "gender": null, "email": "test@gmail.com", "phone_number": null, "building": null, "street": null, "street_2": null, "city": null, "state": null, "postal_code": null, "country": null, "remark": null, "hotglue_customer_id": null, "created_at": "2024-02-05T01:33:23.000000Z", "updated_at": "2024-02-05T01:33:23.000000Z", "phone_number_country_code": null } } ], "late_fee_type": null, "late_fee_percentage": null, "late_fee_fixed_amount": null, "late_fee_grace_period": null, "void_reason": null, "voided_by_user_id": null, "voided_at": null } ``` ### Event examples for `payout` `transfer` ```json transfer.created theme={"system"} { "id": "9e9be893-9fee-4916-aca0-403e8e42b99e", "beneficiary": { "id": "9e25698b-6792-4ec6-aa81-f58692674171", "is_external": true, "status": "approved", "country": "sg", "currency": "sgd", "wallet_provider": "hitpay", "wallet_capability": "beneficiary", "transfer_method": "local", "nickname": null, "remark": null, "holder_name": "HONGKONG & SHANGHAI BANKING CORPORATION (HSBC)", "holder_type": "company", "bank_branch_code": "040", "account_number": "000123454", "bank_name": "MALAYAN BANKING BERHAD", "bank_id": "MBBESGS2[9636]", "email": "test@gmail.com", "is_favourite": true, "created_at": "2025-02-06T17:46:57+08:00", "updated_at": "2025-03-22T22:42:17+08:00", "deleted_at": null }, "payment_currency": "sgd", "payment_amount": 100, "source_currency": "sgd", "source_amount": 100, "exchange_rate": "1.00000", "fee_payer": "payer", "discount_fee_rate": 0, "fixed_fee": 0, "discount_fee": 0, "total_fee": 0, "fee_currency": "sgd", "remark": "123457788", "status": "scheduled", "attachment": null, "created_at": "2025-04-06T15:29:51+08:00" } ``` ```json transfer.updated theme={"system"} { } ``` ```json transfer.scheduled theme={"system"} { "id": "9e9be893-9fee-4916-aca0-403e8e42b99e", "beneficiary": { "id": "9e25698b-6792-4ec6-aa81-f58692674171", "is_external": true, "status": "approved", "country": "sg", "currency": "sgd", "wallet_provider": "hitpay", "wallet_capability": "beneficiary", "transfer_method": "local", "nickname": null, "remark": null, "holder_name": "HONGKONG & SHANGHAI BANKING CORPORATION (HSBC)", "holder_type": "company", "bank_branch_code": "040", "account_number": "000123454", "bank_name": "MALAYAN BANKING BERHAD", "bank_id": "MBBESGS2[9636]", "email": "test@gmail.com", "is_favourite": true, "created_at": "2025-02-06T17:46:57+08:00", "updated_at": "2025-03-22T22:42:17+08:00", "deleted_at": null }, "payment_currency": "sgd", "payment_amount": 100, "source_currency": "sgd", "source_amount": 100, "exchange_rate": "1.00000", "fee_payer": "payer", "discount_fee_rate": 0, "fixed_fee": 0, "discount_fee": 0, "total_fee": 0, "fee_currency": "sgd", "remark": "123457788", "status": "scheduled", "attachment": null, "created_at": "2025-04-06T15:29:51+08:00" } ``` ```json transfer.processing theme={"system"} { "id": "9e9be893-9fee-4916-aca0-403e8e42b99e", "beneficiary": { "id": "9e25698b-6792-4ec6-aa81-f58692674171", "is_external": true, "status": "approved", "country": "sg", "currency": "sgd", "wallet_provider": "hitpay", "wallet_capability": "beneficiary", "transfer_method": "local", "nickname": null, "remark": null, "holder_name": "HONGKONG & SHANGHAI BANKING CORPORATION (HSBC)", "holder_type": "company", "bank_branch_code": "040", "account_number": "000123454", "bank_name": "MALAYAN BANKING BERHAD", "bank_id": "MBBESGS2[9636]", "email": "test@gmail.com", "is_favourite": true, "created_at": "2025-02-06T17:46:57+08:00", "updated_at": "2025-03-22T22:42:17+08:00", "deleted_at": null }, "payment_currency": "sgd", "payment_amount": 100, "source_currency": "sgd", "source_amount": 100, "exchange_rate": "1.00000", "fee_payer": "payer", "discount_fee_rate": 0, "fixed_fee": 0, "discount_fee": 0, "total_fee": 0, "fee_currency": "sgd", "remark": "123457788", "status": "processing", "attachment": null, "created_at": "2025-04-06T15:29:51+08:00" } ``` ```json transfer.paid theme={"system"} { "id": "9e9be893-9fee-4916-aca0-403e8e42b99e", "beneficiary": { "id": "9e25698b-6792-4ec6-aa81-f58692674171", "is_external": true, "status": "approved", "country": "sg", "currency": "sgd", "wallet_provider": "hitpay", "wallet_capability": "beneficiary", "transfer_method": "local", "nickname": null, "remark": null, "holder_name": "HONGKONG & SHANGHAI BANKING CORPORATION (HSBC)", "holder_type": "company", "bank_branch_code": "040", "account_number": "000123454", "bank_name": "MALAYAN BANKING BERHAD", "bank_id": "MBBESGS2[9636]", "email": "test@gmail.com", "is_favourite": true, "created_at": "2025-02-06T17:46:57+08:00", "updated_at": "2025-03-22T22:42:17+08:00", "deleted_at": null }, "payment_currency": "sgd", "payment_amount": 100, "source_currency": "sgd", "source_amount": 100, "exchange_rate": "1.00000", "fee_payer": "payer", "discount_fee_rate": 0, "fixed_fee": 0, "discount_fee": 0, "total_fee": 0, "fee_currency": "sgd", "remark": "123457788", "status": "paid", "attachment": null, "created_at": "2025-04-06T15:29:51+08:00" } ``` ```json transfer.failed theme={"system"} { "id": "9e9be893-9fee-4916-aca0-403e8e42b99e", "beneficiary": { "id": "9e25698b-6792-4ec6-aa81-f58692674171", "is_external": true, "status": "approved", "country": "sg", "currency": "sgd", "wallet_provider": "hitpay", "wallet_capability": "beneficiary", "transfer_method": "local", "nickname": null, "remark": null, "holder_name": "HONGKONG & SHANGHAI BANKING CORPORATION (HSBC)", "holder_type": "company", "bank_branch_code": "040", "account_number": "000123454", "bank_name": "MALAYAN BANKING BERHAD", "bank_id": "MBBESGS2[9636]", "email": "test@gmail.com", "is_favourite": true, "created_at": "2025-02-06T17:46:57+08:00", "updated_at": "2025-03-22T22:42:17+08:00", "deleted_at": null }, "payment_currency": "sgd", "payment_amount": 100, "source_currency": "sgd", "source_amount": 100, "exchange_rate": "1.00000", "fee_payer": "payer", "discount_fee_rate": 0, "fixed_fee": 0, "discount_fee": 0, "total_fee": 0, "fee_currency": "sgd", "remark": "123457788", "status": "failed", "failure_code": 100101, "failure_message": "Invalid account number", "attachment": null, "created_at": "2025-04-06T15:29:51+08:00" } ``` ```json transfer.canceled theme={"system"} { "id": "9e9be893-9fee-4916-aca0-403e8e42b99e", "beneficiary": { "id": "9e25698b-6792-4ec6-aa81-f58692674171", "is_external": true, "status": "approved", "country": "sg", "currency": "sgd", "wallet_provider": "hitpay", "wallet_capability": "beneficiary", "transfer_method": "local", "nickname": null, "remark": null, "holder_name": "HONGKONG & SHANGHAI BANKING CORPORATION (HSBC)", "holder_type": "company", "bank_branch_code": "040", "account_number": "000123454", "bank_name": "MALAYAN BANKING BERHAD", "bank_id": "MBBESGS2[9636]", "email": "test@gmail.com", "is_favourite": true, "created_at": "2025-02-06T17:46:57+08:00", "updated_at": "2025-03-22T22:42:17+08:00", "deleted_at": null }, "payment_currency": "sgd", "payment_amount": 100, "source_currency": "sgd", "source_amount": 100, "exchange_rate": "1.00000", "fee_payer": "payer", "discount_fee_rate": 0, "fixed_fee": 0, "discount_fee": 0, "total_fee": 0, "fee_currency": "sgd", "remark": "123457788", "status": "canceled", "attachment": null, "created_at": "2025-04-06T15:29:51+08:00" } ``` ```json payout.created theme={"system"} { "id": "9e9be893-9fee-4916-aca0-403e8e42b99e", "bank_name": "MALAYAN BANKING BERHAD", "bank_swift_code": "MBBESGS2XXX", "bank_account_number": "000123454", "currency": "sgd", "amount": 100, "status": "succeeded", "created_at": "2025-04-06T15:29:51+08:00" } ``` **Note:** List of failure codes for `transfer.failed` event | Code | Description | | - | - | | 100101 | Invalid account number | | 100102 | Invalid bank branch code | | 100103 | Invalid SWIFT/BIC code | | 100104 | Invalid correspondent bank information | | 100105 | Invalid bank information | | 100106 | Invalid proxy details | | 100107 | Transaction not supported | | 100108 | Account type not supported | | 100201 | Beneficiary name mismatch | | 100202 | Account currency mismatch | | 100301 | Invalid beneficiary details | | 100302 | Invalid special character in beneficiary details | | 100303 | Invalid beneficiary country | | 100401 | Screening error | | 100402 | Regulatory restriction | | 100501 | Insufficient balance | | 100601 | Account closed | | 100602 | Account inactive or dormant | | 100603 | Account under restriction | | 100604 | Beneficiary deceased | | 100701 | Beneficiary requested | | 100702 | Beneficiary bank returned | | 100801 | China local transfer beneficiary validation error | | 100802 | China local transfer order error | | 100803 | Beneficiary account type not supported | | 100804 | China company registration number error | | 100805 | China local transfer processing failure | | 100901 | Recall requested | | 100902 | Client requested | | 101001 | Invalid payment purpose | | 101002 | Wrong amount | | 101003 | Amount exceeds limit | | 101101 | System error | | 101102 | Channel timeout | | 101103 | Bank offline | | 101201 | Other error | | 101202 | Duplicate payment | ### Event examples for `payment_request` ```json payment_request.completed theme={"system"} { "id": "9e9be893-9fee-4916-aca0-403e8e42b99e", "bank_name": "MALAYAN BANKING BERHAD", "bank_swift_code": "MBBESGS2XXX", "bank_account_number": "000123454", "currency": "sgd", "amount": 100, "status": "succeeded", "created_at": "2025-04-06T15:29:51+08:00" } ``` ```json payment_request.failed theme={"system"} { "id": "a03e3915-5ec0-44de-a02b-0af213b62b35", "name": "Isabel Witting", "email": "hitpaydemotest@yopmail.com", "phone": "+6565362368", "amount": "7.65", "currency": "SGD", "is_currency_editable": false, "status": "failed", "purpose": "Purpose_1747900502", "reference_number": "1747900502", "payment_methods": [ "wifi_card_reader" ], "url": "https://securecheckout.staging.hit-pay.com/payment-request/@nit/a03e3915-5ec0-44de-a02b-0af213b62b35/checkout", "redirect_url": "https://google.com", "webhook": "https://webhook.site/dab6a317-9acb-4939-b907-4924b5e144ec", "send_sms": false, "send_email": true, "sms_status": "pending", "email_status": "pending", "allow_repeated_payments": false, "expiry_date": null, "address": { "city": "Gotham", "line1": "a", "state": "N/A", "country": "SG", "postal_code": "77777" }, "line_items": null, "executor_id": null, "created_at": "2025-10-31T14:11:01", "updated_at": "2025-10-31T14:11:13", "staff_id": null, "business_location_id": null, "location": null, "payments": [ { "id": "a03e3915-eae4-4a0f-9357-6d7869f80ea2", "quantity": 1, "status": "failed", "status_reason_code": "withdrawal_count_limit_exceeded", "status_reason": "Withdrawal or limit exceeded. Please use another card.", "buyer_name": "Isabel Witting", "buyer_phone": "+6565362368", "buyer_email": "hitpaydemotest@yopmail.com", "currency": "sgd", "amount": "7.65", "refunded_amount": "0.00", "payment_type": "card_present", "fees": "0.24", "fees_currency": null, "created_at": "2025-10-31T14:11:01", "updated_at": "2025-10-31T14:11:12" } ] } ``` ## Validating Webhook HitPay uses two different salt values depending on the integration. Use the right one for the callback you are handling. ### API-key salt (Developers page) This salt belongs to your business API key and is shown on the **Developers** page alongside your API key. It signs older payment-request and charge callbacks, plus plugin integrations—the API-driven payment flow where an `hmac` value is returned with the payment status. **Used for:** * Payment Request webhook and redirect callbacks * Recurring payment callbacks * Order and checkout callbacks (Shop, Order webhook, Hardware order) * Plugin HMAC validation (Shopify, Wix, Xero) **How it works:** Sort and concatenate the callback parameters, then compute HMAC-SHA256 using the API-key salt. The signature is sent in the `hmac` field in the payload, not in a header. ### Per-webhook salt (Developers → Webhooks) Each webhook endpoint you register under **Developers → Webhooks** has its own salt. This is the salt for **event webhooks** on this page (for example `charge.completed`, `order.updated`). **How it works:** Compute HMAC-SHA256 of the **raw request body** using that webhook's salt. The signature is sent in the `Hitpay-Signature` header. Find the salt on the webhook's detail view in the dashboard after you create the webhook endpoint. ### The differences | | API-key salt | Per-webhook salt | | :- | :- | :- | | **Scope** | One per business API key | One per webhook endpoint | | **Used for** | Payment-request, charge, and plugin callbacks | Event webhooks | | **Signature in** | `hmac` field in the payload | `Hitpay-Signature` header | | **What's signed** | Sorted and concatenated parameters | Raw JSON body | The steps below apply to **event webhooks** and use the per-webhook salt. ### Validate `Hitpay-Signature` 1. **Collect data**: Read the raw JSON body and the `Hitpay-Signature` header from the incoming request. 2. **Prepare key**: Use the salt for that webhook endpoint (from **Developers → Webhooks**), not the API-key salt on the main Developers page. 3. **Compute HMAC**: Generate HMAC-SHA256 over the raw body bytes with that webhook's salt as the key. 4. **Compare signatures**: Compare the computed HMAC to `Hitpay-Signature`. If they match, the request is authentic and unmodified. ```php PHP theme={"system"} function validateWebhook($payload, $signature, $salt) { $computedSignature = hash_hmac('sha256', $payload, $salt); return hash_equals($computedSignature, $signature); } // Usage $payload = file_get_contents('php://input'); $signature = $_SERVER['HTTP_HITPAY_SIGNATURE']; $salt = 'your_webhook_salt_from_dashboard'; if (validateWebhook($payload, $signature, $salt)) { $data = json_decode($payload, true); // Process the event } else { http_response_code(401); exit('Invalid signature'); } ``` ```javascript NodeJS theme={"system"} const crypto = require('crypto'); function validateWebhook(payload, signature, salt) { const computedSignature = crypto .createHmac('sha256', salt) .update(payload) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(computedSignature), Buffer.from(signature) ); } // Usage (Express) app.post('/webhook', express.raw({ type: 'application/json' }), (req, res) => { const payload = req.body; const signature = req.headers['hitpay-signature']; const salt = 'your_webhook_salt_from_dashboard'; if (validateWebhook(payload, signature, salt)) { const data = JSON.parse(payload); // Process the event res.status(200).send('OK'); } else { res.status(401).send('Invalid signature'); } }); ``` # HitPay Payment Request APIs Source: https://docs.hitpayapp.com/apis/guide/getting-started Learn about HitPay's Payment Request APIs and how to integrate various payment methods into your website. # HitPay Payment Request APIs HitPay provides a seamless payment experience for your customers and an easy integration process for developers. With HitPay's API integration, you can start accepting multiple payment methods, including PayNow (Singapore), Visa, Mastercard, GrabPay, Apple Pay, Google Pay, American Express, AliPay, and WeChat Pay, all on a single checkout page hosted on HitPay. ## PayNow Integrations HitPay's PayNow integration allows you to fully automate PayNow acceptance in Singapore, providing instant feedback and webhook capabilities. ## E-Commerce Platform Plugins HitPay also offers plugins for popular e-commerce platforms, eliminating the need for complex API integrations. These platforms include: * Shopify * WooCommerce * Wix * Magento * Prestashop * EasyStore * OpenCart * Ecwid * Xero ## Easy Integration Integrating payments into your existing website using HitPay is simple and can be accomplished with as few as two API calls. Before you start, ensure you have a HitPay account and complete the necessary setup to accept all the supported payment methods. # Handling Failed Payment Requests Source: https://docs.hitpayapp.com/apis/guide/in-person-payments/failed-payments Learn how to handle failed payment requests and error webhooks for in-person payments When a payment fails on the terminal (e.g., card declined, transaction timeout, insufficient funds, or other terminal errors), HitPay will send a failed webhook to your webhook endpoint. This webhook indicates that the payment request has failed and requires proper handling in your application. ## Failed Webhook Behavior When a terminal action fails: 1. **Webhook Triggered**: HitPay automatically sends a webhook to your configured webhook URL with `status=failed` 2. **Payment Request Status Updated**: The payment request status is automatically updated to `failed` in HitPay's system 3. **Error Information**: The webhook includes error details that should be presented to the user ## Failed Webhook Payload When a payment fails on the terminal, HitPay will send a webhook in one of two formats depending on your webhook configuration: ### Format 1: Form-Encoded (Webhook v1) If you're using the `webhook` parameter in the Payment Request API (webhook v1), you'll receive a form-encoded payload with `status=failed` and includes an error message: ``` payment_id=&payment_request_id=92965a20-dae5-4d89-a452-5fdfa382dbe1&reference_number=ABC123&phone=&amount=599.00¤cy=SGD&status=failed&error_message=Card declined&hmac=330c34a6a8fb9ddb75833620dedb94bf4d4c2e51399d346cbc2b08c381a1399c ``` ### Format 2: JSON Event (Webhook Events) If you're using registered webhook events (as described in [Webhooks documentation](/apis/guide/events)), you'll receive a JSON payload with the `payment_request.failed` event: > **Example JSON Event for payment\_request.failed** **Key Fields in JSON Event Format:** * `status`: Will be `"failed"` for failed payment requests * `payments[].status`: Will be `"failed"` for failed payments * `payments[].status_reason`: Human-readable error message explaining the failure * `payments[].status_reason_code`: Machine-readable error code (e.g., `"withdrawal_count_limit_exceeded"`) **Webhook Headers for JSON Events:** When receiving JSON event webhooks, check these headers: * `Hitpay-Event-Type`: Will be `"failed"` for failed events * `Hitpay-Event-Object`: Will be `"payment_request"` for payment request events * `Hitpay-Signature`: SHA-256 HMAC signature for validation (see [Webhook Validation](/apis/guide/events#validating-webhook)) ## Implementation Guidelines To properly handle failed payment requests in your application, you need to handle both webhook formats: ### Handling Form-Encoded Webhooks (Webhook v1) ```php PHP theme={"system"} // In your webhook handler $payload = $_POST; // Form-encoded payload if ($payload['status'] === 'failed') { // Handle failed payment $errorMessage = $payload['error_message'] ?? 'Payment failed'; $paymentRequestId = $payload['payment_request_id']; // Update your order/payment status updateOrderStatus($paymentRequestId, 'failed'); // Notify your client/UI about the failure notifyClientFailure($paymentRequestId, $errorMessage); // Display error to user // You should show the error_message to the user } ``` ```javascript JavaScript theme={"system"} // In your webhook handler (Node.js example) app.post('/webhook', express.urlencoded({ extended: true }), (req, res) => { const payload = req.body; // Form-encoded payload if (payload.status === 'failed') { const errorMessage = payload.error_message || 'Payment failed'; const paymentRequestId = payload.payment_request_id; // Update your order/payment status updateOrderStatus(paymentRequestId, 'failed'); // Notify your client/UI about the failure notifyClientFailure(paymentRequestId, errorMessage); // Display error to user // You should show the error_message to the user } res.status(200).send('OK'); }); ``` ### Handling JSON Event Webhooks ```php PHP theme={"system"} // In your webhook handler for JSON events $headers = getallheaders(); $eventType = $headers['Hitpay-Event-Type'] ?? ''; $eventObject = $headers['Hitpay-Event-Object'] ?? ''; $payload = json_decode(file_get_contents('php://input'), true); // Check if this is a payment_request.failed event if ($eventObject === 'payment_request' && $eventType === 'failed') { // Extract error message from payments array $errorMessage = 'Payment failed'; if (!empty($payload['payments']) && is_array($payload['payments'])) { $failedPayment = $payload['payments'][0]; $errorMessage = $failedPayment['status_reason'] ?? $failedPayment['status_reason_code'] ?? 'Payment failed'; } $paymentRequestId = $payload['id']; // Update your order/payment status updateOrderStatus($paymentRequestId, 'failed'); // Notify your client/UI about the failure notifyClientFailure($paymentRequestId, $errorMessage); // Display error to user // You should show the status_reason to the user } ``` ```javascript JavaScript theme={"system"} // In your webhook handler for JSON events (Node.js example) app.post('/webhook', express.json(), (req, res) => { const eventType = req.headers['hitpay-event-type']; const eventObject = req.headers['hitpay-event-object']; const payload = req.body; // JSON payload // Check if this is a payment_request.failed event if (eventObject === 'payment_request' && eventType === 'failed') { // Extract error message from payments array let errorMessage = 'Payment failed'; if (payload.payments && payload.payments.length > 0) { const failedPayment = payload.payments[0]; errorMessage = failedPayment.status_reason || failedPayment.status_reason_code || 'Payment failed'; } const paymentRequestId = payload.id; // Update your order/payment status updateOrderStatus(paymentRequestId, 'failed'); // Notify your client/UI about the failure notifyClientFailure(paymentRequestId, errorMessage); // Display error to user // You should show the status_reason to the user } res.status(200).send('OK'); }); ``` ## Displaying Error Messages Always present the error message from the webhook to your users. This helps them understand why the payment failed: * **For Form-Encoded Webhooks**: Use the `error_message` field * **For JSON Event Webhooks**: Use the `payments[].status_reason` field (or `status_reason_code` as fallback) Common error messages you may encounter: * **Card Declined**: "Your card was declined. Please try a different payment method." * **Insufficient Funds**: "Insufficient funds. Please check your account balance." * **Timeout**: "Payment processing timed out. Please try again." * **Terminal Error**: "Terminal error occurred. Please contact staff." * **Limit Exceeded**: "Withdrawal or limit exceeded. Please use another card." ## Best Practices 1. **Update Payment Request Status**: Mark the payment request as failed in your system when you receive the failed webhook. 2. **User Experience**: * Display a clear error message to the user on your POS/kiosk interface * Optionally allow the user to retry the payment * Update any pending transaction indicators 3. **Security**: Always validate webhooks using HMAC verification before processing failed status updates. Never trust unverified webhook payloads. ## Common Failure Scenarios Failed webhooks can be triggered by various terminal errors: * **Card Declined**: Customer's card was declined by the bank * **Insufficient Funds**: Customer's account doesn't have enough balance * **Transaction Timeout**: Payment took too long to process * **Card Reader Error**: Physical issue with the card reader * **Network Issues**: Terminal lost connection during payment * **Cancelled by User**: Customer cancelled the payment on the terminal * **Invalid Card**: Card details are invalid or expired ## Important Notes > [!WARNING] > > Always validate webhooks using HMAC verification before processing failed status updates. Never trust unverified webhook payloads. > [!NOTE] > > The failed webhook is sent automatically by HitPay whenever a terminal action fails. You do not need to poll the API for payment status - simply listen to the webhook and handle the response accordingly. ## Related Documentation * [In-Person Payments Overview](/apis/guide/in-person-payments/overview) - Learn the basics of in-person payments * [Testing in Sandbox](/apis/guide/in-person-payments/testing) - Test failed payment scenarios in Sandbox * [Webhook Validation](/apis/guide/events#validating-webhook) - Learn how to validate webhook signatures # Overview Source: https://docs.hitpayapp.com/apis/guide/in-person-payments/overview Accept in-person card payments and QR payments using HitPay terminal devices These APIs are designed to enable a variety of use cases where in-person payments are necessary. Here are a few examples of how this API can be used: * Self-Service Kiosk * Point of Sale * Vending Machines ### Terminal Devices Supported * [WisePOS E](/pos/readers/wisepose) * [FlexiPOS](/pos/readers/flexipos) (Stripe S700 or Stripe S710) * [HitPay All-in-One Ingenico S1F2](/pos/readers/all-in-one-S1F2) * [HitPay All-in-One Ingenico DX4000](/pos/readers/all-in-one-dx4000) * [Verifone V660P (All-in-One)](/pos/readers/all-in-one-v660p) ### How It Works ![Card reader APIs flow](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/in-person-pr.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=6936754d0b9471ac0073d3d024da7a1f) **1. Client initiates payment** Your client device (e.g., POS, Kiosk) sends a request to your backend server to initiate the payment process. **2. Backend calls Payment Request API** Your backend server calls the Payment Request API with the payment method set as `wifi_card_reader`. **3. HitPay activates the card reader** HitPay initiates the payment process on the card reader that is already connected to the Wi-Fi. **4. Customer completes payment** Your customer presents their card to the card reader and completes the payment process. **5. Webhook sent** HitPay sends a webhook to your backend server with the payment status information. **6. Order updated** Your backend server receives the webhook and updates the order status accordingly. ## Setup Your Reader Before you can use the In-Person Payments using Payment Requests API, you'll need to order a card reader and complete the setup process. **1. Order a card reader** Follow the [card reader ordering guide](/pos/overview#card-readers). **2. Register the reader (WisePOS E / FlexiPOS / Verifone V660P only)** Follow the [registration guide](https://www.youtube.com/watch?v=PGbBwIjd9OY). ## Displaying Payments on the Terminal Please ensure your terminal is in **Standalone mode**. Standalone mode is a mode where you can log in via the HitPay app. > [!NOTE] > > **Default modes by device:** > > * **HitPay All-in-One Ingenico S700**: defaults to Standalone mode > * **WisePOS E**: defaults to Static mode. To switch to Standalone mode, please contact [support@hit-pay.com](mailto:support@hit-pay.com) to request. **After switching your terminal to Standalone mode:** **1. Open the menu** On the login screen, tap the button on the top left corner. **2. Select In-Person Payment API** Select **In-Person Payment API** from the menu. **3. Terminal is ready** The terminal will now display the In-Person Payment API screen, allowing you to accept card and QR payments. ![In-Person Payment API Display](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/inpersonapi.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=397edc0dd87aa3311f8930d59cbf464b) **When in this mode:** * The display will show the HitPay logo. * If a QR payment method is selected, the relevant QR code will be displayed for the customer to scan. * If a card payment method is selected, the display will show instructions to tap, insert, or swipe the card. ![In-Person Payment API Display](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/inpersonapi2.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=00f75d1b03e9a3687facb6906fee2190) > [!NOTE] > > To quit the In-Person Payment API mode, please enter the PIN: `07139`. ### Ingenico DX4000 For HitPay All-in-One Ingenico DX4000 Terminal in Philippines, you have two options: 1. To accept **QR payments only**, follow the instructions above. No login is needed. 2. To accept **both QR and card payments**, log in to your HitPay account, go to **Settings > In-person Payment** and key in PIN: `8888` (use the same PIN to exit the mode). ## Payment Methods The in-person payment API supports two main payment methods: > **Card Payments** > > Accept physical card payments (credit/debit cards) using the card reader. > > **Fees:** Considered as an in-person payment. In-person fees apply. > **QR Payments** > > Accept QR code payments where customers scan the QR code displayed on the card reader screen. > > **Fees:** Considered as an online payment. Online fees apply. [Learn more about pricing](https://hitpayapp.com/sg/pricing) ## Create Payment Requests via APIs Once you have all the details from the client and are ready to collect payments, use this API to create a payment request. > [!NOTE] > > **Platform partners:** If you're a platform creating in-person payment requests on behalf of sub-account partners, include your `X-PLATFORM-KEY` header alongside the sub-account's `X-BUSINESS-API-KEY`. See [Platform APIs](/apis/guide/platform-apis#in-person-payments) for details. **Endpoint** ``` POST https://api.sandbox.hit-pay.com/v1/payment-requests ``` **Card Payments** ## Initiating Card Payments To initiate a card payment, follow these steps: **1. Create Payment Request** Use the Payment Request API with `payment_methods[]` set to `wifi_card_reader`. **2. Card Reader Activation** The card reader will automatically activate and display "Ready for Payment". **3. Customer Interaction** Ask your customer to insert, tap, or swipe their card on the reader. **4. Payment Processing** The card reader will process the payment and display the result. **5. Webhook Notification** You'll receive a webhook with the payment status. ### Query Parameters > [!NOTE] > > **Required fields:**`amount`, `currency` | Parameter | Description | Example | | - | - | - | | amount | The amount related to the payment | 2500.00 | | payment\_methods\[] | Indicate that the request is for in-person payments using a Wi-Fi card reader | wifi\_card\_reader | | currency | In-Person payments only support the home currency of your business | SGD | | wifi\_terminal\_id | The reader ID found in your dashboard under **POS > Terminals**. For Ingenico DX4000 PH terminals, use the last 8 digits of your terminal SN located at the back of the terminal. | `tmr_123123123` (WisePOS E), `MD9Q2493` (Ingenico PH), `S1F2-001582391283` (All-in-One S1F2) | ```php PHP theme={"system"} $client = new http\Client; $request = new http\Client\Request; $request->setRequestUrl('https://api.sandbox.hit-pay.com/v1/payment-requests'); $request->setRequestMethod('POST'); $body = new http\Message\Body; $body->append(new http\QueryString(array( 'amount' => '599', 'currency' => 'SGD', 'payment_methods[]' => 'wifi_card_reader', 'wifi_terminal_id' => 'tmr_123123123'))); $request->setBody($body); $request->setOptions(array()); $request->setHeaders(array( 'X-BUSINESS-API-KEY' => 'meowmeowmeow', 'Content-Type' => 'application/x-www-form-urlencoded', 'X-Requested-With' => 'XMLHttpRequest' )); $client->enqueue($request)->send(); $response = $client->getResponse(); echo $response->getBody(); ``` **QR Payments** ## Initiating QR Payments > [!WARNING] > > In-person QR payments using payment request APIs are currently in public BETA To initiate a QR payment, follow these steps: **1. Create Payment Request** Use the Payment Request API with `payment_methods[]` set to any supported QR payment method and `generate_qr` set to `true`. **2. QR Code Display** The card reader will automatically display a QR code on its screen. **3. Customer Scanning** Ask your customer to scan the QR code using their mobile payment app (e.g., PayNow, GrabPay, etc.). **4. Payment Processing** The customer completes the payment through their mobile app. **5. Webhook Notification** You'll receive a webhook with the payment status. ### Supported QR Payment Methods For QR payments, you need to use one of the supported QR payment methods. See the complete list of [supported QR payment methods](/apis/guide/embedded-qr-code-payments#supported-methods). > [!WARNING] > > QRPH payment method is currently not supported through in-person payment request APIs ### Query Parameters > [!NOTE] > > **Required fields:**`amount`, `currency` | Parameter | Description | Example | | - | - | - | | amount | The amount related to the payment | 2500.00 | | payment\_methods\[] | One of the supported QR payment methods (e.g., paynow\_online) | paynow\_online | | currency | In-Person payments only support the home currency of your business | SGD | | wifi\_terminal\_id | The reader ID found in your dashboard under **POS > Terminals**. For Ingenico DX4000 PH terminals, use the last 8 digits of your terminal SN located at the back of the terminal. | `tmr_123123123` (WisePOS E), `MD9Q2493` (Ingenico PH), `S1F2-001582391283` (All-in-One S1F2) | | generate\_qr | Set to `true` to generate QR code data | true | ```php PHP theme={"system"} $client = new http\Client; $request = new http\Client\Request; $request->setRequestUrl('https://api.sandbox.hit-pay.com/v1/payment-requests'); $request->setRequestMethod('POST'); $body = new http\Message\Body; $body->append(new http\QueryString(array( 'amount' => '599', 'currency' => 'SGD', 'payment_methods[]' => 'paynow_online', 'generate_qr' => 'true', 'wifi_terminal_id' => 'tmr_123123123'))); $request->setBody($body); $request->setOptions(array()); $request->setHeaders(array( 'X-BUSINESS-API-KEY' => 'meowmeowmeow', 'Content-Type' => 'application/x-www-form-urlencoded', 'X-Requested-With' => 'XMLHttpRequest' )); $client->enqueue($request)->send(); $response = $client->getResponse(); echo $response->getBody(); ``` ### Response The response will include a `qr_code_data` object, which contains the data to be converted into a scannable QR code (`qr_code`). > **Example Response for QR Payment Request** > > ```json theme={"system"} > { > "id": "9c262fb5-f3cd-4187-8c3e-fbe20730b9c6", > "amount": "599.00", > "currency": "sgd", > "status": "pending", > "payment_methods": [ > "paynow_online" > ], > "wifi_terminal_id": "tmr_123123123", > "qr_code_data": { > "qr_code": "00020101021226550009SG.PAYNOW010120210201605883W030100414202405281445315204000053037025406599.005802SG5905Nitin6009Singapore62290125DICNP17168782314914MWULPX63043561", > "qr_code_expiry": null > } > } > ``` > [!NOTE] > > The card reader will automatically determine whether to show a QR code or activate card reading based on the available payment methods and customer preference. ## Handle Webhooks After the payment is processed, HitPay sends a webhook to your server with the payment status. ### Register Your Webhook To receive payment notifications, register a webhook URL from your HitPay Dashboard: **1. Open Webhook Endpoints** Navigate to **Developers > Webhook Endpoints** in your dashboard. **2. Create a new webhook** Click on **New Webhook**, enter a name and your webhook URL. **3. Subscribe to events** Select the `payment_request.completed` event. **4. Save** Save your webhook configuration. ![Webhook Registration](https://mintcdn.com/hitpay/zBfEahTCz9U1NPmL/images/webhook-events.png?fit=max\&auto=format\&n=zBfEahTCz9U1NPmL\&q=85\&s=ff63dad346c4a25766b3455aa35dbc28) ### Webhook Payload When a payment is completed, HitPay sends a JSON payload to your registered webhook URL with the following headers: | HTTP Header | Description | | - | - | | Hitpay-Signature | HMAC-SHA256 signature of the JSON payload, using your salt value | | Hitpay-Event-Type | `completed` | | Hitpay-Event-Object | `payment_request` | | User-Agent | `HitPay v2.0` | ### Sample Webhook Payload ```json theme={"system"} { "id": "9c262fb5-f3cd-4187-8c3e-fbe20730b9c6", "name": "John Doe", "email": "john@example.com", "amount": "599.00", "currency": "SGD", "status": "completed", "reference_number": "ORDER123", "payment_methods": ["wifi_card_reader"], "created_at": "2024-05-28T14:37:11", "updated_at": "2024-05-28T14:38:25", "payments": [ { "id": "9c262fb5-a1b2-4c3d-8e9f-123456789abc", "status": "succeeded", "currency": "sgd", "amount": "599.00", "refunded_amount": "0.00", "payment_type": "card_present", "fees": "2.50", "created_at": "2024-05-28T14:37:11", "updated_at": "2024-05-28T14:38:25" } ] } ``` ### Validating the Webhook To ensure the webhook is authentic, validate the `Hitpay-Signature` header: ```php PHP theme={"system"} function validateWebhook($payload, $signature, $salt) { $computedSignature = hash_hmac('sha256', $payload, $salt); return hash_equals($computedSignature, $signature); } // Usage $payload = file_get_contents('php://input'); $signature = $_SERVER['HTTP_HITPAY_SIGNATURE']; $salt = 'your_salt_from_dashboard'; if (validateWebhook($payload, $signature, $salt)) { $data = json_decode($payload, true); // Process the payment confirmation // Mark order as paid } else { http_response_code(401); exit('Invalid signature'); } ``` ```javascript NodeJS theme={"system"} const crypto = require('crypto'); function validateWebhook(payload, signature, salt) { const computedSignature = crypto .createHmac('sha256', salt) .update(payload) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(computedSignature), Buffer.from(signature) ); } // Usage in Express app.post('/webhook', (req, res) => { const payload = JSON.stringify(req.body); const signature = req.headers['hitpay-signature']; const salt = 'your_salt_from_dashboard'; if (validateWebhook(payload, signature, salt)) { // Process the payment confirmation // Mark order as paid res.status(200).send('OK'); } else { res.status(401).send('Invalid signature'); } }); ``` ## Next Steps > **[Handle Failed Payments](/apis/guide/in-person-payments/failed-payments)** > > Learn how to handle failed payment requests and retry logic. > **[Test in Sandbox](/apis/guide/in-person-payments/testing)** > > Get started with testing your integration in the Sandbox environment. ## FAQs > **What about the 'webhook' parameter in the API?** > > The `webhook` parameter in the payment request API is **deprecated** and will be removed in a future version. > > **Why the change?** > > * The new registered webhook system supports JSON payloads with richer data > * You can subscribe to multiple event types (not just payment completion) > * Centralized management from your dashboard > * Better scalability - one webhook URL handles all your payment requests > > **Migration:** > > 1. Register your webhook URL in **Developers > Webhook Endpoints** > 2. Subscribe to `payment_request.completed` event > 3. Update your webhook handler to accept JSON payloads > 4. Remove the `webhook` parameter from your API calls > **Does the in-person payments API support the Wisepad3 reader?** > > No, these APIs only work with Wi-Fi readers. > **Can I connect a Bluetooth printer to my Wi-Fi terminal?** > > No, you cannot connect a Bluetooth printer to the Wi-Fi terminal. > **How does the card reader know whether to show QR code or accept card payment?** > > The card reader automatically detects the payment method. When you create a payment request, the reader will display a QR code first. If the customer prefers to pay with a card, they can simply insert or tap their card on the reader. > **Which QR payment methods are supported?** > > The supported QR payment methods depend on your business location and the payment networks available in your region. Common methods include PayNow (Singapore), Ingenicos (PHP), PromptPay (Thailand), and other local QR payment schemes. See the complete list of [supported QR payment methods](/apis/guide/embedded-qr-code-payments#supported-methods). > \[!WARNING] QRPH payment method is currently not supported through in-person payment request APIs > **Can I test the APIs in a sandbox using a test card or simulator?** > > Yes, you can test in Sandbox! However, the APIs do not support a virtual simulator. To test successfully: > > * **For Card Payments**: You'll need a physical test card. Contact HitPay support to obtain test cards for your region. > * **For QR Payments**: You can test with QR code payments using your mobile payment app, as these don't require physical cards. > > All testing must be done with real terminals connected to the Sandbox environment. See the [Testing in Sandbox](/apis/guide/in-person-payments/testing) page for detailed instructions. # Testing in Sandbox Source: https://docs.hitpayapp.com/apis/guide/in-person-payments/testing Learn how to test in-person payment integrations in the HitPay Sandbox environment Before moving to production, you should thoroughly test your in-person payment integration in the Sandbox environment. This guide will walk you through the testing process for both card and QR code payments. ## Prerequisites 1. **Sandbox API Keys**: Obtain your Sandbox API key and Salt value from your HitPay dashboard * Navigate to your Sandbox account settings * Go to **API Keys** section * Copy your **Business API Key** and **Salt** value 2. **Terminal Setup**: Ensure your Wi-Fi terminal is properly configured and connected * Follow the [Setup Your Reader](/apis/guide/in-person-payments/overview#setup-your-reader) instructions * Verify the terminal is in **In-Person Payment API** mode * Confirm the terminal is connected to the internet 3. **Webhook Endpoint**: Set up a test webhook endpoint to receive payment notifications * Use a tool like [webhook.site](https://webhook.site) for quick testing * Or set up a local development endpoint with [ngrok](https://ngrok.com) for tunneling ## Testing Successful Card Payments To test successful card payments in Sandbox, you need a **physical test card**: 1. **Obtain Test Cards**: Contact HitPay support to request physical test cards for your region * Test cards simulate various payment scenarios * Different cards test different card networks (Visa, Mastercard, etc.) 2. **Test Payment Flow**: * Create a payment request using the Sandbox API endpoint: `https://api.sandbox.hit-pay.com/v1/payment-requests` * Use `wifi_card_reader` as the payment method * Specify your test terminal ID (`wifi_terminal_id`) * Include your webhook URL * Present the physical test card to the terminal * Complete the payment on the terminal * Verify the webhook is received with `status=completed` 3. **Verify Webhook**: Check that your webhook endpoint receives: * Payment status as `completed` * Correct `payment_request_id` * Valid HMAC signature ## Testing QR Code Payments QR code payments are easier to test as they don't require physical test cards: 1. **Create QR Payment Request**: * Use a supported QR payment method (e.g., `paynow_online` for Singapore) * Set `generate_qr` to `true` * Use your Sandbox API endpoint 2. **Scan QR Code**: * The terminal will display the QR code * Use a mobile payment app that supports the QR payment method * Scan the QR code and complete the payment 3. **Verify Payment**: * Check your webhook endpoint receives the successful payment notification * Verify the payment details match your request ## Testing Failed Payments To test failed payment scenarios: 1. **Card Decline Testing**: * Use a test card configured to decline (if available from HitPay) * Attempt a payment that will be declined * Verify your webhook handler receives `status=failed` * Check that the `error_message` is properly displayed * See [Handling Failed Payment Requests](/apis/guide/in-person-payments/failed-payments) for detailed implementation 2. **Timeout Testing**: * Simulate network issues or delays * Allow payment to timeout * Verify failed webhook is received 3. **Cancellation Testing**: * Start a payment on the terminal * Cancel the payment before completion * Verify your application handles the cancellation properly ## Testing Checklist Before moving to production, ensure you've tested: * [ ] Successful card payment flow * [ ] Successful QR code payment flow * [ ] Failed payment webhook handling * [ ] Webhook HMAC signature validation * [ ] Error message display to users * [ ] Payment request status updates in your system * [ ] Terminal connection and activation * [ ] Multiple payment methods (if applicable) ## Important Testing Notes > [!WARNING] > > In-person payment APIs in Sandbox require physical hardware (terminals and test cards or QR payment apps). There is currently no simulator or virtual testing environment available. All testing must be done with real terminals connected to the Sandbox environment. > [!NOTE] > > For testing QR payments, you can use your personal mobile payment apps (if they support the payment method) as long as you're using the Sandbox environment. Transactions won't result in actual charges in Sandbox. ## Getting Help with Testing If you need assistance with testing: * **Test Cards**: Contact HitPay support to obtain physical test cards * **Terminal Issues**: Check terminal connectivity and ensure it's properly registered * **Webhook Testing**: Use [webhook.site](https://webhook.site) for easy webhook inspection * **Support**: Reach out to HitPay support team through your dashboard ## Related Documentation * [In-Person Payments Overview](/apis/guide/in-person-payments/overview) - Learn the basics of in-person payments * [Handling Failed Payment Requests](/apis/guide/in-person-payments/failed-payments) - Implement failed payment handling # HitPay MCP Server Source: https://docs.hitpayapp.com/apis/guide/mcp-server Connect Claude, Codex, Cursor, and other MCP clients to your HitPay business data. Query sales, transactions, payouts, balances, and BillPay bills and vendors, or create payment links and invoices from an AI assistant. Authenticates with your HitPay login over OAuth. The HitPay MCP Server is a hosted [Model Context Protocol](https://modelcontextprotocol.io) server at `https://mcp.hit-pay.com`. It gives AI assistants such as Claude access to your HitPay business data: you can query sales, transactions, payouts, balances, and BillPay bills and vendors in natural language, and create payment links, invoices, products, and recurring plans. Authentication uses OAuth. You sign in with your HitPay dashboard login and authorize the connection for one business. API keys are not involved, and each connection is scoped to the business it was authorized for. > [!NOTE] > > Looking to **build a payment integration** with AI instead? That's the [Claude Code Plugin](/apis/guide/claude-code-plugin), a developer tool that connects Claude to the HitPay **API** using your API key. The MCP Server on this page connects an AI assistant to your **business data** using your HitPay login. ## Setup All clients connect to the same endpoint: ``` https://mcp.hit-pay.com/ ``` Whichever client you use, connecting opens the HitPay login page in your browser. Sign in, pick which business to connect under **Connect as**, and approve. ![HitPay authorization screen showing the requested permission and the business picker](https://mintcdn.com/hitpay/Ed-KWI7XpH4maDrk/images/mcp-server-authorize.png?fit=max\&auto=format\&n=Ed-KWI7XpH4maDrk\&q=85\&s=c69c6d2049c18f1774ae3d4949d3d0b6) > [!WARNING] > > Only users with the **owner** or **admin** role on a business can authorize a connection. Other team-member roles (such as staff or cashier) cannot connect. ### Claude HitPay is listed in the [Claude connector directory](https://claude.ai/directory/connectors/hitpay), so no URL entry is needed: 1. Open the **Directory** in [claude.ai](https://claude.ai) or the Claude desktop app and select **Connectors** 2. Search for **HitPay** and add it — or go straight to the [HitPay listing](https://claude.ai/directory/connectors/hitpay) 3. Click **Connect**, sign in, and approve access ![HitPay listed in the Claude connector directory](https://mintcdn.com/hitpay/HKMH2GKufkeJ5d3o/images/mcp-server-directory.png?fit=max\&auto=format\&n=HKMH2GKufkeJ5d3o\&q=85\&s=0085a8dbe992e94b4759584d50f3e7d5) The HitPay tools are then available in Claude's tool menu. ### Claude Code ```bash theme={"system"} claude mcp add --transport http hitpay https://mcp.hit-pay.com/ ``` Then run `/mcp` inside Claude Code, select **hitpay**, and choose **Authenticate** to complete the browser sign-in. ![Authentication successful page after approving access in the browser](https://mintcdn.com/hitpay/Ed-KWI7XpH4maDrk/images/mcp-server-auth-success.png?fit=max\&auto=format\&n=Ed-KWI7XpH4maDrk\&q=85\&s=60bd0fe7a8459c20871a4b8dc42f6522) ### Codex ```bash theme={"system"} codex mcp add hitpay --url https://mcp.hit-pay.com/ ``` Complete the browser sign-in when Codex prompts you. ### Cursor Add the server to `~/.cursor/mcp.json` (or `.cursor/mcp.json` in a project), then complete the sign-in when Cursor prompts you: ```json theme={"system"} { "mcpServers": { "hitpay": { "url": "https://mcp.hit-pay.com/" } } } ``` ### Other clients Any MCP client that supports the **streamable HTTP** transport and **OAuth 2.0 with PKCE and dynamic client registration** can connect. Discovery metadata is published at `https://mcp.hit-pay.com/.well-known/oauth-authorization-server`. Native and desktop clients that use loopback (`localhost`) redirect URIs work without extra configuration; web-based clients other than claude.ai are not currently allowlisted for registration. ## Example prompts Once connected, the assistant can answer questions and perform tasks like: * "What were my total sales last month, and how do they compare to the month before?" * "Show my top-selling products this quarter" * "List my recent transactions above SGD 100" * "When is my next payout, and what's my current balance?" * "Which payment methods do I have enabled?" * "Create a payment link for SGD 49.90 for a consultation session" * "Invoice [acme@example.com](mailto:acme@example.com) SGD 1,200 for March services and email it to them" * "Which bills are waiting for approval?" * "List my vendors" ## Available tools The server exposes 24 tools for every connected business: 20 read tools and 4 create tools. Businesses with [BillPay](/finance/bill-pay/overview) also get 4 extra read tools for bills and vendors. | Category | Tools | | - | - | | **Sales & analytics** | `get_sales_summary`, `get_top_products`, `get_sales_by_payment_method`, `get_sales_by_category`, `get_transactions_volume`, `get_channel_distribution`, `get_growth_indicator` | | **Transactions** | `list_charges`, `get_charge_details`, `get_charge_refunds` | | **Payouts & balances** | `list_payouts`, `get_payout_schedule`, `get_balances` | | **Commerce records** | `list_orders`, `list_invoices`, `list_payment_links`, `get_payment_link` | | **BillPay** | `list_bills`, `get_bill`, `list_vendors`, `get_vendor` — shown only when the business has BillPay | | **Create** | `create_payment_link`, `create_invoice`, `create_product`, `create_recurring_plan` | | **Account** | `get_payment_methods`, `get_verification_status`, `get_integrations` | The assistant selects tools automatically based on your prompt. You don't call them directly. Bills awaiting approval include an `approve_url` that opens the bill in the HitPay dashboard. Vendor bank details are not returned. ### Excluded operations The server does not expose: * Refunds, or cancelling and modifying transactions * Payout or transfer operations * Submitting, approving, rejecting, funding, or paying bills * Changes to account settings, payment methods, or team members The only write operations are the four `create_*` tools listed above; everything else is read-only. ## Security * **OAuth 2.0** authorization code flow with PKCE. You approve access on `dashboard.hit-pay.com`, and your password is never shared with the AI assistant or client * **Business-scoped tokens**: a connection can only see the business it was authorized for * **Owner and admin only**: other team-member roles cannot authorize a connection * **Rate limited** to 30 requests per minute per business * **Revocable**: remove the connector from your MCP client to stop it making new requests ## Frequently Asked Questions > **Do I need an API key?** > > No. The MCP Server authenticates with your HitPay account login via OAuth. API keys are only used by the developer tools ([Claude Code Plugin](/apis/guide/claude-code-plugin), [Agent Skills](/apis/guide/ai-skills), and the [CLI](/apis/guide/cli)). > **How is this different from the Claude Code Plugin's MCP server?** > > Both use the Model Context Protocol, but they serve different audiences. The **MCP Server** (this page) is hosted by HitPay, authenticates with your account login, and is for querying and operating your business from an AI assistant. The **Claude Code Plugin** runs locally inside Claude Code, authenticates with an API key, and is for developers building payment integrations. It exposes integration-focused API tools and code-generation skills. > **Is it safe to connect to my live business?** > > The server exposes no destructive operations: it cannot refund, cancel, transfer money, pay bills, or change settings. The only writes are creating payment links, invoices, products, and recurring plans, all of which are visible in your dashboard and can be deactivated there. For bills awaiting approval, it returns a dashboard `approve_url` instead of approving the bill. > **Can my team members connect?** > > Team members with the **admin** role can connect, in addition to the account owner. Other roles cannot authorize a connection. Tokens are always scoped to the single business that was authorized. > **Does it work with the sandbox environment?** > > Not yet. The MCP Server is currently available for live accounts at `mcp.hit-pay.com` only. > **Which AI assistants can I use?** > > Claude (web and desktop), Claude Code, Codex, and Cursor are covered above. Any other native MCP client that supports the streamable HTTP transport with OAuth and loopback redirects also works. ## Resources > **[Claude Code Plugin](/apis/guide/claude-code-plugin)** > > Build payment integrations with live API access > **[Agent Skills](/apis/guide/ai-skills)** > > Code generation for Cursor, Copilot, and Windsurf > **[HitPay CLI](/apis/guide/cli)** > > Drive the API from your terminal and CI pipelines > **[Model Context Protocol](https://modelcontextprotocol.io)** > > Learn more about MCP # HitPay Meta Muse Connector Source: https://docs.hitpayapp.com/apis/guide/meta-muse Connect HitPay in Meta Muse via official Connectors or a Custom Connector backup. Create payment links, PayNow and SEA checkouts, invoices, and view charges. To connect **HitPay to Meta Muse**, use the official **HitPay** connector in Muse **Connectors** (ask Muse to connect HitPay, or **Settings → Connectors → HitPay**, then authorize when prompted). If HitPay is not listed yet, use the **[Custom Connector backup](#backup-hitpay-custom-connector-in-muse)** with a Business API key and the paste prompt below. Once connected, you can create **payment links** (including **PayNow** and other **Southeast Asia** methods), **invoices**, products, subscription plans, and **list or check charges** — not refunds or payouts. > [!NOTE] > > **Recommended:** Official **HitPay** in Muse **Connectors** (Meta-reviewed directory connector). **Backup:** [Custom Connector](#backup-hitpay-custom-connector-in-muse) with `X-BUSINESS-API-KEY` and the paste prompt — for private setups or when the directory listing is not visible yet. There is no public web URL for the Muse listing; you connect from inside Muse. ## How to connect HitPay in Meta Muse The official **HitPay Meta Muse connector** is listed in Muse's **Connectors** directory. Meta reviews directory connectors; you do not need to paste a system prompt or manage API keys for this path. **1. Open Connectors in Muse** Either ask Muse something like **"Connect HitPay"**, or go to **Settings → Connectors**, find **HitPay**, and choose **Connect**. **2. Authorize HitPay** Follow the steps Muse shows to authorize HitPay (for example sign-in or approval prompts). Use a [HitPay account](https://dashboard.hit-pay.com) with access to the business you want to manage. **3. Try an example ask** Once connected, ask Muse to create a payment link, list charges, or create an invoice — see [What you can do with HitPay in Muse](#what-you-can-do-with-hitpay-in-muse). > [!TIP] > > Connector availability can roll out by **region** or **Muse client**. If you do not see **HitPay** under Connectors, use the [Custom Connector backup](#backup-hitpay-custom-connector-in-muse) or check again after Meta's rollout reaches your account. ## What you can do with HitPay in Muse After you connect the **HitPay Muse connector**, you can use natural language to: * Create **payment links** and checkout URLs (cards and local methods your account supports) * Create **PayNow** and other **SEA** payment requests — for example PayNow (`paynow_online`), FPX, GCash, and GrabPay (see [payment methods reference](/apis/guide/payment-methods-reference) and [online payments](/apis/guide/online-payments)) * Create **invoices**, **products**, and **subscription plans** * **List charges** and check **payment request** status ### Recommended use (safe create + read) Like other HitPay AI surfaces ([MCP Server](/apis/guide/mcp-server), [AI developer tools](/apis/guide/ai-developer-tools)), use Muse for **creating** payment requests, invoices, products, and subscription plans and **reading** charges and status — not for refunds, payouts, or destructive money moves. For refunds, transfers, team admin, or account settings, use the [HitPay Dashboard](https://dashboard.hit-pay.com). ### Example asks * "Create a PayNow payment link for SGD 25 for a workshop deposit." * "Create an invoice for SGD 150 due in 7 days for [jane@example.com](mailto:jane@example.com)." * "List my last 10 charges." * "What's the status of my latest payment request?" ## Backup: HitPay Custom Connector in Muse Use the **HitPay Muse Custom Connector** only when the **official HitPay connector** is not available or you need a **private** API-key setup. Muse calls the HitPay REST API using the [OpenAPI spec](https://docs.hitpayapp.com/openapi.json). This path uses **`X-BUSINESS-API-KEY`**, not the Muse Connectors authorization flow. ### Authentication and environments | Setting | Value | | - | - | | **Header** | `X-BUSINESS-API-KEY` (from HitPay Dashboard → **API Keys**) | | **Sandbox** | `https://api.sandbox.hit-pay.com` | | **Live** | `https://api.hit-pay.com` | | **OpenAPI** | [https://docs.hitpayapp.com/openapi.json](https://docs.hitpayapp.com/openapi.json) | | **Docs** | [docs.hitpayapp.com](https://docs.hitpayapp.com) · [llms.txt](https://docs.hitpayapp.com/llms.txt) | Southeast Asia payment methods (via `payment_methods` on create calls) include PayNow (`paynow_online`), FPX, GCash, GrabPay, cards, and other methods enabled on your account. > [!WARNING] > > Store the API key only in Muse's **Secure Credentials Store** when prompted. Never paste the key into chat or into the connector prompt text. ### Merchant setup (4 steps) **1. Create an API key** In the HitPay Dashboard, open **API Keys**. Prefer **sandbox** first ([sandbox dashboard](https://dashboard.sandbox.hit-pay.com)). **2. Add the Custom Connector prompt** Paste the [full prompt](#copy-paste-muse-custom-connector-prompt) below into Muse as Custom Connector / system instructions. **3. Save credentials securely** When Muse asks for credentials, add your Business API key to Muse's **Secure Credentials Store** only. **4. Try an example ask** Use one of the [custom connector example asks](#example-asks-custom-connector). Switch the base URL to live when you are ready for production. > [!TIP] > > Start in **sandbox** until payment flows work as expected. See the [sandbox guide](/apis/guide/sandbox) for test credentials and behaviour. ### Allowed operations (safe create + read) The connector should only call these endpoints: | Action | Method + path | | - | - | | Create payment request | `POST /v1/payment-requests` | | List payment requests | `GET /v1/payment-requests` | | Get payment request / status | `GET /v1/payment-requests/{request_id}` | | Create invoice | `POST /v1/invoices` | | List invoices | `GET /v1/invoices` | | Create product | `POST /v1/products` | | List products | `GET /v1/products` | | Create subscription plan | `POST /v1/subscription-plan` | | List subscription plans | `GET /v1/subscription-plan` | | List charges | `GET /v1/charges` | | Get charge / payment status | `GET /v1/charges/{charge_id}` | Use the OpenAPI spec for request bodies and response fields. Prefer `Content-Type: application/json`. ### Explicitly forbidden Do **not** call or expose tools for: * **Refunds** — `POST /v1/refund`, `GET /v1/refund/{refund_id}` * **Transfers / payouts** — `/v1/transfers`, `/v1/transfers/*` * **Destructive DELETEs** that move or cancel money (for example delete payment request, delete subscription plan, delete recurring billing) * **Charge saved card** — `POST /v1/charge/recurring-billing/{id}` * **Staff / account / settings** — `/v1/staffs`, `/v1/account-status`, location create/update/delete, and similar admin endpoints If you ask Muse for a forbidden action, it should refuse briefly and direct you to the HitPay Dashboard. ### Copy-paste: Muse Custom Connector prompt Copy the entire block below into Muse: ```text theme={"system"} You are a HitPay payments assistant for this merchant's Meta Muse Custom Connector. ## Docs & API - OpenAPI (source of truth): https://docs.hitpayapp.com/openapi.json - Human docs: https://docs.hitpayapp.com - LLM index: https://docs.hitpayapp.com/llms.txt ## Base URLs - Sandbox (default until merchant says live): https://api.sandbox.hit-pay.com - Live: https://api.hit-pay.com ## Auth - Send header: X-BUSINESS-API-KEY: - Never ask the merchant to paste the key into chat. Use Muse Secure Credentials Store only. - Not browser OAuth on this connector path. ## Allowed operations ONLY (safe-create + read) 1. POST /v1/payment-requests — create payment request / PayNow or card checkout link 2. GET /v1/payment-requests — list payment requests 3. GET /v1/payment-requests/{request_id} — get payment request status 4. POST /v1/invoices — create invoice 5. GET /v1/invoices — list invoices 6. POST /v1/products — create product 7. GET /v1/products — list products 8. POST /v1/subscription-plan — create subscription plan 9. GET /v1/subscription-plan — list subscription plans 10. GET /v1/charges — list charges 11. GET /v1/charges/{charge_id} — get charge / payment status Use OpenAPI for request bodies and response fields. Prefer JSON Content-Type: application/json. ## FORBIDDEN (never call) - POST /v1/refund and any refund endpoints - /v1/transfers and payouts - DELETE on payment-requests, invoices, products, subscription-plan, recurring-billing - POST /v1/charge/recurring-billing/{id} (charge saved card) - /v1/staffs, account settings, and other admin/destructive money moves If asked for a forbidden action: refuse in one sentence and point to the HitPay Dashboard. ## Behaviour - Confirm amount, currency, and payment method before create calls when ambiguous. - SEA APMs: PayNow (`paynow_online`), FPX, GCash, GrabPay, cards — set `payment_methods` to what the merchant asks for (and what their account supports). - For Singapore PayNow links, set payment_methods to include paynow_online when creating a payment request. - After create, return the checkout URL (url) and id clearly. - Keep answers short and merchant-clear. No internal jargon. ``` ### Example asks (custom connector) * "Create a PayNow payment link for SGD 25, purpose: Workshop deposit." * "Create an invoice for SGD 150 due in 7 days for customer [jane@example.com](mailto:jane@example.com)." * "List my last 10 charges." * "What's the status of payment request `{id}`?" * "Create a monthly subscription plan called Cafe Membership for SGD 29.90." * "List products." ## FAQ > **How do I connect HitPay to Meta Muse?** > > Use the official **HitPay** entry in Muse **Connectors**: ask Muse to connect HitPay, or open **Settings → Connectors**, select **HitPay**, and **Connect**, then complete the authorization steps Muse shows. If HitPay is not listed, follow the [Custom Connector backup](#backup-hitpay-custom-connector-in-muse) on this page. > **Is there a public listing URL for the HitPay Muse connector?** > > **No.** HitPay is connected from **inside Meta Muse** via Connectors. There is no separate public web listing URL to share; availability may vary by region and Muse client. > **Official connector vs Custom Connector — which should I use?** > > Use the **official HitPay connector** in Muse Connectors whenever it appears — no paste prompt or API key required. Use the **Custom Connector** only as a backup when the directory listing is missing or you need a private API-key setup with the [OpenAPI](https://docs.hitpayapp.com/openapi.json)-driven prompt on this page. > **Can HitPay in Muse create PayNow or other SEA payment links?** > > **Yes**, for methods enabled on your HitPay account. Ask Muse to create a payment link or payment request and specify the method (for example PayNow). The Custom Connector backup sets `payment_methods` such as `paynow_online` per the prompt; the official connector follows Meta's reviewed integration. See [online payments](/apis/guide/online-payments) and [payment methods](/apis/guide/payment-methods-reference) for API details. > **Does HitPay in Muse use the HitPay MCP Server or OAuth?** > > **Usually not on these paths.** The official Muse connector uses Muse's Connectors authorization flow when you connect. The Custom Connector backup uses **`X-BUSINESS-API-KEY`**, not OAuth. The separate [HitPay MCP Server](/apis/guide/mcp-server) (`https://mcp.hit-pay.com/`) is for Muse Code and other MCP clients and uses **OAuth** via HitPay dashboard login — different from both Muse connector options above. > **Can Muse refund or send payouts via HitPay?** > > **No** — not as recommended behaviour. HitPay in Muse is limited to **safe create + read** (payment links, invoices, products, plans, listing charges). Use the [HitPay Dashboard](https://dashboard.hit-pay.com) for refunds, transfers, payouts, and account admin. ## Optional: Muse Code and Hosted MCP For **Muse Code** or other **MCP clients**, you can use HitPay's **hosted MCP** at `https://mcp.hit-pay.com/` (OAuth via HitPay dashboard login). This is separate from the Muse Connectors directory path and from the Custom Connector API-key backup. ```json theme={"system"} { "mcpServers": { "hitpay": { "url": "https://mcp.hit-pay.com/", "transport": "streamable_http" } } } ``` | Path | Official Muse connector | Custom Connector (backup) | [Hosted MCP](/apis/guide/mcp-server) | | - | - | - | - | | **Where** | Muse Connectors directory | Paste prompt + Secure Credentials Store | Muse Code / MCP client config | | **Auth** | Muse authorization flow when you connect | `X-BUSINESS-API-KEY` | OAuth (owner/admin dashboard login) | | **Best for** | Most merchants in Muse | Directory not visible or private setup | Developers on Muse Code or other MCP tools | The hosted MCP already excludes refunds, payouts, and destructive money moves. See the [MCP Server guide](/apis/guide/mcp-server) for setup and tool list. ## Related guides * [AI developer tools overview](/apis/guide/ai-developer-tools) — MCP Server, Claude Code Plugin, Agent Skills, and CLI * [HitPay MCP Server](/apis/guide/mcp-server) — OAuth connection for Claude, Cursor, Codex, and other MCP clients * [Sandbox](/apis/guide/sandbox) — test before going live (Custom Connector backup) * [Online payments](/apis/guide/online-payments) — payment requests and checkout flow * [Payment methods reference](/apis/guide/payment-methods-reference) — PayNow, FPX, and other methods * [OpenAPI specification](https://docs.hitpayapp.com/openapi.json) — source of truth for request and response shapes (Custom Connector backup) # Mobile App Integration Source: https://docs.hitpayapp.com/apis/guide/mobile-app-integration Integrate HitPay payments into your iOS and Android mobile applications ## Overview Before proceeding, make sure you've read the [Online Payments Guide](/apis/guide/online-payments) to understand how to create payment requests and handle webhooks. Integrate HitPay payments into your mobile app by opening the checkout URL in an in-app browser. This provides a seamless payment experience while keeping users within your app. ## Payment Flow ```mermaid theme={"system"} sequenceDiagram participant App as Your Mobile App participant Server as Your Server participant HitPay as HitPay App->>Server: 1. Initiate Payment Server->>HitPay: 2. Create Payment Request HitPay-->>Server: 3. Payment Request URL Server-->>App: 4. Payment URL Note left of App: Render URL in Webview App->>HitPay: 5. Complete payment HitPay-->>App: 6. Redirect to Success page HitPay->>Server: 7. Webhook for payment confirmation ``` ## Implementation Open the HitPay checkout URL in an in-app browser for the best user experience. Use `SFSafariViewController` on iOS or Chrome Custom Tabs on Android - they load faster than WebViews and share cookies with the system browser. ```swift iOS (Swift) theme={"system"} import SafariServices class PaymentViewController: UIViewController, SFSafariViewControllerDelegate { func openCheckout(paymentUrl: String) { guard let url = URL(string: paymentUrl) else { return } let safariVC = SFSafariViewController(url: url) safariVC.delegate = self present(safariVC, animated: true) } // Handle redirect back to your app func safariViewController(_ controller: SFSafariViewController, initialLoadDidRedirectTo URL: URL) { if URL.host == "yourdomain.com" && URL.path == "/payment/success" { controller.dismiss(animated: true) { self.showPaymentSuccess() } } } func safariViewControllerDidFinish(_ controller: SFSafariViewController) { // User closed the browser - check payment status via backend } } ``` ```kotlin Android (Kotlin) theme={"system"} import android.net.Uri import androidx.browser.customtabs.CustomTabsIntent class PaymentActivity : AppCompatActivity() { fun openCheckout(paymentUrl: String) { val customTabsIntent = CustomTabsIntent.Builder() .setShowTitle(true) .build() customTabsIntent.launchUrl(this, Uri.parse(paymentUrl)) } } // Add to AndroidManifest.xml for deep link handling: // // // // // // // // ``` ```javascript React Native theme={"system"} import { Linking } from 'react-native'; import { InAppBrowser } from 'react-native-inappbrowser-reborn'; async function openCheckout(paymentUrl) { if (await InAppBrowser.isAvailable()) { const result = await InAppBrowser.open(paymentUrl, { // iOS options dismissButtonStyle: 'close', preferredBarTintColor: '#000000', preferredControlTintColor: 'white', // Android options showTitle: true, enableUrlBarHiding: true, }); if (result.type === 'success') { // Check if redirected to success URL } } else { Linking.openURL(paymentUrl); } } ``` ```dart Flutter theme={"system"} import 'package:url_launcher/url_launcher.dart'; Future openCheckout(String paymentUrl) async { final Uri url = Uri.parse(paymentUrl); if (await canLaunchUrl(url)) { await launchUrl( url, mode: LaunchMode.inAppWebView, webViewConfiguration: const WebViewConfiguration( enableJavaScript: true, enableDomStorage: true, ), ); } } ``` ## Handling the Redirect After payment, users are redirected to your `redirect_url`. Set up your redirect URL to: 1. **Close the in-app browser** - Detect the redirect and dismiss the browser 2. **Show a confirmation screen** - Display a "Payment Processing" or "Success" message 3. **Verify via webhook** - Always confirm payment status through webhooks before fulfilling orders > [!WARNING] > > Never rely solely on the redirect to confirm payment. Always wait for the webhook confirmation on your server before marking an order as paid. ## Using Embedded QR Codes In many cases, presenting a webview may not provide the best user experience for your mobile app. This is especially true for QR code-based payment methods where users need to scan a code with their banking app. **When to use each approach:** | Payment Method | Recommended Approach | | - | - | | Card payments | In-app browser | | PayNow, QRPH, DuitNow QR | Embedded QR codes | For QR code payment methods like PayNow, QRPH, or DuitNow QR, use the [Embedded QR Code API](/apis/guide/embedded-qr-code-payments) to generate a native QR code and display it directly in your app. This provides a smoother experience as users don't need to leave your app to view the QR code. **Build your own payment method selector** For the best user experience, consider building your own payment method selection screen: 1. Display available payment methods to the user 2. If the user selects a **card payment** → Use the in-app browser approach 3. If the user selects a **QR code method** (PayNow, QRPH, DuitNow QR) → Use the embedded QR code approach This hybrid approach gives you full control over the UI while leveraging the most appropriate checkout flow for each payment type. ## Best Practices * **Use in-app browsers** - Avoid WebViews as they may have security restrictions and don't share session cookies * **Handle interruptions** - Users may close the browser before completing payment. Always check payment status on your backend * **Deep linking** - Set up proper deep links to handle redirects back to your app * **Loading states** - Show appropriate loading indicators while the payment is being processed * **Error handling** - Handle network errors and payment failures gracefully # Online Payments Source: https://docs.hitpayapp.com/apis/guide/online-payments Integrate the payment request APIs in 3 simple steps ## Core Concept At a high level, integrating payments into your system involves a 3-step process: **1. Create a Payment Request** Create a payment request from your server using the HitPay API. **2. Present the Checkout Page** Redirect the customer to the checkout URL or embed the Drop-in UI. **3. Handle Webhooks** Receive and validate webhook notifications to confirm payment. > [!NOTE] > > **Want to skip the hosted checkout?** Use [Embedded Payments](/apis/guide/embedded-qr-code-payments/domestic-qr) to render QR codes directly in your UI or redirect customers to a payment provider's page (GrabPay, Touch 'n Go, GCash) via a direct link — no HitPay checkout page involved. > [!NOTE] > > **Authentication:** All API requests require your API key in the header. You can find your key in the HitPay Dashboard under **Settings > API Keys**. > > ``` > X-BUSINESS-API-KEY: your_api_key_here > ``` > [!WARNING] > > API keys should be kept confidential and only stored on your servers. Do not store them on your mobile or web client. ## Step 1: Create Payment Request This is the first step of the payment flow, once you have all the details from the user and are ready to collect payments, use this API to create a payment request. Since this is a server-to-server communication, if you have a mobile or Web client that communicates with your REST API, you must have a new endpoint E.g. /create-order, or reuse an existing endpoint. This endpoint will be responsible for making the payment request API call to hitpay. ### Endpoint **Sandbox** ``` POST https://api.sandbox.hit-pay.com/v1/payment-requests ``` **Production** ``` POST https://api.hit-pay.com/v1/payment-requests ``` > [!TIP] > > Start with the sandbox endpoint for testing. When you're ready to go live, swap to the production URL and update your API key. ### Request Parameters > [!NOTE] > > Mandatory fields are `amount` and `currency`. Remember to include header `Content-Type: application/x-www-form-urlencoded` | Parameter | Description | Example | | - | - | - | | amount | Amount related to the payment | 2500.00 | | payment\_methods\[] | Choice of payment methods you want to offer the customer | paynow\_online, card ([Full list](/apis/guide/payment-methods-reference)) | | currency | Currency related to the payment | SGD | | email | Buyer's email | [foo@example.com](mailto:foo@example.com) | | purpose | Purpose of the Payment request | FIFA 16 | | name | Buyer's name | John Doe | | reference\_number | Arbitrary reference number that you can map to your internal reference number. This value cannot be edited by the customer | XXXX123 | | redirect\_url | URL where we redirect the user after a payment. Query arguments reference (payment request id) and status are sent along | [https://example.com/callback](https://example.com/callback) | | allow\_repeated\_payments | If set to true, multiple payments can be paid on a payment request link. Default value is false | false | | expiry\_date | Time after which the payment link will be expired (time in SGT). Applicable for repeated payments. Default is Null | 2021-02-02 01:01:01 | ```php PHP theme={"system"} $client = new http\Client; $request = new http\Client\Request; $request->setRequestUrl('https://api.sandbox.hit-pay.com/v1/payment-requests'); $request->setRequestMethod('POST'); $body = new http\Message\Body; $body->append(new http\QueryString(array( 'email' => 'tom@test.com', 'redirect_url' => 'https://test.com/success', 'reference_number' => 'REF123', 'currency' => 'SGD', 'amount' => '599')));$request->setBody($body); $request->setOptions(array()); $request->setHeaders(array( 'X-BUSINESS-API-KEY' => 'your_api_key_here', 'Content-Type' => 'application/x-www-form-urlencoded', 'X-Requested-With' => 'XMLHttpRequest' )); $client->enqueue($request)->send(); $response = $client->getResponse(); echo $response->getBody(); ``` ```javascript NodeJS theme={"system"} const axios = require('axios'); const response = await axios.post( 'https://api.sandbox.hit-pay.com/v1/payment-requests', new URLSearchParams({ email: 'tom@test.com', redirect_url: 'https://test.com/success', reference_number: 'REF123', currency: 'SGD', amount: '599' }), { headers: { 'X-BUSINESS-API-KEY': 'your_api_key_here', 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest' } } ); console.log(response.data); ``` ### Response ```json theme={"system"} { "id": "90f28b43-2cff-4f86-a29e-15697424b3e7", "name": null, "email": "tom@test.com", "phone": null, "amount": "599.00", "currency": "SGD", "status": "pending", "purpose": null, "reference_number": "REF123", "payment_methods": [ "paynow_online", "card" ], "url": "https://securecheckout.sandbox.hit-pay.com/payment-request/@business/90f28b43.../checkout", "redirect_url": "https://test.com/success", "allow_repeated_payments": false, "expiry_date": null, "created_at": "2025-07-03T02:18:49", "updated_at": "2025-07-03T02:18:49" } ``` ## Step 2: Presenting the Checkout UI After the payment request is completed, your server must return the `payment_request_id` and URL values to the client. There are 2 ways to present the checkout UI: "Redirect to HitPay checkout" or "Present Drop-In UI." **Option 1: Redirect to HitPay Checkout** Navigate your user to the URL, and HitPay will take care of the rest of the flow. Once the payment is completed, the user will be navigated back to the "redirect\_url" that was configured during the payment request step, along with the status. ![HitPay checkout page on desktop and mobile](https://mintcdn.com/hitpay/2jt1MaAGfySdshC8/images/apis/guide/online-payments-checkout.png?fit=max\&auto=format\&n=2jt1MaAGfySdshC8\&q=85\&s=93075201fa3a9ad6d1be31f50db3a5a1) **Option 2: Present the Drop-In UI** Unlike the redirect checkout page, the drop-in is embedded into your webpage, so your customer will never have to leave your site. To present this, you will need 2 values: "default\_link" and "payment\_request\_id." The default link value can be found in your Dashboard > Payment Links > Default link, and this value is fixed for all your payments. Sample code for Drop-In UI can be found [here](https://github.com/hit-pay/hitpay-js-example/blob/master/index.html). ![PayNow Checkout Drop IN](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/checkout-dropin.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=5f247f1141e9258db906a4e058209402) > [!NOTE] > > Drop-in UI currently does not support Apple Pay. ## Step 3: Handle Successful Payment Once the payment is completed, the user will be redirected to the `redirect_url` defined in step 1. While you can use this redirect to show an "Order Success" screen to your users, you should not rely on it alone to mark orders as paid. The `redirect_url` can be triggered by anyone, so always use webhooks to securely confirm payment before fulfilling orders. ### What is a Webhook? Webhook is a POST request sent from HitPay's server to your server about the payment confirmation. If you are using HitPay APIs to integrate into your e-commerce checkout, you must mark your order as paid ONLY after the webhook is received and validated. ### Register Your Webhook To receive payment notifications, you need to register a webhook URL from your HitPay Dashboard: 1. Navigate to **Developers > Webhook Endpoints** in your dashboard 2. Click on **New Webhook** 3. Enter a name and your webhook URL 4. Select the `payment_request.completed` event 5. Save your webhook configuration ![Webhook Registration](https://mintcdn.com/hitpay/zBfEahTCz9U1NPmL/images/webhook-events.png?fit=max\&auto=format\&n=zBfEahTCz9U1NPmL\&q=85\&s=ff63dad346c4a25766b3455aa35dbc28) ### Webhook Payload When a payment is completed, HitPay sends a JSON payload to your registered webhook URL with the following headers: | HTTP Header | Description | | - | - | | Hitpay-Signature | HMAC-SHA256 signature of the JSON payload, using your salt value | | Hitpay-Event-Type | `completed` | | Hitpay-Event-Object | `payment_request` | | User-Agent | `HitPay v2.0` | ### Sample Webhook Payload **View full payload** ```json theme={"system"} { "id": "9e9be41b-2866-4307-8621-e35c633c431f", "name": "John Doe", "email": "john@example.com", "phone": "+6512345678", "amount": "100.00", "currency": "SGD", "status": "completed", "purpose": "Order #12345", "reference_number": "REF123", "payment_methods": ["card", "paynow_online"], "url": "https://securecheckout.hit-pay.com/payment-request/@business/9e9be41b.../checkout", "redirect_url": "https://example.com/success", "created_at": "2025-04-06T15:17:21", "updated_at": "2025-04-06T15:17:43", "payments": [ { "id": "9e9be41c-2869-4b8c-8701-6c44af86b7d0", "status": "succeeded", "buyer_email": "john@example.com", "currency": "sgd", "amount": "100.00", "refunded_amount": "0.00", "payment_type": "card", "fees": "4.15", "created_at": "2025-04-06T15:17:21", "updated_at": "2025-04-06T15:17:43" } ] } ``` ### Validating the Webhook To ensure the webhook is authentic, validate the `Hitpay-Signature` header: 1. Receive the JSON payload and `Hitpay-Signature` from the request 2. Use your salt value (from the dashboard) as the secret key 3. Compute HMAC-SHA256 of the JSON payload using your salt 4. Compare the computed signature with `Hitpay-Signature` - they must match ```php PHP theme={"system"} function validateWebhook($payload, $signature, $salt) { $computedSignature = hash_hmac('sha256', $payload, $salt); return hash_equals($computedSignature, $signature); } // Usage $payload = file_get_contents('php://input'); $signature = $_SERVER['HTTP_HITPAY_SIGNATURE']; $salt = 'your_salt_from_dashboard'; if (validateWebhook($payload, $signature, $salt)) { $data = json_decode($payload, true); // Process the payment confirmation // Mark order as paid } else { http_response_code(401); exit('Invalid signature'); } ``` ```javascript NodeJS theme={"system"} const crypto = require('crypto'); function validateWebhook(payload, signature, salt) { const computedSignature = crypto .createHmac('sha256', salt) .update(payload) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(computedSignature), Buffer.from(signature) ); } // Usage in Express app.post('/webhook', (req, res) => { const payload = JSON.stringify(req.body); const signature = req.headers['hitpay-signature']; const salt = 'your_salt_from_dashboard'; if (validateWebhook(payload, signature, salt)) { // Process the payment confirmation // Mark order as paid res.status(200).send('OK'); } else { res.status(401).send('Invalid signature'); } }); ``` Congrats! You have now successfully completed the payment integration. ## FAQs > **Do I pass a webhook URL in the API request?** > > No. The `webhook` parameter in the payment request API is **deprecated** and should not be used. > > Instead, register your webhook URL from the HitPay Dashboard: > > 1. Go to **Developers > Webhook Endpoints** > 2. Click **New Webhook** and enter your URL > 3. Subscribe to `payment_request.completed` and any other events you need > > The dashboard-based webhook system supports JSON payloads, multiple event types (refunds, orders, invoices, transfers), and centralized management across all your payment requests. > **Webhook Signature Mismatch?** > > Possible reasons for signature mismatch: > > * Ensure you are using the correct salt value from the correct environment (Sandbox or Production) > * Make sure you are computing the HMAC-SHA256 of the raw JSON payload > * Verify the signature is being read from the `Hitpay-Signature` header > **Facing Invalid Business API Key Error** > > Possible reasons for this error: > > * You are using a production key in the sandbox or a sandbox key in production. Make sure the API base URL is correct. > * You are missing headers. Ensure that you include both the 'Content-Type' and 'X-Requested-With' headers. Refer to this [section](/apis/guide/online-payments#authentication) again. > **Product Checklist** > > 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/) > * Finish paynow and other payment methods set up in production > * Update API keys and Salt values from the production dashboard > * If you are using Drop-In UI, update the default link to the production URL > **API Rate Limits** > > HitPay enforces the following rate limits to ensure optimal performance and prevent abuse: > > * **General API Rate Limit**: 400 requests per minute across all endpoints > > * **Payment Request Endpoint**: 70 requests per minute (additional limit to prevent payment request misuse) > > > [!WARNING] > > > > To avoid hitting rate limits and ensure reliable payment status updates, implement webhooks instead of polling the API for payment status. Use API status checks only as a fallback mechanism when webhooks fail. # Payment Methods Source: https://docs.hitpayapp.com/apis/guide/payment-methods-reference Complete list of payment method enums, supported currencies, channels, and capabilities ## Overview When creating a payment request via the API, you can specify which payment methods to offer using the `payment_methods[]` parameter. Each method has a unique enum string that you pass in the request body. ```json theme={"system"} { "amount": 100.00, "currency": "sgd", "payment_methods": ["paynow_online", "card"] } ``` If you omit `payment_methods[]`, all payment methods enabled for your account will be shown on the checkout page. ## Payment Methods by Market **Singapore** | Enum | Display Name | Online | In-Person | Recurring | Refunds | Sandbox | | :- | :- | :- | :- | :- | :- | :- | | `card` | Visa, Mastercard, Amex | Yes | Yes | Yes | Yes | Yes | | `card_adyen` | Cards | Yes | No | No | Yes | No | | `card_present` | Card Terminal | No | Yes | No | Yes | No | | `card_present_adyen` | Card Terminal | No | Yes | No | Yes | No | | `paynow_online` | PayNow | Yes | Yes | No | Yes | Yes | | `giro` | GIRO Direct Debit | No | No | Yes | No | No | | `grabpay_direct` | GrabPay | Yes | Yes | Yes | Yes | No | | `grabpay_paylater` | GrabPay PayLater | Yes | Yes | No | Yes | No | | `shopee_pay` | ShopeePay | Yes | Yes | Yes | Yes | No | | `shopee_pay_later` | SPayLater | Yes | Yes | No | Yes | No | | `shopback` | ShopBack PayLater | Yes | No | No | Yes | No | | `atome` | Atome | Yes | No | No | Yes | Yes | | `atome_qr` | Atome QR | No | Yes | No | No | Yes | | `wechat_pay` | WeChat Pay | Yes | Yes | No | No | No | | `upi_qr` | UPI | Yes | Yes | No | No | No | > [!NOTE] > > **Online** = payment gateway (checkout, payment links, API). **In-Person** = POS terminal or QR at counter. **Recurring** = subscriptions via wallet account linking. **Malaysia** | Enum | Display Name | Online | In-Person | Recurring | Refunds | Sandbox | | :- | :- | :- | :- | :- | :- | :- | | `card` | Visa, Mastercard, Apple Pay | Yes | Yes | Yes | Yes | No | | `card_present` | Card Terminal | No | Yes | No | Yes | No | | `fpx` | FPX Online Banking | Yes | No | No | Yes | No | | `grabpay_direct` | GrabPay | Yes | Yes | Yes | Yes | Yes | | `grabpay_paylater` | GrabPay PayLater | Yes | Yes | No | Yes | Yes | | `shopee_pay` | ShopeePay | Yes | Yes | Yes | Yes | Yes | | `shopee_pay_later` | SPayLater | Yes | Yes | No | Yes | No | | `shopback` | ShopBack PayLater | Yes | No | No | Yes | No | | `razer_maybankqr` | MayBank QR | Yes | No | No | Yes | No | | `touch_n_go` | Touch 'n Go eWallet | Yes | Yes | Yes | Yes | No | | `duitnow` | DuitNow | Yes | Yes | No | No | No | | `atome` | Atome | Yes | No | No | Yes | Yes | | `atome_qr` | Atome QR | No | Yes | No | No | Yes | | `wechat_pay` | WeChat Pay | Yes | Yes | No | No | No | | `alipay_plus_connect_wallet` | Alipay+ | Yes | No | No | Yes | No | **Philippines** | Enum | Display Name | Online | In-Person | Recurring | Refunds | Sandbox | | :- | :- | :- | :- | :- | :- | :- | | `card_cybersource` | Cards | Yes | No | Yes | Yes | No | | `card_present_cybersource` | Card Terminal | No | Yes | No | Yes | No | | `gcash` | GCash | Yes | No | No | Yes | No | | `gcash_qr` | GCash QR | No | Yes | No | No | No | | `qrph_netbank` | QRPH / InstaPay | Yes | Yes | No | Yes | No | | `grabpay_direct` | GrabPay | Yes | No | Yes | Yes | No | | `shopee_pay` | ShopeePay | Yes | No | Yes | Yes | No | | `shopee_pay_later` | SPayLater | Yes | No | No | Yes | No | | `billease` | BillEase | Yes | No | No | Yes | No | | `wechat_pay` | WeChat Pay | Yes | Yes | No | No | No | | `upay_online` | Unionbank Online | Yes | No | No | No | No | | `upay_instapay` | InstaPay | Yes | No | No | No | No | | `upay_pchc` | PesoNet | Yes | No | No | No | No | | `upay_bayad` | Bayad Center | Yes | No | No | No | No | | `upay_ecpy` | ECPay | Yes | No | No | No | No | | `upay_plwn` | Palawan Pawnshop | Yes | No | No | No | No | **Cross-Border** These methods are available from any HitPay market via [Borderless QR](/apis/guide/embedded-qr-code-payments/borderless-qr). Partners settle in their home currency. **Malaysia (MYR)** | Enum | Display Name | Online | In-Person | Recurring | Refunds | | :- | :- | :- | :- | :- | :- | | `touch_n_go` | Touch 'n Go | Yes | No | No | No | | `duitnow` | DuitNow | Yes | Yes | No | No | **Philippines (PHP)** | Enum | Display Name | Online | In-Person | Recurring | Refunds | | :- | :- | :- | :- | :- | :- | | `qrph_netbank` | QRPH | Yes | Yes | No | No | **WeChat Pay** | Enum | Display Name | Online | In-Person | Recurring | Refunds | | :- | :- | :- | :- | :- | :- | | `wechat_pay` | WeChat Pay | Yes | Yes | No | No | > [!NOTE] > > Available to Singapore, Malaysia, and Philippines merchants only. Unlike the other methods on this tab, the transaction currency matches the merchant's own local currency (SGD, MYR, or PHP respectively) rather than a single fixed foreign currency. **India (SGD)** | Enum | Display Name | Online | In-Person | Recurring | Refunds | | :- | :- | :- | :- | :- | :- | | `upi_qr` | UPI | Yes | Yes | No | No | **Vietnam (VND)** | Enum | Display Name | Online | In-Person | Recurring | Refunds | | :- | :- | :- | :- | :- | :- | | `zalopay` | ZaloPay | Yes | Yes | Yes | Yes | | `vietqr_zalopay` | VietQR | Yes | Yes | No | Yes | **Thailand (THB)** | Enum | Display Name | Online | In-Person | Recurring | Refunds | | :- | :- | :- | :- | :- | :- | | `opn_prompt_pay` | PromptPay | Yes | Yes | No | No | | `line_pay` | LINE Pay | Yes | Yes | Yes | Yes | | `opn_true_money_qr` | TrueMoney | Yes | Yes | No | No | **Korea (KRW)** | Enum | Display Name | Online | In-Person | Recurring | Refunds | | :- | :- | :- | :- | :- | :- | | `nhn_kcp_kakao_pay` | Kakao Pay | Yes | No | No | Yes | | `nhn_kcp_naver_pay` | Naver Pay | Yes | No | No | Yes | | `nhn_kcp_payco` | PAYCO | Yes | No | No | No | ## Recurring Billing The following methods support [recurring billing](/apis/guide/recurring-billing) via card tokenization or wallet account linking: | Method | Currencies | | :- | :- | | `card` | SGD, MYR, THB, USD, and [30+ currencies](#multi-currency-cards) | | `giro` (GIRO) | SGD | | `grabpay_direct` | SGD, MYR | | `shopee_pay` | SGD, MYR, PHP | | `touch_n_go` | MYR | | `line_pay` | THB | | `zalopay` | VND | > [!NOTE] > > For wallet-based recurring methods (`grabpay_direct`, `shopee_pay`, `touch_n_go`, `zalopay`, `line_pay`), the customer links their wallet account during the first payment. Subsequent charges are processed automatically. ## Sandbox Testing The following payment methods are available in the [sandbox](/apis/guide/sandbox) environment: | Method | Test Details | | :- | :- | | `card` | Use test card `4242 4242 4242 4242` (Visa), any future expiry, any CVC. Use `4000 0000 0000 0002` for a declined payment. | | `paynow_online` | Scan the generated QR code with your mobile camera to simulate a successful payment. | | `shopee_pay` | Scan the generated QR code with your mobile camera to simulate a successful payment. | | `grabpay_direct` | Scan the generated QR code with your mobile camera to simulate a successful payment. | | `grabpay_paylater` | Scan the generated QR code with your mobile camera to simulate a successful payment. | | `atome` | Scan the generated QR code with your mobile camera to simulate a successful payment. | | All other payment methods require production credentials. The integration approach is identical — simply swap the API key and base URL. | | ## Multi-Currency Cards The `card` method supports 30+ currencies, including: SGD, MYR, USD, AUD, NZD, PHP, HKD, THB, EUR, CAD, GBP, IDR, AED, KRW, CNY, INR, JPY, CHF, BND, SAR, SEK, DKK, NOK, PLN, QAR, TWD, ZAR, and VND. The exact list of currencies depends on your account configuration and the card networks enabled for your business. # Payout Network Source: https://docs.hitpayapp.com/apis/guide/payout-network List of payout networks and rails supported by HitPay's payout APIs > [!WARNING] > > The Payout APIs are currently only available for businesses in Singapore, Malaysia, and the Philippines. ## Overview HitPay supports both Local and SWIFT rails for its payout APIs. This page describes the list of networks and rails supported in various countries. ## Payout Network By Merchant Country **Singapore** | Destination Country | Transfer Type | Payment Rail | Speed of Transfer | | - | - | - | - | | Argentina | Bank Transfer | Local Transfer | T+1 | | Australia | Bank Transfer | Local Transfer | T+1 | | Austria | Bank Transfer | Local Transfer | Real-time | | Bahrain | Bank Transfer | Local Transfer | T+3 | | Belgium | Bank Transfer | Local Transfer | Real-time | | Bolivia | Bank Transfer | Local Transfer | T+1 | | Brazil | Bank Transfer | Local Transfer | T+1 | | Bulgaria | Bank Transfer | Local Transfer | Real-time | | Canada | Bank Transfer | Local Transfer | T+1 | | Chile | Bank Transfer | Local Transfer | T+2 | | Colombia | Bank Transfer | Local Transfer | T+2 | | Croatia | Bank Transfer | Local Transfer | Real-time | | Cyprus | Bank Transfer | Local Transfer | Real-time | | Czech Republic | Bank Transfer | Local Transfer | Real-time | | Denmark | Bank Transfer | Local Transfer | Real-time | | Egypt | Bank Transfer | Local Transfer | T+2 | | Estonia | Bank Transfer | Local Transfer | Real-time | | Finland | Bank Transfer | Local Transfer | Real-time | | France | Bank Transfer | Local Transfer | Real-time | | Germany | Bank Transfer | Local Transfer | Real-time | | Greece | Bank Transfer | Local Transfer | Real-time | | Hong Kong SAR | Bank Transfer | Local Transfer | Real-time | | Hungary | Bank Transfer | Local Transfer | Real-time | | Iceland | Bank Transfer | Local Transfer | Real-time | | India | Bank Transfer | Local Transfer | Real-time | | Indonesia | Bank Transfer | Local Transfer | Real-time | | Ireland | Bank Transfer | Local Transfer | Real-time | | Israel | Bank Transfer | Local Transfer | T+2 | | Italy | Bank Transfer | Local Transfer | Real-time | | Japan | Bank Transfer | Local Transfer | Real-time | | Latvia | Bank Transfer | Local Transfer | Real-time | | Liechtenstein | Bank Transfer | Local Transfer | Real-time | | Lithuania | Bank Transfer | Local Transfer | Real-time | | Luxembourg | Bank Transfer | Local Transfer | Real-time | | Malaysia | Bank Transfer | Local Transfer | Real-time | | Malta | Bank Transfer | Local Transfer | Real-time | | Martinique | Bank Transfer | Local Transfer | Real-time | | Mayotte | Bank Transfer | Local Transfer | Real-time | | Mexico | Bank Transfer | Local Transfer | T+1 | | Monaco | Bank Transfer | Local Transfer | Real-time | | Morocco | Bank Transfer | Local Transfer | T+2 | | Nepal | Bank Transfer | Local Transfer | Real-time | | Netherlands | Bank Transfer | Local Transfer | Real-time | | New Zealand | Bank Transfer | Local Transfer | T+1 | | Norway | Bank Transfer | Local Transfer | Real-time | | Pakistan | Bank Transfer | Local Transfer | Real-time | | Peru | Bank Transfer | Local Transfer | T+1 | | Philippines | Bank Transfer | Local Transfer | Real-time | | Poland | Bank Transfer | Local Transfer | Real-time | | Portugal | Bank Transfer | Local Transfer | T+1 | | Romania | Bank Transfer | Local Transfer | Real-time | | Saint Pierre and Miquelon | Bank Transfer | Local Transfer | Real-time | | San Marino | Bank Transfer | Local Transfer | Real-time | | Singapore | Bank Transfer | Local Transfer | Real-time | | | Bank Transfer | FAST | Real-time | | | Bank Transfer | PayNow | Real-time | | Slovakia | Bank Transfer | Local Transfer | Real-time | | Slovenia | Bank Transfer | Local Transfer | Real-time | | South Korea | Bank Transfer | Local Transfer | Real-time | | Spain | Bank Transfer | Local Transfer | T+1 | | Sri Lanka | Bank Transfer | Local Transfer | T+1 | | Sweden | Bank Transfer | Local Transfer | Real-time | | Switzerland | Bank Transfer | Local Transfer | Real-time | | Thailand | Bank Transfer | Local Transfer | Real-time | | Turkey | Bank Transfer | Local Transfer | T+3 | | United Arab Emirates | Bank Transfer | Local Transfer | T+2 | | United Kingdom | Bank Transfer | Local Transfer | T+1 | | United States | Bank Transfer | Local Transfer | T+2 | | Uruguay | Bank Transfer | Local Transfer | T+1 | | Vatican | Bank Transfer | Local Transfer | T+1 | | Vietnam | Bank Transfer | Local Transfer | Real-time | > **SWIFT Network Coverage** > > Speed of Transfer: T+3 business days > > | Country | > | - | > | Albania | > | Algeria | > | Andorra | > | Angola | > | Anguilla | > | Antigua and Barbuda | > | Argentina | > | Armenia | > | Aruba | > | Australia | > | Austria | > | Azerbaijan | > | Bahrain | > | Bangladesh | > | Belgium | > | Belize | > | Bolivia | > | Bosnia and Herzegovina | > | Botswana | > | Brazil | > | Bulgaria | > | Cambodia | > | Canada | > | Canary Islands | > | Chile | > | China | > | Colombia | > | Costa Rica | > | Croatia | > | Curaçao | > | Cyprus | > | Czech Republic | > | Denmark | > | Dominica | > | Dominican Republic | > | Ecuador | > | Egypt | > | El Salvador | > | Equatorial Guinea | > | Estonia | > | Faroe Islands | > | Fiji | > | Finland | > | France | > | French Guiana | > | French Polynesia | > | French Southern Territories | > | Georgia | > | Germany | > | Gibraltar | > | Greece | > | Greenland | > | Grenada | > | Guatemala | > | Guernsey | > | Guyana | > | Honduras | > | Hong Kong SAR | > | Hungary | > | Iceland | > | India | > | Indonesia | > | Ireland | > | Isle of Man | > | Israel | > | Italy | > | Jamaica | > | Japan | > | Jersey | > | Jordan | > | Kazakhstan | > | Kenya | > | Korea, Republic of (South Korea) | > | Kosovo | > | Kuwait | > | Kyrgyzstan | > | Latvia | > | Liechtenstein | > | Lithuania | > | Luxembourg | > | Macao SAR | > | Macedonia, the former Yugoslav Republic of | > | Malaysia | > | Maldives | > | Malta | > | Martinique | > | Mauritania | > | Mauritius | > | Mayotte | > | Mexico | > | Moldova | > | Monaco | > | Montenegro | > | Morocco | > | Namibia | > | Nepal | > | Netherlands | > | New Caledonia | > | New Zealand | > | Nigeria | > | Norway | > | Oman | > | Pakistan | > | Palestine, State of | > | Panama | > | Paraguay | > | Peru | > | Philippines | > | Poland | > | Portugal | > | Puerto Rico | > | Qatar | > | Reunion | > | Romania | > | Saint Barthélemy | > | Saint Lucia | > | Saint Martin (French part) | > | Saint Pierre and Miquelon | > | San Marino | > | Saudi Arabia | > | Senegal | > | Serbia | > | Seychelles | > | Singapore | > | Slovakia | > | Slovenia | > | South Africa | > | Spain | > | Sri Lanka | > | Sweden | > | Switzerland | > | Taiwan (China) | > | Tajikistan | > | Tanzania, United Republic of | > | Thailand | > | Timor-Leste | > | Tunisia | > | Turkey | > | Uganda | > | Ukraine | > | United Arab Emirates | > | United Kingdom | > | United States | > | Uruguay | > | Uzbekistan | > | Vanuatu | > | Viet Nam | > | Virgin Islands (British) | > | Wallis and Futuna | > | Zambia | **Malaysia** | Destination Country | Transfer Type | Payment Rail | Speed of Transfer | | - | - | - | - | | Andorra | Bank Transfer | Local Transfer | T+1 | | Australia | Bank Transfer | Local Transfer | T+2 | | Austria | Bank Transfer | Local Transfer | T+1 | | | Digital Wallet | bKash | Real-time | | | Cash Pick Up | Suported Local Banks | Real-time | | Belgium | Bank Transfer | Local Transfer | T+1 | | Brazil | Bank Transfer | Local Transfer | T+2 | | Brunei | Bank Transfer | Local Transfer | T+1 | | Bulgaria | Bank Transfer | Local Transfer | T+1 | | Cambodia | Bank Transfer | Local Transfer | T+1 | | | Digital Wallet | Wing Money | T+1 | | | Cash Pick Up | AMK Microfinance, True Money, Wing Money | T+1 | | Canada | Bank Transfer | Local Transfer | T+1 | | | Digital Wallet | Wechat, AliPay | Real-time | | Croatia | Bank Transfer | Local Transfer | T+1 | | Cyprus | Bank Transfer | Local Transfer | T+1 | | Czech Republic | Bank Transfer | Local Transfer | T+1 | | Denmark | Bank Transfer | Local Transfer | T+1 | | Estonia | Bank Transfer | Local Transfer | T+1 | | Finland | Bank Transfer | Local Transfer | T+1 | | France | Bank Transfer | Local Transfer | T+1 | | French Guiana | Bank Transfer | Local Transfer | T+1 | | Germany | Bank Transfer | Local Transfer | T+1 | | Gibraltar | Bank Transfer | Local Transfer | T+1 | | Greece | Bank Transfer | Local Transfer | T+1 | | Guadeloupe | Bank Transfer | Local Transfer | T+1 | | Guernsey | Bank Transfer | Local Transfer | T+1 | | Hong Kong SAR | Bank Transfer | Local Transfer | Real-time | | Hungary | Bank Transfer | Local Transfer | T+1 | | Iceland | Bank Transfer | Local Transfer | T+1 | | India | Bank Transfer | Local Transfer | Real-time | | | Cash Pick Up | Muthoot Network, Mastercard Money Transfer Services India, Delphi World MoneY, Ebix Money Express | Real-time | | Indonesia | Bank Transfer | Local Transfer | Real-time | | | Digital Wallet | LinkAja, Ovo, GoPay, Dana, Paytren TrueMoney | Real-time | | | Cash Pick Up | Pos Indonesia, Bank Negara Indonesia branches and agents, Pawnshops (Pegadaian), Bank Raykat Indonesia branches and agents, Bank Central Asia, PT Madame Express | Real-time | | Ireland | Bank Transfer | Local Transfer | T+1 | | Italy | Bank Transfer | Local Transfer | T+1 | | Japan | Bank Transfer | Local Transfer | T+1 | | Jersey | Bank Transfer | Local Transfer | T+1 | | Kosovo | Bank Transfer | Local Transfer | T+1 | | Laos | Bank Transfer | Local Transfer | T+1 | | Latvia | Bank Transfer | Local Transfer | T+1 | | Liechtenstein | Bank Transfer | Local Transfer | T+1 | | Lithuania | Bank Transfer | Local Transfer | T+1 | | Luxembourg | Bank Transfer | Local Transfer | T+1 | | Malaysia | Bank Transfer | Local Transfer | Real-time | | | Bank Transfer | RTGS | T+2 | | Malta | Bank Transfer | Local Transfer | T+1 | | Martinique | Bank Transfer | Local Transfer | T+1 | | Mayotte | Bank Transfer | Local Transfer | T+1 | | Mexico | Bank Transfer | Local Transfer | T+1 | | Moldova, Republic Of | Bank Transfer | Local Transfer | T+1 | | Montenegro | Bank Transfer | Local Transfer | T+1 | | Myanmar | Bank Transfer | Local Transfer | T+1 | | | Digital Wallet | Citizen Pay Wallet, OK\$ Wallet, AYA Wallet, Wave Money Wallet | Real-time | | | Cash Pick Up | AYA Branches, MCB Branches | Real-time | | Nepal | Bank Transfer | Local Transfer | Real-time | | | Digital Wallet | eSewa, Khalti, IMEPAY, PrabhuPay, ICash, QPay, Moru, SajiloPay, YoApp | Real-time | | | Cash Pick Up | eSewa Remit, Everest Bank branches and agents, City Express and agents, Century Commercial Bank, GME Remit, Himalayan Bank,IME, Ipay Remit, Nepal Investment Bank, Samsara Remit, Sunrise Bank, Prabhu Money Transfer | Real-time | | Netherlands | Bank Transfer | Local Transfer | T+1 | | New Zealand | Bank Transfer | Local Transfer | T+1 | | Norway | Bank Transfer | Local Transfer | T+1 | | Pakistan | Bank Transfer | Local Transfer | T+1 | | | Digital Wallet | Jazz Cash, Easy Paisa, Sadapay | Real-time | | | Cash Pick Up | Bank Alfalah branches and agents, Allied Bank Limited, Dubai Islamic Bank, United Bank Limited, Bank of Punjab branches and agents, Askari Bank, Bank Al Habib, Bank Islami Pakistan, Habib Bank, J S Bank, The Bank of Khyber, Meezan Bank, MCB Bank, National Bank of Pakistan, Soneri Bank | Real-time | | Philippines | Bank Transfer | Local Transfer | Real-time | | | Digital Wallet | Coins.ph, Gcash, PayMaya, GrabPay | Real-time | | | Cash Pick Up | LBC Express, Robinsons Dept Store, RD Pawnshop, M Lhuillier, PSB, Palawan, Villarica, Metrobank, Cebuana Lhuillier Pawnshops, Pera Hub, Tambunting Pawnshop | Real-time | | Poland | Bank Transfer | Local Transfer | T+1 | | Portugal | Bank Transfer | Local Transfer | T+1 | | Romania | Bank Transfer | Local Transfer | T+1 | | San Marino | Bank Transfer | Local Transfer | T+1 | | Saudi Arabia | Bank Transfer | Local Transfer | T+1 | | Singapore | Bank Transfer | Local Transfer | Real-time | | Slovak Republic | Bank Transfer | Local Transfer | T+1 | | Slovenia | Bank Transfer | Local Transfer | T+1 | | South Korea | Bank Transfer | Local Transfer | Real-time | | Spain | Bank Transfer | Local Transfer | T+1 | | Sri Lanka | Bank Transfer | Local Transfer | T+1 | | | Digital | | | | Svalbard And Jan Mayen | Bank Transfer | Local Transfer | T+1 | | Sweden | Bank Transfer | Local Transfer | T+1 | | Switzerland | Bank Transfer | Local Transfer | T+1 | | Thailand | Bank Transfer | Local Transfer | Real-time | | Turkey | Bank Transfer | Local Transfer | T+1 | | United Arab Emirates | Bank Transfer | Local Transfer | T+1 | | | Cash Pick Up | Al Fardan Exchange | Real-time | | United Kingdom | Bank Transfer | Local Transfer | T+1 | | United States | Bank Transfer | Local Transfer | T+1 | | Vatican | Bank Transfer | Local Transfer | T+1 | | Vietnam | Bank Transfer | Local Transfer | Real-time | | | Digital Wallet | Vimo, Sacombank Pay, VNPT Pay and Momo | Real-time | | | Cash Pick Up | Finfan, Any Vietnamese Bank | Real-time | | | Home Delivery | Mong Cai to Ca Mau (52/63 provinces) | T+1 | **Philippines** | Destination Country | Transfer Type | Payment Rail | Speed of Transfer | | - | - | - | - | | Philippines | Bank Transfer | Local Transfer | Real-time | | | Bank Transfer | Instapay | Real-time | | | Bank Transfer | PesoNet | T+2 | # Payouts Source: https://docs.hitpayapp.com/apis/guide/payouts Simple guide for initiating payouts using HitPay API > [!WARNING] > > This API is currently in beta. Please use with caution and expect potential changes. ## Overview This guide shows how to initiate payouts using HitPay's transfer API. It's an essential tool for platforms and businesses that need to pay suppliers or other entities. ## Example Use Cases These APIs are designed for a variety of payment scenarios, including: * Paying suppliers * Employee payroll * Automating commission payouts to partners ## Flow of Funds When you initiate a transfer, funds are deducted from your **HitPay wallet balance**. Your wallet can hold balances in multiple currencies such as SGD, USD, etc. The API uses the `source_currency` field to deduct from the corresponding wallet. Funds can be added to your wallet through: * **Accepting payments using HitPay** (e.g., through your checkout or POS) * **Manual top-ups via the HitPay Dashboard** ### Example: PayNow Transfer from SGD Wallet The diagram below illustrates how funds are deducted during a PayNow transfer: ![Transfer Flow](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/balance-transfer-flow.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=a1bbe4a200a517be6b6e011bbfa40c7d) * Total wallet balance: SGD 1,000 * PayNow transfer: SGD 250 * Transfer fee: SGD 0.50 * Remaining balance: SGD 749.50 You can also initiate transfers from other balances like USD if supported for the payout method. ### Endpoint ``` POST /v1/transfers ``` ### Required Fields | Field | Description | | - | - | | `beneficiary` | Inline object or `beneficiary_id` | | `source_currency` | Currency to deduct from (e.g., `sgd`) | | `payment_amount` | Amount to transfer | > [!NOTE] > > Below is a sample request body to initiate a transfer using FAST (SGD). ```json theme={"system"} { "source_currency": "sgd", "payment_amount": 250.00, "beneficiary": { "country":"sg", "transfer_method":"bank_transfer", "transfer_type":"local", "currency":"sgd", "holder_type":"individual", "holder_name":"Paper Company", "bank_swift_code":"DBSSSGSGXXX", "account_number":"123456789012" } } ``` ### Transfer API Response Upon successfully initiating a transfer, the API returns a JSON object containing the details of the transfer. Below is a sample response:​ ``` { "id": "b176a1e2-47cf-4a0f-8732-8f0f6dc2387d", "beneficiary": { "id": "73fbc1d9-1d28-495a-8a56-2c183045d305", "status": "approved", "country": "sg", "transfer_method": "bank_transfer", "transfer_type": "local", "currency": "sgd", "holder_type": "individual", "holder_name": "Paper Company", "bank_swift_code": "DBSSSGSGXXX", "account_number": "123456789012", "created_at": "2025-04-23T12:45:22+08:00", "updated_at": "2025-04-23T12:45:23+08:00" }, "payment_currency": "sgd", "payment_amount": 250.00, "source_currency": "sgd", "source_amount": 250.00, "exchange_rate": null, "fee_payer": "payer", "total_fee": 0.50, "fee_currency": "sgd", "status": "scheduled", "created_at": "2025-04-23T12:46:01+08:00" } ``` ## Supported Payout Corridors The following corridors are currently supported for payouts: | Country | Currency | Rail | Settlement | | :- | :- | :- | :- | | Singapore | SGD, USD | FAST | Instant | | Singapore | SGD | PayNow | Instant | | Philippines | PHP | InstaPay | Instant (up to PHP 50,000) | | Philippines | PHP | PESONet | T+1 | | Bangladesh | BDT | Intrabank transfer | Instant | | Bangladesh | BDT | NPSB | Instant (up to BDT 300,000) | | Bangladesh | BDT | BEFTN | T+1 (T+3 on weekends) | | Bangladesh | BDT | bKash / Tap / Upay | Instant | | Indonesia | IDR | Bi-Fast | Instant up to IDR 250,000,000, otherwise T+1 | > [!NOTE] > > **Amount limits:** Singapore transfers via FAST or PayNow support SGD 1–200,000 per transaction. Indonesia transfers have a minimum amount of IDR 10,000. > > Use the [Estimate Fees](/apis/payout/estimate-fees) endpoint to preview transfer fees and exchange rates before initiating a payout. ## Other APIs While using the `POST /v1/transfers` endpoint is the simplest way to get started with payouts, your integration may require more flexibility. HitPay provides additional APIs to support advanced use cases: * **[Create Beneficiary](https://docs.hitpayapp.com/apis/payout/create-beneficiary)**\ If you intend to save a beneficiary and reuse them for multiple payouts, this API allows you to create and manage stored beneficiaries. * **[Webhook Events](https://docs.hitpayapp.com/apis/guide/events#list-of-events)**\ Some transfer types may not be completed instantly. Use webhook notifications to track changes in transfer status and trigger downstream actions when a transfer is successful or fails. * **[Estimate Fees](https://docs.hitpayapp.com/apis/payout/estimate-fees)**\ Before initiating a transfer, you can use this API to estimate the transfer fee. This is particularly helpful when the transfer involves currency conversion or if you'd like to display fee information to the user in advance. # Platform Key Source: https://docs.hitpayapp.com/apis/guide/platform-apis Take commissions and receive unified webhooks across your sub-merchants with the X-PLATFORM-KEY header ## Overview Once your HitPay account is enabled as a **Platform account** (see the [Platforms overview](/platforms/overview) and contact **[support@hit-pay.com](mailto:support@hit-pay.com)**), you receive a **Platform Key**, available in your dashboard under **Settings → Platform**. Passing it as an `X-PLATFORM-KEY` header on payment requests you create for your sub-merchants unlocks two capabilities: 1. **Commissions** - earn a share of each transaction, as a platform-wide percentage or a fixed amount per payment. 2. **Unified webhooks** - charge events for all your sub-merchants' payments are delivered to your platform account's webhook endpoints. The Platform Key works alongside either authentication method: a sub-merchant's API key ([direct integration](/platforms/overview#option-1-direct-api-key-integration)) or an OAuth access token ([Connect Merchant Accounts](/platforms/oauth)). ## Authentication Include `X-PLATFORM-KEY` in addition to the sub-merchant's credentials on each request: ```bash With a merchant API key theme={"system"} curl "https://api.hit-pay.com/v1/payment-requests" \ -H "X-BUSINESS-API-KEY: MERCHANT_API_KEY" \ -H "X-PLATFORM-KEY: PLATFORM_KEY" \ -H "X-Requested-With: XMLHttpRequest" ``` ```bash With an OAuth access token theme={"system"} curl "https://api.hit-pay.com/v1/payment-requests" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -H "X-PLATFORM-KEY: PLATFORM_KEY" \ -H "X-Requested-With: XMLHttpRequest" ``` In sandbox, your Platform Key is in the [sandbox dashboard](https://dashboard.sandbox.hit-pay.com) under the same **Settings → Platform** path, and requests go to `https://api.sandbox.hit-pay.com`. ## How to set `Commission Rate` The `Commission Rate` applies a percentage commission to every transaction made through your platform. 1. Sign in to your platform-enabled HitPay account ([sandbox](https://dashboard.sandbox.hit-pay.com) or [live](https://dashboard.hit-pay.com)). 2. Go to **Settings → Platform** and click **Set Commission Rate**. ![Set Commission Rate](https://mintcdn.com/hitpay/VcB46PtZpjt-EnCP/images/platform/commission_rate.jpg?fit=max\&auto=format\&n=VcB46PtZpjt-EnCP\&q=85\&s=74ac9065e9c373498168c3a20821685d) To charge a fixed amount on a specific transaction instead, use `platform_commission_amount` (see below). ## Set a commission per transaction In addition to the percentage `Commission Rate`, platforms can set an exact commission amount on an individual payment request by passing the `platform_commission_amount` field when creating it. When provided, this fixed amount takes precedence over the percentage `Commission Rate` for that transaction. | Field | Description | | - | - | | `platform_commission_amount` | The commission your platform keeps for this transaction, in the same currency and units as `amount` (e.g. `30.00`). Must be greater than `0`, have at most two decimal places, and be **less than** `amount`. | > [!NOTE] > > `platform_commission_amount` requires a valid `X-PLATFORM-KEY` and is currently supported for **PayNow (Singapore)**. It cannot be used on payment requests that allow repeated payments. ```bash Create a payment request with a fixed commission theme={"system"} curl -X POST "https://api.hit-pay.com/v1/payment-requests" \ -H "X-BUSINESS-API-KEY: MERCHANT_API_KEY" \ -H "X-PLATFORM-KEY: PLATFORM_KEY" \ -H "X-Requested-With: XMLHttpRequest" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "amount=100.00" \ -d "currency=SGD" \ -d "payment_methods[]=paynow_online" \ -d "platform_commission_amount=30.00" ``` The created payment request echoes back `platform_commission_amount` so you can confirm it was applied. Once the customer pays, your platform receives the commission, and the sub-merchant receives the payment amount minus HitPay's processing fee and the commission. ## Unified webhooks Becoming a Platform account does not automatically start sending webhooks. Register webhook endpoints on your platform's own HitPay account under **Developers → Webhook Endpoints** before you can receive events. For sub-merchant payments created with `X-PLATFORM-KEY`: * Charge events (`charge.created`, `charge.failed`, `charge.updated`) are delivered to webhook endpoints registered on the **platform account** - not the sub-merchant's endpoints. This gives you one webhook stream covering every sub-merchant. * The payload is for the sub-merchant's transaction; use the charge or payment-request data (and `business_id` in the payload) to identify which sub-merchant it belongs to. * Payment request events (`payment_request.completed`, `payment_request.failed`) are currently sent to the sub-merchant's registered webhook endpoints. For webhook registration, payload structure, and signature validation, see [Webhooks](/apis/guide/events). ## In-Person Payments Platforms can create in-person terminal payments on behalf of sub-merchants using Wi-Fi card readers and QR terminals. To initiate an in-person payment as a platform: 1. Include the sub-merchant's credentials together with your `X-PLATFORM-KEY` header 2. Set `payment_methods[]` to `wifi_card_reader` (for card payments) or a [supported QR method](/apis/guide/embedded-qr-code-payments#supported-methods) (for QR payments) 3. Pass the sub-merchant's `wifi_terminal_id` ```bash theme={"system"} curl -X POST "https://api.hit-pay.com/v1/payment-requests" \ -H "X-BUSINESS-API-KEY: MERCHANT_API_KEY" \ -H "X-PLATFORM-KEY: PLATFORM_KEY" \ -H "X-Requested-With: XMLHttpRequest" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "amount=599" \ -d "currency=SGD" \ -d "payment_methods[]=wifi_card_reader" \ -d "wifi_terminal_id=tmr_123123123" ``` For full details on terminal setup, supported devices, QR payments, and webhook handling, see [In-Person Payments](/apis/guide/in-person-payments/overview). # Recurring Billing Source: https://docs.hitpayapp.com/apis/guide/recurring-billing Integrate the recurring billing APIs to automated your subscription payments Recurring Billing APIs are the simplest way to start collecting your monthly or yearly subscription fees automatically. This API integration includes 4 Steps > **Create a Subscription Plan** > > The first step is to create a subscription plan with details and pricing. > **Set Up Recurring Billing** > > Once the subscription plan is defined, set up recurring billing for the customer. > **Present the Checkout UI** > > Present the checkout user interface to the customer for subscription confirmation. > **Handle Payment Processing** > > After the customer confirms, handle payment processing and schedule recurring charges. ## Step 1 - Create a subscription plan A subscription plan consists of basic information like plan name, amount, and frequency. An example of a subscription plan could be "Spotify Premium" which is SGD 9.90 monthly. ### HTTP Request ``` POST https://api.sandbox.hit-pay.com/v1/subscription-plan ``` ### Query Parameters > [!NOTE] > > Mandatory fields are `name`, `cycle` and `amount`. Remember to include header `Content-Type: application/x-www-form-urlencoded` | Parameter | Description | Example | | - | - | - | | name | Plan name | Spotify Premium | | description | The description of the subscription plan | Spotify Monthly Subscription | | cycle | Billing frequency (weekly / monthly / yearly / custom / save\_card). If cycle = custom then the user has to send the fields cycle\_repeat and cycle\_frequency | monthly | | cycle\_repeat | \[This field is only applicable when cycle = custom] It's the number of times the cycle will repeat. | 4 | | cycle\_frequency | \[This field is only applicable when cycle = custom] It's the frequency of the cycle \[day / week / month / year] | week | | currency | Currency related to the recurring billing | SGD | | amount | Amount related to the recurring billing | 9.90 | | reference | Arbitrary reference number that you can map to your internal reference number. This value cannot be edited by the customer | XXXX123 | ```shell shell theme={"system"} curl --location --request POST 'https://api.sandbox.hit-pay.com/v1/subscription-plan' \ --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 Monthly Subscription' \ --data-urlencode 'currency=SGD' \ --data-urlencode 'amount=9.90' \ --data-urlencode 'cycle=monthly' \ --data-urlencode 'reference=spotify_premium_2022' ``` ```php PHP theme={"system"} request('POST', 'https://api.staging.hit-pay.com/v1/subscription-plan', [ 'form_params' =>[ 'name' => 'Spotify Premium', 'description' => 'Spotify Monthly Subscription', 'currency' => 'SGD' 'amount' => 9.90, 'cycle' => 'monthly', 'reference' => 'spotify_premium_2022' ], 'headers' => [ 'Content-Type' => 'application/x-www-form-urlencoded', 'X-Requested-With' => 'XMLHttpRequest', 'accept' => 'application/json', 'x-api-key' => 'meowmeowmeow', ], ]); echo $response->getBody(); ``` ### Response ```json theme={"system"} { "id": "973ee344-6737-4897-9929-edbc9d7bf433", "name": "Spotify Premium", "description": "Spotify Monthly Subscription", "cycle": "monthly", "cycle_repeat": null, "cycle_frequency": null, "currency": "sgd", "amount": 9.90, "reference": "spotify_premium_2022", "created_at": "2022-09-12T14:19:26", "updated_at": "2022-09-12T14:19:26" } ``` ## Step 2 - Create a recurring billing for the customer Once your customer has decided to start the subscription this endpoint will create the recurring billing request.\ Since this is a server-to-server communication, if you have a mobile or Web client that communicates with your REST API, you must have a new endpoint E.g. /create-subscription or reuse an existing endpoint. This endpoint will be responsible for making the recurring billing API call to hitpay. ### HTTP Request ``` POST https://api.sandbox.hit-pay.com/v1/recurring-billing ``` ### Query Parameters > [!NOTE] > > Mandatory fields are `plan_id`, `customer_email`, and `start_date`. > If you would like to create a subscription without a plan, you need to send `plan_id = null` and the following mandatory fields: `name`, `cycle`, `amount`, `customer_email`, and `start_date`. Remember to include the header `Content-Type: application/x-www-form-urlencoded`. | Parameter | Description | Example | | - | - | - | | plan\_id | Subscription plan id created from step 1 | 973ee344-6737-4897-9929-edbc9d7bf433 | | customer\_email | Customer email | [paul@hitpayapp.com](mailto:paul@hitpayapp.com) | | customer\_name | Customer name | Paul | | start\_date | Billing start date (YYYY-MM-DD) in SGT | 2022-11-11 | | amount | By default, the amount from the subscription plan will be used. Use this parameter for discounts for customers. | 7.90 | | currency | Currency related to the recurring billing | SGD | | payment\_methods\[] | Choice of payment methods you want to offer the customer | giro, card | | redirect\_url | URL where hitpay redirects the user after the user enters card details and the subscription is active. | [https://spotify.com/subscription-completed](https://spotify.com/subscription-completed) | | reference | Arbitrary reference number for mapping purposes. Customer cannot edit this value. | XXXX123 | | send\_email | Hitpay sends email receipts to the customer. Default value is false. | true | | times\_to\_be\_charged | Number of times to charge the customer. | 3 | ## Step 3 - Redirect customer to recurring billing page (One time set up) Redirect the customer to the "url" value. ![Recurring Billing API UI](https://mintcdn.com/hitpay/-cD8HWd1uePmhk98/images/recurring-ui-cards.png?fit=max\&auto=format\&n=-cD8HWd1uePmhk98\&q=85\&s=59560ce0947fe25c22d92e213eb0f8cd) Once the customer completes the payment information it will be redirect to "redirect\_url" ## Step 4: Handle Successful Payment ## Webhooks HitPay will send a Webhook POST request when there is a new charge or if there is an error charging the payment method.\ If you are using HitPay APIs to integrate into your app you must mark your order as paid ONLY after the webhook is received and validated. ### Register Your Webhook 1. Navigate to **Developers > Webhook Endpoints** in your dashboard 2. Click on **New Webhook** 3. Enter a name and your webhook URL 4. Select the recurring billing events you want to receive: * `charge.created` — When a recurring charge is successfully completed * `recurring_billing.method_attached` — When a payment method (card or APM) is attached * `recurring_billing.method_detached` — When a payment method is detached * `recurring_billing.subscription_updated` — When a subscription is updated, including status changes (active, cancelled, paused, expired) 5. Save your webhook configuration ### Webhook Payload When a payment is completed, HitPay sends a JSON payload to your registered webhook URL with the following headers: | HTTP Header | Description | | - | - | | Hitpay-Signature | HMAC-SHA256 signature of the JSON payload, using your salt value | | Hitpay-Event-Type | `completed` | | Hitpay-Event-Object | `payment_request` | | User-Agent | `HitPay v2.0` | ### Sample Webhook Payload ```json theme={"system"} { "id": "a1113980-3725-4cad-b6eb-208e18525e00", "business_id": "9868921e-2c9d-472e-8d66-f532719ab123", "channel": "recurrent", "customer_id": "a1113934-b188-4db8-b69e-98059efa3123", "status": "succeeded", "customer": { "name": "Thaisa", "email": "thaisa@hit-pay.com", "phone_number": null, }, "currency": "usd", "amount": 20, "home_currency": "usd", "payment_provider": { "code": "stripe_sg", "account_id": "acct_1MYk3LPLxyktaABC", "charge": { "type": "charge", "id": "ch_3T0D6iAMHowMCIhZ2u66zABC", "method": "card", "transfer_type": "application_fee", "details": { "brand": "Visa", "last4": "4242", "country": "United States of America", "country_code": "us" }, "logo": "/icons/payment-methods-2/card.svg" } }, "created_at": "2026-02-13T11:31:54+08:00", "updated_at": "2026-02-13T11:31:55+08:00", "closed_at": "2026-02-13T11:31:54+08:00" } ``` ### Validating the Webhook To ensure the webhook is authentic, validate the `Hitpay-Signature` header: 1. Receive the JSON payload and `Hitpay-Signature` from the request 2. Use your salt value (from the dashboard) as the secret key 3. Compute HMAC-SHA256 of the JSON payload using your salt 4. Compare the computed signature with `Hitpay-Signature` - they must match ```php PHP theme={"system"} function validateWebhook($payload, $signature, $salt) { $computedSignature = hash_hmac('sha256', $payload, $salt); return hash_equals($computedSignature, $signature); } // Usage $payload = file_get_contents('php://input'); $signature = $_SERVER['HTTP_HITPAY_SIGNATURE']; $salt = 'your_salt_from_dashboard'; if (validateWebhook($payload, $signature, $salt)) { $data = json_decode($payload, true); // Process the payment confirmation // Mark order as paid } else { http_response_code(401); exit('Invalid signature'); } ``` ```javascript NodeJS theme={"system"} const crypto = require('crypto'); function validateWebhook(payload, signature, salt) { const computedSignature = crypto .createHmac('sha256', salt) .update(payload) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(computedSignature), Buffer.from(signature) ); } // Usage in Express app.post('/webhook', (req, res) => { const payload = JSON.stringify(req.body); const signature = req.headers['hitpay-signature']; const salt = 'your_salt_from_dashboard'; if (validateWebhook(payload, signature, salt)) { // Process the payment confirmation // Mark order as paid res.status(200).send('OK'); } else { res.status(401).send('Invalid signature'); } }); ``` Congrats! You have now successfully completed the recurring billing integration. ## FAQs > **What happens if an attached card associated with an active plan gets declined?** > > If an attached card associated with a plan gets declined on the scheduled charge date of the plan, the customer is immediately sent an email requesting them to update their card details using the link. > At the same time, the merchant is also notified by email about the failed charge. > If the customer fails to attach a valid card within 7 days from the failed charge date, the subscription will move to an inactive status. > **When will a scheduled customer subscription be canceled?** > > The scheduled customer subscription will be canceled if the customer hasn't entered their payment details by the billing start date. > **If a customer's subscription is canceled, should I reuse the same one?** > > Yes, you can reuse the same subscription by calling the [Update recurring billing](/apis/recurring-billing/update-billing) API and setting a future start date. > **Webhook Signature Mismatch?** > > Possible reasons for wrong hmac value generated > > * Ensure that you are using the correct salt value from the correct environment (Sandbox or Production) > * Make sure NOT to include the hamc value when calculating the hmac > * Make sure all the values stated above are included in the payload including reference\_number. Use an empty string if the value does not exist > **Facing Invalid Business API Key Error** > > Possible reasons for this error: > > * You are using a production key in the sandbox or a sandbox key in production. Make sure the API base URL is correct. > * You are missing headers. Ensure that you include both the 'Content-Type' and 'X-Requested-With' headers. Refer to this [section](/apis/guide/online-payments#authentication) again. > **Product Checklist** > > 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 > **What about the 'webhook' parameter in the API?** > > The `webhook` parameter in the API is **deprecated** but still functional. We recommend registering your webhook URL in the dashboard instead for richer JSON payloads and support for multiple event types. # API Sandbox Guide Source: https://docs.hitpayapp.com/apis/guide/sandbox How to use the HitPay API sandbox for testing. Not the merchant dashboard login. # Sandbox Environment The HitPay sandbox environment allows developers to simulate payment flows without processing real transactions. It is essential for testing and debugging before moving to production. ![HitPay Sandbox Dashboard](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/sandbox_dashboard.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=2a934dac15b8ef9e1bb9e870e1963329) ### Important Notes * Sandbox and production are **completely separate accounts** * You can use **dummy business details** when signing up for sandbox * No verification or approval is required * Choose **Singapore** as your business country * Sandbox supports **PayNow**, **cards**, **GrabPay**, **GrabPay PayLater**, **ShopeePay**, and **Atome** ## Creating a Sandbox Account **1. Sign Up for a Sandbox Account** Visit the [Sandbox Account Creation Page](https://dashboard.sandbox.hit-pay.com/register) and enter test details (no real data required). Verify your email address to activate the account. **2. Access the Sandbox Dashboard** Log in at [https://dashboard.sandbox.hit-pay.com/login](https://dashboard.sandbox.hit-pay.com/login). The interface is identical to production, but uses test data. **3. Set Up Payment Methods** Go to **Settings → Payment Methods** and enable the payment methods you want to test. Sandbox supports PayNow, cards, ShopeePay, GrabPay, GrabPay PayLater, and Atome. **4. Generate API Keys** Navigate to **Settings** → **API Keys** and generate new keys for use in development. Use these only with the sandbox API URL. ## Sandbox Features ### Supported Payment Methods * Credit and debit cards * PayNow (via QR code) * ShopeePay * GrabPay * GrabPay PayLater * Atome ### Simulated Behavior * All transactions are test-only; no real charges occur * Webhook events are triggered to your test endpoints * API responses mirror the production system ### Request Logs The sandbox environment provides a request logging feature that allows you to monitor and debug all HTTP requests sent to your account. Access this feature by navigating to **Developers** → **Request Logs** in the sandbox dashboard. ![HitPay Request Logs Dashboard](https://mintcdn.com/hitpay/r_eGp2V_UuTke40V/images/api/request-logs.png?fit=max\&auto=format\&n=r_eGp2V_UuTke40V\&q=85\&s=aa96877c6eb8f5e0bf2718c1dc67b9e9) This feature enables you to: * View all API requests made to your sandbox account * See detailed request headers, body, and response data * Filter requests by HTTP status code (2xx, 4xx, 5xx) ## Test Cards Use the following card numbers to simulate various payment outcomes: | Card Type | Number | Expiry | CVC | Description | | - | - | - | - | - | | Visa | 4242 4242 4242 4242 | Any future date | Any 3 digits | Successful payment | | Visa (Declined) | 4000 0000 0000 0002 | Any future date | Any 3 digits | Declined transaction | | Mastercard | 5555 5555 5555 4444 | Any future date | Any 3 digits | Successful payment | | American Express | 3782 822463 10005 | Any future date | Any 4 digits | Successful payment | ## Test QR Payments To simulate a QR-based payment (PayNow, ShopeePay, GrabPay, GrabPay PayLater, or Atome): * Start a transaction using the sandbox dashboard or API * When prompted, a QR code will be generated * Use your mobile phone camera (not a payment app) to scan the QR code * The transaction will automatically simulate a successful payment ## Test Recurring Billing and Saved Payment Methods Sandbox supports the full mock flow for [Save Payment Method](/apis/guide/save-payment-method) and [Recurring Billing](/apis/guide/recurring-billing) for the following wallets: | Payment Method | Method Code | | :- | :- | | ShopeePay | `shopee_pay` | | GrabPay | `grabpay_direct` | | Touch 'n Go | `touch_n_go` | To test: * Call `POST /v1/recurring-billing` with `save_payment_method=true`, one `payment_methods[]` entry from the table above, and `generate_direct_link=true` (see [Embedded Recurring APMs](/apis/guide/embedded-recurring-billing) for the full request shape) * Open the `direct_link.direct_link_url` returned in the response in your browser to simulate the customer authorising the wallet * HitPay fires `recurring_billing.method_attached` once the wallet is linked * Call `POST /v1/charge/recurring-billing/{id}` to simulate off-session and recurring charges against the saved method, with `charge.created` and `charge.failed` webhooks firing as in production ### Webhook Configuration * Use separate webhook URLs for sandbox and production environments * Webhooks in sandbox are sent to your test endpoints * Webhooks in production are sent to your live endpoints **IP Addresses to Allowlist**\ If your system requires allowlisting for incoming webhooks, ensure the following IPs are permitted: * **Production Webhooks**: `3.1.13.32`, `52.77.254.34` * **Sandbox Webhooks**: `54.179.156.147` ### Switching Between Sandbox and Production ```bash theme={"system"} # API Endpoints and Variables # Sandbox HITPAY_API_KEY=your_sandbox_api_key HITPAY_API_URL=https://api.sandbox.hit-pay.com # Production HITPAY_API_KEY=your_production_api_key HITPAY_API_URL=https://api.hit-pay.com ``` ## FAQs > **Which payment methods can I test in sandbox?** > > The sandbox supports cards, PayNow, ShopeePay, GrabPay, GrabPay PayLater, and Atome. For payment methods not yet available in sandbox, the integration approach is identical — simply swap the API key, base URL, and payment method parameter when moving to production. > **Can I convert my Sandbox account to production?** > > No, they are separate accounts. Sandbox and production environments are completely independent, and you cannot convert between them. You'll need to create a separate production account when you're ready to go live. # Save Payment Method Source: https://docs.hitpayapp.com/apis/guide/save-payment-method API to save a payment method including cards and APMs securely for future billing ## Overview The Save Payment Method API allows you to securely store a customer's payment credentials and charge them later—on your schedule, for any amount. Unlike fixed recurring billing, this approach gives you full control over when and how much to charge. > [!NOTE] > > **Key Concept:** You're creating a "billing session" where the customer authorizes you to save their payment method. Once saved, you can charge it anytime via API without the customer needing to re-enter their details. ## Supported Payment Methods | Payment Method | Supported Countries | Supported Currencies | Method Code | | :- | :- | :- | :- | | Cards (Visa, Mastercard, Amex) | Singapore, Malaysia | All | `card` | | ShopeePay | Singapore, Malaysia, Philippines | SGD, MYR, PHP | `shopee_pay` | | GrabPay | Singapore, Malaysia | SGD, MYR | `grabpay_direct` | | Touch 'n Go | Malaysia | MYR | `touch_n_go` | | LINE Pay | All (Cross-Border) | THB | `line_pay` | > [!TIP] > > When creating the billing session, you can offer multiple payment methods (e.g., cards + ShopeePay + GrabPay) and let the customer choose their preferred option. > [!NOTE] > > **Want to keep customers on your site?** When using APMs (ShopeePay, GrabPay, Touch ‘n Go, LINE Pay, or GIRO), you can handle the payment flow directly in your UI using the deep link or setup instructions returned in the API response, no redirect to a HitPay-hosted page. This is not supported for cards. See [Embedded Recurring APMs](/apis/guide/embedded-recurring-billing). ## When to Use This This API is ideal when you need flexibility in your billing: > **Variable Billing Amounts** > > Charge different amounts each time based on usage, consumption, or services rendered. > **On-Demand Charges** > > Bill customers when needed rather than on a fixed schedule (e.g., marketplace payouts, top-ups). > **Subscription with Flexibility** > > Run subscriptions where the amount may change (upgrades, add-ons, prorated charges). > **Delayed First Charge** > > Save the payment method now but only charge when the customer's trial ends or service begins. ## How It Works The integration follows 3 steps: **1. Create a Billing Session** Call the `/v1/recurring-billing` API with `save_payment_method=true`. You'll receive a checkout URL to redirect the customer. **2. Customer Attaches Payment Method** Redirect the customer to the checkout URL where they select their preferred payment method (card, ShopeePay, GrabPay, etc.) and authorize it. **3. Charge the Saved Method** Once attached, use the charge API to bill the customer any amount, anytime. No customer interaction required. ## Step 1 – Create a Billing Session Create a billing session by calling the `/v1/recurring-billing` API with `save_payment_method=true`. This returns a checkout URL where your customer can attach their payment method. ### Endpoint ``` POST https://api.sandbox.hit-pay.com/v1/recurring-billing ``` ### Request Parameters > [!NOTE] > > **Required fields:** `name`, `customer_email`, `amount`, and `save_payment_method=true` | Parameter | Description | Example | | :- | :- | :- | | name | Name for this billing session | Spotify Premium | | customer\_email | Customer's email address | [paul@hitpayapp.com](mailto:paul@hitpayapp.com) | | amount | Amount to display (minimum 1.00) | 9.90 | | currency | Currency code | SGD | | save\_payment\_method | Must be `true` to save the payment method | true | | payment\_methods\[] | Payment methods to offer. Include multiple for customer choice | card, shopee\_pay, grabpay\_direct | | redirect\_url | URL to redirect customer after they attach their payment method | [https://example.com/success](https://example.com/success) | | reference | Your internal reference ID to identify this customer/session | cust\_123 | | customer\_name | Customer's name (optional) | Paul | | description | Description shown to customer (optional) | Spotify Membership | | send\_email | Send email receipt to customer. Default: false | true | ### Example Request ```shell theme={"system"} curl --location --request POST 'https://api.sandbox.hit-pay.com/v1/recurring-billing' \ --header 'X-BUSINESS-API-KEY: your_api_key' \ --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 'save_payment_method=true' \ --data-urlencode 'customer_email=paul@hitpayapp.com' \ --data-urlencode 'customer_name=Paul' \ --data-urlencode 'amount=9.90' \ --data-urlencode 'currency=SGD' \ --data-urlencode 'payment_methods[]=giro' \ --data-urlencode 'payment_methods[]=card' \ --data-urlencode 'payment_methods[]=shopee_pay' \ --data-urlencode 'payment_methods[]=grabpay_direct' \ --data-urlencode 'redirect_url=https://example.com/success' \ --data-urlencode 'reference=cust_123' ``` ### Response ```json theme={"system"} { "id": "9741164c-06a1-4dd7-a649-72cca8f9603a", "business_recurring_plans_id": "", "customer_name": "Paul", "customer_email": "paul@hitpayapp.com", "name": "Spotify Premium", "description": "Spotify Membership", "reference": "cust_id_123", "cycle": "save_card", "cycle_repeat": null, "cycle_frequency": null, "currency": "sgd", "amount": 9.9, "times_to_be_charged": 3, "times_charged": 0, "status": "scheduled", "send_email": false, "save_card": 1, "redirect_url": "https://github.com/", "payment_methods": ["giro", "card", "grabpay_direct", "shopee_pay"], "created_at": "2022-09-13T16:33:47", "updated_at": "2022-09-13T16:33:47", "expires_at": null, "url": "https://securecheckout.staging.hit-pay.com/9673bdea-058c-44b5-a957-845a7c487bc2/recurring-plan/9741164c-06a1-4dd7-a649-72cca8f9603a" } ``` > [!NOTE] > > **Important:** Save the `id` from the response. You'll need this to charge the customer later. ## Step 2 – Redirect Customer to Checkout Redirect your customer to the `url` returned in Step 1. This is a one-time setup where the customer selects and authorizes their preferred payment method. ![Checkout UI for saving payment method](https://mintcdn.com/hitpay/-cD8HWd1uePmhk98/images/recurring-ui-cards.png?fit=max\&auto=format\&n=-cD8HWd1uePmhk98\&q=85\&s=59560ce0947fe25c22d92e213eb0f8cd) Once the customer completes this flow: * They are redirected to your `redirect_url` * Their payment method is now saved and ready to be charged ## Step 3 – Charge the Saved Payment Method After the customer has attached their payment method, you can charge them anytime by calling the charge API. ### Endpoint ``` POST https://api.sandbox.hit-pay.com/v1/charge/recurring-billing/{id} ``` Replace `{id}` with the billing session ID from Step 1. ### Request Parameters > [!NOTE] > > **Required fields:** `amount` and `currency` > > Include header `Content-Type: application/x-www-form-urlencoded` | Parameter | Description | Example | | :- | :- | :- | | amount | Amount to charge | 9.90 | | currency | Currency code | SGD | ### Example Request ```shell theme={"system"} curl --location --request POST 'https://api.sandbox.hit-pay.com/v1/charge/recurring-billing/9741164c-06a1-4dd7-a649-72cca8f9603a' \ --header 'X-BUSINESS-API-KEY: your_api_key' \ --header 'X-Requested-With: XMLHttpRequest' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'amount=9.90' \ --data-urlencode 'currency=SGD' ``` ### Response ```json theme={"system"} { "payment_id": "9746f906-bdbb-4064-8372-642cf5877e0c", "recurring_billing_id": "9746f8c2-2b7c-4c78-8832-012f203ae687", "amount": 9.9, "currency": "sgd", "status": "succeeded" } ``` > [!TIP] > > You can charge different amounts each time. The `amount` in Step 1 is just for display during the authorization flow—it doesn't limit what you can charge later. *** ## Webhooks HitPay will send a Webhook POST request when there is a new charge or if there is an error charging the payment method.\ If you are using HitPay APIs to integrate into your app you must mark your order as paid ONLY after the webhook is received and validated. ### Register Your Webhook 1. Navigate to **Developers > Webhook Endpoints** in your dashboard 2. Click on **New Webhook** 3. Enter a name and your webhook URL 4. Select the events you want to receive: * `charge.created` — When a charge is successfully completed * `recurring_billing.method_attached` — When a payment method is attached * `recurring_billing.method_detached` — When a payment method is detached * `recurring_billing.subscription_updated` — When a billing session is updated, including status changes (active, cancelled, paused, expired) 5. Save your webhook configuration ### Webhook Payload When a payment is completed, HitPay sends a JSON payload to your registered webhook URL with the following headers: | HTTP Header | Description | | - | - | | Hitpay-Signature | HMAC-SHA256 signature of the JSON payload, using your salt value | | Hitpay-Event-Type | `completed` | | Hitpay-Event-Object | `payment_request` | | User-Agent | `HitPay v2.0` | ### Sample Webhook Payload ```json theme={"system"} { "id": "a1113980-3725-4cad-b6eb-208e18525e00", "business_id": "9868921e-2c9d-472e-8d66-f532719ab123", "channel": "recurrent", "customer_id": "a1113934-b188-4db8-b69e-98059efa3123", "status": "succeeded", "customer": { "name": "Thaisa", "email": "thaisa@hit-pay.com", "phone_number": null, }, "currency": "usd", "amount": 20, "home_currency": "usd", "payment_provider": { "code": "stripe_sg", "account_id": "acct_1MYk3LPLxyktaABC", "charge": { "type": "charge", "id": "ch_3T0D6iAMHowMCIhZ2u66zABC", "method": "card", "transfer_type": "application_fee", "details": { "brand": "Visa", "last4": "4242", "country": "United States of America", "country_code": "us" }, "logo": "/icons/payment-methods-2/card.svg" } }, "created_at": "2026-02-13T11:31:54+08:00", "updated_at": "2026-02-13T11:31:55+08:00", "closed_at": "2026-02-13T11:31:54+08:00" } ``` ### Validating the Webhook To ensure the webhook is authentic, validate the `Hitpay-Signature` header: 1. Receive the JSON payload and `Hitpay-Signature` from the request 2. Use your salt value (from the dashboard) as the secret key 3. Compute HMAC-SHA256 of the JSON payload using your salt 4. Compare the computed signature with `Hitpay-Signature` - they must match ```php PHP theme={"system"} function validateWebhook($payload, $signature, $salt) { $computedSignature = hash_hmac('sha256', $payload, $salt); return hash_equals($computedSignature, $signature); } // Usage $payload = file_get_contents('php://input'); $signature = $_SERVER['HTTP_HITPAY_SIGNATURE']; $salt = 'your_salt_from_dashboard'; if (validateWebhook($payload, $signature, $salt)) { $data = json_decode($payload, true); // Process the payment confirmation // Mark order as paid } else { http_response_code(401); exit('Invalid signature'); } ``` ```javascript NodeJS theme={"system"} const crypto = require('crypto'); function validateWebhook(payload, signature, salt) { const computedSignature = crypto .createHmac('sha256', salt) .update(payload) .digest('hex'); return crypto.timingSafeEqual( Buffer.from(computedSignature), Buffer.from(signature) ); } // Usage in Express app.post('/webhook', (req, res) => { const payload = JSON.stringify(req.body); const signature = req.headers['hitpay-signature']; const salt = 'your_salt_from_dashboard'; if (validateWebhook(payload, signature, salt)) { // Process the payment confirmation // Mark order as paid res.status(200).send('OK'); } else { res.status(401).send('Invalid signature'); } }); ``` *** Congrats! You've successfully integrated the Save Payment Method API. ## FAQs > **Is it possible to Authorization an amount before charging?** > > No, hitpay does not support authorization or holding of card > transaction. > **Do I need to specify an amount when saving a payment method?** > > Yes, a minimum amount of 1 is required to initiate the save-payment-method session. > **Can I modify the amount I will charge my customer later on?** > > Yes, once your customer has attached a payment method to the > subscription, you can charge any amount using the [charge the saved payment method > API](https://docs.hitpayapp.com/apis/guide/save-payment-method-for-billing#step-3-charge-the-saved-payment-method). > **Product Checklist** > > 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 > **What about the 'webhook' parameter in the API?** > > The `webhook` parameter in the API is **deprecated** but still functional. We recommend registering your webhook URL in the dashboard instead for richer JSON payloads and support for multiple event types. # Static QR Codes Source: https://docs.hitpayapp.com/apis/guide/static-qr Comprehensive guide on integrating and using Static QR Code payments through HitPay API. ## Introduction HitPay's Static QR feature enables businesses to create multiple "Static" QR codes that will facilitate QR payments. This solution is particularly beneficial for small and micro businesses, donation drives, and businesses with multiple locations. ## What is a Static QR Code ? A Static QR Code for payments contains fixed payment information, such as the merchant account or business name. Once generated, the code does not change and can be reused indefinitely by any number of customers. Learn more about HitPay Static QRs [here](../static-qrs/static-qr) > [!WARNING] > > Because the payment amount is not embedded in the QR code, customers must enter the correct amount during payment. Consider using [Embedded QR codes](embedded-qr-code-payments) for automated billing and precise transaction tracking. ## Core Concept At a high level, integrating Static QR codes into your system involves a 4-step process: > **[Create a Static QR](#step-1-create-payment-request)** > > The first step is to create a static QR code. You can name the QR & assign it to a HitPay location. > **[Present the Static QR code to the customer](#step-2-generate-present-qr-code)** > > Once the Static QR is created, get the QR value and present the QR code to the end-user. > **[Client Scans and Initiates Payment](#step-3-client-scans-initiates-payment)** > > The client scans the QR code and initiates the payment through their banking app. > **[Handle Webhooks and Server Communication](#step-4-handle-webhooks-server-communication)** > > After the payment is processed, handle webhooks to receive payment notifications and manage server-client communication. ## Supported Methods Please note that Static QR Codes is supported only for some payment methods and countries. Here is the list of methods that support QR Codes: | Payment Method | Code | Country | | - | - | - | | PayNow | paynow\_online | SG | | QRPH | qprh\_netbank | PH | ### Authentication Before integration, it's essential to understand how Hitpay APIs are authenticated. Hitpay utilizes API keys to grant access to the API. You can locate this key in your dashboard under "API keys." Hitpay requires the API key to be included in all API requests to the server. This key should be placed in a header that follows the format shown below: `X-BUSINESS-API-KEY: meowmeowmeow` ```php PHP theme={"system"} $request->setHeaders(array( 'X-BUSINESS-API-KEY' => 'meowmeowmeow', 'Content-Type' => 'application/x-www-form-urlencoded', 'X-Requested-With' => 'XMLHttpRequest' )); ``` ```shell Shell theme={"system"} # With shell, you can just pass the correct header with each request curl "api_endpoint_here" -H "X-BUSINESS-API-KEY: meowmeowmeow" -H "X-Requested-With: XMLHttpRequest" ``` > [!WARNING] > > API keys should be kept confidential and only stored on your servers. Do not store it on your mobile or web client ## Step 1: Create a Static QR ### Endpoint **POST /v1/static\_qr** Creates a payment request and generates a QR code for the `paynow_online` payment method. ### Request Parameters | Parameter | Type | Description | | - | - | - | | name | string | Required. The amount to be paid. | | payment\_provider\_method | string | Required. Eg. Specify `paynow_online` as the payment method. | | location\_id | string | Optional. The HitPay `location_id` to be tagged under all transactions made thorugh this Static QR | ### Example Request ```json theme={"system"} { "name": "My First Static QR", "payment_provider_method": ["paynow_online"], "location_id": "96e2163c-d9bb-4f36-8bbd-09ca1381d3e6" } ``` ### Response The response will include a qr\_value object, which contains the data to be converted into a scannable QR code (qr\_code). > **Example Response for Create Static QR Code Request** ## Step 2: Print / Present the QR Code Once the Static QR code value is obtained, you can display the QR code using the `qr_value` data and present it to the user. ## Step 3: Client Scans and Initiates Payment The client scans the presented QR code with their banking app, enters the amount and initiates the payment process. ## Step 4: Handle Webhooks and Server Communication After the payment is processed, handle webhooks to receive payment notifications and manage server-client communication to update the payment status in your system. ### What is a Webhook? Webhook is a POST request sent from HitPay's server to your server about the payment confirmation. If you are using hitpay APIs to integrate into your e-commerce checkout you must mark your order as paid ONLY after the webhook is received and validated. # HitPay for Vercel Source: https://docs.hitpayapp.com/apis/guide/vercel Accept PayNow, GrabPay, DuitNow, GCash and cards in Vercel and v0 apps. Install HitPay from the Vercel Marketplace and sign in. No API keys to copy. There are two ways to use HitPay from a Vercel project. Both use HitPay sign-in (OAuth), so there are no API keys to copy. | | HitPay integration (recommended) | Vercel Connect | | - | - | - | | Setup | Install from the Vercel Marketplace and sign in to HitPay | Create your own HitPay app, then add a Vercel connector | | How your app gets a token | Reads `HITPAY_ACCESS_TOKEN` from the project | Asks Vercel for one at runtime | | Token stored in your project | Yes, as a sensitive environment variable | No | | Token refresh | Yearly, then you redeploy | Automatic, no redeploy | | HitPay scopes | Create and read payments | Any scopes HitPay approves for your app | | Cost | Free | Vercel bills Connect per token request | ## Use the HitPay integration (recommended) The [HitPay integration](https://vercel.com/integrations/hitpay) connects your HitPay account in a few clicks and writes a HitPay token to your projects as environment variables. ### Prerequisites * A Vercel account or team * A HitPay account where you're an **Owner** or **Admin** **1. Add the integration** Open the [HitPay integration on Vercel](https://vercel.com/integrations/hitpay) and click **Connect Account**. Choose your Vercel team and the projects to connect. **2. Connect your HitPay account** Vercel opens the HitPay setup page. Click **Connect HitPay**, sign in to HitPay, choose your business if you have more than one, and approve access. ![Connect your HitPay account card showing a live connection and the approved access scopes](https://mintcdn.com/hitpay/WytL9VZOyl9gOF-H/images/apis/guide/vercel/connect.png?fit=max\&auto=format\&n=WytL9VZOyl9gOF-H\&q=85\&s=273802806af466e070211b995d10339d) **3. Choose your projects** Select the Vercel projects that should receive HitPay credentials, then click **Save env vars to projects**. ![Project picker with storefront and checkout-api selected](https://mintcdn.com/hitpay/WytL9VZOyl9gOF-H/images/apis/guide/vercel/projects.png?fit=max\&auto=format\&n=WytL9VZOyl9gOF-H\&q=85\&s=e3710f379c18ade89f8a1ec0a32be365) **4. Redeploy** Click **Return to Vercel**, then redeploy your projects. Vercel only applies new environment variables to new deployments. ![Environment variables written by the integration: HITPAY\_ACCESS\_TOKEN, HITPAY\_API\_BASE, HITPAY\_API\_MODE and HITPAY\_BUSINESS\_ID](https://mintcdn.com/hitpay/WytL9VZOyl9gOF-H/images/apis/guide/vercel/env-vars.png?fit=max\&auto=format\&n=WytL9VZOyl9gOF-H\&q=85\&s=e6e5b396fc708242efaca9d3b1b594c5) Each project you select receives these environment variables: | Variable | Value | Environments | | - | - | - | | `HITPAY_ACCESS_TOKEN` | OAuth access token for your HitPay business (sensitive) | Production, Preview | | `HITPAY_API_BASE` | `https://api.hit-pay.com` (optional in code; default to this value) | All | | `HITPAY_API_MODE` | `live` | All | | `HITPAY_BUSINESS_ID` | Your HitPay business ID | All | ### What the integration's token can do The integration requests `business:read`, `payments:read` and `payments:create`. Its token can: * Read your business profile (`GET /v1/info`) * Create payment requests * Read payment requests and payments It can't refund or cancel payments, or manage recurring billing, products, orders, invoices or customers. For those, use [Vercel Connect](#use-vercel-connect) with a HitPay app that has the [scopes](/platforms/oauth#scopes) you need. ### Manage the integration **Change projects or reconnect**: In your Vercel dashboard, go to **Integrations**, open **HitPay**, and click **Configure**. Open it in the same browser you installed with. **Token refresh**: Access tokens last one year. The integration refreshes them 30 days before they expire and updates `HITPAY_ACCESS_TOKEN` on your projects. Redeploy to pick up the new token. **Uninstall**: Remove the integration from your Vercel dashboard. The integration deletes the HitPay environment variables it added to your projects. ## Use Vercel Connect With [Vercel Connect](https://vercel.com/docs/connect), Vercel keeps your HitPay approval and gives your app a short-lived token when it needs one. Nothing secret is stored in your project, and refreshed tokens take effect without a redeploy. It takes more setup than the integration: you create your own HitPay app and a connector in your Vercel team. Use it if you need scopes the integration doesn't request, or don't want a token stored in your project. ### Prerequisites * A Vercel account or team with access to [Vercel Connect](https://vercel.com/docs/connect) * A HitPay account where you're an **Owner** or **Admin** **1. Create a HitPay app** In your HitPay dashboard, go to **Developers** > **App Builder** and click **New App**. Add `https://connect.vercel.com/callback` to **Redirect URIs**, then save the client ID and client secret. The secret is shown only once. **2. Request payment scopes** New apps only have `business:read`. In the app's detail panel, click **Request Scopes** and request the scopes you need, such as `payments`. Wait until HitPay approves the request before you continue. See [scopes](/platforms/oauth#scopes). **3. Add a HitPay connector in Vercel** In your Vercel dashboard, go to **Connect** > **Add Connection** > **OAuth** > **Bring Your Own**, and enter: | Field | Value | | - | - | | Server URL | `https://api.hit-pay.com` | | Authorization endpoint | `https://dashboard.hit-pay.com/oauth/authorize` | | Token endpoint | `https://api.hit-pay.com/v1/open/oauth/token` | | Client ID and secret | From your HitPay app | | Token auth method | `client_secret_post` | > [!NOTE] > > Vercel shows "Discovery did not find OAuth metadata for this server URL." This is expected. Fill in the endpoints yourself. **4. Connect your project** On the connector page, click **Connect Project** and choose the project that takes payments. Click **Test User Token**, sign in to HitPay and approve access to check that the connector works. **5. Get a token in your code** Install `@vercel/connect`. Request a token for the connector, and if the merchant hasn't approved HitPay access yet, send them to the approval URL: ```ts lib/hitpay-token.ts theme={"system"} import { getToken, startAuthorization, UserAuthorizationRequiredError, } from "@vercel/connect"; const CONNECTOR = "api.hit-pay.com/hitpay"; // the connector UID shown in Vercel export async function hitpayToken(userId: string, returnUrl: string) { const subject = { type: "user" as const, id: userId }; try { return { token: await getToken(CONNECTOR, { subject }) }; } catch (err) { if (err instanceof UserAuthorizationRequiredError) { const { url } = await startAuthorization(CONNECTOR, { subject }, { callbackUrl: returnUrl }); return { authorizeUrl: url }; } throw err; } } ``` `userId` is your app's ID for the merchant. Connect stores one HitPay approval per user ID. Then call HitPay with the token, as in [Accept a payment](#accept-a-payment). ## Accept a payment Call the HitPay API from your server with the token as a Bearer token. Requests and responses are the same as with an API key; only the `Authorization` header changes. Use the token server-side only. **1. Create a payment request** ```ts app/api/checkout/route.ts theme={"system"} export async function POST(request: Request) { const base = process.env.HITPAY_API_BASE ?? "https://api.hit-pay.com"; // Vercel Connect: const { token } = await hitpayToken(userId, returnUrl); const token = process.env.HITPAY_ACCESS_TOKEN; const origin = new URL(request.url).origin; const res = await fetch(`${base}/v1/payment-requests`, { method: "POST", headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/x-www-form-urlencoded", }, body: new URLSearchParams({ amount: "25.00", currency: "SGD", reference_number: "order-123", redirect_url: `${origin}/checkout/complete`, }), }); const { id, url } = await res.json(); // Store `id` with your order, then send the customer to `url`. return Response.json({ id, url }); } ``` **2. Send the customer to checkout** Redirect the customer to the returned `url`. HitPay's hosted checkout shows the payment methods enabled on your account, such as PayNow and GrabPay in Singapore, DuitNow and FPX in Malaysia, GCash and QR Ph in the Philippines, and cards. **3. Confirm the payment** When the customer returns to your `redirect_url`, read the payment request from HitPay and check that its `status` is `completed`: ```ts theme={"system"} const res = await fetch(`${base}/v1/payment-requests/${id}`, { headers: { Authorization: `Bearer ${token}` }, }); const { status } = await res.json(); // "completed" once paid ``` > [!WARNING] > > Don't treat the redirect itself as proof of payment. Always confirm the status with the API. You can also pass a `webhook` URL when you create the payment request to have HitPay notify your server when the payment completes. Webhook registration, virtual accounts, static QR codes and terminals aren't available with OAuth tokens and still need a HitPay API key. See [Connect Merchant Accounts (OAuth)](/platforms/oauth). > [!NOTE] > > Both options connect live HitPay accounts, so payments made while testing are real. Use a small amount and refund it from your HitPay dashboard. ## Use with v0 and other AI coding tools v0 can't run the integration's install flow or set up a Connect connector, so it may ask you to paste `HITPAY_ACCESS_TOKEN` or `HITPAY_API_BASE` into an environment variable form. Skip that form. Install the HitPay integration on the project your v0 chat deploys to, then deploy again. You don't need `HITPAY_API_BASE`: the code above defaults it to `https://api.hit-pay.com`. > [!TIP] > > Point your agent at [vercel-connect.hitpay.dev/llms.txt](https://vercel-connect.hitpay.dev/llms.txt). It tells AI coding tools how to get a HitPay token instead of asking you for credentials. To query your HitPay sales and payouts from an AI assistant, connect the [MCP Server](/apis/guide/mcp-server). To have your coding assistant write HitPay integration code, install [AI Agent Skills](/apis/guide/ai-skills). ## Revoke access In your HitPay dashboard, go to **Developers** > **Connected Apps** and remove the app. HitPay invalidates its tokens immediately, and API calls return `401 Unauthorized`. Send the merchant through approval again to reconnect. ## Troubleshooting > **The integration's setup page says this browser isn't authorized** > > The setup page only opens in the browser you installed the integration with. Open **Configure** from the integration in your Vercel dashboard in that browser, or reinstall the integration. > **v0 asks you to enter HITPAY\_ACCESS\_TOKEN** > > Skip the form. Install the integration on the project the chat deploys to, then redeploy. See [Use with v0 and other AI coding tools](#use-with-v0-and-other-ai-coding-tools). > **Your app can't find HITPAY\_ACCESS\_TOKEN** > > Redeploy the project. Environment variables only reach deployments created after they're added. `vercel env pull` doesn't download sensitive variables, so the integration's token isn't available locally. > **API calls return 401 Unauthorized** > > The token was revoked or has expired. With the integration, open **Configure**, click **Reconnect**, save the env vars to your projects again, and redeploy. With Vercel Connect, send the merchant through approval again. > **Connect shows an error after you approve access on HitPay** > > Check that `https://connect.vercel.com/callback` is in your HitPay app's redirect URIs, and that HitPay has approved the scopes you need. Only business Owners and Admins can approve access. # Use WebMCP to complete HitPay payments in a browser Source: https://docs.hitpayapp.com/apis/guide/webmcp Experimental: build browser agents that use HitPay's WebMCP tools on the online store and checkout page to search products, manage the cart, fill payer details, pick a payment method, and pay with the payer's confirmation. [WebMCP](https://developer.chrome.com/docs/ai/webmcp) is a proposed web standard. It lets a web page register structured tools that an AI agent running in the user's browser can call. Each tool has a name, a description, a JSON Schema for its input, and hints about what it does. HitPay registers WebMCP tools on its payment pages. Your agent does not have to scrape the page or simulate clicks. It calls a tool to read the checkout, fill the payer's details, choose a payment method or submit a payment, and gets a structured JSON answer back. This makes browser agents more reliable and more efficient. The tools work on behalf of the payer who has the page open. They do only what that payer could do by hand on the same page, and they change what the payer sees on screen. > [!WARNING] > > WebMCP is an experimental browser capability based on a proposed web standard. Browser support, tool availability and tool schemas can change. See [Experimental capability](#experimental-capability). > [!NOTE] > > Looking to connect an AI assistant to your **business data** instead? That's the [HitPay MCP Server](/apis/guide/mcp-server). WebMCP on this page is for agents that act on behalf of a **payer** on a HitPay page in the browser. ## Supported HitPay pages | Page | Description | | - | - | | **HitPay online store** | The merchant's storefront, where the payer browses products and builds a cart. | | **HitPay checkout page** | The hosted page where the payer pays a payment link, an invoice or an online store order. | The tools available depend on the page, the state of the payment (for example, which payment methods the merchant offers for the amount) and what the payer is doing at that moment. ## Available tools The lists below describe the tools at the time of writing. Treat them as a guide, not a contract: read each tool's live definition from the page, as described in [Discover tools at runtime](#discover-tools-at-runtime). ### Online store The storefront tools let an agent search the catalogue, read product details, manage the cart and fill the store's checkout form. Each tool uses the same actions as the storefront UI, so the payer sees the cart badge, cart drawer and checkout form change while the agent works. No online store tool submits payment. The payer always presses Pay, and card entry, 3D Secure and wallet authentication happen on the [HitPay checkout page](#checkout-page). #### On every storefront page | Tool | What it does | | - | - | | `search_products` | Searches the catalogue by keyword, with an optional category filter, sort order and pagination (10 products per page). Returns each product's `id`, `handle`, name, `price`, `currency`, `available` and `url`, plus pagination details. | | `get_product` | Returns a product's full details, read live: description, stock, `has_variations`, `variations` (each with `id`, name, `price` and `in_stock`), add-ons, and the minimum and maximum order quantity. | | `list_categories` | Returns the store's categories, with their IDs and handles, nested as they are in the store. | | `open_product_page` | Takes the payer to a product's page. Returns the URL it navigated to. | | `get_cart` | Returns the cart: each line's `cart_product_item_id`, product, variation, quantity and line price, the cart totals and the checkout URL. | | `add_to_cart` | Adds a product to the cart. Pass `variation_id` for a product with variations. Returns `added: true` with the line added and the updated cart. A product with required add-ons or an open amount can't be added by tool: the error points to `open_product_page` so the payer can finish on the product page. | | `update_cart_item` | Changes the quantity of a cart line. Returns the updated cart. | | `remove_cart_item` | Removes a cart line. Returns the updated cart. | | `begin_checkout` | Takes the payer to the store's checkout step. Returns `navigated_to` with the checkout URL. Returns an error if the cart is empty. | #### On the store's checkout step These tools appear only on the store's checkout step (`/checkout/{cart_id}`), and are removed when the payer leaves it. Each one returns the updated checkout summary. | Tool | What it does | | - | - | | `get_checkout_summary` | Returns the checkout form: customer details, delivery method and options (including `delivery.shipping_options`), shipping address, coupon, totals and any validation errors. | | `set_customer_details` | Fills the payer's first name, last name, email, phone and remarks. | | `set_delivery_method` | Chooses shipping or pickup. Pass `pickup_id` when the store has more than one pickup location. | | `set_shipping_address` | Fills the country, state, city, street and postal code, and optionally a shipping option. `delivery.shipping_options` lists the options for the country, and the selected option's fee appears in the totals. | | `apply_coupon` | Applies a coupon code. Send an empty `code` to remove the coupon. | > [!NOTE] > > * Prices in storefront results are formatted for display, such as `"S$9.00"`, with the currency in a separate `currency` field. > * `available` in `search_products` results comes from a cache and can lag behind live stock. Call `get_product` to confirm stock before adding a product to the cart. > * On a store protected by an access code, no tools are registered until the payer enters the code. ### Checkout page All amounts on the checkout page are strings in major units with the currency's precision, such as `"49.90"` for SGD or `"5000"` for JPY. | Tool | Available | What it does | | - | - | - | | `get_checkout_summary` | Always | Returns the merchant, what the payment is for, the order ID, the amount and currency, and whether the checkout is `open`, `paid` or `expired`. When the merchant offers localised pricing, it also returns the currencies on offer and the one selected. Pass `selected_currency` to switch currency, the same as tapping a currency card. | | `list_payment_methods` | Always | Lists the payment methods for the selected currency in display order, with each method's label, minimum and maximum amount, fee and total, and any extra fields it asks for. A method the amount does not qualify for is marked unavailable, with the reason. | | `fill_checkout_form` | Always | Fills the payer's details: email, and where the checkout asks for them, name, phone, postal code, address and the merchant's custom fields. The schema lists only the fields this checkout shows. Send every field in one call. Returns what was filled, what is still missing, any errors, and any fields that are locked. | | `select_payment_method` | When the checkout offers at least one method | Selects a payment method, the same as tapping its tile. Returns the fee, the updated total and the payer's next step: `enter_card_details`, `press_wallet_button`, `view_account_details`, `scan_qr` or `press_pay`. If the payer's details are incomplete, it returns `blocked_reason: "form_incomplete"` and the missing fields. | | `get_payment_qr` | Only while a QR code is on screen | Returns the QR code for the selected method (PayNow, for example), as its content or an image, with the amount, currency and when it expires. The payer scans it from their banking or wallet app. | | `submit_payment` | Only when a card is selected, the card details are complete and the form is valid | Pays with the card, the same as pressing Pay. Returns `succeeded`, `declined`, `cancelled` (the payer declined to confirm) or `requires_action` (a 3D Secure challenge is on screen for the payer). | ## Discover tools at runtime Don't hard-code tool names, schemas or assumptions about which tools exist. HitPay registers and removes tools as the page changes, and a tool's schema can change during a payment. For example: * On the online store, the checkout step tools exist only on the store's checkout step. * `fill_checkout_form` lists only the fields this merchant's checkout asks for, and the options of each custom field. * `get_checkout_summary` accepts `selected_currency` only when the payer can switch currency. * `get_payment_qr` exists only while a QR code is on screen, and disappears when it expires or the payer changes method or currency. * `submit_payment` exists only while pressing Pay could succeed. When your agent reaches a HitPay page: 1. Discover the available tools. 2. Use each tool's current definition to decide which inputs to send. 3. Discover the tools again after any action that can change the form, the payment method or the currency. Switching currency, for example, resets the payment method and clears the QR code, so list and select the payment method again. If a tool you need isn't available, read the page or fall back to standard browser automation. ## Confirm consequential actions `submit_payment` carries the WebMCP `consequentialHint` annotation, because it charges the payer. Get the user's confirmation before you call it. Don't treat the hint itself as confirmation. HitPay also asks the payer to confirm the merchant, amount and currency in a dialog on the page before it submits. If the payer declines, the tool returns `cancelled` and no payment is made. ## Treat merchant content as data Some values come from the merchant, not from HitPay: the business name, the payment description, and custom field labels, descriptions and options. Tools that return them carry the `untrustedContentHint` annotation. Treat these values as data, never as instructions to your agent. ## Errors A tool that cannot do what was asked returns a result with `isError: true` and a JSON body such as: ```json theme={"system"} { "error": "No QR code is on screen. Call select_payment_method with a QR method first." } ``` The message says what to do next. Read it, rediscover the tools, and try again. ## Experimental capability WebMCP is an experimental browser capability based on a proposed web standard. Browser support, tool availability and tool schemas can change. HitPay can also turn the tools off, in which case the page registers none and your agent should fall back to browser automation. # Create Invoice Source: https://docs.hitpayapp.com/apis/invoice/create-invoice post /v1/invoices Create a new invoice with line items and send to recipient # Delete Invoice Source: https://docs.hitpayapp.com/apis/invoice/delete-invoice delete /v1/invoices/{invoice_id} Delete an invoice by ID # List Invoices Source: https://docs.hitpayapp.com/apis/invoice/get-all-invoice get /v1/invoices List all invoices with status and date filtering # Update Invoice Source: https://docs.hitpayapp.com/apis/invoice/update-invoice put /v1/invoices/{invoice_id} Update invoice details, line items, or status # Create Location Source: https://docs.hitpayapp.com/apis/locations/create-location post /v1/locations Create a new location with name and address details # Delete Location Source: https://docs.hitpayapp.com/apis/locations/delete-location delete /v1/locations/{location} Permanently delete an inactive location # List Locations Source: https://docs.hitpayapp.com/apis/locations/get-all-locations get /v1/locations List all locations for the authenticated business with pagination # Get Location Source: https://docs.hitpayapp.com/apis/locations/get-location-details get /v1/locations/{location} Retrieve a single location by ID # Toggle Location Active Status Source: https://docs.hitpayapp.com/apis/locations/toggle-location-active patch /v1/locations/{location} Activate or deactivate a location # Update Location Source: https://docs.hitpayapp.com/apis/locations/update-location put /v1/locations/{location} Update an existing location's name and address fields # Get Notifications Source: https://docs.hitpayapp.com/apis/notifications/get-notifications get /v1/notifications Retrieve current notification settings for your account # Update Notifications Source: https://docs.hitpayapp.com/apis/notifications/put-notifications put /v1/notifications Update notification preferences and alert channels # Create Order Source: https://docs.hitpayapp.com/apis/order/create-order post /v1/orders Create a new order with line items and customer details # Delete Order Source: https://docs.hitpayapp.com/apis/order/delete-order delete /v1/orders/{order_id} Delete an order by ID # List Orders Source: https://docs.hitpayapp.com/apis/order/get-all-order get /v1/orders List all orders with status and date filtering # Get Order Details Source: https://docs.hitpayapp.com/apis/order/get-order-details get /v1/orders/{order_id} Retrieve complete order details including line items and payments # Update Order Source: https://docs.hitpayapp.com/apis/order/update-order patch /v1/orders/{order_id} Update order details or status # API Overview Source: https://docs.hitpayapp.com/apis/overview Choose the right integration for your use case: online payments, billing, or in-person. HitPay's payment API lets businesses accept 40+ payment methods — including PayNow, FPX, GrabPay, DuitNow, PromptPay, and major card networks — with a single REST API integration. The API supports redirect checkout, embedded QR codes for local payment rails, recurring billing with automated charges, saved payment methods for on-demand billing, and in-person terminal payments via WiFi-connected card readers. HitPay processes payments across 8 countries in Asia-Pacific: Singapore, Malaysia, Philippines, Indonesia, Thailand, Hong Kong, Australia, and New Zealand. All API requests use HTTPS with HMAC-SHA256 webhook verification. Rate limits are 400 requests per minute (general) and 70 requests per minute (payment creation). A full sandbox environment is available for testing before going live. Choose the integration that matches your use case below. ### Online Payments Accept one-time payments on your website or app. Pick how you want to present the checkout experience. ### Billing Set up recurring charges or save payment methods to charge customers later. ### In-Person Payments Accept card-present payments using HitPay-supported terminal devices. # Create Payment Request Source: https://docs.hitpayapp.com/apis/payment-request/create-request POST /v1/payment-requests Create a payment request to collect payments via cards, PayNow, FPX, GrabPay, and other methods # Delete Payment Request Source: https://docs.hitpayapp.com/apis/payment-request/delete-request delete /v1/payment-requests/{request_id} Delete an incomplete payment request by ID # List Payment Requests Source: https://docs.hitpayapp.com/apis/payment-request/get-payment-requests get /v1/payment-requests List all payment requests with status and date filtering # Get Payment Status Source: https://docs.hitpayapp.com/apis/payment-request/get-payment-status get /v1/payment-requests/{request_id} Check the current status of a payment request # Update Payment Request Source: https://docs.hitpayapp.com/apis/payment-request/update-request put /v1/payment-requests/{request_id} Update a payment request's details before completion # Create Beneficiary Source: https://docs.hitpayapp.com/apis/payout/create-beneficiary post /v1/beneficiaries Create a payout beneficiary for local bank transfers # Create Transfer Source: https://docs.hitpayapp.com/apis/payout/create-transfer post /v1/transfers Initiate a payout transfer to a registered beneficiary # Delete Beneficiary Source: https://docs.hitpayapp.com/apis/payout/delete-beneficiary delete /v1/beneficiaries/{beneficiary_id} Delete a payout beneficiary by ID # Estimate Transfer Fees Source: https://docs.hitpayapp.com/apis/payout/estimate-fees post /v1/transfers/estimate Calculate estimated payout fees before initiating a transfer # List Beneficiaries Source: https://docs.hitpayapp.com/apis/payout/get-beneficiary get /v1/beneficiaries List all registered payout beneficiaries # Get Beneficiary Detail Source: https://docs.hitpayapp.com/apis/payout/get-beneficiary-detail get /v1/beneficiaries/{beneficiary_id} Retrieve a beneficiary's full details by ID # Get Beneficiary Schema Source: https://docs.hitpayapp.com/apis/payout/get-schema post /v1/beneficiaries/schema Get the required fields schema for creating beneficiaries by country # Get Transfer Detail Source: https://docs.hitpayapp.com/apis/payout/get-transfer-detail get /v1/transfers/{transfer_id} Retrieve details of a specific payout transfer # List Transfers Source: https://docs.hitpayapp.com/apis/payout/get-transfers get /v1/transfers List all payout transfers with status filtering # Update Beneficiary Source: https://docs.hitpayapp.com/apis/payout/update-beneficiary patch /v1/beneficiaries/{beneficiary_id} Update a beneficiary's nickname, remark, or favourite status # List Payout Charges Source: https://docs.hitpayapp.com/apis/payouts/get-payout-charges get /v1/payouts/{payout_id}/charges List charges settled by a payout # Get Payout Details Source: https://docs.hitpayapp.com/apis/payouts/get-payout-details get /v1/payouts/{payout_id} Retrieve a single payout by ID # List Payouts Source: https://docs.hitpayapp.com/apis/payouts/get-payouts get /v1/payouts List payouts of your HitPay balance to your linked bank account # Mock Payout Source: https://docs.hitpayapp.com/apis/payouts/mock-payout post /v1/payouts Mock a payout of available balance. Sandbox only. This endpoint mocks a payout so you can test `payout.created` webhooks and list charges. It is sandbox only. Production returns 404. # List Product Categories Source: https://docs.hitpayapp.com/apis/product-category/get-all-product-category get /v1/product-category List all product categories # Create Product Source: https://docs.hitpayapp.com/apis/product/create-product post /v1/products Create a new product with name, price, and optional variants # Delete Product Source: https://docs.hitpayapp.com/apis/product/delete-product delete /v1/products/{product_id} Delete a product by ID # List Products Source: https://docs.hitpayapp.com/apis/product/get-all-products get /v1/products List all products with name, category, and status filtering # Get Product Details Source: https://docs.hitpayapp.com/apis/product/get-product-details get /v1/products/{product_id} Retrieve full product details including variants and images # Update Product Source: https://docs.hitpayapp.com/apis/product/update-product patch /v1/products/{product_id} Update product name, price, description, or variants # Charge Saved Card Source: https://docs.hitpayapp.com/apis/recurring-billing/charge-saved-card post /v1/charge/recurring-billing/{recurring_billing_id} Charge a previously saved card for a recurring billing subscription # Create Recurring Billing Source: https://docs.hitpayapp.com/apis/recurring-billing/create-billing post /v1/recurring-billing Create a recurring billing subscription for a customer # Create Subscription Plan Source: https://docs.hitpayapp.com/apis/recurring-billing/create-plan post /v1/subscription-plan Create a subscription plan with name, amount, and billing frequency # Delete Recurring Billing Source: https://docs.hitpayapp.com/apis/recurring-billing/delete-billing delete /v1/recurring-billing/{recurring_billing_id} Cancel an active recurring billing subscription # Delete Subscription Plan Source: https://docs.hitpayapp.com/apis/recurring-billing/delete-plan delete /v1/subscription-plan/{plan_id} Delete a subscription plan # List Recurring Billings Source: https://docs.hitpayapp.com/apis/recurring-billing/get-all-billing get /v1/recurring-billing List all recurring billing subscriptions with status filtering # List Subscription Plans Source: https://docs.hitpayapp.com/apis/recurring-billing/get-all-plans get /v1/subscription-plan List all subscription plans # Get Subscription Plan Details Source: https://docs.hitpayapp.com/apis/recurring-billing/get-plan-details get /v1/subscription-plan/{plan_id} Retrieve subscription plan details including pricing and frequency # Get Saved Card Details Source: https://docs.hitpayapp.com/apis/recurring-billing/get-saved-card-details get /v1/recurring-billing/{recurring_billing_id} Retrieve saved card details (last 4 digits and brand) for a subscription # Update Recurring Billing Source: https://docs.hitpayapp.com/apis/recurring-billing/update-billing put /v1/recurring-billing/{recurring_billing_id} Update recurring billing amount or cycle (effective next cycle) # Update Subscription Plan Source: https://docs.hitpayapp.com/apis/recurring-billing/update-plan put /v1/subscription-plan/{plan_id} Update a subscription plan's name, amount, or frequency # Create Refund Source: https://docs.hitpayapp.com/apis/refund/refund post /v1/refund Issue a full or partial refund for a completed charge # Get refund detail Source: https://docs.hitpayapp.com/apis/refund/refund-details get /v1/refund/{refund_id} Get the refund detail. # Create Remitter Source: https://docs.hitpayapp.com/apis/remitters/create-remitter post /v1/remitters Register a new remitter for payout transfers # Delete Remitter Source: https://docs.hitpayapp.com/apis/remitters/delete-remitter delete /v1/remitters/{remitter_id} Delete a remitter by ID # Get Remitter Source: https://docs.hitpayapp.com/apis/remitters/get-remitter get /v1/remitters/{remitter_id} Retrieve remitter details by ID # List Remitters Source: https://docs.hitpayapp.com/apis/remitters/get-remitters get /v1/remitters List all registered remitters # Get Staff Detail Source: https://docs.hitpayapp.com/apis/staffs/staff-detail get /v1/staffs/{staff_id} Retrieve a staff member's details by ID # List Staff Source: https://docs.hitpayapp.com/apis/staffs/staffs get /v1/staffs List all staff members in your account # Create Static QR Source: https://docs.hitpayapp.com/apis/static-qr/create-static-qr post /v1/static_qr Create a static QR code for accepting recurring payments at a fixed location # Delete Static QR Source: https://docs.hitpayapp.com/apis/static-qr/delete-static-qr delete /v1/static_qr/{static_qr_id} Delete a static QR code by ID # List Static QR Codes Source: https://docs.hitpayapp.com/apis/static-qr/get-static-qr get /v1/static_qr List all static QR codes # Get Static QR Details Source: https://docs.hitpayapp.com/apis/static-qr/get-static-qr-details get /v1/static_qr/{static_qr_id} Retrieve static QR code details and configuration # Update Static QR Source: https://docs.hitpayapp.com/apis/static-qr/update-static-qr put /v1/static_qr/{static_qr_id} Update a static QR code's label or configuration # Cancel Reader Payment Source: https://docs.hitpayapp.com/apis/terminal/cancel-reader post /v1/readers/cancel Cancel an active payment on a terminal card reader # List Terminals Source: https://docs.hitpayapp.com/apis/terminal/get-terminals get /v1/readers List all connected card reader terminals # Create a virtual account Source: https://docs.hitpayapp.com/apis/virtual-account/create-va post /v1/virtual-accounts Create a virtual account for the business in a bank country. `bank_country` is required. A business can hold one virtual account per location. # Get virtual account details Source: https://docs.hitpayapp.com/apis/virtual-account/get-va-details get /v1/virtual-accounts/{virtual_account_id} Retrieve detailed information about a specific virtual account # Get virtual accounts Source: https://docs.hitpayapp.com/apis/virtual-account/get-va-list get /v1/virtual-accounts Retrieve the list of virtual accounts for a business. # Create Webhook Event Source: https://docs.hitpayapp.com/apis/webhook-events/create-webhook-event post /v1/webhook-events Register a webhook endpoint to receive payment and order event notifications # Delete Webhook Event Source: https://docs.hitpayapp.com/apis/webhook-events/delete-webhook-event delete /v1/webhook-events/{webhook_event_id} Delete a webhook event subscription by ID # Get Webhook Event Details Source: https://docs.hitpayapp.com/apis/webhook-events/get-webhook-event-details get /v1/webhook-events/{webhook_event_id} Retrieve webhook event configuration details # List Webhook Events Source: https://docs.hitpayapp.com/apis/webhook-events/get-webhook-events-list get /v1/webhook-events List all registered webhook event subscriptions # Update Webhook Event Source: https://docs.hitpayapp.com/apis/webhook-events/update-webhook-event put /v1/webhook-events/{webhook_event_id} Update a webhook endpoint URL or subscribed event types # Data Flow Source: https://docs.hitpayapp.com/appendix/data-flow Understanding how data flows between your system and HitPay during payment processing ## Overview This document explains how data flows between your system (Merchant Website), HitPay's services, and payment method providers during a typical payment transaction. All communications use **HTTPS (TLS 1.3)** to ensure data is encrypted in transit. ![HitPay Data Flow Diagram](https://mintcdn.com/hitpay/lRf6UZDAcUJljnpH/images/data-flow-diagram.png?fit=max\&auto=format\&n=lRf6UZDAcUJljnpH\&q=85\&s=7d3dbb74f1f8e042fa7e7bbd19cc3839) ## Communication Protocol All API communications between your system and HitPay are secured using: * **HTTPS (TLS 1.3)**: All data transmitted between systems is encrypted * **AES Encryption**: Sensitive data at rest is encrypted using AES * **HMAC-SHA256**: Webhook signatures ensure data integrity and authenticity > [!NOTE] > > HitPay is PCI-DSS compliant. Sensitive payment information (card numbers, CVV) never touches your servers when using the hosted checkout or Drop-In UI. ## Participants The payment flow involves four main participants: | Participant | Role | | - | - | | **Merchant Website** | Your e-commerce platform or application | | **HitPay Hosted Checkout** | Secure payment page hosted by HitPay | | **HitPay** | Payment orchestration and processing | | **Payment Method Provider** | Banks, card networks, e-wallets (PayNow, Visa, GrabPay, etc.) | ## Data Flow Explained ### Payment Request Your server sends a payment request to HitPay via HTTPS. HitPay validates the request, creates a payment record, and returns a secure checkout URL where your customer will complete the payment. ### Customer Checkout The customer is redirected to HitPay's secure hosted checkout page where they select a payment method and enter their payment details. ### Payment Processing HitPay securely transmits the payment information to the relevant payment method provider (banks, card networks, or e-wallets). The provider processes the transaction and returns an authorization response to HitPay. ### Payment Confirmation Once the payment is confirmed, HitPay notifies your system via a webhook (server-to-server POST request) and redirects the customer back to your website. The webhook contains the payment status and transaction details, signed with HMAC-SHA256 for authenticity verification. ## Data Flow Summary | Step | Direction | Protocol | Data Type | | - | - | - | - | | 1 | Merchant → HitPay | HTTPS POST | Order details, customer info | | 2 | Customer → HitPay Checkout | HTTPS (Browser) | Payment method selection | | 3 | HitPay Checkout → HitPay | HTTPS | Payment credentials (encrypted) | | 4 | HitPay → Payment Provider | Secure API | Transaction data (tokenized) | | 5 | Payment Provider → HitPay | Secure API | Authorization response | | 6 | HitPay → Merchant | HTTPS POST (Webhook) | Payment confirmation | | 7 | Merchant → Customer | HTTPS | Order confirmation | ## Security Considerations > **What data does HitPay store?** > > HitPay stores transaction records including: > > * Payment request details (amount, currency, reference numbers) > * Customer contact information (email, phone) if provided > * Payment status and timestamps > * Tokenized payment method references (not raw card numbers) > > Sensitive card data is handled by PCI-DSS compliant payment processors and is not stored in plain text. > **What data is NOT sent to HitPay?** > > The following data stays on your system: > > * Customer passwords or authentication credentials > * Full customer profiles or purchase history > * Product inventory or catalog details > * Internal business logic or pricing rules > > You only send the minimum data required to process the payment. > **How is my API key protected?** > > * API keys should only be stored on your server, never in client-side code > * All API requests use HTTPS to encrypt the API key in transit > * Rotate API keys periodically from your dashboard > * Use separate API keys for sandbox and production environments > **How do I verify webhook authenticity?** > > Every webhook includes an `Hitpay-Signature` header containing an HMAC-SHA256 hash. Compute the hash of the payload using your salt value and compare: > > ``` > Signature = HMAC-SHA256(payload, your_salt) > ``` > > If the signatures match, the webhook is authentic and has not been tampered with. ## Related Documentation > **[Security Overview](/security)** > > Learn about HitPay's security practices and compliance certifications > **[Online Payments Guide](/apis/guide/online-payments)** > > Step-by-step integration guide for online payments # Collection Source: https://docs.hitpayapp.com/b2b-payments/collections Learn how to how to collect multi-currency payments using bank transfers ## How to Collect Multi-Currency Payments Using Bank Transfers Multi-currency collections are available in all HitPay channels such as WooCommerce, Wix, Payment Links, Invoicing, HitPay Online Store and more. \[!WARNING] This feature is not available for the Shopify plugin ### Activation on Your HitPay Sales Channel Activate multi-currency collections as a payment method for your HitPay Sales Channel. **1. Navigate to Integrations** From the HitPay Dashboard, navigate to **Integrations** from the left menu. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/b2b_plugin.gif?s=301696c015d212db103e7db3745a5f58) **2. Edit or Add Integration** Click on the edit button next to your integration (or Add a new integration). **3. Select Multi-Currency Collection Account** Select *Multi-Currency Collection Account* as the payment method. ### Post Activation Bank transfers now automatically appear as a payment method on your desired HitPay sales channel. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/b2b_link.gif?s=c3126fdebb11f14a636e552335cc47ef) ### Manually Sending Collection Account Details Multi-currency collection account details can be found under **settings > payment methods**. Click on **View Details** next to Multi-currency collection and payouts. You may share these details with your customers for payment collection purposes. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/b2b_collection.gif?s=9d39949611714748c5e1a0c6b491125d) ## Payment Confirmation After Bank Transfer If your customer has paid in USD via bank transfer, once the payment has been confirmed, the transaction will be displayed as a successful transaction in the HitPay dashboard under **transactions**. Any multi-currency collections will be automatically credited to the appropriate wallet currency under **Bank Payouts**. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/b2b_transactions.gif?s=e032c2f651ca7971f4c4e5f5ced370f9) ## Collection Methods ### Integration Setup These are the steps for adding the Business Plugin to your website: ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/b2b_plugin.gif?s=301696c015d212db103e7db3745a5f58) ### Payment Link You can create a B2B Payment Link on the HitPay Dashboard by navigating to Send Payments > Collections > Payment Link, and filling out the required details. You can then share the payment link with your business customers via SMS, email, or other messaging platforms, to collect payments from them. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/b2b_link.gif?s=c3126fdebb11f14a636e552335cc47ef) ## Accepting Payments ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/b2b_collection.gif?s=9d39949611714748c5e1a0c6b491125d) ## View Transactions ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/b2b_transactions.gif?s=e032c2f651ca7971f4c4e5f5ced370f9) # Overview Source: https://docs.hitpayapp.com/b2b-payments/overview Collect payments, hold and manage cashflows and send payments using HitPay B2B Payments ## **Overview** HitPay allows merchants to accept multi-currency payments via bank transfer and send payments to suppliers, contractors and other business vendors in over 150 currencies. In addition to collecting and sending payments in multiple currencies, HitPay merchants are also able to manage cashflows in various currencies from the web dashboard. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/b2b_overview.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=fd10f34c56e55f0bf63f32db0f00ebc5) # Send Payments Source: https://docs.hitpayapp.com/b2b-payments/send-payments Learn how to send payments to suppliers, contractors, and other business vendors using HitPay # Send Payments Overview HitPay merchants can send payments to suppliers, contractors, and other business vendors from over 150 countries using local bank transfer rails or traditional SWIFT payment rails. This guide will help you add beneficiaries and send payments efficiently. ## Adding a Beneficiary **1. Navigate to Beneficiaries** Go to **Send Payments > Beneficiaries** from the HitPay Dashboard. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/beneficiary.gif?s=a13afb372d9fe0bbc587ad9fcd0cdd9e) **2. Add Beneficiary** Click on **Add Beneficiary** and fill in the required details. ## Sending a Payment **1. Navigate to Overview** From the HitPay Dashboard, go to **Send Payments > Overview**. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/send_payment.gif?s=2d5a6da2c44f366c3ae84b8ff73bfa18) **2. Send Payment** Click on the **Send Payment** button. **3. Select Beneficiary and Enter Details** Select the beneficiary and enter the transfer details as shown below. ## Send Payments - Status ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/b2b/transfer_status.gif?s=cb8a223f0920023c26bc0ca750627657) After successfully initiating a send payment transaction, the transaction status can be: A) **Pending** B) **Completed** The transaction status can be viewed under **Send Payments > Transfer History**. # HitPay Balance Source: https://docs.hitpayapp.com/bank-payouts/balance Overview and usage guide for the HitPay Balance > [!NOTE] > > This section is only relevant to the following countries: Singapore, Philippines, and Malaysia. ## Overview The HitPay Balance offers a secure and efficient way to manage your incoming funds, providing you with a centralized digital balance where all your incoming funds are accumulated. Once your HitPay account is created, a balance is automatically created based on your country's home currency. With each accepted payment, funds are accumulated within your balance. ![Balance](https://mintlify.s3.us-west-1.amazonaws.com/hitpay/images/Balance.png) ## Supported Payment Methods **Singapore** Supported Payment Methods: * PayNow * Grab * Shopback * Shopee Pay * Atome **Malaysia** Supported Payment Methods: * Shopback **Philippines** Supported Payment Methods: * GCash * BillEase * Unionbank * InstaPay * PESONet * OTC * Cards ## Payment Methods Not Part of HitPay Balance **Singapore** Payment Methods: * Cards by Stripe **Malaysia** Payment Methods: * Cards by Stripe * FPX by Stripe ## Flow of Funds Understanding the Flow of Funds in Your Balance Each balance consists of three distinct sub-balance, each serving a specific purpose: available, pending, and reserve. 1. **Pending Balance:** When a payment is made, the corresponding amount is initially accumulated in the pending balance. 2. **Available Balance:** After one day, confirmed payments are moved from the pending balance to the available balance. Funds in the available balance will be paid out in the next payout cycle. 3. **Reserve Balance:** The reserve balance holds funds that can be used for refunds and chargebacks, ensuring a seamless refund process for your customers. ### Payouts For payout information, please refer to the [next section](/bank-payouts/bank-payouts). ### Viewing Transaction History You can easily review your complete transaction history within your HitPay account dashboard. Simply navigate to **Bank Payouts > Transactions** to access all relevant details. ## Managing Your HitPay Balance ### Changing Your Payout Schedule HitPay offers you the flexibility to customize your payout schedule for the funds accumulated in your HitPay Balance. Whether you prefer weekly, monthly, or manual payouts, you have full control over your financial flow. Click [here](/bank-payouts/bank-payouts#changing-payout-schedule-for-hitpay-payouts) to learn more ### Holding Funds in Your Reserve Balance If you wish to maintain a reserve of funds for refund purposes, you can easily move funds to your Reserve sub-balance. Funds in the Reserve sub-balance will not be included in regular payouts until they are moved back to the Available balance. Here's how: 1. Go to **Bank Payouts > HitPay Balance**. 2. Click on **Reserve.** 3. Click on the link labeled **here** to transfer funds between available and reserve balance. 4. Select the transfer request, enter the transfer amount, and click **Confirm.** ## Frequently Asked Questions Got questions about the HitPay Balance? Check out these common queries: > **Is the HitPay Balance available in my country?** > > HitPay Balance is available only Singapore, Malaysia and Philippines > **Can I link multiple payment methods to my HitPay Balance?** > > Yes, you can link various payment methods, such as bank accounts and credit/debit cards, to your HitPay Balance for added convenience. # Bank Account Source: https://docs.hitpayapp.com/bank-payouts/bank-account Guide to add or update bank account for payouts Payouts can only be done to one bank account, which is the default bank account. Your bank account details can be found at **Settings > Bank Accounts**. You can add another bank account here and make it your default; at any point, you can only have one default bank account. You can make a bank account default by checking the option "Use in HitPay" under the bank details. ![Payouts](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Bank%20Account.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=b35857e1ec4c709cde58127839c4e862) ## Adding a new Bank Account for Payouts Adding a bank account for payouts is a requirement upon completing the onboarding process for your Hitpay account. You will not be able to process payments until a bank account has been added to your account for payouts. You can follow the steps below if you want to add a new bank account or update your existing bank account details: * Navigate to Settings > Bank Accounts > Click Add bank account. * Please enter your bank account details accurately. * Tick the checkbox for Hitpay and/or Stripe if you want your Hitpay payouts and/or your Stripe payouts to be sent to this bank account. * Enter your account password and click "Create". ## Updating/Editing an existing bank account 1. Navigate to **Settings > Bank Accounts > Edit** 2. Upload Proof of Bank Account 3. Enter your password for security. > [!NOTE] > > Note: A bank account can only be deleted if it is no longer set for both Hitpay and Stripe payouts. If it is, the delete option will not be visible. # Bank Payouts Source: https://docs.hitpayapp.com/bank-payouts/bank-payouts Guide to understanding payout cycles and methods with HitPay This page provides detailed information about payout cycles and methods available through HitPay. Understanding how payouts work is essential for managing your funds efficiently and maintaining a smooth financial flow. ![Payouts](https://mintcdn.com/hitpay/YeMTjx6l4Y3ML72_/images/Payouts.png?fit=max\&auto=format\&n=YeMTjx6l4Y3ML72_\&q=85\&s=ce590263668b4762d15945b6b43f1a2e) ## What is a Balance? A balance is the total amount of funds for a given payment provider. There can be two balances for a merchant's Hitpay account. One is the Hitpay Balance and the other is the Card Balance. **HitPay Balance** The HitPay Balance comprises of four balance buckets: - **Available to pay out:** Includes funds that are ready to be paid out now. You can choose to automatically payout as per the payout schedule here or manually payout. Manual payout allows you to keep your balance in HitPay without paying into your bank account. - **On the way to your bank:** Includes funds that are in transit and not yet available to be paid out to your bank account. - **Reserve:** Includes funds that can be used to pay for refunds and chargebacks. Funds can be added to the Reserve fund from the Available to pay out funds. - **Deposit:** Funds that are reserved to cover a negative balance on a HitPay account. Deposits are applied by HitPay for merchant accounts from high-risk categories. > [!NOTE] > > Your HitPay balance needs to be sufficient to cover any refunds for > non-card payments. **Cards Balance** The Card balance includes all payments made using Cards and Alipay. ## What is a Payout? In order for your business to receive funds, HitPay makes automatic payouts to your bank account. When you start processing live payments from your customers with HitPay, you will receive the corresponding payouts to your bank account according to the schedule provided below. Do note that each Balance will have its own separate payouts. You can view a list of all of your payouts and the date that they are expected to be received in your bank account in the HitPay Dashboard under Bank Payouts. ### First Payout For Card (Stripe) payment method, Stripe has a policy that the first payout will always be delayed for around 7-14 days after receiving first successful payment. Processing subsequent payouts then happens according to the account’s payout schedule. This is for Stripe-enabled countries only. ### Minimum Payout The minimum payout amount (after deducting fees) is dependent on your country of registration. You may check Stripe's [article](https://docs.stripe.com/payouts#cbp-minimum-payout-amounts) relating to minimum payout amount. ## When do I get paid by HitPay (Payout schedule by country) You can view a list of all of your payouts and the date that they are expected to be received in your bank account in the HitPay Dashboard under **Bank Payouts** Select your country to view payout details and schedules: **Singapore** | Balance | Payment Methods Included | Frequency | Payout Done By | | :-: | :-: | :-: | :-: | | HitPay Balance | PayNow QR GrabPay PayLater by Grab ShopBack Shopee Pay SPayLater Atome WeChat Pay | T + 1 Calendar Day | HitPay | | Card Balance | All Cards | From T + 1 Business Day (Final payout schedule determined by Compliance on a case-by-case basis) | Stripe | > [!NOTE] > > **Minimum to pay out:** SGD 1 (after deducting fees). **Malaysia** | Balance | Payment Methods Included | Frequency | Payout Done By | | :-: | :-: | :-: | :-: | | HitPay Balance | GrabPay GrabPay PayLater ShopeePay SPayLater ShopBack PayLater TouchNGo Boost MayBank QR AliPay DuitNow | T + 2 Calendar Days | HitPay | | Card Balance | Cards FPX | T + 1 Business Day (Final payout schedule determined by Compliance on a case-by-case basis) | Stripe | > [!NOTE] > > **Minimum to pay out:** RM 5 (after deducting fees). **Philippines** > [!WARNING] > > Payouts less than PHP 50,000.00 the transfer type will be **Instapay**.\ > Payouts greater than PHP 50,000.00 the transfer type will be **PESONet**. > > **Instapay** transfers will reach your bank on the same day the payout is initiated. (Your bank must support Instapay)\ > **PESONet** transfers will reach your bank 2 to 3 working days from the day the payout is initiated. | Balance Type | Payment Methods Included | Payout Frequency | Payout Processed By | | :-: | :-: | :-: | :-: | | HitPay Balance (Non-cards) | Unionbank Online Instapay QR PH PESONet Gcash GrabPay Over the counter Payments (Bayad, ECPay, Palawan) Billease ShopeePay | T + 1 Calendar Day | HitPay | | HitPay Balance (Online cards) | Cards (online transactions) | T + 7 Calendar Days | HitPay | | HitPay Balance (In-person cards) | Cards (in-person transactions) | T + 2 Calendar Days | HitPay | **Indonesia** | Balance | Payment Methods Included | Frequency | Payout Done By | | :-: | :-: | :-: | :-: | | Card Balance | Cards VA and E-wallets | T + 3 Business Days | Doku | **Global (Cross-Border)** > [!WARNING] > > Please note that you need to convert the amount to your local currency first, before paying out. | Balance | Payment Methods Included | Frequency | Payout Done By | | :-: | :-: | :-: | :-: | | HitPay Balance | PayNow QRPH VietQR PromptPay TrueMoney LINE Pay WeChatPay PayID | T + 1 Calendar Day | HitPay | ## Changing Payout Schedule for HitPay Payouts You can customize the payout schedule for funds accumulated in the HitPay Wallet. Follow these steps: * Navigate to **Bank Payouts > HitPay Balance**. * Click on **Available to Pay Out**. * Choose the desired automatic processing frequency: daily, weekly, or monthly. Please note that the automatic payout schedule applies only to HitPay Balance Payouts. Card Balance Payouts are processed automatically by Stripe based on the standard payout schedule. ## USD Payouts in Singapore To add a USD bank account, Singapore merchants must email [support@hit-pay.com](mailto:support@hit-pay.com) to request this — it cannot be added directly through the HitPay dashboard. Please note that the USD bank account must be domiciled in Singapore. When you add a USD bank account, all USD payments will be automatically credited to the linked USD bank account. Non-USD payments will be converted to SGD as usual and paid out to the designated SGD account. Before adding a USD bank account, you must have at least one SGD account set up. When you link a USD bank account, the following fees are applied for transactions: * **Transaction fees**: 5.65% + SGD \$0.50 (This represents the base transaction cost.) * **Conversion fees**: An additional 2% on non-SGD transactions (This fee is only applicable if a conversion is required.) * **Note:** There are no charges on payout. ### Maximum Payout Certain payment methods have a maximum payout limit per transaction. When your available balance exceeds this limit, HitPay automatically splits the payout into multiple smaller payouts to ensure all funds are transferred to your bank account. > [!NOTE] > > The maximum payout limit varies by payment method and country. This limit is set by the payment rails (e.g., PayNow, FAST) and not by HitPay. #### How Split Payouts Work When your payout amount exceeds the maximum limit, HitPay will: 1. Create a payout for the maximum allowed amount 2. Create additional payouts for the remaining balance 3. Repeat until all funds are paid out Each split payout will have its own set of charges/transactions attached, so you can track exactly which payments were included in each payout. **Singapore** | Payment Method | Maximum Payout Limit | | :-: | :-: | | PayNow (FAST) | SGD 200,000 | #### Example: PayNow Split Payout If your HitPay Balance is **SGD 450,000** and you initiate a payout via PayNow: | Payout | Amount | Status | | :-: | :-: | :-: | | Payout #1 | SGD 200,000 | Processed | | Payout #2 | SGD 200,000 | Processed | | Payout #3 | SGD 50,000 | Processed | All three payouts are created automatically and will appear as separate entries in your **Bank Payouts** section. > [!WARNING] > > If the remaining balance after splitting falls below the minimum payout amount (e.g., less than SGD 1), the remainder will stay in your HitPay Balance and be included in the next payout cycle. ## Supported Bank Accounts by Country > **Singapore** > > * ABN AMRO BANK NV > * AMERICAN EXPRESS BANK LTD > * ANEXT BANK PTE. LTD. > * ANZ SINGAPORE > * BANGKOK BANK PUBLIC COMPANY > * BANK OF AMERICA > * BANK OF CHINA > * BANK OF INDIA > * BANK OF NEW ZEALAND > * BANK OF TOKYO-MITSUBISHI > * BNP PARIBAS > * CALYON > * CHINATRUST COMMERCIAL BANK CO., LTD > * CIMB BANK BERHAD > * CITIBANK NA > * CITIBANK SINGAPORE > * CITIC Bank International Ltd > * COMMERZBANK AG > * COMMERZBANK SG > * DBS Bank/POSB > * DEUTSCHE BANK > * DnB NOR Bank ASA > * FAR EASTERN BANK > * FIRST COMMERCIAL BANK > * HABIB BANK LIMITED > * HL BANK > * HONGKONG & SHANGHAI BANKING CORPORATION (HSBC) > * ICICI BANK > * INDIAN BANK > * INDIAN OVERSEAS BANK > * INTERNALTIONALE NEDERLANDEN BANK N.V. > * INTESA SANPAOLO S.p.A > * INTESABCI S.P.A. > * Industrial & Commercial Bank of China > * JP MORGAN CHASE BANK, N.A. > * KEB HANA BANK > * MALAYAN BANKING BERHAD > * MAYBANK SINGAPORE LIMITED > * MIZUHO CORPORATE BANK, LTD > * MOSCOW NARODNY BANK LIMITED > * NATIONAL AUSTRALIA BANK LTD > * NATIONAL BANK OF KUWAIT, SAK > * NORDEA BANK FINLAND PLC > * OVERSEA-CHINESE BANKING CORPORATION LTD > * PT. BANK NEGARA INDONESIA > * RHB BANK BERHAD > * SINGAPORE ISLAND BANK > * SKANDINAVISKA ENSKILDA BANKEN > * SOCIETE GENERALE > * STANDARD CHARTERED BANK > * STATE BANK OF INDIA > * SUMITOMO MITSUI BANKING CORPORATION > * SVENSKA HANDELSBANKEN AB (PUBL) > * SWISS BANK CORP > * THE BANK OF EAST ASIA > * THE BANK OF NOVA SCOTIA > * THE DAI-ICHI KANGYO BANK, LTD > * UCO BANK > * UNION DE BANQUES ARABES ET FRANCAISES > * UNITED OVERSEAS BANK LTD > * Wise Asia-Pacific Pte Ltd > **Malaysia** > > * Affin Bank > * Affin Islamic Bank > * Agrobank > * Al-Rajhi Banking & Investment Corporation > * Alliance Bank > * AmBank > * AmBank Islamic > * BNP Paribas > * Bank Islam > * Bank Kerjasama Rakyat Malaysia > * Bank Muamalat > * Bank Simpanan Nasional > * Bank of America > * Bank of China > * Bank of Tokyo-Mitsubishi UFJ > * CIMB Bank > * CIMB Islamic Bank > * Citibank > * Deutsche Bank > * HSBC Amanah > * HSBC Bank > * Hong Leong Bank > * Hong Leong Islamic Bank > * Industrial & Commercial Bank of China (ICBC) > * JP Morgan Chase > * Kuwait Finance House > * Maybank > * Mizuho Bank > * OCBC Al-Amin Bank > * OCBC Bank > * Public Bank > * RHB Bank > * Standard Chartered Bank > * Sumitomo Mitsui Banking Corporation > * United Overseas Bank > **Philippines** > > * ALLBANK (A Thrift Bank), Inc. > * Al-Amanah Islamic Investment Bank > * Asia United Bank > * Australia and New Zealand Bank > * BANK OF FLORIDA INC. > * BANK OF MAKATI (A SAVINGS BANK), INC. > * BANKO, A SUBSIDIARY OF BPI > * BDO Network Bank > * BIÑAN RURAL BANK, INC. > * Banco De Oro Unibank, Inc. > * Bangko Kabayan, Inc. (A Private Development Bank) > * Bangko Mabuhay (A Rural Bank), Inc. > * Bangko Nuestra Señora Del Pilar, Inc. (A Rural Bank) > * Bangkok Bank Public Co., Ltd. > * Bank Of America, National Association > * Bank Of China > * Bank Of Commerce > * Bank Of The Philippine Islands > * CATHAY UNITED BANK CO., LTD. - MANILA BRANCH > * CIMB Bank Philippines Inc > * COOPERATIVE BANK OF QUEZON PROVINCE > * CTBC Bank (Philippines) Corp. > * Camalig Bank > * Cantilan Bank, Inc. (A Rural Bank) > * Cebuana Lhuillier Rural Bank, Inc. > * China Bank Savings > * China Banking Corporation > * Citibank N.A. > * Community Rural Bank of Romblon, Inc. > * Country Builders Bank, Inc. (A Rural Bank) > * DCPay Philippines, Inc. > * Deutsche Bank > * Development Bank of the Philippines > * Dumaguete City Development Bank, Inc. > * Dungganon Bank Inc. > * East West Rural Bank, Inc. > * East-West Banking Corporation > * Equicom Savings Bank, Inc. > * First Consolidated Bank Inc. > * Globe Gcash > * GoTyme Bank Corporation > * Guagua Rural Bank, Inc. > * HK and Shanghai Banking Corp. > * HSBC Savings Bank, Inc. > * ING Bank N.V. > * Industrial & Commercial Bank of China, Ltd > * Industrial Bank of Korea - Manila > * Innovative Bank, Inc. (A Rural Bank) > * JPMorgan Chase Bank > * KEB Hana Bank > * LAGUNA PRESTIGE BANKING CORPORATION (A RURAL BANK) > * LULU FINANCIAL SERVICES (PHILS), INC.- Participation Temporarily Deactivated > * Land Bank Of The Philippines > * MALARAYAT RURAL BANK, INC. > * MONEY MALL RURAL BANK, INC. > * MUFG Bank, Ltd > * MVSM BANK (A RURAL BANK SINCE 1953), INC. > * Malayan Bank > * Maya Bank, Inc. > * Maybank Philippines, Inc. > * Mega Intl Comml Bank Co. Ltd > * Metropolitan Bank and Trust Co > * Mizuho Bank, Ltd. > * NEW RURAL BANK OF SAN LEONARDO (NUEVA ECIJA), INC. > * PAYMONGO PAYMENTS, INC. > * Paymaya Philippines, Inc. > * Philippine Bank of Communications > * Philippine Business Bank > * Philippine National Bank > * Philippine Savings Bank > * Philippine Trust Company > * Philippine Veterans Bank > * Producers Savings Bank Corporation > * Queen City Development Bank, Inc. > * RBT BANK, INC. A RURAL BANK > * RURAL BANK OF BACOLOD CITY, INC. > * RURAL BANK OF BAUANG, INC. > * RURAL BANK OF LA PAZ, INC. > * RURAL BANK OF LEBAK (SULTAN KUDARAT), INCORPORATED > * RURAL BANK OF PORAC (PAMPANGA), INC. > * RURAL BANK OF ROSARIO (LA UNION), INC. > * RURAL BANK OF SAGAY, INC. > * RURAL BANK OF STA. IGNACIA, INC. > * Rang-Ay Bank, Inc. (A Rural Bank) > * Rizal Commercial Banking Corp. > * Robinsons Bank Corporation > * Rural Bank of Digos, Inc. > * Rural Bank of Montalban, Inc > * Seabank Philippines, Inc. > * Security Bank Corporation > * Shinhan Bank > * Sterling Bank Of Asia > * Sumimoto Mitsui Banking Corp > * TAYOCASH, INC. > * The Standard Chartered Bank > * Tonik Digital Bank, Inc. > * UNO BANK, INC. > * USSC MONEY SERVICES, INC. > * Union Bank of the Philippines > * Union Digital Bank > * United Overseas Bank Phils. > * Wealth Development Bank, Inc. > * Yuanta Savings Bank, Inc. > * ZYBI TECH, INC. > **Indonesia** > > * BANK ALADIN SYARIAH > * BANK ALLO > * BANK ANZ INDONESIA > * BANK ARTHA GRAHA > * BANK BCA SYARIAH > * BANK BNI 46 > * BANK BRI > * BANK BSI (BANK SYARIAH INDONESIA) > * BANK BTPN SYARIAH > * BANK BUKOPIN SYARIAH > * BANK BUMI ARTA > * BANK CAPITAL > * BANK CCB INDONESIA > * BANK CIMB NIAGA > * BANK COMMONWEALTH > * BANK CTBC INDONESIA > * BANK DANAMON INDONESIA > * BANK DBS INDONESIA > * BANK DIGITAL BCA > * BANK GANESHA > * BANK HSBC > * BANK IBK INDONESIA > * BANK ICBC > * BANK INA PERDANA > * BANK INDEX SELINDO > * BANK JABAR > * BANK JABAR BANTEN SYARIAH > * BANK JAGO > * BANK JASA JAKARTA > * BANK JATENG > * BANK JTRUST INDONESIA > * BANK KB BUKOPIN > * BANK KEB HANA > * BANK MANDIRI > * BANK MANDIRI TASPEN POS > * BANK MASPION INDONESIA > * BANK MAYAPADA INTERNATIONAL > * BANK MAYORA > * BANK MEGA > * BANK MESTIKA DHARMA > * BANK MNC INTERNASIONAL > * BANK MUAMALAT INDONESIA > * BANK MULTI ARTA SENTOSA > * BANK NATIONAL NOBU > * BANK NEO COMMERCE > * BANK OCBC NISP > * BANK OF INDIA INDONESIA > * BANK OKE INDONESIA > * BANK PANIN > * BANK PANIN DUBAI SYARIAH > * BANK PERMATA > * BANK PRIMA MASTER > * BANK QNB KESAWAN > * BANK RAYA INDONESIA > * BANK SAHABAT SAMPOERNA > * BANK SBI INDONESIA > * BANK SEABANK INDONESIA > * BANK SHINHAN INDONESIA > * BANK SINARMAS > * BANK STANDARD CHARTERED > * BANK SULSELBAR > * BANK SULUTGO > * BANK SUMUT > * BANK SYARIAH MEGA > * BANK UOB BUANA INDONESIA > * BANK VICTORIA INTERNASIONAL > * BANK VICTORIA SYARIAH > * BANK WOORI SAUDARA > * BII Maybank > * BPD ACEH > * BPD BALI > * BPD BANTEN > * BPD BENGKULU > * BPD DIY > * BPD DKI JAKARTA > * BPD JAMBI > * BPD KALBAR > * BPD KALSEL > * BPD KALTENG > * BPD KALTIMTARA > * BPD LAMPUNG > * BPD MALUKU > * BPD NUSA TENGGARA BARAT > * BPD PAPUA > * BPD RIAU > * BPD SULAWESI TENGAH > * BPD SULAWESI TENGGARA > * BPD SUMATERA BARAT/BANK NAGARI > * BPD SUMSEL BABEL > * Bank BCA > * Bank BTN > * Bank BTPN > * Bank Jatim > * Bank NTT > * CITIBANK > * MUFG BANK > * OVO > * THE BANK OF CHINA > **Thailand** > > * BANGKOK BANK PUBLIC COMPANY LTD. \[002] > * BANK FOR AGRICULTURE AND AGRICULTURAL COOPERATIVES \[034] > * BANK OF AMERICA, NATIONAL ASSOCIATION \[027] > * BANK OF AYUDHYA PUBLIC COMPANY LTD. \[025] > * BANK OF CHINA (THAI) PUBLIC COMPANY LIMITED \[052] > * BNP PARIBAS \[045] > * CIMB THAI BANK Public Company Limited \[022] > * CITIBANK, N.A. \[017] > * DEUTSCHE BANK AG. \[032] > * EXPORT-IMPORT BANK OF THAILAND \[035] > * GOVERNMENT HOUSING BANK \[033] > * GOVERNMENT SAVINGS BANK \[030] > * INDIAN OVERSEA BANK \[029] > * INDUSTRIAL AND COMMERCIAL BANK OF CHINA (THAI) PUBLIC COMPANY LIMITED \[070] > * ISLAMIC BANK OF THAILAND \[066] > * JPMORGAN CHASE BANK, NATIONAL ASSOCIATION \[008] > * KASIKORNBANK PUBLIC COMPANY LTD. \[004] > * KIATNAKIN BANK PUBLIC COMPANY LIMITED \[069] > * KRUNG THAI BANK PUBLIC COMPANY LTD. \[006] > * LAND AND HOUSES BANK PUBLIC COMPANY LIMITED \[073] > * MEGA INTERNATIONAL COMMERCIAL BANK PUBLIC COMPANY LIMITED \[026] > * Mizuho Bank, Ltd. Bangkok Branch \[039] > * OVER SEA-CHINESE BANKING CORPORATION LIMITED \[009] > * RHB BANK BERHAD \[023] > * SIAM COMMERCIAL BANK PUBLIC COMPANY LTD. \[014] > * SMALL AND MEDIUM ENTERPRISE DEVELOPMENT BANK OF THAILAND \[098] > * STANDARD CHARTERED BANK (THAI) PUBLIC COMPANY LIMITED \[020] > * SUMITOMO MITSUI BANKING CORPORATION \[018] > * SUMITOMO MITSUI TRUST BANK (THAI) PUBLIC COMPANY LIMITED \[080] > * THANACHART BANK PUBLIC COMPANY LTD. \[065] > * THE HONGKONG AND SHANGHAI BANKING CORPORATION LTD. \[031] > * THE THAI CREDIT RETAIL BANK PUBLIC COMPANY LIMITED \[071] > * TISCO BANK PUBLIC COMPANY LIMITED \[067] > * TMB BANK PUBLIC COMPANY LIMITED \[011] > * UNITED OVERSEAS BANK (THAI) PUBLIC COMPANY LIMITED \[024] ## FAQs Have questions about payouts? Check out these frequently asked questions: > **Can I customize the payout frequency for HitPay payouts?** > > Yes, you can customize the payout frequency for HitPay payouts. Refer to the [Changing Payout Schedule for HitPay Payouts](#changing-payout-schedule-for-hitpay-payouts) section for instructions. > **Why is my balance negative?** > > HitPay merchants are required to maintain their account’s balance for card payments and ensure that it does not become negative. A negative card payments balance on your HitPay account may occur and accrue due to the time differences between HitPay payouts that are sent to your bank account and when a customer refund is executed. > > If you have a significant negative balance that needs to be addressed, please email [compliance@hit-pay.com](mailto:compliance@hit-pay.com) with the following header: HitPay \[Your Account Name] Negative Card Payments Balance Top-Up Required for further instructions. # Bank Payout Settings Source: https://docs.hitpayapp.com/bank-payouts/bank-payouts-settings Learn how you can change your Payout Schedule for HitPay Payouts This page provides detailed information about payout cycles and methods available through HitPay. Understanding how payouts work is essential for managing your funds efficiently and maintaining a smooth financial flow. ![Payouts](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Payout_Settings.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=b91eb2e4ff724786b3f4e02b9454f12b) ## Payout Schedule The payout schedule refers to the frequency at which funds accumulated in your HitPay account are transferred to your designated payout method. ## HitPay Balance Payouts You can customize the payout schedule for funds accumulated in the HitPay Balance. Follow these steps: * Navigate to **Bank Payouts** * Click on the "..." button on besides "Top up balance" button. * Click on "Settings" * Choose whether you want to receive payouts automatically or manually upon request * For automatic payouts, choose the desired automatic processing frequency: daily, weekly, or monthly. ## Cards Balance Payouts > [!WARNING] > > Please note that the automatic payout schedule applies only to HitPay Balance Payouts. Card Balance Payouts are processed automatically by Stripe based on the standard payout schedule. ## Supported Bank Accounts by Country > **Singapore** > > * ABN AMRO BANK NV > * AMERICAN EXPRESS BANK LTD > * ANEXT BANK PTE. LTD. > * ANZ SINGAPORE > * BANGKOK BANK PUBLIC COMPANY > * BANK OF AMERICA > * BANK OF CHINA > * BANK OF INDIA > * BANK OF NEW ZEALAND > * BANK OF TOKYO-MITSUBISHI > * BNP PARIBAS > * CALYON > * CHINATRUST COMMERCIAL BANK CO., LTD > * CIMB BANK BERHAD > * CITIBANK NA > * CITIBANK SINGAPORE > * CITIC Bank International Ltd > * COMMERZBANK AG > * COMMERZBANK SG > * DBS Bank/POSB > * DEUTSCHE BANK > * DnB NOR Bank ASA > * FAR EASTERN BANK > * FIRST COMMERCIAL BANK > * HABIB BANK LIMITED > * HL BANK > * HONGKONG & SHANGHAI BANKING CORPORATION (HSBC) > * ICICI BANK > * INDIAN BANK > * INDIAN OVERSEAS BANK > * INTERNALTIONALE NEDERLANDEN BANK N.V. > * INTESA SANPAOLO S.p.A > * INTESABCI S.P.A. > * Industrial & Commercial Bank of China > * JP MORGAN CHASE BANK, N.A. > * KEB HANA BANK > * MALAYAN BANKING BERHAD > * MAYBANK SINGAPORE LIMITED > * MIZUHO CORPORATE BANK, LTD > * MOSCOW NARODNY BANK LIMITED > * NATIONAL AUSTRALIA BANK LTD > * NATIONAL BANK OF KUWAIT, SAK > * NORDEA BANK FINLAND PLC > * OVERSEA-CHINESE BANKING CORPORATION LTD > * PT. BANK NEGARA INDONESIA > * RHB BANK BERHAD > * SINGAPORE ISLAND BANK > * SKANDINAVISKA ENSKILDA BANKEN > * SOCIETE GENERALE > * STANDARD CHARTERED BANK > * STATE BANK OF INDIA > * SUMITOMO MITSUI BANKING CORPORATION > * SVENSKA HANDELSBANKEN AB (PUBL) > * SWISS BANK CORP > * THE BANK OF EAST ASIA > * THE BANK OF NOVA SCOTIA > * THE DAI-ICHI KANGYO BANK, LTD > * UCO BANK > * UNION DE BANQUES ARABES ET FRANCAISES > * UNITED OVERSEAS BANK LTD > * Wise Asia-Pacific Pte Ltd > **Malaysia** > > * Affin Bank > * Affin Islamic Bank > * Agrobank > * Al-Rajhi Banking & Investment Corporation > * Alliance Bank > * AmBank > * AmBank Islamic > * BNP Paribas > * Bank Islam > * Bank Kerjasama Rakyat Malaysia > * Bank Muamalat > * Bank Simpanan Nasional > * Bank of America > * Bank of China > * Bank of Tokyo-Mitsubishi UFJ > * CIMB Bank > * CIMB Islamic Bank > * Citibank > * Deutsche Bank > * HSBC Amanah > * HSBC Bank > * Hong Leong Bank > * Hong Leong Islamic Bank > * Industrial & Commercial Bank of China (ICBC) > * JP Morgan Chase > * Kuwait Finance House > * Maybank > * Mizuho Bank > * OCBC Al-Amin Bank > * OCBC Bank > * Public Bank > * RHB Bank > * Standard Chartered Bank > * Sumitomo Mitsui Banking Corporation > * United Overseas Bank > **Philippines** > > * ALLBANK (A Thrift Bank), Inc. > * Al-Amanah Islamic Investment Bank > * Asia United Bank > * Australia and New Zealand Bank > * BANK OF FLORIDA INC. > * BANK OF MAKATI (A SAVINGS BANK), INC. > * BANKO, A SUBSIDIARY OF BPI > * BDO Network Bank > * BIÑAN RURAL BANK, INC. > * Banco De Oro Unibank, Inc. > * Bangko Kabayan, Inc. (A Private Development Bank) > * Bangko Mabuhay (A Rural Bank), Inc. > * Bangko Nuestra Señora Del Pilar, Inc. (A Rural Bank) > * Bangkok Bank Public Co., Ltd. > * Bank Of America, National Association > * Bank Of China > * Bank Of Commerce > * Bank Of The Philippine Islands > * CATHAY UNITED BANK CO., LTD. - MANILA BRANCH > * CIMB Bank Philippines Inc > * COOPERATIVE BANK OF QUEZON PROVINCE > * CTBC Bank (Philippines) Corp. > * Camalig Bank > * Cantilan Bank, Inc. (A Rural Bank) > * Cebuana Lhuillier Rural Bank, Inc. > * China Bank Savings > * China Banking Corporation > * Citibank N.A. > * Community Rural Bank of Romblon, Inc. > * Country Builders Bank, Inc. (A Rural Bank) > * DCPay Philippines, Inc. > * Deutsche Bank > * Development Bank of the Philippines > * Dumaguete City Development Bank, Inc. > * Dungganon Bank Inc. > * East West Rural Bank, Inc. > * East-West Banking Corporation > * Equicom Savings Bank, Inc. > * First Consolidated Bank Inc. > * Globe Gcash > * GoTyme Bank Corporation > * Guagua Rural Bank, Inc. > * HK and Shanghai Banking Corp. > * HSBC Savings Bank, Inc. > * ING Bank N.V. > * Industrial & Commercial Bank of China, Ltd > * Industrial Bank of Korea - Manila > * Innovative Bank, Inc. (A Rural Bank) > * JPMorgan Chase Bank > * KEB Hana Bank > * LAGUNA PRESTIGE BANKING CORPORATION (A RURAL BANK) > * LULU FINANCIAL SERVICES (PHILS), INC.- Participation Temporarily Deactivated > * Land Bank Of The Philippines > * MALARAYAT RURAL BANK, INC. > * MONEY MALL RURAL BANK, INC. > * MUFG Bank, Ltd > * MVSM BANK (A RURAL BANK SINCE 1953), INC. > * Malayan Bank > * Maya Bank, Inc. > * Maybank Philippines, Inc. > * Mega Intl Comml Bank Co. Ltd > * Metropolitan Bank and Trust Co > * Mizuho Bank, Ltd. > * NEW RURAL BANK OF SAN LEONARDO (NUEVA ECIJA), INC. > * PAYMONGO PAYMENTS, INC. > * Paymaya Philippines, Inc. > * Philippine Bank of Communications > * Philippine Business Bank > * Philippine National Bank > * Philippine Savings Bank > * Philippine Trust Company > * Philippine Veterans Bank > * Producers Savings Bank Corporation > * Queen City Development Bank, Inc. > * RBT BANK, INC. A RURAL BANK > * RURAL BANK OF BACOLOD CITY, INC. > * RURAL BANK OF BAUANG, INC. > * RURAL BANK OF LA PAZ, INC. > * RURAL BANK OF LEBAK (SULTAN KUDARAT), INCORPORATED > * RURAL BANK OF PORAC (PAMPANGA), INC. > * RURAL BANK OF ROSARIO (LA UNION), INC. > * RURAL BANK OF SAGAY, INC. > * RURAL BANK OF STA. IGNACIA, INC. > * Rang-Ay Bank, Inc. (A Rural Bank) > * Rizal Commercial Banking Corp. > * Robinsons Bank Corporation > * Rural Bank of Digos, Inc. > * Rural Bank of Montalban, Inc > * Seabank Philippines, Inc. > * Security Bank Corporation > * Shinhan Bank > * Sterling Bank Of Asia > * Sumimoto Mitsui Banking Corp > * TAYOCASH, INC. > * The Standard Chartered Bank > * Tonik Digital Bank, Inc. > * UNO BANK, INC. > * USSC MONEY SERVICES, INC. > * Union Bank of the Philippines > * Union Digital Bank > * United Overseas Bank Phils. > * Wealth Development Bank, Inc. > * Yuanta Savings Bank, Inc. > * ZYBI TECH, INC. > **Indonesia** > > * BANK ALADIN SYARIAH > * BANK ALLO > * BANK ANZ INDONESIA > * BANK ARTHA GRAHA > * BANK BCA SYARIAH > * BANK BNI 46 > * BANK BRI > * BANK BSI (BANK SYARIAH INDONESIA) > * BANK BTPN SYARIAH > * BANK BUKOPIN SYARIAH > * BANK BUMI ARTA > * BANK CAPITAL > * BANK CCB INDONESIA > * BANK CIMB NIAGA > * BANK COMMONWEALTH > * BANK CTBC INDONESIA > * BANK DANAMON INDONESIA > * BANK DBS INDONESIA > * BANK DIGITAL BCA > * BANK GANESHA > * BANK HSBC > * BANK IBK INDONESIA > * BANK ICBC > * BANK INA PERDANA > * BANK INDEX SELINDO > * BANK JABAR > * BANK JABAR BANTEN SYARIAH > * BANK JAGO > * BANK JASA JAKARTA > * BANK JATENG > * BANK JTRUST INDONESIA > * BANK KB BUKOPIN > * BANK KEB HANA > * BANK MANDIRI > * BANK MANDIRI TASPEN POS > * BANK MASPION INDONESIA > * BANK MAYAPADA INTERNATIONAL > * BANK MAYORA > * BANK MEGA > * BANK MESTIKA DHARMA > * BANK MNC INTERNASIONAL > * BANK MUAMALAT INDONESIA > * BANK MULTI ARTA SENTOSA > * BANK NATIONAL NOBU > * BANK NEO COMMERCE > * BANK OCBC NISP > * BANK OF INDIA INDONESIA > * BANK OKE INDONESIA > * BANK PANIN > * BANK PANIN DUBAI SYARIAH > * BANK PERMATA > * BANK PRIMA MASTER > * BANK QNB KESAWAN > * BANK RAYA INDONESIA > * BANK SAHABAT SAMPOERNA > * BANK SBI INDONESIA > * BANK SEABANK INDONESIA > * BANK SHINHAN INDONESIA > * BANK SINARMAS > * BANK STANDARD CHARTERED > * BANK SULSELBAR > * BANK SULUTGO > * BANK SUMUT > * BANK SYARIAH MEGA > * BANK UOB BUANA INDONESIA > * BANK VICTORIA INTERNASIONAL > * BANK VICTORIA SYARIAH > * BANK WOORI SAUDARA > * BII Maybank > * BPD ACEH > * BPD BALI > * BPD BANTEN > * BPD BENGKULU > * BPD DIY > * BPD DKI JAKARTA > * BPD JAMBI > * BPD KALBAR > * BPD KALSEL > * BPD KALTENG > * BPD KALTIMTARA > * BPD LAMPUNG > * BPD MALUKU > * BPD NUSA TENGGARA BARAT > * BPD PAPUA > * BPD RIAU > * BPD SULAWESI TENGAH > * BPD SULAWESI TENGGARA > * BPD SUMATERA BARAT/BANK NAGARI > * BPD SUMSEL BABEL > * Bank BCA > * Bank BTN > * Bank BTPN > * Bank Jatim > * Bank NTT > * CITIBANK > * MUFG BANK > * OVO > * THE BANK OF CHINA > **Thailand** > > * BANGKOK BANK PUBLIC COMPANY LTD. \[002] > * BANK FOR AGRICULTURE AND AGRICULTURAL COOPERATIVES \[034] > * BANK OF AMERICA, NATIONAL ASSOCIATION \[027] > * BANK OF AYUDHYA PUBLIC COMPANY LTD. \[025] > * BANK OF CHINA (THAI) PUBLIC COMPANY LIMITED \[052] > * BNP PARIBAS \[045] > * CIMB THAI BANK Public Company Limited \[022] > * CITIBANK, N.A. \[017] > * DEUTSCHE BANK AG. \[032] > * EXPORT-IMPORT BANK OF THAILAND \[035] > * GOVERNMENT HOUSING BANK \[033] > * GOVERNMENT SAVINGS BANK \[030] > * INDIAN OVERSEA BANK \[029] > * INDUSTRIAL AND COMMERCIAL BANK OF CHINA (THAI) PUBLIC COMPANY LIMITED \[070] > * ISLAMIC BANK OF THAILAND \[066] > * JPMORGAN CHASE BANK, NATIONAL ASSOCIATION \[008] > * KASIKORNBANK PUBLIC COMPANY LTD. \[004] > * KIATNAKIN BANK PUBLIC COMPANY LIMITED \[069] > * KRUNG THAI BANK PUBLIC COMPANY LTD. \[006] > * LAND AND HOUSES BANK PUBLIC COMPANY LIMITED \[073] > * MEGA INTERNATIONAL COMMERCIAL BANK PUBLIC COMPANY LIMITED \[026] > * Mizuho Bank, Ltd. Bangkok Branch \[039] > * OVER SEA-CHINESE BANKING CORPORATION LIMITED \[009] > * RHB BANK BERHAD \[023] > * SIAM COMMERCIAL BANK PUBLIC COMPANY LTD. \[014] > * SMALL AND MEDIUM ENTERPRISE DEVELOPMENT BANK OF THAILAND \[098] > * STANDARD CHARTERED BANK (THAI) PUBLIC COMPANY LIMITED \[020] > * SUMITOMO MITSUI BANKING CORPORATION \[018] > * SUMITOMO MITSUI TRUST BANK (THAI) PUBLIC COMPANY LIMITED \[080] > * THANACHART BANK PUBLIC COMPANY LTD. \[065] > * THE HONGKONG AND SHANGHAI BANKING CORPORATION LTD. \[031] > * THE THAI CREDIT RETAIL BANK PUBLIC COMPANY LIMITED \[071] > * TISCO BANK PUBLIC COMPANY LIMITED \[067] > * TMB BANK PUBLIC COMPANY LIMITED \[011] > * UNITED OVERSEAS BANK (THAI) PUBLIC COMPANY LIMITED \[024] # Plans Source: https://docs.hitpayapp.com/billing/plans Create and manage recurring billing plans in the HitPay dashboard to charge customers on a schedule. ## Overview The recurring billing feature on HitPay allows you to set up and manage subscription plans for your customers. This guide provides step-by-step instructions on how to create and manage recurring billing plans. ![Plans](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Plans.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=b83ab695847db41d8ecd95fac2f45e94) ## How to Create and Manage Recurring Billing Plans **Step 1: Create a New Plan** * Navigate to **Recurring Billing** from the side menu. * Click on **Plans**. * Click on the **Add New Plan** button. **Step 2: Complete Plan Details** * Fill in the required details on the "Add Plan" page. * Set the Renewal Cycle (billing intervals). * Specify Times to be Charged (maximum number of deductions for the plan). * Click on the **Save Plan** button. Once saved, your new plan is ready to accept subscriptions. ### Subscribing Customers to Your Plan You have two options for adding customers to your plan: **Option 1:** Sharing the Plan Link (For Public Plans) If your plan is public and you want customers to subscribe themselves, share the plan link with them. This link takes customers to the subscription page where they can sign up for the plan. Learn more about subscriptions in this [guide](/billing/subscriptions). **Option 2:** Adding Customer Subscriptions (For Manual Management) If you prefer manually subscribing customers, follow these steps: * Locate and click on the plan. * Select **Create Subscription** option. For detailed instructions, see this user [guide](/billing/subscriptions). ### Checking Plan Status To monitor your recurring billing plan's performance and status, click on the plan; this will redirect you to a page where you can access detailed information about the selected plan, including plan details, revenue insights, customer overview, and individual customer details. This will provide you with valuable insights into the plan's performance, revenue generation, and customer subscription status. ### Customizing your Recurring Plans Page Elevate your recurring plans page by tailoring it to your unique needs. You can gather specific customer data, define a user-friendly page URL slug, and set up redirection after successful transactions. * Locate and click on the pencil icon to start customizing your page. * Choose the URL slug to make it more memorable and easier to share. * Optionally, set up a redirect URL for transitions after successful transactions. * Choose to collect phone number or address from your customers. * Check the 'Add Custom Field' to collect additional information from your customers. Utilize text, long text, radio buttons, dropdowns, or checkboxes to capture diverse information. Make the fields mandatory or optional based on your needs. * Click **Save Changes** #### Customizing Checkout Colors To personalize the color scheme of your recurring plans page: * Go to **Settings > Checkout Customisation**. * Select a **Theme**. Here, you have the option to choose from predefined color themes or create a custom theme that aligns with your brand's color palette. * After selecting or customizing your theme, preview the changes to ensure they meet your expectations. ### Rearranging your Recurring Plans Adjust the order that your plans appear on the recurring payment link. This can help you to strategically highlight particular plans or promote special offerings. * Locate your plan. * Click and hold on the plan, then drag it to your preferred position. Your changes are automatically saved. ### How to Attach Your HitPay Recurring Plan to Your Website Integrating your recurring billing plans into your website provides a seamless payment experience for customers. Here's a step-by-step process to attach your HitPay recurring plan to your website. **Step 1: Create a New Plan** * Navigate to Recurring Plans > Plans from the left menu. * Click on the Add New Plan button. **Step 2: Fill in Plan Details** * Fill in the necessary details on the "Add Plan" page. * Check the Make it public option. * Specify Renewal Cycle (billing intervals). * Specify Times to be Charged (maximum number of deductions for the plan). * Click on the Save Plan button. **Step 3: Customize Plan Settings** * Under the Recurring Payment Link section, click on the "Edit" icon. * Enter your website's URL under the Redirect URL. * Choose whether to include customer address and phone number fields during payment. **Step 4: Copy the Recurring Billing Plan Link** * Locate the plan and click on the Share button to copy the link to your clipboard. **Step 5: Paste the Recurring Billing Link on Your Website** * Access your website's membership option where you want to add the recurring plan. * Paste the copied recurring billing link into the desired location. **Step 6: Save and Publish Your Website** * Save the changes and publish the updated page to make the HitPay recurring plan link accessible. **Step 7: Test and Verify** * Visit your website and navigate to the membership option with the added HitPay recurring plan link. * Verify that the link is displayed correctly and functions as intended. ### Notifications for Attached Cards When a customer attaches a card to a plan, you'll receive an email notification. Additionally, the subscription's status on the HitPay dashboard changes from scheduled to active. Upon clicking on the subscription, you can view the customer's attached card details and the first charge in the Timeline section. Add notes to the timeline by clicking **Add Note**. To see a summary of all charges, including successful, failed, and refunded transactions, check the History Transactions section. ## FAQs > **What happens if an attached card associated with an active plan gets declined?** > > If an attached card associated with a plan gets declined on the scheduled charge date of the plan, the customer is immediately sent an email requesting them to update their card details using the link. > > At the same time, the merchant is also notified by email about the failed charge. > > If the customer fails to attach a valid card within 7 days from the failed charge date, the subscription will move to an inactive status. # Subscriptions Source: https://docs.hitpayapp.com/billing/subscriptions Creating and Managing Recurring Billing Subscriptions ## Overview HitPay's recurring billing feature enables you to effortlessly handle membership fees and subscription-based products or services for your customers. This comprehensive guide will walk you through the process of creating and managing your recurring billing subscriptions. Recurring billing simplifies the collection of payments for products or services on automatic cycles – weekly, monthly, or annually. Moreover, it offers the flexibility to set a maximum number of billing intervals. Regardless of your technical background, you can manage payments seamlessly without needing a website or developer. ![Subscriptions](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Subscriptions.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=45a1a15a8eb9d189715813b0b04195b2) ### Supported Countries Currently, the recurring billing feature is available in the following countries: Singapore, Malaysia, Australia, New Zealand, USA, UAE, Hong Kong, Japan, Mexico, Gibraltar, United Kingdom, Austria, Belgium, Finland, France, Germany, Ireland, Italy, Luxembourg, Netherlands, Portugal, Spain, Czech Republic, Denmark, Sweden, Canada, Croatia, Cyprus, Estonia, Greece, Latvia, Lithuania, Malta, Slovakia, Slovenia, Bulgaria, Hungary, Liechtenstein, Norway, Poland, Romania, Switzerland ## Getting Started To access the subscriptions page, log in to the HitPay Dashboard and navigate to Recurring Billing > Subscriptions\*\*. Click the **Add Subscription** button to create a new subscription. **Adding a Subscription:** Fill in the required information on the "Add Subscription" page: * Currency and Amount: Configure your subscription's currency and amount. * Renewal Cycle: Set billing intervals. * Start Date: First billing date; subsequent billings follow this date. * Times to be Charged: Specify the maximum deductions allowed for the plan. Click "Save Subscription" to finalize. ## Sending Subscriptions **Sending Invoices:** After creating a subscription, you can send an invoice via email by clicking **Send Link**. The customer would receive a link to attach their card to the plan. **Manual Link Sharing:** Alternatively, you can copy the link and share it directly with the customer. ## Save Payment Details for Future Charges You can securely store a customer’s payment method and trigger future charges manually using the dashboard. ### How it works When creating a Subscription, set the billing cycle to Manual Charge (No Automatic Billing). Once selected, you can choose how the first charge should be handled: * **Sign-up Date:** The customer’s payment method will be saved and charged immediately after signing up. * **No Initial Charge (Store Payment Details Only):** The payment method is saved securely without any charge at signup. In both cases, all future charges must be triggered manually using the [Add Payment](billing/subscriptions#add-one-time-payment-to-an-active-subscription) feature in the dashboard. ## Subscription Status **Scheduled Status:** Subscriptions appear under "Scheduled" status upon creation. **Active:** When a customer attaches a card to a plan, you’ll receive an email notification. Additionally, the subscription’s status on the HitPay dashboard changes from scheduled to "Active". **Retrying:** This status arises when the renewal payment has failed. HitPay will automatically attempt to charge the customer for up to 7 consecutive days before moving the subscription to inactive. It's a grace period to resolve payment issues. **Inactive:** When all renewal payment retries have failed during the retrying period, the subscription transitions to inactive status. It's important to suspend access to your products/services. Customers can still re-activate their subscriptions by adding/updating their payment details. **Paused:** Subscriptions can be paused by you to temporarily stop billing without canceling the subscription. This can be set to an indefinite period or until a specific date. **Automatic Cancellation:** If a customer doesn't attach a card to the plan by the subscription's start date, the subscription is automatically canceled. ## Pause and Resume Subscriptions ### Pause Subscription Pausing a subscription allows you to temporarily stop billing without ending the subscription entirely. Here's how you can initiate a pause: 1. Navigate to **Recurring Billing > Subscription > Select Individual Subscription**. 2. Click the **Pause Subscription** option. A popup will appear. * Start Date: Select the date when the pause will commence. * Pause Duration: Decide between an "Indefinite" pause or a "Specific Date" to end the pause. * Next Charge Date: Set the date when billing will resume post-pause. ### Extending a Subscription Pause Should you need to extend a pause: 1. Find and select the paused subscription you wish to extend on your dashboard. 2. Click on **Extend Subscription** option. The initial settings will be prefilled; update the "Pause Duration" as required. ### Resuming a Subscription Immediately To immediately resume a subscription: 1. Select the paused subscription you're ready to reactivate. 2. Press **Resume Subscription**. A popup will display, where you should: * Next Charge Date: Select the date for the next billing cycle. This action reactivates the subscription and resumes billing without delay. ## Add One-Time Payment to an Active Subscription The **Add Payment** feature allows you to charge a one-time amount to a customer’s saved payment method on an active recurring billing plan — without changing the subscription itself. This is ideal for add-ons, usage overages, or one-off services. ### When to Use * Charge for one-time services (e.g., personal training session). * Apply additional charges (e.g., late fees or extra usage). * Manually collect top-ups using a saved payment method. ### How It Works #### Customer Requirements * The customer must have saved a payment method to their subscription. * The subscription must be in **Active** status. #### Steps for Merchants 1. Navigate to **Recurring Billing > Subscriptions** and select the customer’s active subscription. 2. Click on **Add Payment** (visible only if a payment method is saved and the subscription is active). 3. Enter the required details: * **Amount** * **Description** (e.g., “One-time personal training session”) 4. Click **Confirm** to process the payment. > ⚠️ This is a one-time charge and does not replace failed subscription payments. #### After the Payment * Payment is processed instantly using the saved **payment method**. * A confirmation (success or failure) message is shown. * The customer receives an email with the payment details. * The transaction is recorded in the subscription’s transaction histories and timeline. ## Subscription Settings With the subscription settings, you have control over what happens when all attempts to charge a subscription have failed. You can choose between canceling the subscription or setting it to inactive, which allows customers to reactivate it later. To access these settings, navigate to Recurring billing > Subscription > Settings and make your selection. ## Filters and Exporting If you have multiple subscriptions, you can use the additional filters on the right side to filter by customer email, customer name, plan name, created date, total amount and status. Additionally, you can also export your subscriptions to a CSV file by clicking on **Export Subscriptions** ## Bulk Actions via CSV Upload Managing multiple subscriptions one by one can be time-consuming, especially if you have a large customer base. With CSV upload, you can perform bulk actions directly from the dashboard without using the API. You can use CSV upload to: * Create subscriptions * Edit subscriptions * Pause subscriptions * Resume subscriptions * Add one-time payments ### Create Subscriptions Required fields: * **Customer email** – The customer’s email address. * **Customer name** – The full name of the customer. * **Plan ID** – If provided, the subscription will use the details from the plan (name, description, cycle, repeat, frequency, amount, and currency). * **Plan name** – Required only if Plan ID is not provided. * **Amount** – Required if no Plan ID is provided. * **Currency** – Required if no Plan ID is provided (e.g., SGD, MYR, USD). * **Cycle** – Required if no Plan ID is provided. Options: `weekly`, `monthly`, `yearly`, or `custom`. * **Cycle repeat** – Required if cycle = `custom` (number of times the cycle repeats, e.g., 3). * **Cycle frequency** – Required if cycle = `custom`. Options: `day`, `week`, `month`, `year`. * **Start date** – The date the subscription should start (must be today or later). * **Save payment details** – `true` or `false`. (More on save payment details)\[billing/subscriptions#save-payment-details-for-future-charges] * **First charge method** – Options: `sign_up_date` or `no_initial_charge`. Only applicable when **Save payment details** is set to `true`. Optional fields: * **Plan description** – Notes or description of the plan. * **Redirect URL** – The page the customer is taken to after successfully attaching their payment method. * **Send to email** – `true` or `false`. If set to `true`, HitPay will send the subscription link to the customer by email. Default is `true`. * **Times to be charged** – Maximum number of charges for this subscription. ### Edit Subscriptions Required field: * **Recurring billing ID** – The unique ID of the subscription to update. All other fields are optional and allow you to update subscription details individually. Optional fields: * **Plan ID** – If provided, the subscription updates to use the plan’s details (name, description, cycle, repeat, frequency, amount, and currency). * **Plan name** – The display name of the subscription plan. * **Plan description** – Notes or description of the plan. * **Amount** – The recurring charge amount. Updates apply from the next charge onwards. * **Currency** – The currency of the subscription (e.g., SGD, MYR, USD). * **Next charge date** – The next scheduled billing date (must be today or later). * **Cycle** – The billing cycle (weekly, monthly, yearly, or custom). * **Cycle repeat** – Used only when cycle = `custom` (number of times the cycle repeats). * **Cycle frequency** – Used only when cycle = `custom` (day, week, month, year). * **Save payment details** – `true` or `false`. [Learn more about how save payment details works](billing/subscriptions#save-payment-details-for-future-charges). * **First charge method** – Options: `sign_up_date` or `no_initial_charge`. Only applicable when **Save payment details** is `true`. * **Redirect URL** – The page the customer is taken to after successfully attaching their payment method. * **Send to email** – `true` or `false`. If set to `true`, HitPay will send the subscription link to the customer by email. * **Times to be charged** – Maximum number of charges for this subscription. ### Pause Subscriptions Required fields: * **Recurring billing ID** – The unique ID of the subscription. * **Pause start date** – The date the pause should begin (dd/mm/yyyy). Optional fields: * **Pause end date** – The date to automatically end the pause (dd/mm/yyyy). * **Next charge date** – Required if Pause end date is set. Defines when the next billing resumes. ### Resume Subscriptions Required fields: * **Recurring billing ID** – The unique ID of the subscription. * **Next charge date** – The next billing date after resuming. ### Add One-Time Payments Required fields: * **Recurring billing ID** – The unique ID of the subscription. * **Amount** – The amount to be charged. * **Currency** – Currency code (e.g., SGD, MYR, USD). * **Description** – Description of the payment (e.g., “Late fee”, “Top-up charge”) ## FAQs > **Can I change the subscription amount?** > > Yes, you can edit the subscription amount anytime, including before and after the 1st charge. The new amount will only be reflected from the next charge. All previous charges will not have any impact. > **What happens if an attached card associated with an active plan gets declined?** > > If an attached card associated with a plan gets declined on the scheduled charge date of the plan, the customer is immediately sent an email requesting them to update their card details using the link. > > At the same time, the account owner is also notified by email about the failed charge. > > If the customer fails to attach a valid card within 7 days from the failed charge date, the subscription will move to a inactive status. > **When will a scheduled customer subscription be canceled?** > > The scheduled customer subscription will be canceled if the customer hasn't entered their payment details by the billing start date. > **Will my customers receive an email notification before being charged?** > > Yes. To send a reminder email to your customers 7 days before their subscription renewal, navigate to Subscription > Settings and toggle the reminder option on. > **Can customers update their payment method for an active subscription?** > > Yes. Customers can update their payment method directly from their recurring billing link. They can switch to any supported method, including cards, ShopeePay, GrabPay, WeChat Pay, or other alternative payment methods, without cancelling their plan. > If they need the recurring billing link again, you can resend it: > > 1. Go to your HitPay dashboard > 2. Open the customer’s subscription > 3. Click **Send Email** to email the recurring billing link, or **Copy Link** to share it manually > > Once they open the link, they can select **Update Payment Method** to enter a new card or switch to another supported payment option. > **Can my customers cancel their subscription?** > > No, customers are not able to cancel their subscription. They will need to notify you, and you can cancel it for them. > **Which alternative payment methods can I accept?** > > You can accept multiple alternative payment methods, including digital wallets. View the full list in the supported [payment methods table](https://docs.hitpayapp.com/payments/payments#supported-payment-methods). # Changelog Source: https://docs.hitpayapp.com/changelog Latest product updates, improvements, and fixes from HitPay **October 26, 2026** ## Larger Logos at Checkout ![Larger Logos at Checkout](https://mintcdn.com/hitpay/aWCuB2F7VHnUWQIp/images/payments/checkout-customisation-themes.png?fit=max\&auto=format\&n=aWCuB2F7VHnUWQIp\&q=85\&s=de8cfc15ce5b259ee522685cf13a093f) Make your brand stand out at checkout. Choose a Standard, Large or Featured logo size in Checkout Customisation. [Read more →](/changelog/2026-10-26-checkout-logo-size) **October 21, 2026** ## Admin Fees for Point of Sale ![Admin Fees for Point of Sale](https://mintcdn.com/hitpay/v7KuLHsxaSTGqgHq/images/payments/admin-fees.png?fit=max\&auto=format\&n=v7KuLHsxaSTGqgHq\&q=85\&s=c30a073db3f05a01249f076687e98306) Pass payment processing fees on to customers for in-person payments. Set a fee per payment method and turn it on for the Point of Sale channel. [Read more →](/changelog/2026-10-21-pos-admin-fees) **October 20, 2026** ## HitPay for Vercel ![HitPay for Vercel](https://mintcdn.com/hitpay/WytL9VZOyl9gOF-H/images/apis/guide/vercel/overview.png?fit=max\&auto=format\&n=WytL9VZOyl9gOF-H\&q=85\&s=fa567f65297ccfc97c59520de35eef3f) Accept HitPay payments in your Vercel and v0 apps. Sign in to HitPay once and Vercel gets the credentials, with no API keys to copy. [Read more →](/changelog/2026-10-20-hitpay-for-vercel) **October 20, 2026** ## HitPay Terminal app for Shopify POS (beta) ![HitPay Terminal app for Shopify POS](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/flexipos.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=9e3f9702fb8a69c4c97872847d45f72c) Send Shopify POS sales straight to your HitPay terminal. Customers pay by card or QR, and the Shopify order is marked paid automatically. [Read more →](/changelog/2026-10-20-shopify-pos-terminal) **October 8, 2026** ## BillPay on the HitPay MCP Server ![HitPay MCP Server](https://mintcdn.com/hitpay/HKMH2GKufkeJ5d3o/images/mcp-server-directory.png?fit=max\&auto=format\&n=HKMH2GKufkeJ5d3o\&q=85\&s=0085a8dbe992e94b4759584d50f3e7d5) Query BillPay bills and vendors from Claude, Cursor, Codex, and other MCP clients. Submitting, approving, and paying bills stay in the dashboard. [Read more →](/changelog/2026-10-08-mcp-bill-pay) **October 2, 2026** ## Custom Checkout Fields ![Custom Checkout Fields](https://mintcdn.com/hitpay/yyZMc8aEXeec5GUR/images/changelog/custom-checkout-fields.jpg?fit=max\&auto=format\&n=yyZMc8aEXeec5GUR\&q=85\&s=211de135963774e121d82d7a96f3726b) Add your own fields to Payment Link checkout, like sizes, delivery notes, or a T\&Cs checkbox, and get the answers back with every payment. [Read more →](/changelog/2026-10-02-custom-checkout-fields) **September 18, 2026** ## BillPay ![BillPay](https://mintcdn.com/hitpay/RI5EjiB6kEr_Sy5b/images/changelog/bill-pay-launch.png?fit=max\&auto=format\&n=RI5EjiB6kEr_Sy5b\&q=85\&s=b7af2a44d95f6bbab26747542467cfd1) Pay your suppliers from the same HitPay account you use to get paid, from invoice capture to approval and payment. [Read more →](/changelog/2026-09-18-bill-pay) **September 14, 2026** ## Passkey login ![Passkey login](https://mintcdn.com/hitpay/aZKVfcvB0qNFtZ3J/images/setup/passkeys.png?fit=max\&auto=format\&n=aZKVfcvB0qNFtZ3J\&q=85\&s=7c85b767bf66d91b7818d1b08beac65f) Sign in to the HitPay web dashboard with a passkey. A passkey acts as 2FA, so there is no OTP. [Read more →](/changelog/2026-09-14-passkeys) **September 9, 2026** ## WeChat Pay for Subscriptions (Singapore) ![WeChat Pay for Subscriptions](https://mintcdn.com/hitpay/HLuMU_dx4BYNZIk3/images/changelog/wechat-pay-subscriptions.png?fit=max\&auto=format\&n=HLuMU_dx4BYNZIk3\&q=85\&s=ff445c2e39c72b92e413acf90f334f35) Accept recurring payments with WeChat Pay in Singapore. Reach 1B+ WeChat users and reduce checkout drop-off with a payment method customers trust for subscriptions and memberships. [Read more →](/changelog/2026-09-09-wechat-pay-subscriptions) **September 1, 2026** ## Accept Bank Transfers on Invoices ![Accept Bank Transfers on Invoices](https://mintcdn.com/hitpay/MXrBDVcC2qfH0UdE/images/changelog/invoice-bank-transfer.jpg?fit=max\&auto=format\&n=MXrBDVcC2qfH0UdE\&q=85\&s=28d45a6b457e98264497fc6a56659d01) Accept bank transfers directly on HitPay invoices with automatic reconciliation. Give customers flexibility to pay now or later from their bank account. [Read more →](/changelog/2026-09-01-invoice-bank-transfer) **August 28, 2026** ## Virtual Accounts ![Virtual Accounts](https://mintcdn.com/hitpay/f8TNnjlR1jKIJpMW/images/changelog/virtual-accounts.png?fit=max\&auto=format\&n=f8TNnjlR1jKIJpMW\&q=85\&s=aa66fcc3c0b63920762cad5ba198ac49) Receive local and international business payments into a dedicated account, issued in your business's name, for Singapore and Philippines registered businesses. [Read more →](/changelog/2026-08-28-virtual-accounts) **August 13, 2026** ## Adaptive Pricing ![Adaptive Pricing](https://mintcdn.com/hitpay/twblX2pR5bemz-_c/images/changelog/adaptive-pricing.jpg?fit=max\&auto=format\&n=twblX2pR5bemz-_c\&q=85\&s=41ab82989d92d72b27328c35e7f49b04) International customers now see your checkout in their local currency with local payment methods, while you still get paid out in your home currency. [Read more →](/changelog/2026-08-13-adaptive-pricing) **July 30, 2026** ## Recurring Payments Onboarding ![Recurring Payments Onboarding](https://mintcdn.com/hitpay/HBvj1mXy9g_RR1ss/images/changelog/recurring-payments-onboarding.png?fit=max\&auto=format\&n=HBvj1mXy9g_RR1ss\&q=85\&s=9ab434742d1941203db77545c2bb0c0a) Apply for recurring payments on select payment methods directly through your dashboard with transparent requirements per method. [Read more →](/changelog/2026-07-30-recurring-payments-onboarding) **July 21, 2026** ## New HitPay Checkout Page ![New HitPay Checkout Page](https://mintcdn.com/hitpay/9ogjU7PYKzxMWa80/images/changelog/checkout-v2.png?fit=max\&auto=format\&n=9ogjU7PYKzxMWa80\&q=85\&s=835a580798a8b2a64a1d2bf0224ecdc5) Checkout V2 is now the default experience for all merchants — mobile-first, fully branded, and with no fee surprises before your customers pay. [Read more →](/changelog/2026-07-21-checkout-v2) **July 21, 2026** ## Multi-Currency Products for POS ![Multi-Currency Products for POS](https://mintcdn.com/hitpay/FDe_1WKtgnvtfxsE/images/pos/multi-currency-products-hero.png?fit=max\&auto=format\&n=FDe_1WKtgnvtfxsE\&q=85\&s=f15f76aec05a01762e4fbc5d74fe29dd) Price your products in multiple currencies so overseas customers pay in their local currency and familiar payment methods, while you always receive payouts in your home currency. [Read more →](/changelog/2026-07-21-multi-currency-pos-products) **July 14, 2026** ## HitPay MCP Server ![HitPay MCP Server](https://mintcdn.com/hitpay/HKMH2GKufkeJ5d3o/images/mcp-server-directory.png?fit=max\&auto=format\&n=HKMH2GKufkeJ5d3o\&q=85\&s=0085a8dbe992e94b4759584d50f3e7d5) Connect Claude, Cursor, Codex, and other MCP clients to your HitPay business data over OAuth, no API keys needed. Query sales and transactions, or create payment links and invoices, all in natural language. [Read more →](/changelog/2026-07-14-mcp-server) **June 25, 2026** ## WeChat Pay for Philippines ![WeChat Pay for Philippines](https://mintcdn.com/hitpay/wzYFBz-essmhbVmA/images/changelog/wechat-pay-ph.png?fit=max\&auto=format\&n=wzYFBz-essmhbVmA\&q=85\&s=872f98d73588ebddf624a4b8cc3d0c21) Accept PHP payments from customers using WeChat Pay. Over 1 billion WeChat users worldwide can now checkout on your store, POS, or borderless QR codes, with settlements directly to PHP. [Read more →](/changelog/2026-06-25-wechat-pay-ph) **June 17, 2026** ## AI Assistant ![AI Assistant](https://mintcdn.com/hitpay/bwrmGWXezz2WvLLw/images/changelog/ai-assistant.png?fit=max\&auto=format\&n=bwrmGWXezz2WvLLw\&q=85\&s=f252262fc161462411a926b150307bfa) Merchants can now ask questions in plain language right inside the dashboard — sales, payment-method status, verification, and how-tos — with instant, account-scoped answers. [Read more →](/changelog/2026-06-17-ai-assistant) **June 08, 2026** ## LINE Pay ![LINE Pay](https://mintcdn.com/hitpay/PJGjfn3yTv0Z_cdm/images/changelog/line-pay.png?fit=max\&auto=format\&n=PJGjfn3yTv0Z_cdm\&q=85\&s=789005b1e58b56727702d46dc899d67c) Merchants globally can now accept THB payments via LINE Pay across Online, In-Person (POS), Borderless QR, and Recurring Billing channels. [Read more →](/changelog/2026-06-08-line-pay) **June 5, 2026** ## Embed Alternative Payment Flows Directly in Your App ![Embed Alternative Payment Flows Directly in Your App](https://mintcdn.com/hitpay/aNb3s3sC6hpJEAb4/images/changelog/embedded-payments-direct-link.png?fit=max\&auto=format\&n=aNb3s3sC6hpJEAb4\&q=85\&s=7c3fc00655ef45eef4cca8ef5e669a59) Embed the full payment experience for alternative payment methods directly in your app with direct link support, plus wallet top-up for Malaysia and Philippines merchants. [Read more →](/changelog/2026-06-05-embedded-payments-direct-link) **May 26, 2026** ## Bukku Accounting Integration ![Bukku Accounting Integration](https://mintcdn.com/hitpay/k-iyS5g3Kq1NY2Cx/images/changelog/bukku-accounting-integration.png?fit=max\&auto=format\&n=k-iyS5g3Kq1NY2Cx\&q=85\&s=23009dcaead86effe6d3ca782b3000a4) HitPay now connects with Bukku to automatically sync your sales, payments, and refunds — no manual reconciliation needed. [Read more →](/changelog/2026-05-26-bukku-accounting-integration) **May 26, 2026** ## ShopBack Pay Now Available In-Store ![ShopBack Pay Now Available In-Store](https://mintcdn.com/hitpay/k-iyS5g3Kq1NY2Cx/images/changelog/shopback-pos-instore.png?fit=max\&auto=format\&n=k-iyS5g3Kq1NY2Cx\&q=85\&s=0183cafa8e2494abba765cb06bf0d35a) Singapore merchants can now accept ShopBack Pay at their physical POS counters. Customers scan a QR code on the terminal using the ShopBack app — no new hardware needed. [Read more →](/changelog/2026-05-26-shopback-pos-instore) **May 12, 2026** ## Customer Detail Insights ![Customer Detail Insights](https://mintcdn.com/hitpay/YATl2pbs-1JfF3kW/images/changelog/customer-detail-insights.png?fit=max\&auto=format\&n=YATl2pbs-1JfF3kW\&q=85\&s=8c31cf37d1f748656a737ce64f818037) Open any customer's profile to see all their transactions, orders, invoices, and payment links in one place — plus total spend, average order value, and visit frequency at a glance. Also includes Stripe Standard Connect for global card payments and a POS update removing manual card entry. [Read more →](/changelog/2026-05-12-customer-detail-insights) **April 22, 2026** ## Tap to Pay on iPhone Now Available in Malaysia ![Tap to Pay on iPhone](https://framerusercontent.com/images/SdZFw89H4UgRnvLx4T8mSMMaSV8.png?width=1024\&height=555) Tap to Pay on iPhone is now live for Malaysian merchants. Accept contactless payments right on your iPhone with no additional hardware needed. [Read more →](/changelog/2026-04-22-tap-to-pay-iphone-malaysia) **April 07, 2026** ## Touch 'n Go Cross-Border for Subscriptions ![Touch 'n Go Cross-Border for Subscriptions](https://mintcdn.com/hitpay/kLcqFW_Gz74XPL7u/images/changelog/tng-xb-subscriptions.png?fit=max\&auto=format\&n=kLcqFW_Gz74XPL7u\&q=85\&s=bbd4240dc8a78f3973972ced889f7c34) Non-MY merchants can now accept Touch 'n Go for recurring payments from Malaysian customers, settling in their own currency. Plus small improvements to Online Store and Recurring Billing webhooks. [Read more →](/changelog/2026-04-07-tng-xb-subscriptions) **April 03, 2026** ## Zoho Books, Twilio, and NetSuite Integrations ![Zoho Books, Twilio, and NetSuite Integrations](https://mintcdn.com/hitpay/s6ezMalwAUU3qGfn/images/changelog/eo-integrations.png?fit=max\&auto=format\&n=s6ezMalwAUU3qGfn\&q=85\&s=3c6b4b8545bc6898bd376be67d46bea5) HitPay now integrates with Zoho Books, Twilio, and NetSuite to automate accounting, sync transactions, and streamline post-payment messaging. [Read more →](/changelog/2026-04-03-eo-integrations) **April 02, 2026** ## ZaloPay & VietQR ![ZaloPay & VietQR](https://mintcdn.com/hitpay/ZDaUieXltcRpbobs/images/changelog/zalopay-vietqr.png?fit=max\&auto=format\&n=ZDaUieXltcRpbobs\&q=85\&s=da960df03b306050e2d1008368ca79d1) Merchants can now accept VND payments via ZaloPay and VietQR across online, QR, and Recurring Billing channels, bringing HitPay into Vietnam's fast-growing digital payments market. [Read more →](/changelog/2026-04-02-zalopay-vietqr) **March 25, 2026** ## Static QR on the HitPay App ![Static QR on the HitPay App](https://mintcdn.com/hitpay/zSFSrz7qwW0siLCR/images/changelog/static-qr-on-mobile.png?fit=max\&auto=format\&n=zSFSrz7qwW0siLCR\&q=85\&s=bd907ce4a11aed1a80136c08a8c5b6aa) Merchants in Singapore and Malaysia can now view and manage their Static QR codes directly from the HitPay mobile app, with real-time audio alerts and full iPad landscape support. [Read more →](/changelog/2026-03-25-static-qr-on-mobile) **March 25, 2026** ## POS Keypad Calculator ![POS Keypad Calculator](https://mintcdn.com/hitpay/zSFSrz7qwW0siLCR/images/changelog/pos-keypad-calculator.png?fit=max\&auto=format\&n=zSFSrz7qwW0siLCR\&q=85\&s=d9525ccca6fe0ee51ffcfa4c738c26f3) Android merchants can now do quick arithmetic directly on the POS keypad — add, subtract, multiply, or divide without leaving the charge screen. [Read more →](/changelog/2026-03-25-pos-keypad-calculator) **March 25, 2026** ## Touch 'n Go Online (Global Cross-Border) ![Touch 'n Go Online (Global Cross-Border)](https://mintcdn.com/hitpay/jxUi7JS53yFPLf-5/images/tngxb.png?fit=max\&auto=format\&n=jxUi7JS53yFPLf-5\&q=85\&s=6d0f8cb480abbd5f79c993dcc60cd481) SG, PH, and other non-MY merchants can now accept MYR payments via Touch 'n Go eWallet, with an online redirect experience. [Read more →](/changelog/2026-03-20-touch-n-go-xb-online) **March 16, 2026** ## Touch 'n Go for Subscriptions (Malaysia) ![Touch 'n Go for Subscriptions](https://framerusercontent.com/images/mW3VCyY9nQSbA9Qby9qP0lSSE.jpg) Touch 'n Go digital wallet is now supported as a payment option for subscriptions in Malaysia. [Read more →](/changelog/2026-03-16-tng-for-subscriptions-malaysia) **March 5, 2026** ## DuitNow QR ![DuitNow QR](https://mintcdn.com/hitpay/Fvt518c-WlkXj3vT/images/duitnowqr.png?fit=max\&auto=format\&n=Fvt518c-WlkXj3vT\&q=85\&s=6f27004a6a8db85808497c4ae7798b2c) DuitNow QR is now live and auto-enabled for all merchants globally, online and in-person. [Read more →](/changelog/2026-03-05-duitnow-qr) **February 16, 2026** ## QuickBooks Connection ![QuickBooks Connection](https://framerusercontent.com/images/eE69C1iVkEV3jAEMjLYoB6iFA.png) Merchants can now connect HitPay to QuickBooks to automatically sync transaction data into their QuickBooks account. [Read more →](/changelog/2026-02-16-quickbooks-connection) **February 13, 2026** ## Mobile Invoicing Upgrade and Custom Fields ![Mobile Invoicing Upgrade and Custom Fields](https://framerusercontent.com/images/cCK3aEHqzC9NypgLXMChMY5I3a8.png) Enhancements to mobile invoicing, including support for custom fields on invoices. [Read more →](/changelog/2026-02-13-mobile-invoicing-upgrade) **February 12, 2026** ## ShopeePay for Subscriptions (Philippines) ![ShopeePay for Subscriptions](https://framerusercontent.com/images/Bj7YkKChlYuEtCGRaN0B6SqgTpI.png) ShopeePay is now available as a payment option for subscriptions in the Philippines. [Read more →](/changelog/2026-02-12-shopeepay-for-subscriptions-philippines) **February 10, 2026** ## Fee Breakdown ![Fee Breakdown](https://framerusercontent.com/images/a947stVucmYsjsTNbMTdq0ozloY.png) Merchants can now view a detailed breakdown of all fees applied to individual transactions directly in the HitPay dashboard. [Read more →](/changelog/2026-02-10-fee-breakdown) **January 31, 2026** ## Payouts & Wallet Balances Overhaul ![Payouts & Wallet Balances Overhaul](https://mintcdn.com/hitpay/YeMTjx6l4Y3ML72_/images/Payouts.png?fit=max\&auto=format\&n=YeMTjx6l4Y3ML72_\&q=85\&s=ce590263668b4762d15945b6b43f1a2e) A unified view of all payouts and wallet balances, with automatic arrival dates, an "Upcoming" payout status, and direct links between charges and payouts for faster reconciliation. [Read more →](/changelog/2026-01-31-payouts-and-wallet-balances-overhaul) **January 28, 2026** ## HitPay Borderless QR ![HitPay Borderless QR](https://framerusercontent.com/images/oGJf1Njk8HErK5GKO699vNqx1U.png) HitPay Borderless QR enables merchants to accept cross-border QR payments from customers using overseas e-wallets, with no additional integration required. [Read more →](/changelog/2026-01-28-hitpay-borderless-qr) **January 21, 2026** ## Multi-Currency, Mart Theme, and Invoice Editing ![Multi-Currency, Mart Theme, and Invoice Editing](https://framerusercontent.com/images/gyGtIqccg6v5mylG5wFINFBa038.jpg?width=3069\&height=1663) This release introduces multi-currency support for the online store, a new Mart theme designed for large product catalogs, and the... [Read more →](/changelog/2026-01-21-multi-currency-mart-theme-and-invoice-editing) **December 4, 2025** ## Tap to Pay on iPhone ![Tap to Pay on iPhone](https://framerusercontent.com/images/SdZFw89H4UgRnvLx4T8mSMMaSV8.png?width=1024\&height=555) This release introduces Tap to Pay on iPhone for Singapore merchants [Read more →](/changelog/2025-12-04-tap-to-pay-on-iphone) **November 27, 2025** ## HitPay All-in-One Terminal (Sunmi V3 Malaysia) ![HitPay All-in-One Terminal (Sunmi V3 Malaysia)](https://framerusercontent.com/images/FgaS8e4W8Nz6MewTu5rXPUxZpXw.png?width=1024\&height=555) This release introduces HitPay All-in-One Terminal (Sunmi V3, powered by Stripe) for Malaysia merchants. [Read more →](/changelog/2025-11-27-hitpay-all-in-one-terminal-sunmi-v3-malaysia) **November 27, 2025** ## Atome QR Offline (Singapore & Malaysia) ![Atome QR Offline (Singapore & Malaysia)](https://framerusercontent.com/images/pfxgOJD7z6Hnp3EQgu8JklZi2c.png?width=3072\&height=1665) This release introduces direct integration with Atome for offline QR checkout. Available in Singapore and Malaysia. [Read more →](/changelog/2025-11-27-atome-qr-offline-singapore-malaysia) **November 27, 2025** ## ShopeePay & SPayLater (Philippines) ![ShopeePay & SPayLater (Philippines)](https://framerusercontent.com/images/8XddL0cWDlLF4bDgdWoEzIg01w.png?width=3072\&height=1665) This release introduces direct integration with ShopeePay & SPayLater PH in Philippines. [Read more →](/changelog/2025-11-27-shopeepay-spaylater-philippines) **November 26, 2025** ## New Store Templates and Easier Payment Method Updates ![New Store Templates and Easier Payment Method Updates](https://framerusercontent.com/images/rmwQxoedB1Ae8Dic2ixSJS0etdo.jpg?width=3069\&height=1663) This release includes new store templates and updated payment methods for recurring billing [Read more →](/changelog/2025-11-26-new-store-templates-and-easier-payment-method-updates) **October 16, 2025** ## AliPay+ (Malaysia) ![AliPay+ (Malaysia)](https://framerusercontent.com/images/pyUaMLzH7Axa8DStOb0xJ1pojs.png?width=1024\&height=555) This release introduces direct integration with AliPay+ online for Malaysia. [Read more →](/changelog/2025-10-16-alipay-plus-malaysia) **October 16, 2025** ## Korean Payment Methods - PayCo, NaverPay, KakaoPay (Global) ![Korean Payment Methods - PayCo, NaverPay, KakaoPay (Global)](https://framerusercontent.com/images/SD6OOgaV3fANrYD7S4sN6DNl60o.png?width=1024\&height=555) This release introduces direct integration with KakaoPay, NaverPay & Payco (Korean E-wallets) [Read more →](/changelog/2025-10-16-korean-payment-methods-payco-naverpay-kakaopay-global) **October 16, 2025** ## GrabPay for Subscriptions (Singapore & Malaysia) ![GrabPay for Subscriptions (Singapore & Malaysia)](https://framerusercontent.com/images/XOSAvQIylvzfn22LpeUXsCBhh0s.jpg?width=2134\&height=1200) This release introduces GrabPay as payment options for subscriptions in Singapore & Malaysia [Read more →](/changelog/2025-10-16-grabpay-for-subscriptions-singapore-malaysia) **September 30, 2025** ## Recurring Bulk Subscriptions & Shareable Carts ![Recurring Bulk Subscriptions & Shareable Carts](https://framerusercontent.com/images/2chj3bIdkFV5OQtqn3xxpISSd0.jpg?width=4096\&height=2220) This release includes bulk actions for subscriptions and share cart for the online store [Read more →](/changelog/2025-09-30-bulk-subscriptions-and-shareable-carts) **September 1, 2025** ## WeChat Pay (Malaysia) ![WeChat Pay (Malaysia)](https://framerusercontent.com/images/s9YgpDhMNYzzaueNAXr10nqG8.png?width=3072\&height=1665) This release introduces direct integration with WeChatPay in Malaysia with instant onboarding [Read more →](/changelog/2025-09-01-we-chat-pay-malaysia) **September 1, 2025** ## HitPay All-in-One Terminal (Philippines) ![HitPay All-in-One Terminal (Philippines)](https://framerusercontent.com/images/7vr3k3aR4K5x9wYCVuDMIPirhI.png?width=1024\&height=555) This release introduces HitPay All-in-One Terminal (Ingenico DX4000, powered by Cybersource) for Philippines merchants. [Read more →](/changelog/2025-09-01-hitpay-all-in-one-terminal-dx4000-philippines) **August 24, 2025** ## Touch 'n Go (Malaysia) ![Touch 'n Go (Malaysia)](https://framerusercontent.com/images/gtzKJS9MIq53HMLlXVlfLPpYaso.png?width=536\&height=300) This release introduces direct integration with Touch 'n Go in Malaysia, auto-enabling it as a default payment option for merchant... [Read more →](/changelog/2025-08-24-touch-n-go-malaysia) **August 13, 2025** ## Save Payment Details & Online Store Templates ![Save Payment Details & Online Store Templates](https://framerusercontent.com/images/AWSEIZAZIefTYer8gaSzJvan64.jpg?width=4096\&height=2220) This release introduces Save Payment Details for Subscriptions, New Online Store Templates, and Invoice Locations, giving you more... [Read more →](/changelog/2025-08-13-save-payment-details-online-store-templates) **August 6, 2025** ## HitPay Mini AMS1 Terminal ![HitPay Mini AMS1 Terminal](https://framerusercontent.com/images/96lgE1wAw9aLYLUs4mCNOML2Td0.png?width=1024\&height=555) This release introduces HitPay Mini Terminal (AMS1, powered by Adyen) for Singapore/Hong Kong merchants. [Read more →](/changelog/2025-08-06-hitpay-mini-ams1-terminal) **July 24, 2025** ## Crypto Payments ![Crypto Payments](https://framerusercontent.com/images/vzhuGbInWM1xo59oGtw9OaB2WGI.png?width=536\&height=300) This release introduces cryptocurrency payments acceptance integration. in partnership with Triple-A Singapore. [Read more →](/changelog/2025-07-24-crypto-payments) **July 18, 2025** ## Open Amount & One Page Checkout ![Open Amount & One Page Checkout](https://framerusercontent.com/images/dejcksn1USLPnilsX7wZCFs67u4.jpg?width=4096\&height=2220) This release introduces Open Amount Products and One Page Checkout for the Online Store, making it easier to sell with flexible pr... [Read more →](/changelog/2025-07-18-open-amount-one-page-checkout) **July 4, 2025** ## ShopeePay for Subscriptions (Singapore) ![ShopeePay for Subscriptions (Singapore)](https://framerusercontent.com/images/yoVn531Owo59K0ccl3ndg2VGzy0.png?width=1024\&height=555) This release introduces ShopeePay and SPayLater as payment options for subscriptions in Singapore [Read more →](/changelog/2025-07-04-shopeepay-for-subscriptions-singapore) **June 25, 2025** ## Collect Full Names at Checkout, Customize Category Pages, and More! ![Collect Full Names at Checkout, Customize Category Pages, and More!](https://framerusercontent.com/images/3qahoXiYtyV4GnFBJrtiUF6Js9Q.jpg?width=4096\&height=2220) This release introduces new features across Payment Links, Invoices, and the Online Store—giving you more control to collect custo... [Read more →](/changelog/2025-06-25-collect-full-names-at-checkout-customize-category-pages-and-more) **June 11, 2025** ## HitPay All-in-One Terminal (Hong Kong) ![HitPay All-in-One Terminal (Hong Kong)](https://framerusercontent.com/images/QNmUW8dKAot5IUVW6NrXKWu8ZA.png?width=2880\&height=1620) This release introduces HitPay All-in-One Terminal (S1F2, powered by Adyen) for Hong Kong merchants. [Read more →](/changelog/2025-06-11-hong-kong-hitpay-all-in-one-terminal) **May 22, 2025** ## Same Day Void Feature (All-in-One Terminal) ![Same Day Void Feature (All-in-One Terminal)](https://framerusercontent.com/images/Yu2W0hu3bhpspxkpM52tyUcr38c.png?width=1024\&height=555) This release introduces the ability to void transactions directly from the HitPay terminal app or Web, allowing merchants to cance... [Read more →](/changelog/2025-05-22-same-day-void-feature-all-in-one-terminal) **May 16, 2025** ## AI-Powered Onboarding and New Storefront Sections ![AI-Powered Onboarding and New Storefront Sections](https://framerusercontent.com/images/jWEMXgizg3NBFXT9Z8Sve1TNIIY.jpg?width=2144\&height=1204) This release introduces AI-powered onboarding and new storefront sections to help you launch and customize your store faster than... [Read more →](/changelog/2025-05-16-ai-powered-onboarding-and-new-storefront-sections) **April 11, 2025** ## Malaysia: Touch 'n Go (Offline), GrabPay & PayLater by Grab (Offline), Atome (Online); Philippines: GCash (Offline) ![Malaysia: Touch 'n Go (Offline), GrabPay & PayLater by Grab (Offline), Atome (Online); Philippines: GCash (Offline)](https://framerusercontent.com/images/hFaTSZv2uYSdABEVJ92LaDGkCR4.png?width=1024\&height=555) This release expands support for additional payment methods — Touch 'n Go, GrabPay & PayLater by Grab (Offline), and Atome (Online... [Read more →](/changelog/2025-04-11-malaysia-touch-n-go-offline-grabpay-paylater-by-grab-offline-atome-online-philippines-gcash-offline) **April 11, 2025** ## Add One-Time Payment to Subscriptions ![Add One-Time Payment to Subscriptions](https://framerusercontent.com/images/tK3XfWlAMd05xJiOPKuSfjTMFA.png?width=1024\&height=555) This release includes the ability to add one-time payments to active subscriptions, along with a set of small but impactful improv... [Read more →](/changelog/2025-04-11-add-one-time-payment-to-subscriptions) **March 13, 2025** ## Customize Pages with Sections & Media Manager ![Customize Pages with Sections & Media Manager](https://framerusercontent.com/images/UsHJO7mrO93SZQX8RrMjzhOHhQ.jpg?width=2144\&height=1204) This release introduces customizable page sections, a new Media Manager, and improvements to product variants and product import &... [Read more →](/changelog/2025-03-13-customize-pages-with-sections-media-manager) **February 26, 2025** ## HitPay Static QRs ![HitPay Static QRs](https://framerusercontent.com/images/wGWFWROyBgJrm0W6U7bnBKKnk.png?width=1729\&height=846) This release introduces the HitPay Static QRs for SG & PH merchants [Read more →](/changelog/2025-02-26-hitpay-static-qrs) **February 19, 2025** ## UPI Cross Border (Singapore) ![UPI Cross Border (Singapore)](https://framerusercontent.com/images/xszz3yr9uKUC7qKvaoRrCI1NdwA.png?width=3072\&height=1665) This release introduces UPI as an online and in-person checkout QR payment option for Singapore merchants. [Read more →](/changelog/2025-02-19-upi-cross-border-singapore) **February 19, 2025** ## HitPay x Cal.com Integration ![HitPay x Cal.com Integration](https://framerusercontent.com/images/Vg0WLZ5DVu0xHgrCYKx3N2YM9k.png?width=1024\&height=555) This release includes Cal.com integration for managing bookings and payments, online store design enhancements, product customizat... [Read more →](/changelog/2025-02-19-hitpay-x-cal-com-integration) **February 5, 2025** ## PayLater by Grab Online (Malaysia) ![PayLater by Grab Online (Malaysia)](https://framerusercontent.com/images/irA74Wsvj2c0VHj6oN9Ye8kdks.png?width=2880\&height=1620) This release introduces PayLater by Grab as a Buy Now, Pay Later (BNPL) payment option for merchants in Malaysia. [Read more →](/changelog/2025-02-05-grabpay-paylater-online-malaysia) **February 4, 2025** ## HitPay POS Max ![HitPay POS Max](https://framerusercontent.com/images/p4PF1kZtU6jvbE77TNRpGm91QpU.png?width=1024\&height=555) This release introduces new HitPay POS Max (Sunmi V3 Mix), with in-built barcode scanner, printer and cellular connectivity, for S... [Read more →](/changelog/2025-02-04-hitpay-pos-max) **January 14, 2025** ## HitPay All-in-One Terminal (Singapore) ![HitPay All-in-One Terminal (Singapore)](https://framerusercontent.com/images/QNmUW8dKAot5IUVW6NrXKWu8ZA.png?width=2880\&height=1620) This release introduces new HitPay All-in-One Terminal (S1F2, powered by Adyen), with in-built printer capabilities and cellular c... [Read more →](/changelog/2025-01-14-hitpay-all-in-one-terminal) **January 14, 2025** ## PromptPay Online This release introduces PromptPay as an online checkout QR payment option for merchants in Thailand. [Read more →](/changelog/2025-01-14-promptpay-online) **December 17, 2024** ## Open Amount Products ![Open Amount Products](https://framerusercontent.com/images/03RGTXNoZA4cUjoojyNyME6qOI.png?width=1024\&height=555) This release introduces open amount products on the POS app and Web POS. [Read more →](/changelog/2024-12-17-open-amount-products) **December 12, 2024** ## Product Customisation ![Product Customisation](https://framerusercontent.com/images/8uZxOqYcJEvx4NiGoFOeXR22siU.png?width=1024\&height=555) This release introduces product add-ons, order quantity limits for the online store, and the ability to void invoices. [Read more →](/changelog/2024-12-12-product-customisation) **November 19, 2024** ## GrabPay Embedded QR ![GrabPay Embedded QR](https://framerusercontent.com/images/SkdPpZqgxvyMgRMLgIUa0vioqM.png?width=2048\&height=1110) This release introduces GrabPay and GrabPay PayLater as embedded QR payment options for merchants in Singapore. [Read more →](/changelog/2024-11-19-grabpay-embeded-qr) **November 8, 2024** ## POS Order Form and Invoice Late Fee ![POS Order Form and Invoice Late Fee](https://framerusercontent.com/images/UsOAIhshyoISccxJIaZBXxqng.png?width=2048\&height=1110) This release introduces a customizable order form for the POS app, the ability to create and set orders for shipping and pickup, a... [Read more →](/changelog/2024-11-08-order-form-shipping-pos) **October 17, 2024** ## New Storefront Sections ![New Storefront Sections](https://framerusercontent.com/images/7n9Hq6wfjPKhcTrRiPevdiAYw.png?width=2048\&height=1110) This release includes new sections for the online store, including categories, text sections, and gallery layouts, to help you bet... [Read more →](/changelog/2024-10-17-new-storefront-sections) **September 16, 2024** ## SPayLater (Malaysia), PromptPay & TrueMoney & LinePay (Singapore) ![SPayLater (Malaysia), PromptPay & TrueMoney & LinePay (Singapore)](https://framerusercontent.com/images/4ep5CuXP1sQcKV08fMlWD4nrY.png?width=2048\&height=1110) This release includes the launch of new payments methods - SPayLater in Malaysia and PromptPay, TrueMoney & LinePay in Singapo... [Read more →](/changelog/2024-09-16-shopee-spaylater-malaysia-promptpay-truemoney-linepay-singapore) **September 16, 2024** ## Barcode Scanning, Printer Integrations & Reporting Improvements ![Barcode Scanning, Printer Integrations & Reporting Improvements](https://framerusercontent.com/images/UFk9piXoZxSCOj7iy2QgkfAwQc.png?width=2048\&height=1110) This release includes updates to reporting on the web, updates to product sales report export, enhanced bulk upload template to su... [Read more →](/changelog/2024-09-16-transactions-access-reporting-bulk-upload-improvements) **September 5, 2024** ## HitPay Payout Rails for Singapore, Malaysia and Philippines ![HitPay Payout Rails for Singapore, Malaysia and Philippines](https://framerusercontent.com/images/54mD8HXTf62ObtOnx7W3Xceh4E.png?width=2048\&height=1110) This release includes HitPay's Payout Rails for domestic and cross-border funds transfers and payouts. This includes Singapore, Ma... [Read more →](/changelog/2024-09-05-hitpay-rails-for-singapore-malaysia-and-philippines) **August 15, 2024** ## Weight-Based Shipping & Product Delivery Methods ![Weight-Based Shipping & Product Delivery Methods](https://framerusercontent.com/images/rdZPfD4iw14pc8GZth2Wl871LZQ.png?width=2048\&height=1110) This release includes weight-based shipping and product delivery method for your online store. [Read more →](/changelog/2024-08-15-weight-based-shipping-product-delivery-methods) **July 30, 2024** ## Multi-Country and Region Shipping ![Multi-Country and Region Shipping](https://framerusercontent.com/images/lNCa6jQzFnjltMHcPXE6SwA3T4k.png?width=2048\&height=1110) This release includes Shipping by Countries and Regions and also password protection for your online store [Read more →](/changelog/2024-07-30-region-based-shipping-rules) **July 10, 2024** ## Shopee PayLater Payment Method ![Shopee PayLater Payment Method](https://framerusercontent.com/images/bW3H8PDX89B5f8d6Ffdlifl6ps.png?width=2048\&height=1110) Singapore merchants can now accept both ShopeePay and SPayLater online and offline [Read more →](/changelog/2024-07-10-new-shopeepay-bnpl-payment-method-sg) **June 30, 2024** ## Multiple Pickup Locations and Updates to Inventory ![Multiple Pickup Locations and Updates to Inventory](https://framerusercontent.com/images/fujSDQeYELEyALcK0Hvd91kehg.png?width=2048\&height=1110) This release includes major changes made to your inventory and online store pickups. [Read more →](/changelog/2024-06-30-multiple-pickup-locations-and-updates-to-inventory) **May 31, 2024** ## QR Code APIs, Invoice and POS Improvements ![QR Code APIs, Invoice and POS Improvements](https://framerusercontent.com/images/6MWpRGgDj76tn30nOlZIsrSuA.png?width=2048\&height=1110) This release has introduced a new payment request API that supports embedded QR Codes without needing a hosted checkout page. We a... [Read more →](/changelog/2024-05-31-qr-code-apis-invoice-and-pos-improvements) **March 21, 2024** ## Customer Display and New Payment Methods ![Customer Display and New Payment Methods](https://framerusercontent.com/images/JmJakcXPgiII8Y5JC7gOZALrg.png?width=2048\&height=1110) With Customer Display mode you can convert your HitPay app into a customer-facing screen. Also introducing new payment methods QRP... [Read more →](/changelog/2024-03-21-customer-display-for-pos) **February 28, 2024** ## Store Themes and Open Amount Links ![Store Themes and Open Amount Links](https://framerusercontent.com/images/bxxwsDgedqE2WbzHKWoKvXhEVI.png?width=2048\&height=1110) You can now create payment requests with open amounts, and we are launching our first theme for the online store. [Read more →](/changelog/2024-02-28-store-themes-and-open-amount-links) **January 18, 2024** ## Store Design Tools ![Store Design Tools](https://framerusercontent.com/images/ZtCB9B0dfUow7U5dUNxB3P72DBg.png?width=2048\&height=1110) New improvements to store design and Invoice reminder settings [Read more →](/changelog/2024-01-18-store-design-tools) **December 13, 2023** ## Account Setup on Mobile ![Account Setup on Mobile](https://framerusercontent.com/images/i34ErgyXyrbgo94s1dJcffemRNU.png?width=2400\&height=992) Mobile onboarding! Users can now sign up for a HitPay account & complete verification directly from the app [Read more →](/changelog/2023-12-13-account-setup-on-mobile) **November 7, 2023** ## New Menu Layout ![New Menu Layout](https://framerusercontent.com/images/3Sywv0h4f4DxpjfVMxIgAkQ.png?width=1440\&height=877) The updated menu layout allows you to easily find what you are looking for, and ensures faster loading times when switching betwee... [Read more →](/changelog/2023-11-07-new-menu-layout) **October 9, 2023** ## SEO For Online Store ![SEO For Online Store](https://framerusercontent.com/images/kilBA7DK4cab3z7yZ3gGdIF6IUo.png?width=1440\&height=998) Exciting news for your HitPay Online store – it's now optimized for enhanced search engine optimization (SEO)! Numerous changes ha... [Read more →](/changelog/2023-10-09-seo-for-online-store) **September 13, 2023** ## Payment Links Insights ![Payment Links Insights](https://framerusercontent.com/images/wFKRvDBRQ2fvHstxrOJ9U7QxdXE.png?width=1440\&height=639) More improvement to payment link users with new details page for each payment link with more insights [Read more →](/changelog/2023-09-13-payment-links-insights) **August 24, 2023** ## Payment Links on POS and Themes ![Payment Links on POS and Themes](https://framerusercontent.com/images/AM9ohNKzgMwZsP1inTkuE9nnieA.png?width=2400\&height=1278) Major improvements to Online Store design feature and payments link is now available on the mobile app [Read more →](/changelog/2023-08-24-payment-links-on-pos-and-themes) **August 8, 2023** ## Improved Reports and Widgets ![Improved Reports and Widgets](https://framerusercontent.com/images/cQZvt11oFAzd7luWHBwp7U08ag8.png?width=2400\&height=992) Gain access to an expanded range of reports for deeper insights into your business. [Read more →](/changelog/2023-08-08-improved-reports-and-widgets) **July 19, 2023** ## Billing Start Date & Locations ![Billing Start Date & Locations](https://framerusercontent.com/images/NGrLfGWNbmJsuI7xg4SqkrM5uE.png?width=2400\&height=992) Enhancements have been implemented on the Recurring Billing page, providing merchants with increased flexibility regarding the sta... [Read more →](/changelog/2023-07-19-recurring-billing-start-date) **June 23, 2023** ## Store Dashboard and POS Modes ![Store Dashboard and POS Modes](https://framerusercontent.com/images/2HO40MramVGlicLF31lY5jirAqU.png?width=2400\&height=992) Online store users now get an enhanced dashboard and the POS app now has a new navigation layout with new "modes" [Read more →](/changelog/2023-06-23-store-dashboard-and-pos-modes) **June 6, 2023** ## Shipping Calendar & Notifications ![Shipping Calendar & Notifications](https://framerusercontent.com/images/Eb3BpVl3ykHRyI3DM7Wur9SHe4.png?width=2400\&height=992) HitPay online store now supports a calendar for pickup and shipping making it an excellent tool for time-sensitive goods like food... [Read more →](/changelog/2023-06-06-shipping-calendar-better-notifications) **May 9, 2023** ## Digital Products & POS Discounts ![Digital Products & POS Discounts](https://framerusercontent.com/images/hQo1ZvcpN0m2Gm6jxI9QuYn3w.png?width=2400\&height=992) Start selling digital goods on your online store for free, all digital goods can be password protected. [Read more →](/changelog/2023-05-09-digital-products-pos-discounts) **April 18, 2023** ## Event Webhook & App Updates ![Event Webhook & App Updates](https://framerusercontent.com/images/LX0h4Oh6JZa03oFLVqVnC4fcu4.png?width=2400\&height=992) Event webhooks bring unlimited possibilities to your business automation, an excellent tool for developers and business owners. [Read more →](/changelog/2023-04-18-event-webhook-and-app-updates) **March 28, 2023** ## Updated Payment Request APIs ![Updated Payment Request APIs](https://framerusercontent.com/images/VF5mi9iPwgGzaa86FTgafLuw.png?width=2400\&height=992) New changes to payment request APIs and pages for Online store [Read more →](/changelog/2023-03-28-updated-payment-request-apis) **March 8, 2023** ## Products on App & Subcategories ![Products on App & Subcategories](https://framerusercontent.com/images/yX8jf4gkk57MG9ItbgsGAexG5Q.png?width=2400\&height=992) This release focuses more on the power user using our POS app and Payment Links. [Read more →](/changelog/2023-03-08-release-22) **February 14, 2023** ## Recurring Billing and iPad ![Recurring Billing and iPad](https://framerusercontent.com/images/tRtANlesPuvI0GkdoyCcgiO0AI.png?width=2400\&height=1260) Major updates to recurring billing and custom domain for online store. We have also updated our POS mobile app to better support i... [Read more →](/changelog/2023-02-14-release-21) # Recurring Billing and iPad Source: https://docs.hitpayapp.com/changelog/2023-02-14-release-21 Major updates to recurring billing and custom domain for online store. We have also updated our POS mobile app to better support i... [← Back to Changelog](/changelog) # Recurring Billing and iPad **February 14, 2023** Recurring Billing ![Recurring Billing and iPad](https://framerusercontent.com/images/tRtANlesPuvI0GkdoyCcgiO0AI.png?width=2400\&height=1260) Major updates to recurring billing and custom domain for online store. We have also updated our POS mobile app to better support iPad and completely revamped the transaction history page with faster search. Online Store Custom Domain - HitPay Online Store now has support for custom domains, which enables merchants to connect their own domain to their online store. Recurring Billing Recurring Payment Link - Merchants can now have their own recurring plans page. This page can be shared with their customers who can then subscribe to any available plans. This feature will help to make subscription management easier and more efficient for our merchants. Point of Sale Newly revamped products checkout UI for iPad. Products and Cart can now be viewed side by side! Newly revamped transaction history UI. You can now filter and search your past transactions! Fixes and Improvements POS - Newly revamped payment details UI. You can now view order details (products, discounts, surcharge, taxes & tips) in each transaction. Terminal Store - Merchants are now able to purchase terminals directly from the HitPay dashboard Invoice - The search/add customer popup has been revamped with a new user interface experience You can now add a new customer from the recurring billing page directly Invoice fix - the ‘Pay’ button will no longer appear on the invoice after it has been paid. Send refund receipts via Email Restrict Cashier role to be allowed to view their own transactions only (updated help article) Fixed UI bugs with regard to Invoicing via Mobile Fix terminal connection issues on the Android Fix the POS homepage layout issue on SunMi devices Fix the Web POS receipt printing issue, remarks not showing properly # Products on App & Subcategories Source: https://docs.hitpayapp.com/changelog/2023-03-08-release-22 This release focuses more on the power user using our POS app and Payment Links. [← Back to Changelog](/changelog) # Products on App & Subcategories **March 8, 2023** In-Person Payments ![Products on App & Subcategories](https://framerusercontent.com/images/yX8jf4gkk57MG9ItbgsGAexG5Q.png?width=2400\&height=992) This release focuses more on the power user using our POS app and Payment Links. Point of Sale * **Revamped Cart UI:** You can now add customer details and descriptions directly during checkout Create and customize the product directly from the mobile app without the need for the web dashboard Support for notes when you check out with POS Online Store Subcategory - HitPay Online Store and POS now supports subcategory! With this new feature, merchants can create up to 2 levels of subcategories Slot controls - Shipping and pickup time slots now have the option to specify the number of slots available Fixes and Improvements Invoicing now supports stackable discount WisePOS E connects to your web POS even if they are not on the same wifi. No more connection issues (Web only) The default payment link now supports currency picker HitPay online store customers can now select the desired quantity of a product on the product page directly You can now create payment links in bulk and also export the existing payment links to a CSV file UX improvements for PayPal checkout Google Forms plugin now has support to control the payment link's expiry date The mobile app can now print a refund receipt from your transaction history screen POS products ordering under each category will now follow the order that is set on the web # Updated Payment Request APIs Source: https://docs.hitpayapp.com/changelog/2023-03-28-updated-payment-request-apis New changes to payment request APIs and pages for Online store [← Back to Changelog](/changelog) # Updated Payment Request APIs **March 28, 2023** API ![Updated Payment Request APIs](https://framerusercontent.com/images/VF5mi9iPwgGzaa86FTgafLuw.png?width=2400\&height=992) New changes to payment request APIs and pages for Online store Payment Request APIs In-Person Payments can now be done using payment request APIs. This will allow you to collect in-person payments using REST APIs. API Docs Payment Request APIs now support 2 new parameters "line\_items" and "address" Online Store Storefront Pages -  You can now include additional pages on your online store, such as “FAQ”,  “Contact Us”, etc. with full HTML support The storefront now offers customers the ability to search for products. Customers can filter their search results by product category and price, and sort results by featured, newest, or price Fixes and Improvements New reporting page with product-level sales data * **POS Faster Checkout:** Improved the products' loading speed POS Printer receipts now include cashier, location, and terminal ID information Invoice now supports stackable discounts * **Recurring Billing:** New UI will make it easier for you to set up recurring payment links * **Invoice Footer:** You can now include a footer section for your invoice with full HTML support Improved error handling for declined cards on POS with card reader Fixed bugs on the terminal connection Added an in-app update notification to inform you when a new update is available HitPay Online Store support for Meta Pixel # Event Webhook & App Updates Source: https://docs.hitpayapp.com/changelog/2023-04-18-event-webhook-and-app-updates Event webhooks bring unlimited possibilities to your business automation, an excellent tool for developers and business owners. [← Back to Changelog](/changelog) # Event Webhook & App Updates **April 18, 2023** API ![Event Webhook & App Updates](https://framerusercontent.com/images/LX0h4Oh6JZa03oFLVqVnC4fcu4.png?width=2400\&height=992) Event webhooks bring unlimited possibilities to your business automation, an excellent tool for developers and business owners. Event Webhooks Merchants/Developers can use these webhooks to build their own automation and processes (API Docs). Supported events include charges, payouts, orders, and invoices Point of Sales You can now add, edit, and delete product variations directly from the POS app Improved connectivity between the mobile app and WisePOS E Terminal. The reader need not be on the same wifi anymore Fixes and Improvements Subscription page now has a new UI along with a history section that shows all successful, failed (with an explanation for the failure), and refunded transactions The invoice list page now allows you to search by email While creating an invoice it is now possible to include products that are out of stock The user experience for adding customers to the cart has been improved Added new animations when merchants are processing payments via Card Terminal You now have the option to sell products even when they are out of stock You can now clear the quick sale option by long-pressing the clear button Printed receipts now support the printing of order description # Digital Products & POS Discounts Source: https://docs.hitpayapp.com/changelog/2023-05-09-digital-products-pos-discounts Start selling digital goods on your online store for free, all digital goods can be password protected. [← Back to Changelog](/changelog) # Digital Products & POS Discounts **May 9, 2023** Online Store ![Digital Products & POS Discounts](https://framerusercontent.com/images/hQo1ZvcpN0m2Gm6jxI9QuYn3w.png?width=2400\&height=992) Start selling digital goods on your online store for free, all digital goods can be password protected. Online Store * **Digital Products:** New feature that allows you to sell digital products as downloadable items directly to their customers. Upload various digital content, including e-books, PDFs, external links, or other digital content, and offer them for purchase seamlessly. * **Shipping and Pickup:** New user interface for merchants to easily add shipping and pickup options. Easily apply multiple discounts onto a single cart order. Easily apply or disable percentage discounts to specific products for more targeted promotions. Fixes and Improvements You can now have the ability to rearrange the order of products listed under “All Products”. Any changes to the order will be immediately reflected in the Storefront and POS. * **Recurring Billing Timeline:** New subscription timeline that displays every change made to the subscription, such as customer card detail updates, subscription cancellations with the name of the person who canceled, failed payments with reasons, and more. Additionally, you can add extra notes for further context. A new user interface for default links and payment links table. In addition, you can now search for payment links by payment link ID, customer email, or reference number. Email receipt will only send 1 receipt (charge and order information is now combined) View discount breakdown in SMS, Email and Printed Receipts POS display of line items in cart - Surcharge, Tax, and Discounts are now more compact. Users with multiple HitPay accounts can now choose specific business accounts to log in to from the app. Tap to Pay on Android will now display last 4 digits upon printing of receipt # Shipping Calendar & Notifications Source: https://docs.hitpayapp.com/changelog/2023-06-06-shipping-calendar-better-notifications HitPay online store now supports a calendar for pickup and shipping making it an excellent tool for time-sensitive goods like food... [← Back to Changelog](/changelog) # Shipping Calendar & Notifications **June 6, 2023** Online Store ![Shipping Calendar & Notifications](https://framerusercontent.com/images/Eb3BpVl3ykHRyI3DM7Wur9SHe4.png?width=2400\&height=992) HitPay online store now supports a calendar for pickup and shipping making it an excellent tool for time-sensitive goods like food and bakeries. Online Store * **Shipping and Pickup Calendar:** Merchants can now take control of their order fulfillment process by setting up order preparation time, cutoff time, maximum order placement days, and blackout dates for each shipping and pickup method in their online store. As a result, customers can choose their desired pickup or shipping date and time slot from a calendar interface. This feature is ideal for grocery stores, bakeries, restaurants, florists, and more. Shipping User Guide and Pickup User Guide The “Key in Card Details” payment method now allows you to capture your customer’s card details via a camera scan (iOS) or NFC (Android). Read more here. Push notification now displays transaction details such as amount, method, and location. By clicking on the push notification, you will be redirected to see the full details of the transaction. You can now assign products to specific channels, such as Point of Sale (POS), Online Store, and Invoicing from the Web Dashboard. This restricts products from being available only on the assigned channels. Fixes and Improvements * **Recurring Billing:** A brand-new page for merchants to access plan details, revenue insights, customer overview, and individual customer information. With the new plans page, merchants can access all the information required to make informed decisions and optimize their recurring billing strategies Merchants now have the capability to generate a QR code for their default payment link Redirect URL for payment links, you can define a specific website to which the customer will be redirected after the payment has been completed Online store now supports search by SKU You can now edit customer details directly from the customer subscription page In POS You can now set a default payment method from the new Checkout Settings Users with multiple HitPay accounts can now choose specific business accounts to log in to from the app (Now available on both iOS and Android) The mobile app now supports filter products by their status, inventory, and source On POS it is now possible to create transactions with a value of \$0.00 via the Cash payment method The ratio for the iPad view has been updated to provide more space for displaying products POS you can mark products as draft or published. Draft products will not be displayed on the checkout page * **Invoices:** Fixed the issue of overdue invoices not being sent. HitPay will automatically send an email notification after the invoice due date has passed * **Recurring Payment Links:** The error message for card-denied payments has been fixed, and new subscriptions will not be created if the payment is unsuccessful # Store Dashboard and POS Modes Source: https://docs.hitpayapp.com/changelog/2023-06-23-store-dashboard-and-pos-modes Online store users now get an enhanced dashboard and the POS app now has a new navigation layout with new 'modes' [← Back to Changelog](/changelog) # Store Dashboard and POS Modes **June 23, 2023** Online Store ![Store Dashboard and POS Modes](https://framerusercontent.com/images/2HO40MramVGlicLF31lY5jirAqU.png?width=2400\&height=992) Online store users now get an enhanced dashboard and the POS app now has a new navigation layout with new "modes" Online Store * **New Dashboard:** Merchants now have the ability to easily share their store URL through a QR code or various social media platforms. Gain valuable performance insights with key metrics like total revenue, received orders, pending shipping, and pickups. Additionally, the new dashboard provides valuable information on top-selling products, sales volume, and total visitors to their online store. With the inclusion of numerous filter options, such as month-to-date, last month, and custom filters, merchants have even more flexibility to explore and analyze their data. Introducing a new navigation layout that makes it easier for you to access your most used features. You can now easily view the terminal and network connectivity status from the side menu. You can switch between our newly released “Quick Sale” and “Point of Sale” modes Fixes and Improvements * **Online Shop > Orders:** New improvements to the online shop orders page focus on enhancing the user experience for order filters and the ability to cancel orders and immediately issue refunds, and conveniently re-send order invoices to different email addresses. * **New Products Sidebar:** Products has now a dedicated menu bar separate from Online Shop. Merchants can easily access and manage Products, Product Categories, and Inventory Sync. * **Enhanced Product Variant Editing:** New user interface when editing product variants. Merchants can now identify new variants added and removed. POS Customer information is now displayed in the Email receipt (if a customer is added to a charge) Support for HTML editor in Email receipt subtitle section You can now filter products by channel from Web Dashboard > Products # Billing Start Date & Locations Source: https://docs.hitpayapp.com/changelog/2023-07-19-recurring-billing-start-date Enhancements have been implemented on the Recurring Billing page, providing merchants with increased flexibility regarding the sta... [← Back to Changelog](/changelog) # Billing Start Date & Locations **July 19, 2023** Recurring Billing ![Billing Start Date & Locations](https://framerusercontent.com/images/NGrLfGWNbmJsuI7xg4SqkrM5uE.png?width=2400\&height=992) Enhancements have been implemented on the Recurring Billing page, providing merchants with increased flexibility regarding the start date. Additionally, the Products module has been enhanced to include options for tagging products to specific locations. Recurring Billing * **Flexible Start Date:** Merchants now have the freedom to choose when the recurring billing plans will start for their customers. They are no longer limited to customer choosing the start date. The “Flexible Start Date” offers three options: * **Sign-up Date:** The first charge will initiate immediately upon customer sign-up * **Customer-Selected Date:** Customers have the power to choose their preferred start date * **Fixed Day:** The first charge will occur on a fixed day * **Assign Products to Specific Locations:** You can now assign products to specific locations on Web Dashboard, This restricts products to be available only on the assigned locations. (Only for POS) * **Send Receipts as an Image:** Send receipts as an image through Airdrop, Whatsapp and other sharing methods available on their iPhone devices. (IOS Only) Fixes and Improvements * **Products Logs:** New feature that provides a comprehensive timeline of all product changes. Each product change is accompanied by detailed messages, making it easy to identify the nature of the update. Additionally, merchants can utilise the filtering options to search by product name, product ID, user name, and view logs for product fields update, creation, or deletion. * **Recurring Billing New UI for Add Plan and Checkout UI:** New add plans popup and an enhanced customer checkout UI. With the revamped checkout UI, customers can easily see the number of times they will be charged, and its has a new mobile-friendly design. * **Share Recurring Billing Plans:** Merchants now have the ability to either copy their plan URL or share it directly on WhatsApp, Facebook, Twitter or Gmail Enjoy a revamped user interface when switching between locations, business accounts, and clicking more actions in cart. New users will now have a visual guide to help them select the correct location permission during the terminal setup process. You can now include your location name & address in printed and email receipts # Improved Reports and Widgets Source: https://docs.hitpayapp.com/changelog/2023-08-08-improved-reports-and-widgets Gain access to an expanded range of reports for deeper insights into your business. [← Back to Changelog](/changelog) # Improved Reports and Widgets **August 8, 2023** API ![Improved Reports and Widgets](https://framerusercontent.com/images/cQZvt11oFAzd7luWHBwp7U08ag8.png?width=2400\&height=992) Gain access to an expanded range of reports for deeper insights into your business. POS & Reports View reports of sales summary, sales by payment methods, sales by products on your mobile POS app Print end-of-day reports directly from the app Install the HitPay iOS widget to get timely overview of your sales right from your home screen (iOS only) New Reports available for CSV Export (sales summary, sales by payment methods, sales by products summary) Fixes and Improvements * **Invoice Public APIs:** Merchants now have the power to create, read, update and delete invoices using our public invoice REST APIs * **Bulk Upload Improvements:** Merchants can now easily update existing products without the need for SKU and import product variants. Each product has now a “handle” field, that serves as a unique identifier during the import process # Payment Links on POS and Themes Source: https://docs.hitpayapp.com/changelog/2023-08-24-payment-links-on-pos-and-themes Major improvements to Online Store design feature and payments link is now available on the mobile app [← Back to Changelog](/changelog) # Payment Links on POS and Themes **August 24, 2023** Payment Links ![Payment Links on POS and Themes](https://framerusercontent.com/images/AM9ohNKzgMwZsP1inTkuE9nnieA.png?width=2400\&height=1278) Major improvements to Online Store design feature and payments link is now available on the mobile app Online Shop Store Design Page Improvements We have completely revamped the store design to provide an enhanced user experience. Alongside this, we’ve introduced some exciting new features. You can now personalise cover images, choose distinct ones for web and mobile, rearrange navigation menus, and customise store elements like font, text color, button color, shadows, and card appearance. Also, the link-in-bio feature is now optimised for mobile and mirroring the storefront colors (Docs) Products * **Bulk Upload Products from Different Platforms:** If you are using Shopify, Lazada, or Shopee can export the products from your existing platforms and effortlessly bulk upload them to HitPay. (Guide) Point of Sale App Payment links are now available on the app! You can easily create, view, and share payment links with customers. User management is also now available on the app, you can now manage and invite other users directly from the mobile app. Fixes and Improvements * **Recurring Billing Custom Fields:** You can now collect additional information from their customers by adding extra questions on the checkout page. They can include additional questions in five different formats: text, long text, radio button, dropdown, or checkbox. Moreover, these fields can be designated as mandatory or optional. * **New Add Subscription Page:** Brand-new user interface for adding customer subscriptions, with the ability to create subscriptions in any currency. Mobile App the UI of your business’ default payment link has been revamped. Start sharing it to collect payments. * **Custom Domain Verification:** Merchants can now view the status of their custom domain verification. * **Online Store checkout quantity check:** Prevent two customers of buying the same product simultaneously when there’s a limited quantity or slots during online store checkout. * **Search by Variant Name:** The search functionality has been enhanced to include support for searching by variants name in both POS and online store # Payment Links Insights Source: https://docs.hitpayapp.com/changelog/2023-09-13-payment-links-insights More improvement to payment link users with new details page for each payment link with more insights [← Back to Changelog](/changelog) # Payment Links Insights **September 13, 2023** Payment Links ![Payment Links Insights](https://framerusercontent.com/images/wFKRvDBRQ2fvHstxrOJ9U7QxdXE.png?width=1440\&height=639) More improvement to payment link users with new details page for each payment link with more insights Payment Links * **Payment Link Details Page:** A brand-new page designed for merchants to access their payment link details, revenue insights and all the payment history. Additionally, it offers the convenience of sharing payment links directly on WhatsApp, Facebook, Twitter, or Gmail, along with the option to generate a QR code. (Docs) * **Short URLs:** We’ve shortened the payment links URL for a more concise and user-friendly sharing experience. Fixes and Improvements * **Online Store Customer Address:** The online shop orders table now includes customer addresses for both pending and completed shipping orders. Store Design Adjusted the category menu bar to display horizontally with a scroll bar Fixed the appearance of payment links icons Updated the order confirmation to match the store design colors Products Shopify Bulk Upload now supports files with varying column structures. * **Saved Card Subscriptions:** Subscriptions created via the APIs are now visible on the dashboard. # SEO For Online Store Source: https://docs.hitpayapp.com/changelog/2023-10-09-seo-for-online-store Exciting news for your HitPay Online store – it's now optimized for enhanced search engine optimization (SEO)! Numerous changes ha... [← Back to Changelog](/changelog) # SEO For Online Store **October 9, 2023** Online Store ![SEO For Online Store](https://framerusercontent.com/images/kilBA7DK4cab3z7yZ3gGdIF6IUo.png?width=1440\&height=998) Exciting news for your HitPay Online store – it's now optimized for enhanced search engine optimization (SEO)! Numerous changes have been made to boost SEO Online Store HitPay Online stores are now optimised to enhance search engine optimisation (SEO). We’ve made numerous changes to boost SEO and empower merchants to take control. Merchants can now add Meta Titles and Descriptions, and effortlessly upload their Online Shop Sitemap to Google Search Console. Payment Links * **New Default Payment Link Details Page:** Similar to what was developed on Cycle 32, this is a newly designed page dedicated to default payment links. It encompasses revenue insights and a complete payment history. Furthermore, it simplifies sharing default payment links directly via WhatsApp, Facebook, Twitter, or Gmail, and includes the capability to generate QR codes. User Guide * **Deactivate Default Payment Link:** Default payment link can now be suspended, preventing all further access. This feature is particularly valuable when merchants need to temporarily halt payments through their link, providing enhanced control over transaction activity. User Guide * **Edit Payment Links:** You now have the capability to edit payment links, enabling them to fine-tune aspects like pricing or implement other updates. User Guide Fixes and Improvements * **Recurring Billing Share Private Plans:** Private plans are now shareable, ensuring that customers will only have access to the shared private plan. * **Export Subscription:** Charged times and times to be charged are now included in the export of subscription. * **Plan Amount:** The issue where plan amount could not be edited on the plans page has been resolved Newly redesigned login user interface. You can now log in with Gmail, eliminating the need for a password (as long as the Gmail matches the email on Hitpay). User and Location management is now available on the mobile app # New Menu Layout Source: https://docs.hitpayapp.com/changelog/2023-11-07-new-menu-layout The updated menu layout allows you to easily find what you are looking for, and ensures faster loading times when switching betwee... [← Back to Changelog](/changelog) # New Menu Layout **November 7, 2023** Online Store ![New Menu Layout](https://framerusercontent.com/images/3Sywv0h4f4DxpjfVMxIgAkQ.png?width=1440\&height=877) The updated menu layout allows you to easily find what you are looking for, and ensures faster loading times when switching between menu pages Fixes and Improvements * **New recurring billing UI:** We’ve revamped the recurring billing interface! It now includes a dedicated page for plans and subscriptions. On the Plans page, you can easily preview all the public plans and rearrange them as needed * **Online Shop:** You can now click on a storefront product image, and it will redirect you to the products page Digital products – they can now support both shipping and pickup options # Account Setup on Mobile Source: https://docs.hitpayapp.com/changelog/2023-12-13-account-setup-on-mobile Mobile onboarding! Users can now sign up for a HitPay account & complete verification directly from the app [← Back to Changelog](/changelog) # Account Setup on Mobile **December 13, 2023** In-Person Payments ![Account Setup on Mobile](https://framerusercontent.com/images/i34ErgyXyrbgo94s1dJcffemRNU.png?width=2400\&height=992) Mobile onboarding! Users can now sign up for a HitPay account & complete verification directly from the app Mobile App Users can now sign up for a HitPay account & complete verification directly from the app (docs) Existing users can complete their KYC and Verification on the Mobile app Recurring Billing * **New Subscription Status:** We’ve added two new statuses for subscriptions: Retrying and Inactive (More details) Improvements * **New Customer Invoice and Email Templates:** We’ve revamped the user interface for both customer invoices and email templates. The updated customer invoice now includes the ability to display the date of a completed partial payment. * **Online Store:** Expanded coupon code size—now accommodating codes with more than 10 characters. Fixed the problem with cover images not appearing on storefront pages. # Store Design Tools Source: https://docs.hitpayapp.com/changelog/2024-01-18-store-design-tools New improvements to store design and Invoice reminder settings [← Back to Changelog](/changelog) # Store Design Tools **January 18, 2024** Online Store ![Store Design Tools](https://framerusercontent.com/images/ZtCB9B0dfUow7U5dUNxB3P72DBg.png?width=2048\&height=1110) New improvements to store design and Invoice reminder settings Online Store * **Customizable Top Banner for Promotions:** Merchants can now adjust the background color, text color, and choose whether to make it closable for effective highlighting of special offers and promotions. * **Enhanced Navigation Menu:** Offers three new alignments (Left, Center, Right) and supports customization of background color and text color. * **Boxed Banner & Adaptive Sizing:** Introduces a new boxed banner with adaptive sizing that adjusts to the image height, enabling stores to adapt to different screen sizes. * **Improved Product Card Styles:** Supports customization of background color and text color to match the store's overall theme. * **Introducing Sections:** Allows merchants to create multiple product sections on their storefront’s main page with various customization options for layout, products per column, image type, display of category filters, background color, text color, and more. * **Customizable Footer:** Supports customization of each section’s title, background color, and text color. * **Interactive Preview Editing:** Allows merchants to mouse over any part of the preview and click on the edit icon to open the settings for that section. Invoice * **Reminders:** New reminder settings allow merchants to control the frequency of email reminders sent to their customers. They can specify the number of days before or after the invoice’s creation date or due date for sending reminders. (Documentation) * **Export Invoices:** Merchants can now export their invoices to a CSV file. Improvements * **Subscription Settings:** With the new subscription settings, merchants can choose between canceling a subscription or setting it to inactive (allowing customers to reactivate it later) after all attempts to charge the subscription have failed. * **Product Handles & Images:** Merchants can now edit product handles to improve searchability and enhance SEO optimization, as well as rearrange product images # Store Themes and Open Amount Links Source: https://docs.hitpayapp.com/changelog/2024-02-28-store-themes-and-open-amount-links You can now create payment requests with open amounts, and we are launching our first theme for the online store. [← Back to Changelog](/changelog) # Store Themes and Open Amount Links **February 28, 2024** Payment Links ![Store Themes and Open Amount Links](https://framerusercontent.com/images/bxxwsDgedqE2WbzHKWoKvXhEVI.png?width=2048\&height=1110) You can now create payment requests with open amounts, and we are launching our first theme for the online store. Online Store Themes * **Juizzy Theme:** Introducing "Juizzy," a vibrant theme with new design aesthetics, customizable banners, and enhanced footers. Key features include centered text, hover 'add to cart' buttons, optional borderless product cards, and sections for text and images. Explore Juizzy Payment Request APIs You can now create payment links with an open amount by passing a 0 amount. Pairing this with repeated payment links, you can use this for donations or printing open-amount QR codes for different needs. Docs Improvements * **Enhanced Invoice Creation:** Simplified UI with automatic invoice number generation, product duplication, and additional email recipients. * **Print Orders:** Capture all details of your online shop orders with our new print order feature. * **Store Settings:** Customize thank you messages and seller notes with a rich text editor. # Customer Display and New Payment Methods Source: https://docs.hitpayapp.com/changelog/2024-03-21-customer-display-for-pos With Customer Display mode you can convert your HitPay app into a customer-facing screen. Also introducing new payment methods QRP... [← Back to Changelog](/changelog) # Customer Display and New Payment Methods **March 21, 2024** In-Person Payments ![Customer Display and New Payment Methods](https://framerusercontent.com/images/JmJakcXPgiII8Y5JC7gOZALrg.png?width=2048\&height=1110) With Customer Display mode you can convert your HitPay app into a customer-facing screen. Also introducing new payment methods QRPH and DuitNow Point of Sale * **Customer Display (Beta):** Whitelisted users can now scan & convert their HitPay app into a customer-facing screen. (Docs) Improved reconnection for Tap to Pay on both Android & iOS. Payment Methods Introducing new Payment Methods for Malaysia: DuitNow MayBank QR Touch n Go Boost Shopee Pay New Payment Methods for Philippines: Invoice * **Repeating Invoices:** A new feature that automates the creation and sending of recurring invoices, saving you time and reducing the risk of errors. Decide how often to send them, when to start, and how many you need. Plus, choose to send them out automatically or keep them as drafts to review later. Designed for flexibility, our system ensures your invoices, whether sent weekly, monthly, or on any custom schedule, are dispatched on time. Improvements * **Pause & Resume Subscriptions:** Now, you can quickly pause your active subscriptions whenever you need to. Choose when to start the pause, whether it's open-ended or for a specific duration. You can also optionally adjust the next charge date. * **Color customization:** You can now change the colors of your recurring billing link and checkout page to reflect your brand colors. * **Store "Product on sale":** Now you can showcase savings by displaying a higher original price before a discount. This will be displayed on your online shop with a strikethrough to highlight the discount. # QR Code APIs, Invoice and POS Improvements Source: https://docs.hitpayapp.com/changelog/2024-05-31-qr-code-apis-invoice-and-pos-improvements This release has introduced a new payment request API that supports embedded QR Codes without needing a hosted checkout page. We a... [← Back to Changelog](/changelog) # QR Code APIs, Invoice and POS Improvements **May 31, 2024** API ![QR Code APIs, Invoice and POS Improvements](https://framerusercontent.com/images/6MWpRGgDj76tn30nOlZIsrSuA.png?width=2048\&height=1110) This release has introduced a new payment request API that supports embedded QR Codes without needing a hosted checkout page. We also have major Improvements in Web POS, POS App, and Invoices * **New POS Layouts! (Grid View, List View, Category View):** Introducing new POS layout views that allow you to search and switch between categories more easily. * **Cash Change:** Users can now enter a nominal amount and automatically see how much change to give to customers. * **Enhanced Product Customization:** Merchants can now add images and emojis to products and categories to provide an intuitive and appealing interface. * **Web POS Upgrades:** Web POS has been upgraded to be on par with the Mobile App’s POS capabilities: Assign orders by location and filter products by location. Add fixed and percentage discounts, including the ability to assign percentage discounts to specific products. Add surcharges and tax to orders. Add customers and notes to orders Payment Request APIs * **Embedded QR Codes:** Seamlessly integrate QR Code Payments directly into your platform with our new embedded QR codes, eliminating the need for users to be redirected away from your site. \[Documentation] Invoice * **Add Cash Payment:** Record cash payments for invoices more efficiently. These records will now be visible on each invoice page, the transactions page, and the public invoice page for customers, making it easier to track all your offline payments. \[Documentation] Other Improvements * **Share Payment Link:** You can now input a customer’s phone number (if it is not already stored) and share the payment link directly via WhatsApp, without needing to save their number first. * **Store Design Enhancements:** Users can now select individual products to display in each section. Stores without products will be pre-populated with dummy products for better visualization. Additionally, storefront pages now support different font colors, image resizing, and GIFs. * **Enhanced Plan Description:** The plan description has been updated to include a rich text editor, giving you more flexibility in presenting your subscription details to customers. # Multiple Pickup Locations and Updates to Inventory Source: https://docs.hitpayapp.com/changelog/2024-06-30-multiple-pickup-locations-and-updates-to-inventory This release includes major changes made to your inventory and online store pickups. [← Back to Changelog](/changelog) # Multiple Pickup Locations and Updates to Inventory **June 30, 2024** Online Store ![Multiple Pickup Locations and Updates to Inventory](https://framerusercontent.com/images/fujSDQeYELEyALcK0Hvd91kehg.png?width=2048\&height=1110) This release includes major changes made to your inventory and online store pickups. Online Store * **Multiple Pickup Locations:** You can now offer multiple pickup spots for your customers, making your online shop pickup options more flexible and convenient. Just go to your Online Store pickup locations settings to add and manage all your pickup locations. Your customers will love being able to choose their preferred pickup location and time at checkout! Inventory Management * **Inventory by Location:** Users can now set different inventory quantities for products across multiple locations from the web dashboard. This feature helps multi-location businesses better manage and track their inventory. * **Images to Emojis to Product / Category:** Users can now add emojis and images to products and categories from the web dashboard. These customizations will appear in the mobile POS, improving navigability and user experience. Other Improvements * **Invoice Hard Copy QR Code:** All printed invoices now include a QR code at the footer, making it easy for customers to scan and access the checkout page. If the invoice has been paid, it will also display the payment date. * **POS:** Users can now purchase multiple types of terminals in a single order. * **POS:** Users can now edit the terminal “Label” directly from the web dashboard. # Shopee PayLater Payment Method Source: https://docs.hitpayapp.com/changelog/2024-07-10-new-shopeepay-bnpl-payment-method-sg Singapore merchants can now accept both ShopeePay and SPayLater online and offline [← Back to Changelog](/changelog) # Shopee PayLater Payment Method **July 10, 2024** Payment Methods ![Shopee PayLater Payment Method](https://framerusercontent.com/images/bW3H8PDX89B5f8d6Ffdlifl6ps.png?width=2048\&height=1110) Singapore merchants can now accept both ShopeePay and SPayLater online and offline Payment Methods Introducing new payment method SPayLater for Singapore. Merchants now enjoy lower rates for offline payments and better margins # Multi-Country and Region Shipping Source: https://docs.hitpayapp.com/changelog/2024-07-30-region-based-shipping-rules This release includes Shipping by Countries and Regions and also password protection for your online store [← Back to Changelog](/changelog) # Multi-Country and Region Shipping **July 30, 2024** Online Store ![Multi-Country and Region Shipping](https://framerusercontent.com/images/lNCa6jQzFnjltMHcPXE6SwA3T4k.png?width=2048\&height=1110) This release includes Shipping by Countries and Regions and also password protection for your online store Online Store * **Shipping by Countries and Regions:** You can now offer different shipping methods for multiple countries and specific regions within those countries. We’ve also enhanced the checkout page so that customers will enter their shipping address first, ensuring that only applicable shipping options are displayed. Docs * **Password-Protected Storefront:** You are now able to create a password for your online shop, allowing only visitors with the password to access your store. This is perfect for pre-launch phases, private sales, or B2B sales. Docs Other Improvements * **Invoice Enhancements and Settings:** You can now include your business information, such as name, email address, phone number, address, and tax ID, on invoices, and customise the invoice title to “Tax Invoice”. Additionally, you can save invoice descriptions and footers as templates, which will be automatically applied to all new invoices. Docs * **Updated Short Links:** We have updated the short links for invoices and payment links. The links will now use the new domain hitpay.link instead of hitpay.shop. Old links will still work and automatically redirect to the new ones. * **Store Logo:** You can now enlarge your storefront logo up to 250px, making your brand more prominent and visually appealing. * **Product Emojis and Initials:** The storefront now displays product emojis, adding a fun and engaging visual element to your listings. Additionally, for products without images, the initials of product names will be displayed, enhancing the visual appeal. * **Orders Page:** We have revamped the orders page to display custom fields directly, without the need to hover over the information icon. # Weight-Based Shipping & Product Delivery Methods Source: https://docs.hitpayapp.com/changelog/2024-08-15-weight-based-shipping-product-delivery-methods This release includes weight-based shipping and product delivery method for your online store. [← Back to Changelog](/changelog) # Weight-Based Shipping & Product Delivery Methods **August 15, 2024** Online Store ![Weight-Based Shipping & Product Delivery Methods](https://framerusercontent.com/images/rdZPfD4iw14pc8GZth2Wl871LZQ.png?width=2048\&height=1110) This release includes weight-based shipping and product delivery method for your online store. Online Store * **Weight-Based Shipping:** Introducing a new method to calculate shipping costs based on the exact weight of a customer’s order. First, set the weight for each product, then define shipping rates for different weight ranges. During checkout, the system automatically calculates the total cart weight to apply precise shipping charges, providing customers with transparent pricing. Docs * **Product Delivery Methods:** Now, you can specify whether a product needs to be shipped or is available for pickup, enabling you to offer both service-based and physical products in your store. Docs Other Improvements * **Invoicing Email Template:** You can now customise the email template sent to customers when an invoice is created. * **Invoice Bulk Upload Enhancements:** You can now bulk upload invoice footers and descriptions. * **Online Shop Fee per unit:** The ‘Fee per unit’ shipping calculation now displays ‘Per Unit’ beside the price on the checkout page. # HitPay Payout Rails for Singapore, Malaysia and Philippines Source: https://docs.hitpayapp.com/changelog/2024-09-05-hitpay-rails-for-singapore-malaysia-and-philippines This release includes HitPay's Payout Rails for domestic and cross-border funds transfers and payouts. This includes Singapore, Ma... [← Back to Changelog](/changelog) # HitPay Payout Rails for Singapore, Malaysia and Philippines **September 5, 2024** Cross-Border Payments ![HitPay Payout Rails for Singapore, Malaysia and Philippines](https://framerusercontent.com/images/54mD8HXTf62ObtOnx7W3Xceh4E.png?width=2048\&height=1110) This release includes HitPay's Payout Rails for domestic and cross-border funds transfers and payouts. This includes Singapore, Malaysia and Philippines. HitPay Rails What's launched? Domestic Disbursements Cross-borders Disbursements ### Key advantages Favorable foreign exchange rates for your cross-border transactions Faster settlement times Leave your headache of complying to regulatory requirements regarding funds flow with us Instant payment processing with a range of cross-border payment methods we have been launching # SPayLater (Malaysia), PromptPay & TrueMoney & LinePay (Singapore) Source: https://docs.hitpayapp.com/changelog/2024-09-16-shopee-spaylater-malaysia-promptpay-truemoney-linepay-singapore This release includes the launch of new payments methods - SPayLater in Malaysia and PromptPay, TrueMoney & LinePay in Singapo... [← Back to Changelog](/changelog) # SPayLater (Malaysia), PromptPay & TrueMoney & LinePay (Singapore) **September 16, 2024** Payment Methods ![SPayLater (Malaysia), PromptPay & TrueMoney & LinePay (Singapore)](https://framerusercontent.com/images/4ep5CuXP1sQcKV08fMlWD4nrY.png?width=2048\&height=1110) This release includes the launch of new payments methods - SPayLater in Malaysia and PromptPay, TrueMoney & LinePay in Singapore. Shopee SPayLater (Malaysia) You can now offer your Malaysia customers SPayLater, a flexible Buy Now Pay Later (BNPL) payment method. This direct integration allows you to capitalize on the growing BNPL market and popularity in Malaysia. PromptPay, TrueMoney & LinePay (Singapore) Offer more payment options to your Thailand customers with PromptPay, TrueMoney & LinePay with a smooth checkout experience. Expand your reach and meet your customer's preferences. # Barcode Scanning, Printer Integrations & Reporting Improvements Source: https://docs.hitpayapp.com/changelog/2024-09-16-transactions-access-reporting-bulk-upload-improvements This release includes updates to reporting on the web, updates to product sales report export, enhanced bulk upload template to su... [← Back to Changelog](/changelog) # Barcode Scanning, Printer Integrations & Reporting Improvements **September 16, 2024** In-Person Payments ![Barcode Scanning, Printer Integrations & Reporting Improvements](https://framerusercontent.com/images/UFk9piXoZxSCOj7iy2QgkfAwQc.png?width=2048\&height=1110) This release includes updates to reporting on the web, updates to product sales report export, enhanced bulk upload template to support inventory by location. Barcode Scanning Capabilities You can add barcodes to products via Bulk Upload Template. Alternatively, you can manually add barcodes to product from Web or Mobile > Products We now support scanning barcodes via the HitPay app's in-app camera scanner (Available for both iOS & Android) We also support scanning barcodes via hardware integration with SocketMobile readers (iOS only) ### Learn more Printers Update for HitPay POS We’ve rolled out new printer support and features for both iOS and Android platforms: ### For iOS HitPay Advanced Receipt Printer (Wi-Fi, Bluetooth) Star Micronics TSP 650II (Bluetooth) ### For Android HitPay Advanced Receipt Printer (Wi-Fi, Bluetooth) ### Learn more The HitPay now allows you to connect multiple printers simultaneously. You can also assign specific printers to handle different print tasks, such as Customer receipts & Order tickets Restrict cashier access to transactions Users can now hide or display transaction amounts locally on the device to enhance privacy and prevent unwanted data sharing with customers. Admins/owners can set cashier permissions, allowing them to limit which transactions cashiers can view based on defined parameters. Reporting Users will be able to view reporting of sales & product sales from the Web Dashboard directly Users will now be able to view location data in Detailed Sales by Products & Sales Summary by Products CSV exports Inventory by Location The bulk upload feature now supports inventory management by location, allowing users to upload and manage product inventories across multiple locations with ease. Mall Reporting Reduce costs and simplify reporting with our free GTO Mall Integration, now available for select CapitaLand and Far East Malls. Automatically send daily sales data to mall management, so you can focus on growth. ### Learn more View step by step video # New Storefront Sections Source: https://docs.hitpayapp.com/changelog/2024-10-17-new-storefront-sections This release includes new sections for the online store, including categories, text sections, and gallery layouts, to help you bet... [← Back to Changelog](/changelog) # New Storefront Sections **October 17, 2024** Online Store ![New Storefront Sections](https://framerusercontent.com/images/7n9Hq6wfjPKhcTrRiPevdiAYw.png?width=2048\&height=1110) This release includes new sections for the online store, including categories, text sections, and gallery layouts, to help you better showcase your products and brand. Online Store ### Storefront new Sections (Docs) * **Categories:** Easily highlight your product categories with customisable cards. Adjust the card size, image shape, colors, and content to match your brand’s style. Each category has its own dedicated page with a banner image, plus there’s a new “View All Categories” page for customers to browse all categories in one place. This feature makes it easy to organise your products and enhance the shopping experience for your customers. * **Text:** Need to share your story, special promotions, or key messages? Now you can add a text section with options for split or center alignment, and up to 4 columns. Customise the title, description, and even include a call-to-action button. With full control over text alignment and color options, it’s easy to make your message stand out. * **Gallery:** Showcase your work like never before with the new gallery section. Whether you’re displaying previous work, event highlights, customer reviews, or behind-the-scenes images, each picture can be linked to an external site and includes a customisable caption. Choose from a variety of layouts, including carousel, masonry, or grid, to create the perfect visual experience. This feature is perfect for engaging your audience and driving traffic to specific products or services! Check out the Juizzy store to see it in action! Other Improvements * **Payment Links - Location Support:** You can now assign specific locations to payment links, allowing for easier differentiation and tracking of payments by location. Docs * **Online Store Address Autocomplete:** The online shop checkout now supports address autocomplete for shipping orders. Customers can quickly fill in their shipping details by simply starting to type part of their address. Powered by Google Autocomplete, this feature suggests relevant addresses, making the checkout process faster, smoother, and reducing the chance of errors. * **Edit Online Shop Order Table:** You can now customise the fields displayed in your online shop order table! Whether it’s customer addresses, payment status, or other key details, you have the flexibility to select which fields are shown and arrange them in the order that works best for you. # POS Order Form and Invoice Late Fee Source: https://docs.hitpayapp.com/changelog/2024-11-08-order-form-shipping-pos This release introduces a customizable order form for the POS app, the ability to create and set orders for shipping and pickup, a... [← Back to Changelog](/changelog) # POS Order Form and Invoice Late Fee **November 8, 2024** Invoicing ![POS Order Form and Invoice Late Fee](https://framerusercontent.com/images/UsOAIhshyoISccxJIaZBXxqng.png?width=2048\&height=1110) This release introduces a customizable order form for the POS app, the ability to create and set orders for shipping and pickup, a consolidated order view, and barcode scanning for the Web POS. This release also includes a new embed code section for the online store, an invoice late fee feature, and a new Cal.com integration. POS App * **Customizable Order Form in POS App (Docs):** You can now display a customizable order form during checkout to collect additional order or customer details. * **Create Orders with Shipping & Pickup Options on POS App (Docs):** The POS app now allows you to create orders and set them for shipping or pickup. This is ideal for businesses that accept in-person orders for later delivery. * **View Orders on POS App (Docs):** Access your orders through More > Orders for a consolidated view of both Online Store and POS orders. Orders awaiting shipping or pickup can be marked as completed directly in the HitPay app. SMS Receipts for PH & ID with Sender ID SMS receipts will now display HitPay as the sender and include a unique receipt link. Invoice * **Late Fee (Docs):** You can now automate late fees on unpaid invoices by setting a fixed amount or percentage of the total, applied after a custom grace period. Once an invoice is overdue, the fee is automatically added as a line item, saving you time and eliminating the need to manually track and add late fees. With clear payment terms and enforced deadlines, you’ll minimise missed payments and stay focused on growing your business. Online Store ### Storefront new Section (Docs) * **Embed Code:** Easily integrate custom content into your online store with the new Embed Code section. Whether it’s a newsletter sign-up, map, social media feed, or interactive survey, you can now effortlessly add external content to enhance your store’s functionality and customer engagement. With full control over alignment, placement, and colors, it’s never been easier to embed dynamic elements directly onto your storefront. Check out the Juizzy store to see it in action! Cal.com * **Cal.com Integration(Docs):** Easily manage and accept bookings for services like workshops, consultations, fitness classes, and therapy with our new integration with Cal.com. The platform supports both in-person and virtual appointments, syncs with Google Calendar, and offers a dedicated booking page for customers to schedule directly. Payments are processed through HitPay, creating a smooth booking and payment experience. Plus, you can embed the booking page directly into your HitPay online shop. Currently, the HitPay app is only available on cal.hitpayapp.com. Web POS * **Barcode Scanning in Web POS (Docs):** You can now toggle the search field between Name and Barcode. Connect a barcode scanner to your computer to scan items seamlessly on the Web POS. Quick Sale Currency Toggle on Web POS Easily switch between currencies during Quick Sale transactions on the Web POS. * **Discount Reports on Web:** Review comprehensive discount and voucher reports, showing the total amount and quantity applied to both POS and Online Store transactions Other Improvements * **Recurring Billing - Customise Payment methods \[SG Only]:** You can now customise the payment methods displayed on your recurring billing checkout page. You can choose whether to offer GIRO, Card, or both, giving customers the flexibility to pay the way they prefer. # GrabPay Embedded QR Source: https://docs.hitpayapp.com/changelog/2024-11-19-grabpay-embeded-qr This release introduces GrabPay and GrabPay PayLater as embedded QR payment options for merchants in Singapore. [← Back to Changelog](/changelog) # GrabPay Embedded QR **November 19, 2024** Payment Methods ![GrabPay Embedded QR](https://framerusercontent.com/images/SkdPpZqgxvyMgRMLgIUa0vioqM.png?width=2048\&height=1110) This release introduces GrabPay and GrabPay PayLater as embedded QR payment options for merchants in Singapore. * **Payment Method:** GrabPay Embedded QR * **GrabPay and PayLater:** Now available as payment methods in HitPay POS, offering customers flexible payment options. * **Daily Settlements:** Earnings are credited to your HitPay wallet daily (T+1) * **Embedded QR Code Integration:** Easily integrate GrabPay and PayLater into your web apps or in-person payments using our API. ### Docs * [GrabPay](https://docs.hitpayapp.com/payments/common/grabpay) * [Grab PayLater](https://docs.hitpayapp.com/payments/sg/grabpay_paylater) * [Embedded QR](https://docs.hitpayapp.com/apis/guide/embedded-qr-code-payments) # Product Customisation Source: https://docs.hitpayapp.com/changelog/2024-12-12-product-customisation This release introduces product add-ons, order quantity limits for the online store, and the ability to void invoices. [← Back to Changelog](/changelog) # Product Customisation **December 12, 2024** Online Store ![Product Customisation](https://framerusercontent.com/images/8uZxOqYcJEvx4NiGoFOeXR22siU.png?width=1024\&height=555) This release introduces product add-ons, order quantity limits for the online store, and the ability to void invoices. Online Store * **Product Customisation:** Give your customers the power to personalise their orders with Product Add-Ons! Whether it’s adding extra toppings, selecting upgrades, or providing special instructions, you can now gather all the details directly on the product page before items are added to the cart. With flexible input types like checkboxes, dropdowns, and radio buttons, you can offer a variety of customisation options to fit your customers’ needs. Additionally, you can: Assign individual prices to each add-on, allowing you to charge extra for options like premium materials, gift wrapping, or special services. Specify whether an add-on is mandatory, ensuring critical selections are made before checkout. Set minimum or maximum selection limits to guide your customers while offering flexibility. Check out the Juizzy store to see it in action! Other Improvements * **Void Invoices:** Now you can stop payments and reminders for invalid invoices while preserving a clear record for compliance. Eligible unpaid or refunded invoices can be voided, automatically updating the balance to zero and marked as ‘Void.’ Additionally, you can provide a reason to maintain a transparent audit trail. * **Online Store Order Quantity Limits:** Set minimum and maximum order quantities for your products to better manage inventory and ensure customers adhere to purchasing rules. This feature is particularly useful for wholesale, bulk purchases, or high-demand items. When customers add products to their cart, the system automatically enforces these rules. If they exceed the maximum limit or fall below the minimum, clear alerts will guide them to adjust their order. # Open Amount Products Source: https://docs.hitpayapp.com/changelog/2024-12-17-open-amount-products This release introduces open amount products on the POS app and Web POS. [← Back to Changelog](/changelog) # Open Amount Products **December 17, 2024** Online Store ![Open Amount Products](https://framerusercontent.com/images/03RGTXNoZA4cUjoojyNyME6qOI.png?width=1024\&height=555) This release introduces open amount products on the POS app and Web POS. Besides adding products with fixed prices, you can also add “open amount” products which allows you to set custom prices at the point of checkout. This feature is ideal for businesses that offer custom goods or services, accept donations, or require flexible pricing. In contrast to the Quick Sale mode, Open Amount Products provide the flexibility of setting custom amounts while still benefiting from inventory management and product reporting. ​Ideal Use Cases The Open Amount Products feature is especially useful for, but not limited to : * **Donation and charity sectors:** Collect flexible donation amounts effortlessly and create each donation purpose as a open amount products. * **Custom goods and services:** Tailor pricing for one-of-a-kind items or services as open amount products. * **Custom cakes:** Charge based on size, design, or specifications. * **Repair services:** Set prices depending on repair complexity. * **Personalized gift shops:** Provide dynamic pricing for unique, custom gifts. ​How to use “Open Amount” products * **Navigate to Products:** Go to the Products & Categories section within your POS system. ### Create a Product Add a new product. Under pricing, enable the “Open Amount ” toggle. * **Save and Exit:** Complete the product setup. Set the Price During Checkout: Select the Open Amount Product at the point of sale. Enter the desired price for the product. * **Complete the Sale:** Process the payment as usual. # HitPay All-in-One Terminal (Singapore) Source: https://docs.hitpayapp.com/changelog/2025-01-14-hitpay-all-in-one-terminal This release introduces new HitPay All-in-One Terminal (S1F2, powered by Adyen), with in-built printer capabilities and cellular c... [← Back to Changelog](/changelog) # HitPay All-in-One Terminal (Singapore) **January 14, 2025** In-Person Payments ![HitPay All-in-One Terminal (Singapore)](https://framerusercontent.com/images/QNmUW8dKAot5IUVW6NrXKWu8ZA.png?width=2880\&height=1620) This release introduces new HitPay All-in-One Terminal (S1F2, powered by Adyen), with in-built printer capabilities and cellular connectivity, for Singapore merchants. Supported modes Standalone Mode - Use the terminal without pairing with another device (Recommended) Desktop Mode - Pair the terminal with your computer or laptop on a web browser Key features * **Versatile Payment Processing:** Fast payment acceptance through tap, swipe, or insert methods for cards. Supports QR code payments. * **In-Built Printer:** Remove dependency on external printing devices * **Connectivity Options:** Terminal supports standalone or desktop integration with dual network capabilities (WiFi and cellular). Includes free SIM card for backup internet connectivity, with zero monthly payments, while ensuring consistent payment processing reliability. Ideal Use Cases * **Mobile Businesses and Pop-up Shops:** Ideal for businesses that operate in various locations or temporary setups. The all-in-one design with built-in printer and cellular backup ensures reliable transactions without dependency on fixed Wi-Fi connectivity. * **High-volume Retail and Hospitality:** Suitable for busy environments where fast transaction processing and uninterrupted connectivity are crucial. The terminal's ability to quickly process payments via multiple methods (tap, swipe, insert) and its backup cellular option minimize downtime during peak hours. * **Outdoor Events and Markets:** Perfect for vendors at farmers markets, festivals, or outdoor events where WiFi may be unreliable. The standalone capability and cellular backup ensure consistent operation in diverse settings. * **Small to Medium Businesses with Limited Space:** The integrated design eliminates the need for multiple devices, making it ideal for businesses with limited counter space or those seeking a clutter-free point-of-sale area. ### Docs * [HitPay All-in-One](https://docs.hitpayapp.com/pos/readers/all-in-one-s1f2) * [Purchase the terminal](https://hitpay.shop/hitpayterminal/product/hitpay-all-in-one-supports-cellular-and-wifi) # PromptPay Online Source: https://docs.hitpayapp.com/changelog/2025-01-14-promptpay-online This release introduces PromptPay as an online checkout QR payment option for merchants in Thailand. [← Back to Changelog](/changelog) # PromptPay Online **January 14, 2025** Cross-Border Payments This release introduces PromptPay as an online checkout QR payment option for merchants in Thailand. * **Payment Methods:** PromptPay Online (Thailand) * **PromptPay Thailand:** Now available as a payment method, offering customers a convenient and widely-used digital payment option in Thailand. This expands your reach to over 60 million users and 21 participating banks in Thailand. * **Real-Time Transactions:** Payments are processed instantaneously and credited to your Card Balance. * **Online Payments API Integration:** Easily integrate PromptPay into your web apps using our API. ### Docs * [PromptPay](https://docs.hitpayapp.com/payment-methods/promptpay_thailand) # HitPay POS Max Source: https://docs.hitpayapp.com/changelog/2025-02-04-hitpay-pos-max This release introduces new HitPay POS Max (Sunmi V3 Mix), with in-built barcode scanner, printer and cellular connectivity, for S... [← Back to Changelog](/changelog) # HitPay POS Max **February 4, 2025** In-Person Payments ![HitPay POS Max](https://framerusercontent.com/images/p4PF1kZtU6jvbE77TNRpGm91QpU.png?width=1024\&height=555) This release introduces new HitPay POS Max (Sunmi V3 Mix), with in-built barcode scanner, printer and cellular connectivity, for Singapore merchants. The HitPay POS Max is more than just a payment terminal—it's a comprehensive, all-in-one point-of-sale system designed to streamline and elevate your business operations. With robust hardware and versatile software capabilities, this POS solution integrates seamlessly into your workflow, making it the perfect choice for businesses of all sizes. Key features Landscape Mode for better usability. Infrared Barcode Scanner for streamlined inventory management. Wi-Fi and Cellular Support for uninterrupted operations. Built-in Thermal Printer with support for larger receipt rolls. Ideal Use Cases The ultimate POS System tailored for : 1. Retail Designed for merchants selling ready-made merchandise such as clothing, electronics, or accessories. Supports manual cart additions and barcode scanning for businesses with high SKU counts. Perfect for efficient checkout in stores managing ready-to-sell inventory. 2. Events Ideal for vendors selling tickets, quick-serve food, beverages, or merchandise at pop-ups, concerts, and events. Streamlines quick sales for ready-to-serve items like sandwiches, desserts, or event merchandise. Optimized for high mobility and speed, making it perfect for busy event environments. 3. F\&B (Food & Beverage) Tailored for cafes, quick-service restaurants, and takeaway counters. Perfect for handling counter ordering and immediate payments in fast-paced environments. Suitable for selling ready-to-serve food and beverages, like coffee, desserts, and pre-made meals. ### Docs * [HitPay All-in-One](https://docs.hitpayapp.com/pos/readers/pos-max-v3mix) * [Purchase the terminal](https://hitpay.shop/hitpayterminal/product/hitpay-pos-max) # PayLater by Grab Online (Malaysia) Source: https://docs.hitpayapp.com/changelog/2025-02-05-grabpay-paylater-online-malaysia This release introduces PayLater by Grab as a Buy Now, Pay Later (BNPL) payment option for merchants in Malaysia. [← Back to Changelog](/changelog) # PayLater by Grab Online (Malaysia) **February 5, 2025** Payment Methods ![PayLater by Grab Online (Malaysia)](https://framerusercontent.com/images/irA74Wsvj2c0VHj6oN9Ye8kdks.png?width=2880\&height=1620) This release introduces PayLater by Grab as a Buy Now, Pay Later (BNPL) payment option for merchants in Malaysia. * **Payment Method:** PayLater by Grab Online * **GrabPay and PayLater:** You can now offer your Malaysia customers PayLater by Grab, a flexible Buy Now Pay Later (BNPL) payment method. This direct integration allows you to capitalize on the growing BNPL market and popularity in Malaysia. * **Daily Settlements:** Earnings are credited to your HitPay wallet daily (T+1) ### Terms Available for 1, 4, 8 or 12 months installment plans No min/max amount, but customers have a max credit limit of up to RM6,000 ### Docs * [GrabPay](https://docs.hitpayapp.com/payment-methods/grabpay) * [PayLater by Grab](https://docs.hitpayapp.com/payment-methods/grabpay_paylater) * [API](https://docs.hitpayapp.com/apis/guide/online-payments) # HitPay x Cal.com Integration Source: https://docs.hitpayapp.com/changelog/2025-02-19-hitpay-x-cal-com-integration This release includes Cal.com integration for managing bookings and payments, online store design enhancements, product customizat... [← Back to Changelog](/changelog) # HitPay x Cal.com Integration **February 19, 2025** Integrations ![HitPay x Cal.com Integration](https://framerusercontent.com/images/Vg0WLZ5DVu0xHgrCYKx3N2YM9k.png?width=1024\&height=555) This release includes Cal.com integration for managing bookings and payments, online store design enhancements, product customization improvements, and decimal quantity support for invoices. HitPay Booking & Appointment * **Cal.com Integration (Docs):** Easily manage bookings for services like workshops, consultations, fitness classes, therapy, and more with our new integration with Cal.com. The platform supports both in-person and virtual appointments, syncs with Google Calendar, and offers a dedicated booking page for customers to schedule directly. Payments are processed securely through HitPay, ensuring a smooth booking and payment experience. Plus, you can embed the booking page directly into your HitPay online shop for easy integration. Other Improvements Store Design Enhancements – We’ve refined store navigation for a more intuitive experience! Enjoy new header logo and navigation alignments, plus enhanced page banner customization with multiple design options, buttons, text alignments, and flexible color settings—giving you even more ways to make your store truly yours. Product Customization Improvements – Product add-ons are now clearly listed as separate items at checkout, in email confirmations, and in order details—ensuring better clarity for you and your customers. Invoice Quantity Decimal Support – You can now add decimal quantities for products on your invoices! Perfect for businesses selling by weight, length, or any fractional units. # UPI Cross Border (Singapore) Source: https://docs.hitpayapp.com/changelog/2025-02-19-upi-cross-border-singapore This release introduces UPI as an online and in-person checkout QR payment option for Singapore merchants. [← Back to Changelog](/changelog) # UPI Cross Border (Singapore) **February 19, 2025** Cross-Border Payments ![UPI Cross Border (Singapore)](https://framerusercontent.com/images/xszz3yr9uKUC7qKvaoRrCI1NdwA.png?width=3072\&height=1665) This release introduces UPI as an online and in-person checkout QR payment option for Singapore merchants. * **Payment Method:** UPI Cross Border * **UPI Cross Border:** Now available as a payment method both online and offline for Singapore merchants. Accept payments seamlessly from your India customers. * **Daily Settlements:** Earnings are credited to your HitPay wallet daily (T+1) in SGD, where you can exchange funds to your local currency for payouts. * **Online and Embedded QR Code Integration:** Easily integrate UPI into your web apps or in-person payments using our API. * **Onboard without a local India entity:** Simply onboard onto UPI through Settings > Payment Methods, to start accepting payments. ### Docs * [UPI](https://docs.hitpayapp.com/payment-methods/upi) # HitPay Static QRs Source: https://docs.hitpayapp.com/changelog/2025-02-26-hitpay-static-qrs This release introduces the HitPay Static QRs for SG & PH merchants [← Back to Changelog](/changelog) # HitPay Static QRs **February 26, 2025** In-Person Payments ![HitPay Static QRs](https://framerusercontent.com/images/wGWFWROyBgJrm0W6U7bnBKKnk.png?width=1729\&height=846) This release introduces the HitPay Static QRs for SG & PH merchants HitPay’s Static QR enables businesses to accept QR code payments without the need for additional hardware like POS systems or terminals. This solution is particularly beneficial for small and micro businesses, donation drives, and businesses with multiple locations. Value Proposition Create separate static QR codes for different locations or purposes to track sales effectively. Receive instant payment alerts via email and mobile push notifications. Simply print and display the QR code; no additional devices are necessary. Compatible with popular payment methods such as PayNow, UPI, and QRPH. ### How it works The ultimate POS System tailored for : Generate a Static QR Code Log in to your HitPay account. Navigate to the Static QR section. Create a new QR code, specifying details like location or purpose. Download and print the QR code for display. Customer makes payment Customer can scan their QR code using their supported banking apps Customer will manually enter the amount and click "Pay" Notification of Successful Payment Upon successful payment, a confirmation is sent to the business. ### Docs * **https:** //docs.hitpayapp.com/static-qrs/static-qr # Customize Pages with Sections & Media Manager Source: https://docs.hitpayapp.com/changelog/2025-03-13-customize-pages-with-sections-media-manager This release introduces customizable page sections, a new Media Manager, and improvements to product variants and product import &... [← Back to Changelog](/changelog) # Customize Pages with Sections & Media Manager **March 13, 2025** Online Store ![Customize Pages with Sections & Media Manager](https://framerusercontent.com/images/UsHJO7mrO93SZQX8RrMjzhOHhQ.jpg?width=2144\&height=1204) This release introduces customizable page sections, a new Media Manager, and improvements to product variants and product import & export. Online Store * **Customize Pages with Sections(Docs):** You can now add sections like products, categories, text, galleries, and more to your online shop pages, allowing you to create custom product showcases, landing pages, highlight featured collections, showcase promotions, and share brand stories. This gives you full control to customize any page—not just the homepage—so you can move and organize content where it fits best. Try this interactive demo to see it in action! * **Media Manager:** You can now upload, organize, edit, and reuse images across your online shop with the new Media Manager, providing a centralised library to manage images, built-in tools to adjust image focus, and metadata options to add image alt text and titles for better SEO. This helps you customise your store faster, maintain a consistent brand look, and save time and effort. Other Improvements * **Reorder Product Variants:** You can now easily reorder your product variants without the need to remove and add them again, making it faster and more convenient to organize your products. * **Export/Import Products Improvements:** Your shipping & pickup required field and product weight are now included in your export and import CSV file, making it easier to manage product data. # Add One-Time Payment to Subscriptions Source: https://docs.hitpayapp.com/changelog/2025-04-11-add-one-time-payment-to-subscriptions This release includes the ability to add one-time payments to active subscriptions, along with a set of small but impactful improv... [← Back to Changelog](/changelog) # Add One-Time Payment to Subscriptions **April 11, 2025** Recurring Billing ![Add One-Time Payment to Subscriptions](https://framerusercontent.com/images/tK3XfWlAMd05xJiOPKuSfjTMFA.png?width=1024\&height=555) This release includes the ability to add one-time payments to active subscriptions, along with a set of small but impactful improvements to the Online Store Recurring Billing * **Add One-Time Payment(Docs):** You can now charge a one-time amount to a customer’s saved payment method under an active recurring billing. This is perfect for billing add-ons, overages, or one-off charges that fall outside the regular billing cycle. It simplifies collections, removes the need for separate payment links, and keeps everything tracked under the same billing record. ### Common use cases Add-on services – Charge for additional services such as personal training, private consultations, or custom setup work. Additional usage or overages – Bill for usage beyond the plan, such as extra classes, additional storage, or extra bookings. One-time fees – Collect setup fees, onboarding costs, or admin charges alongside the subscription. Late fees or adjustments – Apply charges for missed payments or make manual billing corrections. Other Improvements Online Store * **Removed Coupon Code:** If no coupon codes are set, the input field will no longer appear on the storefront—keeping the checkout experience clean. * **Hide Sold Out Variants:** You can now choose to hide sold out product variants from your online shop. * **Juizzy Footer Payment Methods:** The Juizzy theme footer now supports displaying all available payment methods, with the option to customize which ones are shown. * **Image Behavior Settings:** Choose whether store images open in a new tab or the same tab, giving you more control over how customers navigate your store. # Malaysia: Touch 'n Go (Offline), GrabPay & PayLater by Grab (Offline), Atome (Online); Philippines: GCash (Offline) Source: https://docs.hitpayapp.com/changelog/2025-04-11-malaysia-touch-n-go-offline-grabpay-paylater-by-grab-offline-atome-online-philippines-gcash-offline This release expands support for additional payment methods — Touch 'n Go, GrabPay & PayLater by Grab (Offline), and Atome (Online... [← Back to Changelog](/changelog) # Malaysia: Touch 'n Go (Offline), GrabPay & PayLater by Grab (Offline), Atome (Online); Philippines: GCash (Offline) **April 11, 2025** Payment Methods ![Malaysia: Touch 'n Go (Offline), GrabPay & PayLater by Grab (Offline), Atome (Online); Philippines: GCash (Offline)](https://framerusercontent.com/images/hFaTSZv2uYSdABEVJ92LaDGkCR4.png?width=1024\&height=555) This release expands support for additional payment methods — Touch 'n Go, GrabPay & PayLater by Grab (Offline), and Atome (Online) in Malaysia, as well as GCash (Offline) in the Philippines. Atome (Online) — Malaysia * **Atome (Online):** You can now offer your Malaysian customers another Buy Now Pay Later (BNPL) option with Atome. This direct integration helps you tap into the growing demand for flexible, interest-free installment payments. * **Daily Settlements:** Earnings are credited to your HitPay wallet daily (T+2). ### Terms * **Min transaction:** RM 10 ### Onboarding Enable through Payment Methods Page via form submission GrabPay & PayLater by Grab (Offline) — Malaysia * **GrabPay and PayLater by Grab (Offline):** Accept GrabPay and PayLater by Grab for in-person payments — extending your existing online support to create a seamless omnichannel experience. * **Daily Settlements:** Earnings are credited to your HitPay wallet daily (T+2). ### Terms * **Min transaction:** RM 0.50 ### Onboarding New merchants onboard through Payment Methods page via form submission Existing GrabPay merchants have offline auto-enabled Touch ‘n Go (Offline) — Malaysia * **Touch ‘n Go (Offline):** One of Malaysia’s most widely used e-wallets is now available for in-store payments. * **Daily Settlements:** Earnings are credited to your HitPay wallet daily (T+2). ### Terms * **Min transaction:** RM 0.50 ### Onboarding New merchants onboard through Payment Methods page, with instant activation Existing merchants will have TnG auto-enabled GCash (Offline) — Philippines * **GCash (Offline):** GCash, one of the Philippines’ top e-wallets, is now available for offline, in-person payments — expanding beyond online acceptance to help you reach more customers on the go. * **Daily Settlements:** Earnings are credited to your HitPay wallet daily (T+1) ### Terms * **Min transaction:** PHP 1.00 ### Onboarding New merchants onboard through Payment Methods page via form submission Existing Gcash merchants will have offline auto-enabled ### Docs * [Atome](https://docs.hitpayapp.com/payment-methods/atome) * [GrabPay](https://docs.hitpayapp.com/payment-methods/grabpay) * [PayLater by Grab](https://docs.hitpayapp.com/payment-methods/grabpay_paylater) * [Touch 'n Go](https://docs.hitpayapp.com/payment-methods/touchngo) * [Gcash](https://docs.hitpayapp.com/payment-methods/gcash) * [Online Payments API](https://docs.hitpayapp.com/apis/guide/online-payments) * [Embedded QR API](https://docs.hitpayapp.com/apis/guide/embedded-qr-code-payments) # AI-Powered Onboarding and New Storefront Sections Source: https://docs.hitpayapp.com/changelog/2025-05-16-ai-powered-onboarding-and-new-storefront-sections This release introduces AI-powered onboarding and new storefront sections to help you launch and customize your store faster than... [← Back to Changelog](/changelog) # AI-Powered Onboarding and New Storefront Sections **May 16, 2025** Online Store ![AI-Powered Onboarding and New Storefront Sections](https://framerusercontent.com/images/jWEMXgizg3NBFXT9Z8Sve1TNIIY.jpg?width=2144\&height=1204) This release introduces AI-powered onboarding and new storefront sections to help you launch and customize your store faster than ever. Online Store * **AI Onboarding:** Our new AI-powered onboarding helps you get started in seconds. Based on a few simple questions, it can automatically generate sample products, suggest colors that match your brand, and create an initial store layout no design skills needed. ### Storefront new Sections * **Columns Section:** You can now add up to 4 image + text columns, perfect for showcasing service tiers, highlight product benefits, or product categories. Customise the title, description, call-to-action button, alignment, and colors to fit your brand. * **Product Showcase Section:** You can now highlight a featured or best-selling product directly from the homepage with a large image layout, detailed product description, and a direct “Add to Cart” button. Customise the layout, alignment, button style, and colors to match your store’s design. # Same Day Void Feature (All-in-One Terminal) Source: https://docs.hitpayapp.com/changelog/2025-05-22-same-day-void-feature-all-in-one-terminal This release introduces the ability to void transactions directly from the HitPay terminal app or Web, allowing merchants to cance... [← Back to Changelog](/changelog) # Same Day Void Feature (All-in-One Terminal) **May 22, 2025** In-Person Payments ![Same Day Void Feature (All-in-One Terminal)](https://framerusercontent.com/images/Yu2W0hu3bhpspxkpM52tyUcr38c.png?width=1024\&height=555) This release introduces the ability to void transactions directly from the HitPay terminal app or Web, allowing merchants to cancel same-day payments without incurring fees or moving funds. Applicable for All-in-One terminal Singapore merchants only, opt-in basis. Key features * **Same-Day Voiding:** Cancel payments made within the same calendar day (before 23:59) without incurring HitPay fees. No funds are moved, and no transaction fees apply. * **Accurate Reporting:** Voided transactions are excluded from Gross Sales, Net Collections, and Refunds in sales summaries, making reconciliation accurate and clean. * **Clear Report Export Labels:** Voided transactions are clearly marked as void in exported CSV reports for easy identification. Ideal Use Cases * **Customer Cancellations or Input Errors:** Perfect for resolving customer-initiated cancellations or accidental duplicate charges on the same day, without triggering settlement or fees. * **Busy Retail Environments:** Helps streamline cashier workflows in high-volume stores by quickly resolving errors without needing to process full refunds. * **Businesses with High Transaction Volumes:** Reduces end-of-day reconciliation issues by ensuring only completed payments are captured and settled. # HitPay All-in-One Terminal (Hong Kong) Source: https://docs.hitpayapp.com/changelog/2025-06-11-hong-kong-hitpay-all-in-one-terminal This release introduces HitPay All-in-One Terminal (S1F2, powered by Adyen) for Hong Kong merchants. [← Back to Changelog](/changelog) # HitPay All-in-One Terminal (Hong Kong) **June 11, 2025** In-Person Payments ![HitPay All-in-One Terminal (Hong Kong)](https://framerusercontent.com/images/QNmUW8dKAot5IUVW6NrXKWu8ZA.png?width=2880\&height=1620) This release introduces HitPay All-in-One Terminal (S1F2, powered by Adyen) for Hong Kong merchants. Now Available in Hong Kong Supported Modes Standalone Mode - Use the terminal without pairing with another device (Recommended) Desktop Mode - Pair the terminal with your computer or laptop on a web browser Key features * **Versatile Payment Processing:** Fast payment acceptance through tap, swipe, or insert methods for cards. Supports QR code payments. * **In-Built Printer:** Remove dependency on external printing devices * **Connectivity Options:** Terminal supports standalone or desktop integration with dual network capabilities (WiFi and cellular). Includes free SIM card for backup internet connectivity, with zero monthly payments, while ensuring consistent payment processing reliability. Ideal Use Cases * **Mobile Businesses and Pop-up Shops:** Ideal for businesses that operate in various locations or temporary setups. The all-in-one design with built-in printer and cellular backup ensures reliable transactions without dependency on fixed Wi-Fi connectivity. * **High-volume Retail and Hospitality:** Suitable for busy environments where fast transaction processing and uninterrupted connectivity are crucial. The terminal's ability to quickly process payments via multiple methods (tap, swipe, insert) and its backup cellular option minimize downtime during peak hours. * **Outdoor Events and Markets:** Perfect for vendors at farmers markets, festivals, or outdoor events where WiFi may be unreliable. The standalone capability and cellular backup ensure consistent operation in diverse settings. * **Small to Medium Businesses with Limited Space:** The integrated design eliminates the need for multiple devices, making it ideal for businesses with limited counter space or those seeking a clutter-free point-of-sale area. ### Docs * [HitPay All-in-One](https://docs.hitpayapp.com/pos/readers/all-in-one-s1f2) # Collect Full Names at Checkout, Customize Category Pages, and More! Source: https://docs.hitpayapp.com/changelog/2025-06-25-collect-full-names-at-checkout-customize-category-pages-and-more This release introduces new features across Payment Links, Invoices, and the Online Store—giving you more control to collect custo... [← Back to Changelog](/changelog) # Collect Full Names at Checkout, Customize Category Pages, and More! **June 25, 2025** Payment Links ![Collect Full Names at Checkout, Customize Category Pages, and More!](https://framerusercontent.com/images/3qahoXiYtyV4GnFBJrtiUF6Js9Q.jpg?width=4096\&height=2220) This release introduces new features across Payment Links, Invoices, and the Online Store—giving you more control to collect customer details at checkout, track who created invoices, and customize your category pages with new layout options. Payment Links * **Collect Customer Full Name (Docs):** You can now choose to collect the customer’s full name on your payment link checkout pages. Please note that this setting will apply to all checkout pages, including those from plugin integrations and no-code tools. Online Store * **Customise Categories page with Sections(Docs):** You can now add sections like text, images, galleries, and more to your category pages. This gives you the flexibility to create engaging layouts that go beyond just product grids. Highlight featured collections, showcase promotions, share your brand story, or guide customers with custom content directly on your category pages. See it in action at Mode & Co Other Improvements * **Invoice Creator Tracking:** You can now see and export which user created each new invoice. This is especially useful for tracking sales performance by team members and assigning invoices to specific sales personnel for better reporting and accountability. * **Invoice Edit Table Columns:** You can customize the fields displayed in your invoice table. Whether it’s Reference, Description, or Due Date, you have the flexibility to choose which fields are shown and arrange them in the order that works best for you. * **Online Store Email Enhancement:** Any additional information collected during online shop order confirmation is now included in the customer’s confirmation email, ensuring they have all the order details in one place. # ShopeePay for Subscriptions (Singapore) Source: https://docs.hitpayapp.com/changelog/2025-07-04-shopeepay-for-subscriptions-singapore This release introduces ShopeePay and SPayLater as payment options for subscriptions in Singapore [← Back to Changelog](/changelog) # ShopeePay for Subscriptions (Singapore) **July 4, 2025** Recurring Billing ![ShopeePay for Subscriptions (Singapore)](https://framerusercontent.com/images/yoVn531Owo59K0ccl3ndg2VGzy0.png?width=1024\&height=555) This release introduces ShopeePay and SPayLater as payment options for subscriptions in Singapore ShopeePay for Subscriptions We’ve expanded ShopeePay beyond one-time payments. You can now offer ShopeePay and SPayLater as alternative payment methods for subscriptions, giving your customers more flexibility at checkout. ### Docs * [ShopeePay](https://docs.hitpayapp.com/payment-methods/shopeepay) * [SPayLater](https://docs.hitpayapp.com/payment-methods/spaylater) # Open Amount & One Page Checkout Source: https://docs.hitpayapp.com/changelog/2025-07-18-open-amount-one-page-checkout This release introduces Open Amount Products and One Page Checkout for the Online Store, making it easier to sell with flexible pr... [← Back to Changelog](/changelog) # Open Amount & One Page Checkout **July 18, 2025** Online Store ![Open Amount & One Page Checkout](https://framerusercontent.com/images/dejcksn1USLPnilsX7wZCFs67u4.jpg?width=4096\&height=2220) This release introduces Open Amount Products and One Page Checkout for the Online Store, making it easier to sell with flexible pricing and faster checkouts. Online Store * **Open Amount Products \[Docs]:** You can now offer products with open pricing on your online shop, allowing customers to enter the amount they want to pay. This is ideal for businesses offering flexible pricing, custom services, or accepting donations. You can also customize the button and input field labels (e.g. “Donate” or “Enter your amount”) to match your product’s purpose, and apply an admin fee if needed. ### Common use cases include Non-profits or fundraisers accepting donations online Service providers offering sessions with variable rates (e.g. consultations, coaching, or creative work) Artists or creators letting customers choose how much to pay for digital downloads Pay-What-You-Can for Workshops or Courses Businesses with variable pricing needs 👉 See it in action at Future Forest * **One Page Checkout \[Docs]:** You can now enable a single-page checkout experience where customers can view product details, select variations or quantities, and enter shipping or custom fields, all on the same page. This removes steps like cart review and multi-step checkouts, helping reduce drop-offs, improve conversions, and speed up the buying process. It’s especially useful for single-product purchases. You can share the single-page link on Instagram, WhatsApp, or email to make buying even faster. 👉  See it in action Fixed Amount | Open Amount # Crypto Payments Source: https://docs.hitpayapp.com/changelog/2025-07-24-crypto-payments This release introduces cryptocurrency payments acceptance integration. in partnership with Triple-A Singapore. [← Back to Changelog](/changelog) # Crypto Payments **July 24, 2025** Payment Methods ![Crypto Payments](https://framerusercontent.com/images/vzhuGbInWM1xo59oGtw9OaB2WGI.png?width=536\&height=300) This release introduces cryptocurrency payments acceptance integration. in partnership with Triple-A Singapore. * **Payment Method:** Crypto Payments Crypto payments are now available for Singapore merchants. With this integration, you can accept leading cryptocurrencies such as Bitcoin, Ethereum, stablecoins (USDT, USDC, PYUSD) and more, while supporting popular wallets including Metamask, Coinbase, and Crypto.com. This enables you, as a business merchant, to tap into the global crypto economy, with faster settlements, no chargebacks, and lower fees compared to traditional card payments. ### Details Available to all Singapore merchants (enable via Payment Methods tab in dashboard) * **Supports major crypto tokens:** BTC, ETH, USDT (ERC20, TRC20, Polygon, Solana, Arbitrum), USDC (ERC20, TRC20, Polygon, Solana, Arbitrum), PYUSD (Ethereum, Solana) * **Compatible with leading wallets:** Metamask, Coinbase, Crypto.com ### Terms * **Processing Fee:** 2% flat * **Payouts:** T+2 (credited to HitPay Balance) * **Chargebacks:** Not applicable (irreversible transactions) ### Docs * [Crypto](https://docs.hitpayapp.com/payment-methods/crypto) # HitPay Mini AMS1 Terminal Source: https://docs.hitpayapp.com/changelog/2025-08-06-hitpay-mini-ams1-terminal This release introduces HitPay Mini Terminal (AMS1, powered by Adyen) for Singapore/Hong Kong merchants. [← Back to Changelog](/changelog) # HitPay Mini AMS1 Terminal **August 6, 2025** In-Person Payments ![HitPay Mini AMS1 Terminal](https://framerusercontent.com/images/96lgE1wAw9aLYLUs4mCNOML2Td0.png?width=1024\&height=555) This release introduces HitPay Mini Terminal (AMS1, powered by Adyen) for Singapore/Hong Kong merchants. Supported Modes Desktop Mode - Pair the terminal with your computer or laptop on a web browser Mobile Mode - Pair the terminal with your HitPay app on your iOS/Android device API integration - Integrate via our In-person APIs to make charges Key features * **Mobile Connectivity:** Supports payments over Wi-Fi or built-in cellular network (SIM card included). * **Compact Form Factor:** Lightweight and portable, suitable for mobile businesses, pop-ups, or queue management. * **Card Acceptance:** Supports Visa, Mastercard, AMEX, UnionPay, JCB via tap, insert, or swipe. * **QR Payment Support:** Accepts QR payments (SGQR, PayNow, and others) through the HitPay mobile app (iOS & Android). Includes support for local and cross-border QR methods. * **Same-Day Void:** Transactions can be voided on the same day (until 23:59) to avoid transaction fees. Ideal Use Cases Food stalls, hawkers, and F\&B booths — who need long battery life and mobility Mobile businesses — from events to pop-ups to delivery-based services ### Docs * [HitPay Mini (AMS1)](https://docs.hitpayapp.com/pos/readers/mini-ams1) * [HitPay Terminal Store (SG)](https://hitpay.shop/hitpayterminal/) * [HitPay Terminal Store (HK)](https://hitpay.shop/hitpay-hk) # Save Payment Details & Online Store Templates Source: https://docs.hitpayapp.com/changelog/2025-08-13-save-payment-details-online-store-templates This release introduces Save Payment Details for Subscriptions, New Online Store Templates, and Invoice Locations, giving you more... [← Back to Changelog](/changelog) # Save Payment Details & Online Store Templates **August 13, 2025** Online Store ![Save Payment Details & Online Store Templates](https://framerusercontent.com/images/AWSEIZAZIefTYer8gaSzJvan64.jpg?width=4096\&height=2220) This release introduces Save Payment Details for Subscriptions, New Online Store Templates, and Invoice Locations, giving you more control over recurring charges, easier store setup, and better invoice tracking across branches. Recurring Billing * **Save Payment Details \[Docs]:** You can now have access to the same save payment method functionality previously available only via API. This lets you securely store a customer’s payment method for future recurring charges. You can choose how the initial charge is handled: Charge immediately when the customer signs up, or Store the payment method with no charge and trigger it manually later. Future charges can be triggered using the Add Payment feature in the dashboard. Triggering via CSV upload is coming soon. Online Store * **New Templates:** We’ve launched four new templates: Mode\&Co, GlowRiot, TechPulse, and Zenflow. These templates make setting up an online store even easier, with pre-defined sections like product showcases, banners, testimonials, and more. You’ll get a fully structured layout that’s ready to customize. Other Improvements Invoice Locations are now available for invoices. Once a location is tagged, it will appear on the invoice details page and in exports. This makes it easier to filter, organize, and track invoice performance across different locations or branches. Online Store You can now set required lead time in hours for shipping and pickup. This helps ensure your team has enough time to prepare orders before fulfilment. # Touch 'n Go (Malaysia) Source: https://docs.hitpayapp.com/changelog/2025-08-24-touch-n-go-malaysia This release introduces direct integration with Touch 'n Go in Malaysia, auto-enabling it as a default payment option for merchant... [← Back to Changelog](/changelog) # Touch 'n Go (Malaysia) **August 24, 2025** Payment Methods ![Touch 'n Go (Malaysia)](https://framerusercontent.com/images/gtzKJS9MIq53HMLlXVlfLPpYaso.png?width=536\&height=300) This release introduces direct integration with Touch 'n Go in Malaysia, auto-enabling it as a default payment option for merchants in Malaysia. * **Payment Method:** Touch 'n Go (TnG) TnG is one of the most widely used e-wallets in Malaysia. With this new direct integration, you can now offer your Malaysian customers a smoother, more reliable checkout experience with better rates and guaranteed activation. This is now available for both online and in-person payments Updates 100% activation rate – automatically enabled for all Malaysia merchants, no additional onboarding required Lower fees for online payments – reduced from 2.3% to just 1.9% Stable implementation – improved reliability compared to previous third-party connections ### Business Terms * **Payouts:** T+2 (credited to your HitPay wallet) * **Refunds:** Supports both full & partial refunds * **Minimum Transaction:** 2 MYR ### Docs * [Touch 'n Go](https://docs.hitpayapp.com/payment-methods/touchngo) * [API](https://docs.hitpayapp.com/apis/guide/online-payments) # HitPay All-in-One Terminal (Philippines) Source: https://docs.hitpayapp.com/changelog/2025-09-01-hitpay-all-in-one-terminal-dx4000-philippines This release introduces HitPay All-in-One Terminal (Ingenico DX4000, powered by Cybersource) for Philippines merchants. [← Back to Changelog](/changelog) # HitPay All-in-One Terminal (Philippines) **September 1, 2025** In-Person Payments ![HitPay All-in-One Terminal (Philippines)](https://framerusercontent.com/images/7vr3k3aR4K5x9wYCVuDMIPirhI.png?width=1024\&height=555) This release introduces HitPay All-in-One Terminal (Ingenico DX4000, powered by Cybersource) for Philippines merchants. Supported Modes Standalone Mode - Use the terminal without pairing with another device (Recommended) Key features * **Mobility:** Go anywhere – lightweight, connected, wireless built for outdoor and mobile use. * **All Payments Accepted:** Accept cards (Visa, Mastercard, EMV/contactless) via Swipe/Insert/Tap, QRPH, and GCash. * **Reliability:** Wi-Fi/Mobile Hotspot (SIM card needs to be purchased separately). Private network required. * **Auto-settlement:** Payments are auto-settled to you T+2. * **No Fuss Setup:** Fully standalone * **Security:** PCI PTS v6 compliance ensures peace of mind. * **Full POS Capabilities:** Inventory, sales, discounting, products and instant receipt printing built in Ideal Use Cases * **Urban Cafés & Quick-Service Shops:** Fast checkouts with multiple payment options in a small footprint. Perfect for busy counter spaces. * **Mobile Retail Vendors & Franchise Operators:** Long battery life and portability allow sales teams to operate anywhere. Easy onboarding ensures smooth operations across multiple staff and locations. * **Outdoor Events & Pop-Up Markets:** Whether at weekend markets, festivals, or outdoor fairs, merchants can rely on stable connectivity and versatile payment acceptance. * **SMEs Seeking All-in-One Solutions:** Simplify operations with one integrated terminal—no need for multiple devices or complex setups. ### Docs * [HitPay All-in-One](https://docs.hitpayapp.com/pos/readers/all-in-one-dx4000) * [HitPay Philippines Terminal Store](https://hitpay.shop/hitpayterminalph) # WeChat Pay (Malaysia) Source: https://docs.hitpayapp.com/changelog/2025-09-01-we-chat-pay-malaysia This release introduces direct integration with WeChatPay in Malaysia with instant onboarding [← Back to Changelog](/changelog) # WeChat Pay (Malaysia) **September 1, 2025** Payment Methods ![WeChat Pay (Malaysia)](https://framerusercontent.com/images/s9YgpDhMNYzzaueNAXr10nqG8.png?width=3072\&height=1665) This release introduces direct integration with WeChatPay in Malaysia with instant onboarding * **Payment Method:** WeChat Pay (Online & QR) In Malaysia, Chinese Malaysians are increasingly choosing WeChat Pay for daily purchases. Over 70% of Chinese tourists in Malaysia prefer using e-wallets like WeChat Pay. ### Business Terms * **Payouts:** T+2 (credited to your HitPay wallet) * **Refunds:** Not supported ### Docs * [WeChatPay](https://docs.hitpayapp.com/payment-methods/wechatpay) * [API](https://docs.hitpayapp.com/apis/guide/online-payments) # Recurring Bulk Subscriptions & Shareable Carts Source: https://docs.hitpayapp.com/changelog/2025-09-30-bulk-subscriptions-and-shareable-carts This release includes bulk actions for subscriptions and share cart for the online store [← Back to Changelog](/changelog) # Recurring Bulk Subscriptions & Shareable Carts **September 30, 2025** Recurring Billing ![Recurring Bulk Subscriptions & Shareable Carts](https://framerusercontent.com/images/2chj3bIdkFV5OQtqn3xxpISSd0.jpg?width=4096\&height=2220) This release includes bulk actions for subscriptions and share cart for the online store Recurring Billing * **Bulk Actions for Subscriptions \[Docs]:** You can now manage subscriptions in bulk via CSV upload directly from the recurring billing dashboard, supported bulk actions: Create subscriptions Edit existing subscriptions Pause or resume subscriptions Add one-time payments This helps you save time, reduce manual effort, and improve accuracy when managing large sets of recurring billing data. Online Store * **Share cart:** You can now share your online shop cart with anyone using a link. This makes it easy to create a checkout from orders received through calls, emails, or WhatsApp. Customers can also share their cart with someone else to complete the payment. The shared link is a snapshot of the cart at that moment, it will include the products, quantities, coupons, and any customer details already filled in, ensuring a smooth and accurate checkout experience. 👉🏼 See it in action at Mode & Co # AliPay+ (Malaysia) Source: https://docs.hitpayapp.com/changelog/2025-10-16-alipay-plus-malaysia This release introduces direct integration with AliPay+ online for Malaysia. [← Back to Changelog](/changelog) # AliPay+ (Malaysia) **October 16, 2025** Payment Methods ![AliPay+ (Malaysia)](https://framerusercontent.com/images/pyUaMLzH7Axa8DStOb0xJ1pojs.png?width=1024\&height=555) This release introduces direct integration with AliPay+ online for Malaysia. * **Payment Method:** Alipay+ Global Wallets (10+ International E-wallets) HitPay now supports 10+ leading global e-wallets through Alipay+ Online — including Alipay CN, Alipay HK, GCash, Dana, BPI, Rabbit LINE Pay, TrueMoney, and more. This enables Malaysia merchants to accept payments from millions of shoppers across China, Indonesia, the Philippines, Thailand, Hong Kong, and beyond. Whether you’re running an e-commerce store, travel business, or a digital services operation, you can now offer a localised, familiar checkout experience tailored to regional and cross-border buyers. These payment methods are available globally, with payouts settled directly to your HitPay Balance in MYR. Updates Global acceptance – Accept payments from overseas shoppers using 10+ popular Asian wallets; no foreign entity required. Frictionless checkout – Mobile-optimised payment flow for higher cross-border conversions. Automatic activation – Once enabled, supported Alipay+ wallets appear instantly on your HitPay checkout. Cross-border ready – Ideal for merchants selling to buyers in China, Indonesia, the Philippines, Thailand, Hong Kong and other Alipay+ regions. ### Business Terms * **Payouts:** T+2 * **Refunds:** Supported, full and partial ### Docs * [AliPay+](https://docs.hitpayapp.com/payment-methods/alipay) * [API](https://docs.hitpayapp.com/apis/guide/online-payments) # GrabPay for Subscriptions (Singapore & Malaysia) Source: https://docs.hitpayapp.com/changelog/2025-10-16-grabpay-for-subscriptions-singapore-malaysia This release introduces GrabPay as payment options for subscriptions in Singapore & Malaysia [← Back to Changelog](/changelog) # GrabPay for Subscriptions (Singapore & Malaysia) **October 16, 2025** Recurring Billing ![GrabPay for Subscriptions (Singapore & Malaysia)](https://framerusercontent.com/images/XOSAvQIylvzfn22LpeUXsCBhh0s.jpg?width=2134\&height=1200) This release introduces GrabPay as payment options for subscriptions in Singapore & Malaysia GrabPay for Subscriptions is now available in Singapore & Malaysia Your customers can now link their GrabPay wallet for recurring subscription payments, not just one-time transactions. ### Benefits Reach millions of GrabPay users who already trust the wallet for everyday purchases. Offer customers a card-free, low-friction way to subscribe and renew automatically. Encourage loyalty with GrabRewards points, making recurring payments more engaging for customers. Boost recurring conversions by giving customers more ways to pay. ### Docs * [GrabPay](https://docs.hitpayapp.com/payment-methods/grabpay) # Korean Payment Methods - PayCo, NaverPay, KakaoPay (Global) Source: https://docs.hitpayapp.com/changelog/2025-10-16-korean-payment-methods-payco-naverpay-kakaopay-global This release introduces direct integration with KakaoPay, NaverPay & Payco (Korean E-wallets) [← Back to Changelog](/changelog) # Korean Payment Methods - PayCo, NaverPay, KakaoPay (Global) **October 16, 2025** Payment Methods ![Korean Payment Methods - PayCo, NaverPay, KakaoPay (Global)](https://framerusercontent.com/images/SD6OOgaV3fANrYD7S4sN6DNl60o.png?width=1024\&height=555) This release introduces direct integration with KakaoPay, NaverPay & Payco (Korean E-wallets) * **Payment Method:** KakaoPay, NaverPay & Payco (Korean E-wallets) HitPay now supports KakaoPay, NaverPay, and Payco — three of Korea’s most trusted e-wallets — enabling you to accept online payments from millions of Korean shoppers, globally. Whether you’re selling retail products, providing travel services, or running cross-border e-commerce, you can now offer a seamless, mobile-first checkout experience tailored for Korean customers. These payment methods are available worldwide, with payouts settled in KRW directly to your HitPay Balance. Updates New global availability – Accept Korean e-wallet payments from any market; no local entity required. Mobile-first checkout – Optimized redirect flow with high conversion on mobile. One-click acceptance – KakaoPay, NaverPay, and Payco appear automatically on your HitPay checkout when enabled. Cross-border ready – Designed for merchants serving Korean buyers abroad (travel, retail, education, experiences). ### Business Terms * **Payouts:** T+1 * **Refunds:** Supported, full and partial ### Docs * [Korean Payment Methods](https://docs.hitpayapp.com/payment-methods/korean-payment-methods) * [API](https://docs.hitpayapp.com/apis/guide/online-payments) # New Store Templates and Easier Payment Method Updates Source: https://docs.hitpayapp.com/changelog/2025-11-26-new-store-templates-and-easier-payment-method-updates This release includes new store templates and updated payment methods for recurring billing [← Back to Changelog](/changelog) # New Store Templates and Easier Payment Method Updates **November 26, 2025** Online Store ![New Store Templates and Easier Payment Method Updates](https://framerusercontent.com/images/rmwQxoedB1Ae8Dic2ixSJS0etdo.jpg?width=3069\&height=1663) This release includes new store templates and updated payment methods for recurring billing Online Store * **New Templates:** Five new templates are now available: Future Forest, Organic, Fitness Gym, Explore Now, and Academy Store. These templates help you launch faster and look polished from day one. Each layout comes with ready-made sections like banners, product highlights, testimonials, embed blocks, plan pricing tables, and donation sections, giving you a complete storefront structure you can easily personalise to fit your brand. Recurring Billing * **Update Payment Methods:** Customers on active subscriptions can now switch to any supported payment method without cancelling their plan. They can move between ShopeePay, GrabPay, and cards easily. This gives subscribers full flexibility to choose how they want to pay while helping you reduce failed payments, prevent churn, and keep recurring charges running smoothly. # Atome QR Offline (Singapore & Malaysia) Source: https://docs.hitpayapp.com/changelog/2025-11-27-atome-qr-offline-singapore-malaysia This release introduces direct integration with Atome for offline QR checkout. Available in Singapore and Malaysia. [← Back to Changelog](/changelog) # Atome QR Offline (Singapore & Malaysia) **November 27, 2025** In-Person Payments ![Atome QR Offline (Singapore & Malaysia)](https://framerusercontent.com/images/pfxgOJD7z6Hnp3EQgu8JklZi2c.png?width=3072\&height=1665) This release introduces direct integration with Atome for offline QR checkout. Available in Singapore and Malaysia. * **Payment Method:** Atome QR Offline (Singapore & Malaysia) Atome Buy Now, Pay Later (BNPL) is now available for in-person payments on HitPay POS in Singapore and Malaysia. Your customers can now scan an Atome QR at checkout to split their purchase into 3 interest-free payments — giving you higher conversions, larger basket sizes, and a smoother in-store experience. Available today on HitPay POS and Quick Sale. Updates BNPL now in-store – Atome QR is now supported for in-person payments through HitPay POS (SG & MY). Frictionless setup – Enable Atome directly from your HitPay dashboard; no extra hardware required. Larger basket sizes – On average, BNPL boosts order value by up to 30% for retail categories like fashion, lifestyle, and electronics. Improved shopper convenience – Customers can split payments instantly at the counter using their Atome app. ### Business Terms * **Payouts:** T+1 (SG) / T+2 (MY) * **Refunds:** Supported for SG, not supported for MY ### Docs * [Atome](https://docs.hitpayapp.com/payment-methods/atome) * [API](https://docs.hitpayapp.com/apis/guide/online-payments) # HitPay All-in-One Terminal (Sunmi V3 Malaysia) Source: https://docs.hitpayapp.com/changelog/2025-11-27-hitpay-all-in-one-terminal-sunmi-v3-malaysia This release introduces HitPay All-in-One Terminal (Sunmi V3, powered by Stripe) for Malaysia merchants. [← Back to Changelog](/changelog) # HitPay All-in-One Terminal (Sunmi V3 Malaysia) **November 27, 2025** In-Person Payments ![HitPay All-in-One Terminal (Sunmi V3 Malaysia)](https://framerusercontent.com/images/FgaS8e4W8Nz6MewTu5rXPUxZpXw.png?width=1024\&height=555) This release introduces HitPay All-in-One Terminal (Sunmi V3, powered by Stripe) for Malaysia merchants. Supported Modes Standalone Mode - Use the terminal without pairing with another device (Recommended) Key features Universal Payment Acceptance - Accept every major payment type in Malaysia: * **Cards:** Visa, Mastercard, Contactless (Tap/PayWave), Apple Pay, Google Pay, Samsung Pay * **QR Wallets:** Touch ’n Go, ShopeePay, GrabPay, WeChat Pay, and more Go-Anywhere Mobility - Lightweight, portable, and fully wireless. Perfect for cafés, food stalls, pop-up booths, and delivery teams. Always Connected - Operate with WiFi or 4G for reliable payments anywhere your business goes. (SIM card purchased separately; private network recommended). Instant Receipts - Built-in thermal printer for fast, on-the-spot receipt printing, no external pairing required. Fast Onboarding & Setup - Works right out of the box. No smartphone pairing needed. One device handles everything. Secure - PCI-certified hardware ensures safe, secure transactions for both merchants and customers. Full POS Capabilities - Manage sales, products, inventory, discounts, and issue receipts, all directly from the terminal. Ideal Use Cases Cafés, Food Stalls & Quick-Service Counters - Serve customers faster with tap, QR, and Touch ’n Go payments in seconds, perfect for compact counters. Pop-Up Merchants, Retail Stalls & Salons - Take every payment type with one portable device. Ideal for high foot-traffic or temporary setups. Delivery Teams & Mobile Services - Accept payments at the door using WiFi or 4G. Great for couriers, repairs, or home-service businesses. SMEs Wanting a Single, Integrated Solution - Simplify operations with one terminal for sales, printing, and payments. No complicated setups or multiple devices. ### Docs * [HitPay All-in-One](https://docs.hitpayapp.com/pos/readers/sunmi-v3) * [HitPay Malaysia Terminal Store](https://hitpay.shop/hitpayterminalmy) # ShopeePay & SPayLater (Philippines) Source: https://docs.hitpayapp.com/changelog/2025-11-27-shopeepay-spaylater-philippines This release introduces direct integration with ShopeePay & SPayLater PH in Philippines. [← Back to Changelog](/changelog) # ShopeePay & SPayLater (Philippines) **November 27, 2025** Payment Methods ![ShopeePay & SPayLater (Philippines)](https://framerusercontent.com/images/8XddL0cWDlLF4bDgdWoEzIg01w.png?width=3072\&height=1665) This release introduces direct integration with ShopeePay & SPayLater PH in Philippines. * **Payment Method:** ShopeePay & SPayLater (Philippines) ShopeePay and SPayLater are now directly integrated with HitPay, giving your Filipino customers more ways to pay — from instant wallet payments to flexible instalments. This upgrade brings higher conversion, larger basket sizes, and a frictionless checkout experience with a trusted local brand. Available now for online payments in the Philippines. Updates Direct integration – faster, more reliable checkout compared to previous third-party routes. Higher conversion – customers can pay via ShopeePay wallet or choose SPayLater Buy Now, Pay Later instalments. Better flexibility – supports a wider range of consumer payment preferences, boosting sales for e-commerce merchants. ### Business Terms * **Payouts:** T+2 (credited to your HitPay wallet) * **Refunds:** Supports both full & partial refunds ### Docs * [ShopeePay](https://docs.hitpayapp.com/payment-methods/shopeepay) * [SPayLater](https://docs.hitpayapp.com/payment-methods/spaylater) * [API](https://docs.hitpayapp.com/apis/guide/online-payments) # Tap to Pay on iPhone Source: https://docs.hitpayapp.com/changelog/2025-12-04-tap-to-pay-on-iphone This release introduces Tap to Pay on iPhone for Singapore merchants [← Back to Changelog](/changelog) # Tap to Pay on iPhone **December 4, 2025** In-Person Payments ![Tap to Pay on iPhone](https://framerusercontent.com/images/SdZFw89H4UgRnvLx4T8mSMMaSV8.png?width=1024\&height=555) This release introduces Tap to Pay on iPhone for Singapore merchants Tap to Pay on iPhone Accept quick contactless payments right on your iPhone Tap to Pay on iPhone is now available with HitPay. That means anyone can accept all types of in-person, contactless payments — from physical credit and debit cards to Apple Pay and other digital wallets. It’s easy and secure, and no additional hardware is needed. All you need is iPhone. Expand where you do business. With Tap to Pay on iPhone, anyone can do business in more places simply by accepting contactless payments right on iPhone. The checkout experience makes it easy to reach new customers and take payments on the go. All you need is iPhone and the HitPay app. No additional hardware. There’s no need to invest in and manage card readers and terminals, so Tap to Pay on iPhone makes it simple to start a new business or expand a current one. With just an iPhone and the HitPay app, anyone can accept contactless payments. It’s that simple. Privacy and security built in. Tap to Pay on iPhone uses the built-in security and privacy features of iPhone. When a payment is processed, Apple doesn’t store card numbers or PIN information on Apple servers — helping to protect your business and customer data. So merchants and customers can rest assured that their data stays theirs. PIN transaction protection. Transactions that require PIN entry will automatically prompt a PIN entry screen when using Tap to Pay on iPhone. During a transaction, Tap to Pay on iPhone is designed to prevent all photo, video, screenshot, and screen recording features on the merchant’s iPhone from capturing a customer’s card number or PIN information. Accessible for everyone. For customers needing visual or other assistance, accessibility options are built into Tap to Pay on iPhone to help them securely enter PIN information. Audible instructions guide customers to draw their PIN on the screen or tap the screen to indicate each digit — tapping once for 1, twice for 2, and so on. To submit their PIN, they simply swipe right with two fingers. # Multi-Currency, Mart Theme, and Invoice Editing Source: https://docs.hitpayapp.com/changelog/2026-01-21-multi-currency-mart-theme-and-invoice-editing This release introduces multi-currency support for the online store, a new Mart theme designed for large product catalogs, and the... [← Back to Changelog](/changelog) # Multi-Currency, Mart Theme, and Invoice Editing **January 21, 2026** Online Store ![Multi-Currency, Mart Theme, and Invoice Editing](https://framerusercontent.com/images/gyGtIqccg6v5mylG5wFINFBa038.jpg?width=3069\&height=1663) This release introduces multi-currency support for the online store, a new Mart theme designed for large product catalogs, and the ability to edit invoices even after payment Online Store * **Multi-Currency \[Docs]:** You can now sell globally using the Multi-Currency Converter, making cross border selling feel as local as selling at home. With multi-currency, you can: Show prices and accept payments in your customers’ local currency Accept local QR payments like PayNow, QRPH, and more, with lower fees than cards Reduce checkout friction and abandoned carts caused by foreign currency confusion Improve conversion with familiar pricing and payment methods Expand into new markets without needing a local entity or bank account Stay in full control of FX rates with automatic or manual pricing and optional markups Check out the Mode & Co store to see it in action * **New Mart Theme:** We’ve launched the Livingdepo (Mart) theme for the Online Store, built specifically for merchants with large catalogs or multiple product categories. This theme is designed to help customers find products faster and browse more efficiently, which means less friction and better conversion for your store. With the Mart theme, you get: Search first experience so customers can quickly find what they’re looking for Search optimised pages with side category navigation, price range filters, and sorting options, making it easy for customers to browse and switch between product categories Multi-product banners that let you showcase multiple products at once, making it easy to highlight bestsellers, promotions, or featured products directly in your banner A new Product Feed section that displays categories on the side with products listed under each one, plus sorting options directly on the homepage * **Ideal for:** grocery stores, home goods, electronics, lifestyle stores, or any merchant selling a wide range of products. Check out the Mart theme here to see it in action Invoice * **Edit Paid Invoices \[Docs]:** You can now edit invoices even after a partial or full payment has been made. This gives you more flexibility to manage real world billing scenarios such as deposits, staged payments, or post payment adjustments without needing to cancel invoices or issue new ones. With this update, invoices clearly display Amount Paid and Balance Due, so you always have full visibility into what’s been collected and what’s still outstanding. You can apply discounts, adjust line items, or update totals as needed, as long as the revised total is not lower than the amount already paid. # HitPay Borderless QR Source: https://docs.hitpayapp.com/changelog/2026-01-28-hitpay-borderless-qr Accept cross-border QR payments from customers using overseas e-wallets with no additional integration required. [← Back to Changelog](/changelog) # HitPay Borderless QR **January 28, 2026** Cross-Border Payments ![HitPay Borderless QR](https://framerusercontent.com/images/oGJf1Njk8HErK5GKO699vNqx1U.png) Accept local payments from international customers — now available on Android, iOS, and Web POS. HitPay Borderless QR enables merchants to accept local payment methods from overseas customers while getting paid in your home currency with automatic currency conversion. ### What's new * **Cross-border QR payments on POS** — Accept payments from overseas customers using their preferred local wallets and apps * **Unified QR checkout** — One dynamic QR code supports local and international payment methods in a single flow, reducing manual steps at checkout * **Automatic real-time currency conversion** — HitPay handles FX conversions in the background so customers pay in their local currency while merchants settle in their home currency Ideal for retail, F\&B, and service businesses serving tourists and cross-border shoppers, with faster checkout and fewer rejected payments. ### Why Borderless QR? * Avoid high international card FX fees (\~3%) * No need to generate or manage multiple country-specific QR codes * No manual FX conversion or foreign-currency quick sales * Save \~0.5%–1% vs international card fees * Customers pay at mid-market exchange rates using the app they already use at home ### Pricing 1.5% flat fee for all cross-border payment methods on POS. ### How it works 1. Merchant enters the price in their home currency 2. Merchant selects the customer's country and preferred payment method 3. HitPay auto-converts using real-time exchange rates 4. Customer pays in local currency — merchant receives payout in home currency ### Supported payment methods PayNow QR, UPI (Philippines), PromptPay, TrueMoney, WeChat Pay, VietQR, ZaloPay ### Learn more * [Borderless QR docs](/pos/borderless-qr) # Payouts & Wallet Balances Overhaul Source: https://docs.hitpayapp.com/changelog/2026-01-31-payouts-and-wallet-balances-overhaul A unified view of all payouts and wallet balances, with automatic arrival dates, clearer payout statuses, and direct links between charges and payouts. [← Back to Changelog](/changelog) # Payouts & Wallet Balances Overhaul **January 31, 2026** · Payment Methods ![Payouts Overview](https://mintcdn.com/hitpay/YeMTjx6l4Y3ML72_/images/Payouts.png?fit=max\&auto=format\&n=YeMTjx6l4Y3ML72_\&q=85\&s=ce590263668b4762d15945b6b43f1a2e) For a long time, merchants have had the same questions: When am I getting paid? How much is coming? How does this work? This update is designed to answer those questions before they even need to ask. We've removed the guesswork by making payouts and balances transparent, automated, and easy to find. ### Payouts Overview A single, consolidated view for all payouts. Merchants no longer need to switch between screens or be confused about how HitPay Balances vs. Card Balances work — it's all in one place. ![Payout Schedule](https://mintcdn.com/hitpay/JS4PXXi6ssVVUS4_/images/payout_schedule_card_balance.png?fit=max\&auto=format\&n=JS4PXXi6ssVVUS4_\&q=85\&s=d98871e356f923f6d7b927330e4b9a75) * **Payout Timeline & Arrival Dates** — Arrival dates are now calculated automatically. Merchants no longer need to check the calendar or manually work out T+X settlement times. * **"Upcoming" Payout Status** — A new status that shows exactly what's headed to a merchant's bank account, for better cash flow visibility. ### Payout Details ![Payout Details](https://mintcdn.com/hitpay/JS4PXXi6ssVVUS4_/images/payouts_detail.png?fit=max\&auto=format\&n=JS4PXXi6ssVVUS4_\&q=85\&s=6bc2802ebb2fd7442dfeda3fcf33e9e6) Merchants can now see every charge inside a specific payout, export the data for accounting, and click directly into any charge to track it. ### Charges Details Each charge now shows exactly which payout it belongs to and which wallet balance it's under — making reconciliation straightforward. ### Wallet Balances Overview One unified view of all wallet amounts, with a clear list of all wallet events and charges and simple navigation between them. ![Download Payout Breakdown](https://mintcdn.com/hitpay/U5oNdh9JnlyohIhl/images/download_payoutbreakdown.png?fit=max\&auto=format\&n=U5oNdh9JnlyohIhl\&q=85\&s=ba6021903c2a789b00c300301b9fff0f) ### New Table UI A clean table layout makes financial data easier to scan and act on — the most familiar and efficient format for merchants reviewing their payouts. ### Impact * **Fewer support tickets** — By making the "when, how, and how much" clear upfront, confusion around balance types and payout schedules is significantly reduced. * **Faster reconciliation** — Better exports and direct links between charges and payouts help merchants close their books faster. # Fee Breakdown Source: https://docs.hitpayapp.com/changelog/2026-02-10-fee-breakdown View a detailed breakdown of all fees applied to individual transactions in the HitPay dashboard. [← Back to Changelog](/changelog) # Fee Breakdown **February 10, 2026** Payment Methods ![Fee Breakdown](https://framerusercontent.com/images/a947stVucmYsjsTNbMTdq0ozloY.png) You can now view a detailed breakdown of all fees applied to a transaction. Instead of seeing a single fee amount, click "Fees breakdown" on any charge to see every fee applied listed separately. ### What's included * **Payment method fees** — The fixed fee and percentage fee for your payment method (e.g. PayNow, cards, wallets) listed separately * **Plugin fees** — If you're using an integration like Shopify or invoicing tools, those fees are shown as their own line item * **Currency conversion fees** — For cross-currency transactions, FX fees are broken out so you know exactly what the conversion costs * **Total fees** — A clear total at the bottom so nothing is a surprise ### How to access Navigate to any transaction in **Payments → Transactions**, then click the **"Fees breakdown"** link next to the HitPay fee amount. A panel will slide open with the full breakdown. # ShopeePay for Subscriptions (Philippines) Source: https://docs.hitpayapp.com/changelog/2026-02-12-shopeepay-for-subscriptions-philippines ShopeePay is now available as a payment option for subscriptions in the Philippines. [← Back to Changelog](/changelog) # ShopeePay for Subscriptions (Philippines) **February 12, 2026** Recurring Billing ![ShopeePay for Subscriptions](https://framerusercontent.com/images/Bj7YkKChlYuEtCGRaN0B6SqgTpI.png) This release introduces ShopeePay as a payment option for subscriptions in the Philippines. ### ShopeePay for Subscriptions We've expanded ShopeePay beyond one-time payments. You can now offer ShopeePay as an alternative payment method for subscriptions, giving your customers more flexibility at checkout. ### Learn more * [ShopeePay payment method](/payment-methods/shopeepay) # Mobile Invoicing Upgrade and Custom Fields Source: https://docs.hitpayapp.com/changelog/2026-02-13-mobile-invoicing-upgrade Enhancements to mobile invoicing, including support for custom fields on invoices. [← Back to Changelog](/changelog) # Mobile Invoicing Upgrade and Custom Fields **February 13, 2026** Invoicing ![Mobile Invoicing Upgrade and Custom Fields](https://framerusercontent.com/images/cCK3aEHqzC9NypgLXMChMY5I3a8.png) This release introduces a major invoicing upgrade on mobile, plus custom fields — bringing dashboard-level flexibility to your phone. ### Invoices on mobile Features that were previously only available on the dashboard are now on mobile. You can now: * Add product descriptions * Apply discounts at the product or subtotal level * Set late fees * Choose payment methods * Adjust invoice settings * Record cash payments ### Custom fields Add up to 3 custom fields (Text, Dropdown, Checkbox, and more) to invoices for things like PO Number, Salesperson, Project Code, Service Type, or internal approval references. Each field can be: * Marked as required * Set to show on the customer-facing invoice or remain internal only # QuickBooks Connection Source: https://docs.hitpayapp.com/changelog/2026-02-16-quickbooks-connection Connect HitPay to QuickBooks to automatically sync transaction data into your accounting software. [← Back to Changelog](/changelog) # QuickBooks Connection **February 16, 2026** Integrations ![QuickBooks Connection](https://framerusercontent.com/images/eE69C1iVkEV3jAEMjLYoB6iFA.png) Merchants can now connect HitPay to QuickBooks to automatically sync transaction data into their QuickBooks account. ### What's included * Sync charges to QuickBooks Charge Feed * Create QuickBooks invoices for successful HitPay charges * Auto-create customers in QuickBooks and link them to invoices ### How to access 1. Go to **HitPay Dashboard → Settings → Connections → QuickBooks → Connect** 2. Sign in to QuickBooks and approve access ### Learn more * [QuickBooks connection](/connections/quickbooks) # DuitNow QR Source: https://docs.hitpayapp.com/changelog/2026-03-05-duitnow-qr DuitNow QR is now live for all merchants globally — online and in-person. [← Back to Changelog](/changelog) # DuitNow QR **March 5, 2026** · Payment Methods ![DuitNow QR](https://mintcdn.com/hitpay/Fvt518c-WlkXj3vT/images/duitnowqr.png?fit=max\&auto=format\&n=Fvt518c-WlkXj3vT\&q=85\&s=6f27004a6a8db85808497c4ae7798b2c) DuitNow QR is now live for all merchants globally — online and in-person. ### DuitNow MY (Local) Powered directly by Touch 'n Go via a master merchant model, this is a major upgrade from the previous Razer integration, which had a 40% approval rate. DuitNow QR now delivers a 100% approval rate, better take rates, higher checkout conversion, and a growing non-card TPV share. * **Rates:** 1.2% (Online) / 1.2% (In-Person) * **Payouts:** HitPay Balance (T+2) * **Channels:** Online + POS / Quick Sale * **Onboarding:** Instant — auto-enabled for all business-verified MY merchants. No action needed. ### DuitNow XB (Cross-Border) SG, PH, and other non-MY merchants can now accept MYR payments via DuitNow QR — no redirect, just scan and pay from any DuitNow-linked Malaysian bank or e-wallet. * **Rates:** 2.3% (Online) / 1.5% (In-Person) * **Payouts:** HitPay Balance (T+3) * **Channels:** Online + POS / Quick Sale (Borderless QR) * **Onboarding:** Merchants can turn this on now via the Payment Methods page. Auto-enable for all existing and new business-verified merchants coming soon. ### Refunds Refunds are available for e-wallet transactions only. Transactions made via banking apps are not eligible for refunds. # Touch 'n Go for Subscriptions (Malaysia) Source: https://docs.hitpayapp.com/changelog/2026-03-16-tng-for-subscriptions-malaysia Touch 'n Go digital wallet is now supported as a payment option for subscriptions in Malaysia. [← Back to Changelog](/changelog) # Touch 'n Go for Subscriptions (Malaysia) **March 16, 2026** Recurring Billing ![Touch 'n Go for Subscriptions](https://framerusercontent.com/images/mW3VCyY9nQSbA9Qby9qP0lSSE.jpg) You can now accept Touch 'n Go for recurring payments, not just one-time payments. This release introduces Touch 'n Go as a payment option for subscriptions in Malaysia. ### Benefits * Leverage Touch 'n Go's strong brand trust and adoption in Malaysia * Offer a non-card option for subscriptions * Improve flexibility and potentially boost subscription conversion ### Merchant onboarding Automatically enabled for all verified Malaysian merchants. ### Learn more * [Touch 'n Go payment method](/payment-methods/touchngo#touch-n-go) # Touch 'n Go Online (Global Cross-Border) Source: https://docs.hitpayapp.com/changelog/2026-03-20-touch-n-go-xb-online SG, PH, and other non-MY merchants can now accept MYR payments via Touch 'n Go eWallet, with a redirect online experience. [← Back to Changelog](/changelog) # Touch 'n Go Online (Global Cross-Border) **March 20, 2026** · Cross-Border Payments ![Touch 'n Go XB Online](https://mintcdn.com/hitpay/jxUi7JS53yFPLf-5/images/tngxb.png?fit=max\&auto=format\&n=jxUi7JS53yFPLf-5\&q=85\&s=6d0f8cb480abbd5f79c993dcc60cd481) SG, PH, and other non-MY merchants can now accept MYR payments via Touch 'n Go eWallet, with a redirect online experience. This expands our APM coverage beyond DuitNow QR, capturing Touch 'n Go's large eWallet user base and giving cross-border merchants a direct, low-cost channel to capture Malaysian spending. * **Rates:** 1.9% (Online) * **Payouts:** Merchant's local currency, HitPay Balance (T+3) * **Channels:** Online only * **Refunds:** Available * **Onboarding:** Auto-enabled for all existing and new business-verified merchants globally. No action needed. # POS Keypad Calculator Source: https://docs.hitpayapp.com/changelog/2026-03-25-pos-keypad-calculator Perform quick arithmetic directly on the Android POS keypad without leaving the charge screen. [← Back to Changelog](/changelog) # POS Keypad Calculator **March 25, 2026** · In-Person Payments ![POS Keypad Calculator](https://mintcdn.com/hitpay/zSFSrz7qwW0siLCR/images/changelog/pos-keypad-calculator.png?fit=max\&auto=format\&n=zSFSrz7qwW0siLCR\&q=85\&s=d9525ccca6fe0ee51ffcfa4c738c26f3) The HitPay Android app now includes a built-in calculator on the POS keypad. Merchants can add, subtract, multiply, or divide amounts on the spot — no need to switch apps or do mental math mid-transaction. ### How it works A calculator button sits next to the "0" key on the keypad: * **Single tap** — toggles between `+` (addition) and `−` (subtraction). After entering numbers, the next tap resets to `+` * **Long press** — opens an operation picker with `+`, `−`, `×`, and `÷` As you type, the calculation history appears below the main amount (e.g., `1+2.50`), just like a standard calculator app. Once the calculation is complete, the result becomes the starting value for the next operation. ### Example | Action | Display | | - | - | | Type `1.00`, tap calculator | `1+` | | Type `2.50` | `1+2.50` → total: `3.50` | | Tap calculator again | `3.50+` | | Type `3.50` | `3.50+3.50` → total: `7.00` | ### Learn more * [Quick Sale](/pos/quick-sale) # Static QR on the HitPay App Source: https://docs.hitpayapp.com/changelog/2026-03-25-static-qr-on-mobile Merchants in Singapore and Malaysia can now view and manage their Static QR codes directly from the HitPay mobile app. [← Back to Changelog](/changelog) # Static QR on the HitPay App **March 25, 2026** · In-Person Payments ![Static QR on the HitPay App](https://mintcdn.com/hitpay/zSFSrz7qwW0siLCR/images/changelog/static-qr-on-mobile.png?fit=max\&auto=format\&n=zSFSrz7qwW0siLCR\&q=85\&s=bd907ce4a11aed1a80136c08a8c5b6aa) Merchants in Singapore and Malaysia can now view and manage all their Static QR codes directly from the HitPay mobile app. No dashboard or desktop login required. ### What's new * **Full QR list in the app** — Browse all your Static QR codes in one place, right from your phone * **Transaction history per QR** — Tap any QR code to see its full payment history for easy reconciliation and end-of-day checks * **Real-time audio alerts** — The app plays a payment sound the moment a transaction is confirmed, so you can keep serving customers without watching the screen * **Tablet and iPad support** — Full landscape mode means the app looks and works great on a counter or till tablet ### Availability Live on iOS for Singapore and Malaysia merchants using PayNow or DuitNow Static QR. Android support is coming soon. ### Learn more * [Static QRs](/static-qrs/static-qr) * [In-App Sound Notification](/static-qrs/soundbox-mobile) # ZaloPay & VietQR Source: https://docs.hitpayapp.com/changelog/2026-04-02-zalopay-vietqr Merchants can now accept VND payments via ZaloPay and VietQR across online, QR, and Recurring Billing channels. [← Back to Changelog](/changelog) # ZaloPay & VietQR **April 02, 2026** · Payment Methods ![ZaloPay & VietQR](https://mintcdn.com/hitpay/ZDaUieXltcRpbobs/images/changelog/zalopay-vietqr.png?fit=max\&auto=format\&n=ZDaUieXltcRpbobs\&q=85\&s=da960df03b306050e2d1008368ca79d1) Merchants globally can now accept VND payments via ZaloPay and VietQR. Both payment methods appear as separate options on the HitPay checkout, covering online redirect, QR-based in-person flows, and Recurring Billing — bringing HitPay into Vietnam's fast-growing \$47B digital payments market with a combined reach of \~21M users. ### Payment method details | | | | - | - | | **Payment Methods** | ZaloPay Wallet, VietQR | | **Currencies** | VND | | **Rate** | 3.35% | | **Payouts** | T+3 | | **Minimum Transaction** | 15,000 VND | | **Refunds** | Supported (including partial) | ### Supported channels * **Online** — redirect flow * **QR** — POS, Quick Sale, and Embedded QR API * **Recurring Billing** — supported ### For developers | Payment Method | Method Code | | - | - | | ZaloPay Wallet | `zalopay` | | VietQR via ZaloPay | `vietqr_zalopay` | ### Onboarding ZaloPay and VietQR require manual activation. Go to **Dashboard > Payment Methods** and turn on ZaloPay. You will need to complete a detailed onboarding form; submerchant details will be shared with our payment partner. ### Learn more * [VietQR & ZaloPay setup](/payment-methods/vietqrzalopay) # Zoho Books, Twilio, and NetSuite Integrations Source: https://docs.hitpayapp.com/changelog/2026-04-03-eo-integrations Connect HitPay to Zoho Books, Twilio, and NetSuite to sync transactions, automate messaging, and streamline accounting. [← Back to Changelog](/changelog) # Zoho Books, Twilio, and NetSuite Integrations **April 03, 2026** · Integrations ![Zoho Books, Twilio, and NetSuite Integrations](https://mintcdn.com/hitpay/s6ezMalwAUU3qGfn/images/changelog/eo-integrations.png?fit=max\&auto=format\&n=s6ezMalwAUU3qGfn\&q=85\&s=3c6b4b8545bc6898bd376be67d46bea5) HitPay now integrates with three new platforms: Zoho Books, Twilio, and NetSuite. These integrations help merchants automate accounting, sync transaction data, and communicate with customers more effectively. ### Zoho Books * Automatically sync sales data from HitPay to Zoho Books * Keep your accounting records up to date without manual entry ### Twilio * Send SMS and WhatsApp messages to customers after payments * Automate post-payment communication workflows ### NetSuite * Sync transactions directly to your NetSuite account * Streamline financial reconciliation across systems ### How to access 1. Go to **HitPay Dashboard → Integrations → Available** 2. Find Zoho Books, Twilio, or NetSuite and click **Connect** 3. Follow the on-screen steps to authorize and configure ### Learn more * [Zoho Books integration](/connections/zoho-books) * [Twilio integration](/connections/twilio) # Touch 'n Go Cross-Border for Subscriptions Source: https://docs.hitpayapp.com/changelog/2026-04-07-tng-xb-subscriptions Non-MY merchants can now accept Touch 'n Go for recurring payments from Malaysian customers, settling in their own currency. [← Back to Changelog](/changelog) # Touch 'n Go Cross-Border for Subscriptions **April 07, 2026** · Cross-Border Payments ![Touch 'n Go Cross-Border for Subscriptions](https://mintcdn.com/hitpay/kLcqFW_Gz74XPL7u/images/changelog/tng-xb-subscriptions.png?fit=max\&auto=format\&n=kLcqFW_Gz74XPL7u\&q=85\&s=bbd4240dc8a78f3973972ced889f7c34) Non-MY merchants can now accept Touch 'n Go (TnG) for recurring payments from customers in Malaysia. This extends TnG cross-border support to Recurring Billing, so you can tap into one of Malaysia's most widely used wallets without setting up a local entity or bank account. ### Benefits * Enter the Malaysian market instantly without a local entity or bank account * Accept payments in MYR while settling in your own currency * Tap into one of Malaysia's most widely used wallets with high customer trust * Increase conversion with a familiar local payment method at checkout * Reduce cross-border friction and failed payments compared to cards ### Payment details | | | | - | - | | **Rate** | 1.9% | | **Payouts** | Merchant's local currency via HitPay Balance (T+3) | ### Merchant onboarding Automatically enabled for all verified merchants. *** ### Small improvements **Online Store** * **Customise Name and Email Labels in Order Forms** — You can now customise the display labels for the built-in Name and Email fields in Order Form Customisation. These fields remain mandatory, but you can rename them (e.g. "Full Name", "Work Email") to better match your business needs. * **Footer Logo Visibility** — You can now show or hide your company logo in the online store footer, giving you more control over storefront branding. **Recurring Billing** * **Webhook for Failed Payments** — The `charge.failed` webhook now includes the failure reason and decline code when a payment fails (e.g. insufficient funds, card declined), so you can better inform customers and recover failed payments faster. Enable it under **Developers > Webhook Endpoints > charge.failed**. ### Learn more * [Touch 'n Go payment method](/payment-methods/touchngo) * [Recurring billing](/billing/subscriptions) * [Order form customisation](/store/order-form-customisation) * [Webhooks](/apis/guide/events) # Tap to Pay on iPhone Now Available in Malaysia Source: https://docs.hitpayapp.com/changelog/2026-04-22-tap-to-pay-iphone-malaysia Malaysian merchants can now accept contactless payments directly on iPhone with no additional hardware required. [← Back to Changelog](/changelog) # Tap to Pay on iPhone Now Available in Malaysia **April 22, 2026** · In-Person Payments ![Tap to Pay on iPhone](https://framerusercontent.com/images/SdZFw89H4UgRnvLx4T8mSMMaSV8.png?width=1024\&height=555) Tap to Pay on iPhone is now live for Malaysian merchants. Accept all types of contactless payments right on your iPhone — no additional hardware needed. ### What you can accept Accept contactless credit and debit cards, Apple Pay, and other digital wallets using just your iPhone and the HitPay app. No card readers or terminals required. ### No additional hardware There's no need to invest in extra hardware to get started. With just an iPhone and the HitPay app, any Malaysian merchant can begin accepting contactless payments right away. ### Privacy and security built in Tap to Pay on iPhone uses the built-in security and privacy features of iPhone. Apple doesn't store card numbers or PIN information on Apple servers, helping to protect your business and your customers' data. ### PIN transaction protection Transactions that require PIN entry will automatically prompt a PIN entry screen. During the transaction, Tap to Pay on iPhone prevents all photo, video, screenshot, and screen recording features from capturing a customer's card number or PIN. ### Learn more * [Tap to Pay on iPhone](/pos/readers/tap-to-pay-iphone) # Customer Detail Insights, Stripe Standard Connect, and POS Update Source: https://docs.hitpayapp.com/changelog/2026-05-12-customer-detail-insights See the full picture of each customer in one place, accept global card payments via Stripe Standard Connect, and a POS update removing manual card entry. [← Back to Changelog](/changelog) # May 12, 2026 Updates **May 12, 2026** · Platform · Payments · In-Person Payments *** ## Customer Detail Insights ![Customer Detail Insights](https://mintcdn.com/hitpay/YATl2pbs-1JfF3kW/images/changelog/customer-detail-insights.png?fit=max\&auto=format\&n=YATl2pbs-1JfF3kW\&q=85\&s=8c31cf37d1f748656a737ce64f818037) You can now see everything about a customer from their detail page. All related transactions, orders, invoices, and payment links are available in one view — alongside key metrics that give you a clearer picture of each customer's value. ### What you can see * **All activity in one view** — every transaction, order, invoice, and payment link linked to this customer * **Total transactions** — the cumulative value of all payments this customer has made * **Average order value** — this customer's average spend per transaction * **Visit frequency** — how often this customer makes a purchase No more switching between screens to piece together a customer's history. *** ## Stripe Standard Connect Migration Merchants outside Singapore, Malaysia, the Philippines, and Indonesia can now accept card payments through HitPay by connecting a Stripe Standard account — giving you direct access to Stripe's global payments infrastructure across 40+ countries. ### What changes with Standard Connect **Fees:** Stripe's standard processing rates apply directly to your account. HitPay charges 0.5% per transaction on top. You'll see HitPay's fees in your HitPay dashboard, and Stripe's fees in your Stripe dashboard. **Your Stripe Dashboard:** You get full access to your own Stripe account — view transactions, manage your balance, and configure your payout schedule directly in Stripe. **Fraud and disputes:** You manage fraud protection and disputes directly, and can set up your own Radar rules in Stripe to reduce risk. Merchants bear liability for fraud and disputes on direct charges. **Payouts:** Payouts are controlled by Stripe. Manage your balance and payout schedule directly in your Stripe Dashboard. ### What stays the same You can still accept online and in-person card payments through HitPay exactly as before. All existing HitPay products, transaction history, and other payment methods are not affected. ### Supported countries US, AE, AT, AU, BE, BG, CA, CH, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GI, GR, HK, HR, HU, IE, IN, IT, JP, LI, LT, LU, LV, MT, MX, NL, NO, NZ, PL, PT, RO, SE, SI, SK, TH. ### Action required for existing users If you currently accept card payments and are outside Singapore, Malaysia, the Philippines, and Indonesia, you need to complete this migration by **5 June 2026**. Card payments may be interrupted if the migration is not completed before this date. [How to connect your Stripe Standard account →](/connections/stripe/standard-connect) [Full migration guide →](/announcements/standard-connect-migration) *** ## Manual Card Entry Removed from POS Manual card entry is no longer available in the HitPay POS app. This change applies to all countries and is part of our ongoing effort to reduce fraud and chargeback risk for merchants. ### How to accept cards in person You can still accept card payments in person using any of the following: * **HitPay Terminal** — tap, insert, or swipe using your card terminal * **Tap to Pay** — accept contactless payments directly on your iPhone or Android device * **Payment Links or Scan to Pay** — share a payment link or QR code for customers to pay on their own device # Bukku Accounting Integration Source: https://docs.hitpayapp.com/changelog/2026-05-26-bukku-accounting-integration Connect HitPay to Bukku to automatically sync your sales, payments, and refunds. [← Back to Changelog](/changelog) # Bukku Accounting Integration **May 26, 2026** · Integrations ![Bukku Accounting Integration](https://mintcdn.com/hitpay/k-iyS5g3Kq1NY2Cx/images/changelog/bukku-accounting-integration.png?fit=max\&auto=format\&n=k-iyS5g3Kq1NY2Cx\&q=85\&s=23009dcaead86effe6d3ca782b3000a4) HitPay now connects directly with Bukku, one of Malaysia's leading accounting platforms. Once set up, your sales, payments, and refunds sync automatically to Bukku — no manual data entry or reconciliation needed. ### How to connect 1. Log in to your **HitPay Dashboard** 2. Go to **Others → Integrations** in the left navigation menu 3. Select the **Available** tab 4. Click **Accounting** 5. Select **Bukku** 6. Enter your **Bukku Company Subdomain** and **Bukku Access Token** 7. Complete the setup and start syncing transactions automatically ### Why connect Bukku * Automatically sync transactions to Bukku * Reduce manual bookkeeping errors * Track refunds and payouts easily * Choose between daily bulk summaries or individual transaction records * Secure direct connection with no complicated OAuth popups ### Flexible syncing options Choose the setup that works best for your business: * **Bulk Sync** — Combines daily transactions into one clean summary entry * **Individual Sync** — Creates a separate invoice record for every transaction You can also map your sales accounts, fees, refunds, and bank payout accounts directly to Bukku GL accounts. ### Built for Malaysian businesses The Bukku integration is a good fit for SMEs, e-commerce sellers, retail stores, agencies, service providers, and finance teams managing multiple clients. To generate your Bukku Access Token, go to your Bukku account settings under **API integrations**. ### Learn more * [Bukku integration setup](/connections/bukku) # ShopBack Pay Now Available In-Store Source: https://docs.hitpayapp.com/changelog/2026-05-26-shopback-pos-instore Singapore merchants can now accept ShopBack Pay at their physical POS counters using a merchant-presented QR flow. [← Back to Changelog](/changelog) # ShopBack Pay Now Available In-Store **May 26, 2026** · In-Person Payments ![ShopBack Pay Now Available In-Store](https://mintcdn.com/hitpay/k-iyS5g3Kq1NY2Cx/images/changelog/shopback-pos-instore.png?fit=max\&auto=format\&n=k-iyS5g3Kq1NY2Cx\&q=85\&s=0183cafa8e2494abba765cb06bf0d35a) HitPay merchants in Singapore can now accept ShopBack Pay at their physical store counters. Customers scan a QR code displayed on the HitPay POS terminal using the ShopBack app — no new hardware required. This uses a merchant-presented QR flow: the POS displays the QR, the customer scans and approves, and the payment confirms in real time. ### How it works 1. Customer reaches the checkout counter 2. Merchant taps **ShopBack Pay** on the HitPay POS 3. A QR code appears on the POS screen 4. Customer opens the ShopBack app, scans the QR, and confirms payment 5. POS shows payment confirmed ### Why it matters ShopBack has over 35 million users across Southeast Asia with strong reach among Singapore's millennial and Gen Z shoppers. Merchants can now offer ShopBack Pay (Buy Now, Pay Later) both online and in-store from a single HitPay account. * No new hardware needed — works with your existing HitPay POS setup * One dashboard for all ShopBack Pay transactions, online and offline * Real-time payment confirmation at the counter * Full and partial refunds available directly from the HitPay dashboard ### Pricing | | | | - | - | | Fixed fee | \$0.00 | | Rate | 5% per transaction | | Settlement | Per existing HitPay settlement terms | ### Limitations * Singapore only * Merchant-presented QR only (customer-presented QR not supported) * Minimum transaction: \$2.00 SGD * Maximum transaction: \$1,500.00 SGD ### Refunds Full and partial refunds are supported from the HitPay dashboard. Refunds are processed synchronously and the status updates immediately. ### Learn more * [POS payment methods](/pos/payment-methods) * [ShopBack Pay setup](/payment-methods/shopback) # Embed Alternative Payment Flows Directly in Your App Source: https://docs.hitpayapp.com/changelog/2026-06-05-embedded-payments-direct-link Direct link support for embedded payments, wallet top-up via DuitNow and QRPH, and a simplified recurring billing API. [← Back to Changelog](/changelog) # Embed Alternative Payment Flows Directly in Your App **June 5, 2026** · API ![Embed Alternative Payment Flows Directly in Your App](https://mintcdn.com/hitpay/aNb3s3sC6hpJEAb4/images/changelog/embedded-payments-direct-link.png?fit=max\&auto=format\&n=aNb3s3sC6hpJEAb4\&q=85\&s=7c3fc00655ef45eef4cca8ef5e669a59) Three updates this release: direct link support for embedded payment flows, wallet top-up for Malaysia and Philippines merchants, and a simplified recurring billing API. ### Direct links for embedded payment flows If you build on HitPay's API, you can now embed the full payment experience for alternative payment methods directly inside your own app or website, no redirect to HitPay's hosted checkout page required. Pass `generate_direct_link: true` when creating a payment request and you'll receive a ready-to-use URL pointing straight to the payment provider. Send customers directly to ShopeePay, GrabPay, Touch 'N Go, and other APMs from your own UI. [Try the embedded payments demo](https://embedded-payments-demo.vercel.app) to see QR code and direct link flows in action before you integrate. See the [full integration guide](https://docs.hitpayapp.com/apis/guide/embedded-qr-code-payments/domestic-qr) for implementation details. ### Wallet top-up via DuitNow and QRPH Merchants in Malaysia can now top up their HitPay MYR wallet balance via DuitNow, and merchants in the Philippines can top up their HitPay PHP wallet via QRPH. Wallet funds can be used to cover refunds and chargebacks. ### Recurring billing API update The `amount` field is no longer required when creating billing APM requests, and you no longer need to pass `customer_name`. This simplifies the setup for recurring billing flows. ### Learn more * [Embedded Payments Guide](/apis/guide/embedded-qr-code-payments/domestic-qr) * [Embedded Recurring Billing](/apis/guide/embedded-recurring-billing) # LINE Pay Source: https://docs.hitpayapp.com/changelog/2026-06-08-line-pay Merchants can now accept THB payments via LINE Pay across online, QR, and Recurring Billing channels. [← Back to Changelog](/changelog) # LINE Pay **June 08, 2026** · Payment Methods ![LINE Pay](https://mintcdn.com/hitpay/PJGjfn3yTv0Z_cdm/images/changelog/line-pay.png?fit=max\&auto=format\&n=PJGjfn3yTv0Z_cdm\&q=85\&s=789005b1e58b56727702d46dc899d67c) Merchants globally can now accept THB payments via LINE Pay, Thailand's most widely used mobile wallet with over 50 million users. The integration covers Online, In-Person (POS), Borderless QR and Recurring Billing — giving your Thai customers a fast and familiar checkout experience. ### Payment method details | | | | - | - | | **Payment Method** | LINE Pay | | **Currency** | THB | | **Rate** | 3.4% | | **Payouts** | T+5 | | **Refunds** | Supported (including partial) | ### Supported channels * **Online** * **In-Person (POS)** * **Borderless QR** * **Recurring Billing** ### For developers | Payment Method | Method Code | | - | - | | LINE Pay | `line_pay` | ### Onboarding LINE Pay requires manual activation. Go to **Dashboard > Payment Methods** and turn on LINE Pay. You will need to complete a detailed onboarding form; activation takes 5–7 business days. ### Learn more * [LINE Pay setup](/payment-methods/linepay) * [Cross-border payments](/payments/cross-border-payments) # AI Assistant Source: https://docs.hitpayapp.com/changelog/2026-06-17-ai-assistant Ask questions in plain language right inside the dashboard and get instant answers about sales, payments, and verification. [← Back to Changelog](/changelog) # AI Assistant **June 17, 2026** · AI ![AI Assistant](https://mintcdn.com/hitpay/bwrmGWXezz2WvLLw/images/changelog/ai-assistant.png?fit=max\&auto=format\&n=bwrmGWXezz2WvLLw\&q=85\&s=f252262fc161462411a926b150307bfa) Merchants can now ask questions in plain language right inside the dashboard. No more digging through menus or waiting on support for the basics. Open the AI Assistant from the top-right help menu (or press ⌘ J / Ctrl J) and ask things like: * **"How much did I make last week?"** — pulls real sales, transactions, payouts, and balances * **"Is WeChat Pay active?"** / **"Why was my card payment declined?"** — checks live payment-method status * **"What's my verification status?"** — shows where your KYB application stands * **"How do I set up a payment link?"** — explains the feature and takes you straight to the right page ### Built for safety The assistant is read-only and account-scoped. It can look things up and guide you around the dashboard, but it can't change settings or see another business's data. When something needs a human, it routes you to support. This release lays the foundation. We'll be expanding the assistant's capabilities over time based on how merchants actually use it. ### Availability The AI Assistant is only available to the owner or an admin of the business. # WeChat Pay for Philippines Source: https://docs.hitpayapp.com/changelog/2026-06-25-wechat-pay-ph Accept PHP payments from 1 billion WeChat users worldwide, settled directly to your PHP account or HitPay Balance. [← Back to Changelog](/changelog) # WeChat Pay for Philippines **June 25, 2026** · Payment Methods ![WeChat Pay for Philippines](https://mintcdn.com/hitpay/wzYFBz-essmhbVmA/images/changelog/wechat-pay-ph.png?fit=max\&auto=format\&n=wzYFBz-essmhbVmA\&q=85\&s=872f98d73588ebddf624a4b8cc3d0c21) Philippine merchants can now accept PHP payments from customers using WeChat Pay. This unlocks one of the world's largest digital payment ecosystems with over 1 billion users worldwide, helping you serve Chinese tourists and travelers with their preferred payment method while receiving settlements directly in PHP. ### Accept payments everywhere * Online checkout * In-Person (POS terminals) * Borderless QR codes ### Settlement and rates * Currency: PHP * Rate: 1.5% * Payout speed: T+1 to your PHP account or HitPay Balance * Refunds: Not supported ### Get started Enable WeChat Pay instantly: just click "Turn On" in your payment methods. No manual setup required thanks to our API-driven onboarding. ### Learn more * [WeChat Pay](/payment-methods/wechatpay) * [QR PH](/payment-methods/qrph) # HitPay MCP Server Source: https://docs.hitpayapp.com/changelog/2026-07-14-mcp-server Connect Claude, Cursor, and Codex to your HitPay business data over OAuth, no API keys needed. [← Back to Changelog](/changelog) # HitPay MCP Server **July 14, 2026** · AI ![HitPay MCP Server](https://mintcdn.com/hitpay/HKMH2GKufkeJ5d3o/images/mcp-server-directory.png?fit=max\&auto=format\&n=HKMH2GKufkeJ5d3o\&q=85\&s=0085a8dbe992e94b4759584d50f3e7d5) The HitPay MCP Server lets AI assistants like Claude, Cursor, and Codex connect to your HitPay account and query or manage your business in natural language. You sign in with your HitPay dashboard login over OAuth, so no API keys are involved. ### What you can do * Query sales summaries, top products, transactions, payouts, and account balances * Create payment links, invoices, products, and recurring plans * Ask things like "What were my total sales last month?" or "Create a payment link for SGD 49.90 for a consultation session" ### Security * OAuth 2.0 with PKCE, so your password is never shared with the AI assistant * Business-scoped tokens, available only to owners and admins * Read-only except for four create tools; no refunds, cancellations, or transfers * Rate limited to 30 requests per minute per business ### Learn more * [HitPay MCP Server guide](/apis/guide/mcp-server) * [Claude Code Plugin](/apis/guide/claude-code-plugin) * [Agent Skills](/apis/guide/ai-skills) # New HitPay Checkout Page Source: https://docs.hitpayapp.com/changelog/2026-07-21-checkout-v2 Checkout V2 is now the default checkout experience for all merchants — mobile-first, faster, and fully customisable. [← Back to Changelog](/changelog) # New HitPay Checkout Page **July 21, 2026** · Payment Links ![New HitPay Checkout Page](https://mintcdn.com/hitpay/9ogjU7PYKzxMWa80/images/changelog/checkout-v2.png?fit=max\&auto=format\&n=9ogjU7PYKzxMWa80\&q=85\&s=835a580798a8b2a64a1d2bf0224ecdc5) Checkout V2 is now the default checkout experience for all merchants. Built from the ground up to be faster, mobile-first, and more customisable than before. ### What's new * **Mobile-first design** — built for small screens with QR codes that fit perfectly and no awkward scrolling * **Smarter QR payments** — clear scan instructions, live countdown timer, and a proper expired state so customers always know what to do * **No fee surprises** — admin fees shown upfront before customers choose a payment method; the pay button displays the exact amount (e.g. Pay SGD 52.50) * **Branded checkout** — set your brand colour, light/dark mode, and choose to show your logo and business name or logo only * **Rich link previews** — checkout links generate previews when shared on WhatsApp, Telegram, and Slack, helping build customer trust and improve conversion * **Polished edge cases** — loading states, error messages, expired links, and timed-out sessions all refined ### Learn more * [Checkout Customisation](/payments/checkout-customisation) # Multi-Currency Products for POS Source: https://docs.hitpayapp.com/changelog/2026-07-21-multi-currency-pos-products Price your products in multiple currencies so overseas customers can pay in their local currency and payment methods. [← Back to Changelog](/changelog) # Multi-Currency Products for POS **July 21, 2026** · In-Person Payments ![Multi-Currency Products for POS](https://mintcdn.com/hitpay/FDe_1WKtgnvtfxsE/images/pos/multi-currency-products-hero.png?fit=max\&auto=format\&n=FDe_1WKtgnvtfxsE\&q=85\&s=f15f76aec05a01762e4fbc5d74fe29dd) You can now set individual prices for each product in multiple currencies. Overseas customers pay in their local currency using familiar payment methods like PayNow, QR Ph, and Touch 'n Go, while you always receive your payout in your home currency. ### How it works * Set a fixed price per currency on any product or variant — no exchange rate surprises * At checkout, switch the checkout currency to the customer's currency and the correct price is applied automatically * If no manual price is set for a currency, HitPay falls back to automatic real-time conversion ### Who it's for Multi-Currency Products is designed for merchants who sell across borders — popup events, cross-border markets, and multi-country operations. **Example:** A Malaysian merchant selling at a Singapore popup sets prices in both SGD and MYR. Filipino, Indonesian, and Thai customers can each pay in their own currency, while the merchant receives payouts in MYR. ### Availability Multi-Currency Products is currently available for Point of Sale only. It is not supported on the Online Store. ### Learn more * [Multi-Currency Products](/pos/multi-currency-products) * [Borderless QR](/pos/borderless-qr) # Recurring Payments Onboarding Source: https://docs.hitpayapp.com/changelog/2026-07-30-recurring-payments-onboarding Apply for recurring payments directly through your dashboard with transparent, method-specific requirements. [← Back to Changelog](/changelog) # Recurring Payments Onboarding **July 30, 2026** · Recurring Billing ![Recurring Payments Onboarding](https://mintcdn.com/hitpay/HBvj1mXy9g_RR1ss/images/changelog/recurring-payments-onboarding.png?fit=max\&auto=format\&n=HBvj1mXy9g_RR1ss\&q=85\&s=9ab434742d1941203db77545c2bb0c0a) You can now apply for recurring payments on select payment methods directly through your dashboard. See the requirements upfront for each method, apply for one-time payments, recurring, or both simultaneously — whatever your business needs. ### How it works * Choose which payment methods you want to enable for recurring * See exactly what you need to submit for each method * Apply, get approved, and start accepting recurring payments ### Learn more * [Recurring Billing](/billing/subscriptions) # Adaptive Pricing Source: https://docs.hitpayapp.com/changelog/2026-08-13-adaptive-pricing International customers now see your checkout in their local currency with local payment methods, while you still get paid out in your home currency. [← Back to Changelog](/changelog) # Adaptive Pricing **August 13, 2026** · Cross-Border Payments ![Adaptive Pricing](https://mintcdn.com/hitpay/twblX2pR5bemz-_c/images/changelog/adaptive-pricing.jpg?fit=max\&auto=format\&n=twblX2pR5bemz-_c\&q=85\&s=41ab82989d92d72b27328c35e7f49b04) Adaptive Pricing lets you sell to overseas customers without managing separate payment links per currency. HitPay automatically detects the customer's location and displays the amount in their local currency alongside local payment methods — you always receive your payout in your home currency. ### What's included * Auto-detects the customer's location and shows the amount in their local currency * Surfaces relevant local cross-border payment methods: DuitNow, PromptPay, QR Ph, and VietQR * Better conversion rates as customers pay in their local currency * Merchant always receives payout in home currency ### Availability Works on hosted checkout, payment links (one-time payments), and API-created payment requests. ### Who it's for Businesses selling online to overseas customers who want higher conversion at checkout — such as cross-border e-commerce, online course sellers, and regional service providers. ### How to get started 1. Go to **Settings > Payment Methods** and connect the cross-border payment methods you want to support. Partner review takes 3–5 business days. 2. Go to **Settings > Checkout Customisation > Adaptive Pricing** and turn on **Enable Adaptive Pricing**. 3. Save — all hosted checkout sessions will automatically activate adaptive pricing for international customers. ### Learn more * [Adaptive Pricing](/payments/adaptive-pricing) # Virtual Accounts Source: https://docs.hitpayapp.com/changelog/2026-08-28-virtual-accounts Receive local and international business payments into a dedicated account, available to businesses in Singapore and the Philippines. [← Back to Changelog](/changelog) # Virtual Accounts **August 28, 2026** · Finance ![Virtual Accounts](https://mintcdn.com/hitpay/f8TNnjlR1jKIJpMW/images/changelog/virtual-accounts.png?fit=max\&auto=format\&n=f8TNnjlR1jKIJpMW\&q=85\&s=aa66fcc3c0b63920762cad5ba198ac49) Virtual Accounts give your business a dedicated receiving account, issued in your registered name, for invoices, receivables, and B2B transfers. It's separate from customer facing checkout, but settles into the same HitPay Wallet, so business receivables and customer payments show up in one transaction ledger. ### What you can do * Receive local and international transfers into an account issued in your business's name, not a shared or pooled account * Accept 12 currencies in Singapore (SGD, USD, EUR, GBP, AUD, HKD, CNH, CAD, NZD, NOK, SEK, CHF) via FAST and SWIFT * Accept PHP in the Philippines via InstaPay and PESONet, settling in real time * Add Bank transfer as an invoice payment method, with transfers automatically matched to the right invoice by payment reference * Track everything in one place: customer payments and business receivables land in the same ledger, with a single reconciliation export ### How it works Every transfer received is collected into your Available HitPay Wallet, then paid out with the rest of your HitPay sales on your normal payout schedule. A Virtual Account is a collection method, not a place to hold funds. ### Availability Businesses registered in Singapore or the Philippines can activate a Virtual Account from the dashboard, no separate sign up or extra verification needed. Approval typically takes 1 to 3 business days. ### Learn more * [Virtual Accounts](/finance/virtual-accounts) * [Accept Bank Transfers on Invoices](/changelog/2026-09-01-invoice-bank-transfer) * [Invoice Basics](/invoicing/invoice-basics) # Accept Bank Transfers on Invoices Source: https://docs.hitpayapp.com/changelog/2026-09-01-invoice-bank-transfer Accept bank transfers directly on HitPay invoices with automatic reconciliation. [← Back to Changelog](/changelog) # Accept Bank Transfers on Invoices **September 1, 2026** · Invoicing ![Accept Bank Transfers on Invoices](https://mintcdn.com/hitpay/MXrBDVcC2qfH0UdE/images/changelog/invoice-bank-transfer.jpg?fit=max\&auto=format\&n=MXrBDVcC2qfH0UdE\&q=85\&s=28d45a6b457e98264497fc6a56659d01) You can now accept bank transfers directly on HitPay invoices. Customers can choose to pay via bank transfer or your existing online payment methods, giving them flexibility in how they settle invoices. ### What this means for you * More ways to get paid: Give customers the flexibility to choose how they pay * Better for larger and B2B payments: Customers can pay directly from their bank account * Pay anytime: Customers can download the invoice and make the bank transfer later when they're ready * Automatic reconciliation: Transfers are automatically matched to the correct invoice, reducing manual work ### Availability and pricing * Availability: SG businesses only * Price: S\$0.50 per SGD collection ### Learn more * [Virtual Accounts and Bank Transfers](/finance/virtual-accounts) * [Invoice Basics](/invoicing/invoice-basics) # WeChat Pay for Subscriptions (Singapore) Source: https://docs.hitpayapp.com/changelog/2026-09-09-wechat-pay-subscriptions Accept WeChat Pay for recurring payments, subscriptions, and memberships in Singapore. [← Back to Changelog](/changelog) # WeChat Pay for Subscriptions (Singapore) **September 9, 2026** · Recurring Billing ![WeChat Pay for Subscriptions](https://mintcdn.com/hitpay/HLuMU_dx4BYNZIk3/images/changelog/wechat-pay-subscriptions.png?fit=max\&auto=format\&n=HLuMU_dx4BYNZIk3\&q=85\&s=ff445c2e39c72b92e413acf90f334f35) WeChat Pay for recurring payments is now live in Singapore. You can now accept WeChat Pay for subscriptions, memberships, and other recurring services, expanding your payment method coverage for customers who prefer WeChat Pay. ### Why it matters * WeChat Pay reaches 1B+ users globally, with significant presence in Singapore * Expand subscriptions, memberships, and recurring services to customers who prefer paying with WeChat Pay * Reduce customer drop-off by enabling recurring payments without requiring customers to use a card * Increase payment method coverage for merchants targeting Chinese consumers in Singapore ### Get started Go to **Payment Methods → WeChat Pay → Enable Recurring Payments** and submit the required documents. ### Fees and payouts * Fee: 1.5% * Payout: HitPay Balance (T+1) ### Learn more * [WeChat Pay Setup](/payment-methods/wechatpay) * [Subscriptions and Recurring Billing](/billing/subscriptions) # Passkey login Source: https://docs.hitpayapp.com/changelog/2026-09-14-passkeys Sign in to the HitPay web dashboard with a passkey. [← Back to Changelog](/changelog) # Passkey login **September 14, 2026** · Security ![Passkey login](https://mintcdn.com/hitpay/aZKVfcvB0qNFtZ3J/images/setup/passkeys.png?fit=max\&auto=format\&n=aZKVfcvB0qNFtZ3J\&q=85\&s=7c85b767bf66d91b7818d1b08beac65f) Sign in to the HitPay web dashboard with a passkey. A passkey acts as 2FA, so there is no OTP. [Two-Factor Authentication](/setup/2fa#passkeys) # BillPay Source: https://docs.hitpayapp.com/changelog/2026-09-18-bill-pay Manage your entire supplier payment process in one place, from invoice capture to approval, payment, and reconciliation. [← Back to Changelog](/changelog) # BillPay **September 18, 2026** · Finance ![BillPay](https://mintcdn.com/hitpay/RI5EjiB6kEr_Sy5b/images/changelog/bill-pay-launch.png?fit=max\&auto=format\&n=RI5EjiB6kEr_Sy5b\&q=85\&s=b7af2a44d95f6bbab26747542467cfd1) You already use HitPay to get paid. Now you can pay your suppliers too. BillPay lets you manage your entire supplier payment process in one place: upload or forward invoices, automatically extract bill details with OCR and AI, approve and schedule payments, pay local or international suppliers, and reconcile everything with Xero. ### Why BillPay * Save hours on manual invoice data entry * Keep all your supplier details in one place * Pay local and international suppliers from the same workflow * Approve and pay multiple bills at once * Schedule payments for the date you choose * Get better control of your cash flow * Track every payment with a full timeline * Set up multi level approval workflows * Automatically sync payment records with Xero * Fund payments via bank transfer, PayNow, or QRPH ### Pricing There's no monthly subscription. You pay only when you make a transfer: * Singapore local transfers: S\$0.50 per transfer * Philippines local transfers: ₱15 per transfer * International payments from Singapore: competitive FX rate ### Who can use it BillPay is now available to HitPay merchants in Singapore and the Philippines. ### Learn more * [Bill Pay Overview](/finance/bill-pay/overview) * [Vendors](/finance/bill-pay/vendors) * [Payments & Scheduling](/finance/bill-pay/payments-scheduling) * [Xero Integration](/finance/bill-pay/xero-integration) # Custom Checkout Fields Source: https://docs.hitpayapp.com/changelog/2026-10-02-custom-checkout-fields Add your own fields to Payment Link checkout and collect answers alongside every payment. [← Back to Changelog](/changelog) # Custom Checkout Fields **October 2, 2026** · Payment Links ![Custom Checkout Fields](https://mintcdn.com/hitpay/yyZMc8aEXeec5GUR/images/changelog/custom-checkout-fields.jpg?fit=max\&auto=format\&n=yyZMc8aEXeec5GUR\&q=85\&s=211de135963774e121d82d7a96f3726b) You can now add your own form fields to Payment Link checkout. Customers fill them in as part of the payment flow, so everything can be collected in one place, with no separate form to reconcile afterwards. ### What this means for you * **Collect what you need**: Add up to 10 custom fields per link, such as t-shirt size, delivery notes, membership number, dietary preferences, or a Terms & Conditions acceptance checkbox. * **Flexible field types**: Text, long text, dropdown, checkbox, radio button, and date. * **Standard fields**: Toggle customer name, address, and phone number on or off for each link. * **No manual reconciliation**: Answers appear on the charge details page, with a dedicated responses view and CSV export for each Payment Link. * **Set once, reuse**: Set default fields in Payment Links Settings so every new Payment Link starts with them. You can still customise the fields for individual links. ### Getting started Go to **Payment Links > Settings > Custom Fields** to set your defaults, or add fields when creating or editing a Payment Link. ### Availability Available for Payment Links created through the dashboard. Custom fields are not supported on the Payment Request API. ### Learn more * [Custom Checkout Fields](/payment-links/payment-links#custom-checkout-fields) # BillPay on the HitPay MCP Server Source: https://docs.hitpayapp.com/changelog/2026-10-08-mcp-bill-pay Query BillPay bills and vendors from Claude, Cursor, Codex, and other MCP clients. [← Back to Changelog](/changelog) # BillPay on the HitPay MCP Server **October 8, 2026** · API ![HitPay MCP Server](https://mintcdn.com/hitpay/HKMH2GKufkeJ5d3o/images/mcp-server-directory.png?fit=max\&auto=format\&n=HKMH2GKufkeJ5d3o\&q=85\&s=0085a8dbe992e94b4759584d50f3e7d5) The [HitPay MCP Server](/apis/guide/mcp-server) now includes read tools for [BillPay](/finance/bill-pay/overview). If your business has BillPay, an AI assistant can list bills and vendors, look up a bill or vendor by ID, and share a dashboard link for bills that need approval. Submitting, approving, funding, and paying bills stay in the dashboard. Vendor bank details are not returned. ### BillPay tools * `list_bills` — bills, newest first, with optional filters * `get_bill` — one bill, including line items and approval progress * `list_vendors` — vendors the business pays * `get_vendor` — one vendor (no bank details) ### Learn more * [HitPay MCP Server guide](/apis/guide/mcp-server) * [BillPay](/finance/bill-pay/overview) # HitPay for Vercel Source: https://docs.hitpayapp.com/changelog/2026-10-20-hitpay-for-vercel Accept HitPay payments in your Vercel apps without copying API keys. [← Back to Changelog](/changelog) # HitPay for Vercel **October 20, 2026** · Integrations ![HitPay for Vercel](https://mintcdn.com/hitpay/WytL9VZOyl9gOF-H/images/apis/guide/vercel/overview.png?fit=max\&auto=format\&n=WytL9VZOyl9gOF-H\&q=85\&s=fa567f65297ccfc97c59520de35eef3f) Merchants and developers building on Vercel, including apps built with v0 and other AI coding tools, can now accept HitPay payments without copying API keys. You sign in to HitPay once, and Vercel gets the credentials your app needs. ### Two ways to set it up * **HitPay integration (recommended, free):** Install HitPay from the [Vercel Marketplace](https://vercel.com/integrations/hitpay), sign in to HitPay, pick your projects and redeploy. Vercel adds a HitPay token to those projects that can create and read payments. * **Vercel Connect:** For developers who need more than creating and reading payments, or who don't want a token stored in the project. You create your own HitPay app in App Builder and add a Vercel connector. Vercel bills Connect per token request. ### Good to know * You need a Vercel account and a HitPay account where you're an Owner or Admin. * It connects live HitPay accounts, so test payments are real. Use a small amount and refund it. * Webhook registration, virtual accounts, static QR codes and terminals still need a HitPay API key. * If v0 asks for `HITPAY_ACCESS_TOKEN`, skip that form, install the integration on the project and redeploy. ### Learn more * [HitPay for Vercel guide](/apis/guide/vercel) * [Connect Merchant Accounts (OAuth)](/platforms/oauth) # HitPay Terminal app for Shopify POS Source: https://docs.hitpayapp.com/changelog/2026-10-20-shopify-pos-terminal Send Shopify POS sales to your HitPay terminal, and the Shopify order is marked paid automatically. [← Back to Changelog](/changelog) # HitPay Terminal app for Shopify POS **October 20, 2026** · In-Person Payments ![HitPay Terminal app for Shopify POS](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/flexipos.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=9e3f9702fb8a69c4c97872847d45f72c) Shopify POS merchants can now send each sale straight to their HitPay terminal. Customers pay by card or a local QR method like PayNow, DuitNow, QR Ph or GCash, and the Shopify order is marked paid and linked to its HitPay payment automatically. The app is in beta. ### What you can do * Take card and QR payments on a HitPay terminal from Shopify POS checkout * Match every HitPay payment to its Shopify order, using the order number as the payment reference * Refund a payment from the Shopify order, back to the customer through HitPay * Copy customers you add to the order into your HitPay customers, and email them HitPay's receipt ### Supported terminals * WisePOS E * FlexiPOS (S700 and S710) * HitPay All-in-One Ingenico S1F2 and DX4000 * Verifone V660P ### Requirements * A live, verified HitPay account * A Shopify store currency that matches your HitPay account currency ### How to get it The app isn't listed in the Shopify App Store. Register your store's `.myshopify.com` domain with the [registration form](https://forms.gle/qUR1XpWujwbyC4t8A), and HitPay sends you an install link. The [Shopify POS guide](/plugins/shopify-pos) has a video that walks through setup and taking a payment. ### Learn more * [Shopify POS guide](/plugins/shopify-pos) * [Terminals and devices](/pos/readers/overview) # Admin Fees for Point of Sale Source: https://docs.hitpayapp.com/changelog/2026-10-21-pos-admin-fees Pass payment processing fees on to customers for in-person payments made with HitPay Point of Sale. [← Back to Changelog](/changelog) # Admin Fees for Point of Sale **October 21, 2026** · In-Person Payments ![Admin Fees for Point of Sale](https://mintcdn.com/hitpay/v7KuLHsxaSTGqgHq/images/payments/admin-fees.png?fit=max\&auto=format\&n=v7KuLHsxaSTGqgHq\&q=85\&s=c30a073db3f05a01249f076687e98306) Admin Fees (Pass-the-Fees) now work for HitPay Point of Sale. Merchants can add a percentage fee to in-person payments based on the payment method the customer uses, with the same settings they already use for online checkout. ### How it works * Set a fee percentage for each payment method you want to pass fees on for * Choose **Point of Sale** as a sales channel, alongside channels such as Payment Links, Invoices, and the Online Store * The fee is added to the final amount the customer pays * HitPay transaction fees are calculated on the final amount, after the admin fee is added ### Set it up 1. Go to **Settings > Checkout Customization**. 2. Open the Pass-the-Fees settings. 3. Select the payment methods and enter the fee percentage. 4. Select **Point of Sale** as a sales channel. 5. Enter the text you want customers to see, then click **Save**. ### Restrictions * Admin fees can't be applied to PayNow payments, in line with the Association of Banks in Singapore (ABS) guidelines. * Admin fees aren't available for businesses in the Philippines. To add a manual surcharge from the HitPay app at checkout instead, use [POS surcharges](/pos/surcharge). ### Learn more * [Admin Fees](/payments/admin-fees) * [POS surcharge](/pos/surcharge) # Larger Logos at Checkout Source: https://docs.hitpayapp.com/changelog/2026-10-26-checkout-logo-size Choose a Standard, Large or Featured logo size so your brand stands out on the HitPay checkout page. [← Back to Changelog](/changelog) # Larger Logos at Checkout **October 26, 2026** · Payment Links ![Larger Logos at Checkout](https://mintcdn.com/hitpay/aWCuB2F7VHnUWQIp/images/payments/checkout-customisation-themes.png?fit=max\&auto=format\&n=aWCuB2F7VHnUWQIp\&q=85\&s=de8cfc15ce5b259ee522685cf13a093f) Your logo can now take up more room on the checkout page. Pick a logo size in Checkout Customisation and it applies everywhere customers pay you through HitPay checkout, including Payment Links, Invoices and the Online Store. ### Logo sizes * **Standard**: A small logo at the top of the page. Nothing changes unless you pick another size. * **Large**: A bigger logo at the top of the page * **Featured**: A prominent logo centred above the payment amount Logos are scaled down on mobile so they fit smaller screens, and wide logos such as wordmarks are shown slightly smaller under **Featured** so they don't crowd the page. ### Set it up 1. Go to **Settings > Checkout Customisation > Themes**. 2. Upload your logo under **Upload Logo**, if you haven't already. 3. Under **Logo size**, choose **Standard**, **Large** or **Featured**. 4. Click **Save**. ### Learn more * [Checkout Customisation](/payments/checkout-customisation#logo) # Bukku Sync Source: https://docs.hitpayapp.com/connections/bukku Sync your sales, processing fees, and refund data from HitPay to Bukku ## Overview The HitPay Bukku integration automatically syncs your sales, processing fees, and refund data from HitPay to Bukku. This keeps your books up to date without manual data entry — no complicated OAuth popups, just a direct and secure connection. ### What Gets Synced * **Sales** — Each charge is recorded as an Invoice and Payment in Bukku * **Processing Fees** — HitPay fees are mapped to your chosen GL account * **Refunds** — Refunds are tracked and mapped to your chosen GL account ### Key Features * Two sync modes: **Bulk** (daily summary) or **Individual** (per charge) * Map your own Bukku GL accounts for sales, fees, refunds, and payouts * Secure direct connection using your Bukku Access Token * Built for Malaysian businesses *** ## Prerequisites Before connecting, make sure you have: 1. An active **HitPay** account 2. An active **Bukku** account 3. Your **Bukku Company Subdomain** (e.g., `yourcompany` from `yourcompany.bukku.my`) 4. A **Bukku API Access Token** — generate this from **Control Panel → Integrations → Turn ON API Access** in your Bukku account *** ## Connecting Bukku 1. In your HitPay dashboard, go to **Integrations** from the left navigation menu. 2. Click the **Available** tab, then select **Accounting**. 3. Click the **Bukku** card. ![HitPay Integrations page showing the Accounting section with Bukku](https://mintcdn.com/hitpay/Aeya30DKO2mywl2o/images/connections/bukku-integrations-page.png?fit=max\&auto=format\&n=Aeya30DKO2mywl2o\&q=85\&s=6d45696e42e99859e376cc1a3231353a) 4. Enter your **Company Subdomain** — this is the prefix of your Bukku URL (e.g. if your URL is `mycompany.bukku.my`, enter `mycompany`). 5. Enter your **Access Token** — generate this from your Bukku account under **Control Panel → Integrations → Turn ON API Access**. 6. Click **Connect to Bukku**. ![Connect to Bukku form showing Company Subdomain and Access Token fields](https://mintcdn.com/hitpay/Aeya30DKO2mywl2o/images/connections/bukku-connect.png?fit=max\&auto=format\&n=Aeya30DKO2mywl2o\&q=85\&s=46085776c381dde568e227e68b185622) *** ## Configuring Sync Settings After connecting, configure how data syncs to Bukku before enabling sync. 1. On the Bukku integration page, open the **Settings** modal. 2. **Map your accounts.** Select the Bukku GL accounts that HitPay should use for each type of transaction: | Setting | Purpose | | - | - | | **Sales Account** | Records your sales revenue | | **Fee Account** | Records HitPay processing fees | | **Refund Account** | Records refund entries | | **Bank Payout Account** | Tracks settlements to your bank account | 3. **Choose your Invoice Grouping mode:** * **Bulk** *(default)* — Combines all transactions from each day into one clean summary. Best for high-volume businesses that prefer a summarized view. * **Individual** — Creates a separate invoice record for every transaction. Best for businesses that need per-transaction detail in Bukku. 4. **Enable the sync toggle** to start syncing data to Bukku. 5. Click **Save** to apply your settings. > [!WARNING] > > Only charges created **after** sync is enabled will be synced. Historical charges are not retroactively synced. *** ## Disconnecting Bukku 1. On the Bukku integration page, click the **Disconnect** button. 2. A confirmation dialog will appear. Click **Disconnect** to confirm. Your sync history will be preserved after disconnecting. You can reconnect at any time. *** ## Important Notes * **Only future charges are synced.** Syncing begins from the moment you enable sync. Past charges are not retroactively synced. * **Re-enabling sync after disabling** only syncs new charges going forward. Charges that occurred while sync was off are skipped. * **One HitPay business connects to one Bukku account.** Each business account requires its own Bukku connection. *** ## FAQs > **Where do I find my Bukku Access Token?** > > Log in to your Bukku account, then go to **Control Panel → Integrations** and turn on **API Access**. Your access token will be displayed there. > **Why are some charges missing in Bukku?** > > Check the following: > > 1. **Sync is enabled** — Verify the sync toggle is turned on in Settings. > 2. **Charge timing** — Only charges created after sync was enabled are synced. Charges from before that date are not included. > 3. **Last sync time** — Check the "Last Sync" timestamp on the integration page. If the last sync was before the charge was created, wait for the next automatic sync or trigger a manual sync. > **What is the difference between Bulk and Individual sync?** > > **Bulk** combines all transactions from a given day into one daily summary entry in Bukku, which is ideal for businesses with high transaction volumes. **Individual** creates a separate record for each transaction, giving you per-transaction visibility in your Bukku account. # Cal.com Source: https://docs.hitpayapp.com/connections/cal Integrate Cal.com with HitPay to manage bookings and accept payments. ## Overview Easily manage bookings for services like workshops, consultations, and fitness classes with Cal.com integration. Support both in-person and virtual appointments, sync with Google Calendar, and let customers book directly through a dedicated page. Payments are processed through HitPay, and you can embed the booking page in your online shop for a seamless experience. ### Setup Steps 1. **Create Your Cal.com Account** * Go to [cal.com](https://cal.com) and sign up for a free account. ![Create Account](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/cal/cal_create_account.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ef4fc5d66d71a282cc6bbac45bbc4db3) 2. **Install HitPay in [cal.com](https://cal.com)** * Go to the [HitPay app on Cal.com](https://cal.com/apps/hitpay). * Click on **Install App** to connect HitPay with your Cal.com account. 3. **Retrieve Your API Key and Salt from HitPay** * Open your HitPay dashboard, navigate to **Developers > API and Salt Keys.** * Copy the **API Key** and **Salt** values, which will be used to authenticate your account in Cal.com. * **Important**: Keep these keys secure and do not share them publicly. ![APIs Keys](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/cal/api_keys.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=29c7ed5a196258331cb5918d62a27872) 4. **Enter Your API Key and Salt in [cal.com](https://cal.com)** * Return to [HitPay app on Cal.com](https://cal.com/apps/hitpay/setup). * Paste the **API Key** and **Salt** values you copied from HitPay. ![Account Information](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/cal/account_information.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=d4a162370dc364024f57afcd148d6b62) 5. **Optional - Sync with Google Calendar and Virtual Meeting Apps** * To sync with a calendar, connect your **Google Calendar** to automatically reflect your availability. * For virtual appointments, connect to **Google Meet** or other supported platforms for seamless virtual meetings. 6. **Set Up Your Event in [cal.com](https://cal.com)** * Go to **Event Types** and select **Create New Event**. * Enter event details such as the **Title**, **Duration**, and **Availability**. Configure any advanced settings as needed. 7. **Enable HitPay for Payments and Set Pricing** * Within your event setup, go to the **Apps** section and enable **HitPay** for payment processing. * Set a currency and price for the event, allowing customers to book and pay directly. 8. **Share or Embed Your Booking Page** * To share your booking page with customers: * Go to dashboard and click **Copy Public Page Link** to provide a link displaying all your booking options. * To embed the event on your online store: * Click the three dots next to the event, select **Inline Embed**, and copy the embed code. * In the HitPay dashboard, go to **Online Shop > Store Design > Sections > Embed Code** and paste the code to integrate booking directly into your online shop. ![Booking Online Store](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/cal/booking_online_store.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=65ca2fecff6dffd131941e3a19429932) #### Customer Booking Experience 1. **Booking a Session** * When customers visit the booking page, they can select their preferred date and time, fill in their details, and click **Pay to Book**. 2. **Payment Process** * After clicking **Pay to Book**, customers will be redirected to the HitPay checkout page to complete their payment. 3. **Booking and Payment Confirmation** * Upon successful booking and payment, customers will receive confirmation, and you will see the booking details in the **Booking Table** within [cal.com](https://cal.com). #### Viewing Bookings and Payments * **View Bookings**: All bookings will appear in the **Booking Table** within [cal.com](https://cal.com/bookings/upcoming). * **View Payments**: Payments can be tracked on your HitPay dashboard under **Transactions** or in your online shop under **Bookings**. ## FAQs > **Can I embed my booking page with HitPay payment integration using Cal.com?** > > Currently, the HitPay payment integration for embedded booking pages is only available on [cal.hitpayapp.com](https://cal.hitpayapp.com). To use this feature, please create your account on this site. > The HitPay payment embed functionality will soon be available on the main Cal.com platform. > **Can I customise the appearance of the booking page?** > > Basic customisation options are available directly on Cal.com. > **Can I manage bookings directly from HitPay?** > > No, booking management (e.g., rescheduling, cancellations) must be handled through Cal.com. Only payment details are accessible on the HitPay dashboard. > **How do I process a refund if a customer cancels their booking?** > > If a customer cancels their booking, you will need to manually process the refund. Go to your HitPay dashboard, navigate to **Transactions**, find the relevant transaction, and issue the refund from there. Refunds are not processed automatically for canceled bookings. # Eber Source: https://docs.hitpayapp.com/connections/eber Sync your HitPay POS with Eber's Loyalty Engagement Software # Overview The HitPay x Eber integration allows you to run a full loyalty program directly from your HitPay POS. Reward points, redeem vouchers, and apply discounts seamlessly no extra steps required for you or your customers. # What is Eber? ([Eber](https://eber.co/partnership-intro/?utm_source=hitpay)) is powerful cloud-based loyalty and marketing platform built to help your business engange and retain customers. It will help you with : * Growing your member base * Driving repeat purchases * Boosting revenue with loyalty # Prerequisites Before starting, ensure you have: * A verified HitPay account * A paid Eber account ([sign up here](https://eber.co/partnership-intro/?utm_source=hitpay)) # Integration Guide ## Step 1) Add your Eber API keys onto the HitPay dashboard [1) How to Integrate HitPay POS with Eber](https://app.supademo.com/embed/cmf1ycf12000l39ozmotpvfcj?embed_v=2\&utm_source=embed) ## Step 2) Configure HitPay discounts & Eber rewards [2) How to sync HitPay discounts with Eber rewards](https://app.supademo.com/embed/cmf0xghdg9q08v9kqh86gqtd9?embed_v=2\&utm_source=embed) ## Step 3) Start Rewarding Customers [3) Complete Checkout with Eber x HitPay](https://app.supademo.com/embed/cmf0vyxky02qyw70ilrozai2v?embed_v=2\&utm_source=embed) # Expected Customer Experience * New members will need to register via your hosted Eber customer portal * Members that are available on the list of your Eber portal will be visible when clicking "Add customer via Eber" on the HitPay POS. * Cashiers need to look up customer by name, email or phone number * Customers earn points for every eligible transaction. * Refunds automatically reverse awarded points or restore redeemed rewards. # Setting up your Eber account & points / loyalty programme To set up your loyalty programme, you will have to create a Eber account and set up the membership & points configuration there. Here are some guides that will help you : * [How to set up membership on Eber](https://knowledge.eber.co/en/collections/3807546-membership) * [How to set up points on Eber](https://knowledge.eber.co/en/collections/3791255-points) * [How to set up customer portal on Eber](https://knowledge.eber.co/en/collections/3807556-customer-portal) * [How to set up welcome email / sms on Eber](https://knowledge.eber.co/en/collections/11432495-activity-messages) For more information please contact the Eber support team. # Supported Reward Types Currently, the integration only supports the following discount types. * Percentage discounts (e.g. 10% off first purchase) * Fixed amount discounts (e.g. $2 or $10 off) ## FAQs > **Is the customer loyalty feature paid or free?** > > HitPay doesn't charge any additional fee to integrate with Eber, however you will need to purchase a subscription plan with Eber directly. More details about their pricing ([here](https://eber.co/pricing)) > **Where is customer data stored?** > > Customer data is stored in Eber, where the members list will be the source of truth. Discount and voucher data is created in HitPay and synced to Eber. > **What happens with refunds?** > > Points or rewards redeemed are automatically reversed. > **How do I import existing customer data from HitPay to Eber?** > > You can export customers from HitPay by going to customers > Export → Import into Eber. # Make.com Source: https://docs.hitpayapp.com/connections/make Automate payments, refunds, and order workflows seamlessly with HitPay on Make.com. This guide will walk you through connecting your HitPay account to Make.com, enabling you to automate payment workflows, order management, and business operations with ease. With the HitPay Make App, you can build custom workflows (called scenarios) that trigger actions in response to payment events — for example, automatically sending receipts, updating your CRM when a charge is created, or notifying your team when a refund is processed. Whether you’re a developer integrating deeply or a business owner looking to simplify operations, this guide will help you get started quickly. ## About HitPay on Make HitPay is now available as a public integration on [Make.com](https://www.make.com/en/integrations/hitpay), enabling you to connect HitPay with thousands of popular apps & services to automate and streamline your payment and order workflows. With the HitPay app on Make, you can build powerful visual automations that trigger based on payment events, update your systems in real time, and eliminate repetitive manual tasks — all without writing a single line of code. Visit [Make’s pricing page](https://www.make.com/en/pricing) to learn more about their available plans and features. ![Make.com](https://mintcdn.com/hitpay/_-vyzUOkdTQI4EiG/images/Make.png?fit=max\&auto=format\&n=_-vyzUOkdTQI4EiG\&q=85\&s=5a0dd5abe8b6fbc16bc9576a11c854c6) ## Before You Start Before creating your first scenario, make sure you have: * A **HitPay account** — sign up at [www.hitpayapp.com](https://www.hitpayapp.com) * Your **HitPay API key** (found in your dashboard under *Developers → API Keys*) * A **Make.com account** — create one at [make.com](https://www.make.com) ## Connecting HitPay to Make.com **1. Sign in or Create a HitPay Account** If you don’t already have one, create your HitPay account on [hitpayapp.com](https://www.hitpayapp.com).\ Once logged in, go to your **Dashboard → Developers → API Keys** to generate your API key.\ You’ll use this key to authenticate your HitPay connection in Make. ![API Key](https://mintcdn.com/hitpay/_-vyzUOkdTQI4EiG/images/ApiKeyMake.png?fit=max\&auto=format\&n=_-vyzUOkdTQI4EiG\&q=85\&s=be2412fe5644a7aa4c0e8e5e8789c530) ⚠️ **Keep your API keys secure** — never share them publicly. **2. Connect HitPay to Make.com via API Key** 1. In Make, create a new **Scenario** (or open an existing one). 2. Add a **HitPay module**. 3. Select your preferred **Trigger** or **Action** (for example, *Create Payment Request*). 4. When prompted, click **Create a connection** to authenticate. * For triggers, you’ll need to click **Create a Webhook** first before the connection step appears. 5. Enter your **API Key**, then choose whether to connect to the **Production** or [**Sandbox**](https://docs.hitpayapp.com/apis/guide/sandbox) environment. ![Connect Account](https://mintcdn.com/hitpay/_-vyzUOkdTQI4EiG/images/MakeConnection.png?fit=max\&auto=format\&n=_-vyzUOkdTQI4EiG\&q=85\&s=bf71209a7091265193a704973cef4ac0) Click **Save** to confirm and establish your connection. **3. Set Up Webhooks for Triggers** Triggers in Make start your scenario whenever a specific event occurs in HitPay — for example, when a payment is created or an order is updated. To set up a webhook: 1. Create or open a scenario and select a **HitPay Trigger module** (e.g. *Watch Invoices Created*). 2. When prompted, click **Create a Webhook**. 3. Give your webhook a name for easy reference. 4. Save your scenario to activate it. ![Create WebHook](https://mintcdn.com/hitpay/_-vyzUOkdTQI4EiG/images/MakeWebhook.png?fit=max\&auto=format\&n=_-vyzUOkdTQI4EiG\&q=85\&s=ce58096708d8f814afbce66e6db04d17) Once set up, Make will automatically listen for new events from your HitPay account. ## Available Triggers and Actions ### Triggers (Start your automation) All HitPay triggers on Make are instant — they fire the moment the event occurs and sends data to your scenarios via webhook. These events in HitPay can start your Make scenarios: * **Watch Charges Created**: Triggers when a payment is successfully completed. * **Watch Invoices Created**: Triggers when a new invoice is created. * **Watch Orders Created**: Triggers when an order is created successfully. * **Watch Payouts Created**: Triggers when a payout is successfully completed. * **Watch Updated Charges**: Triggers when a payment is refunded/partially refunded. * **Watch Updated Invoices**: Triggers when an invoice is marked as paid or partially paid. * **Watch Updated Orders**: Triggers when an order status is updated. ### Actions (Tasks HitPay can perform) You can also perform these actions in HitPay through Make: * **Create Payment Request**: Creates a payment request & generates a new payment link. * **Delete Payment Request**: Deletes a payment request. * **Get Payment Request Details**: Retrieve details of the specified payment request. * **Make an API Call**: Performs an arbitrary authorized API call - this can be used to access HitPay endpoints that aren't available in Make yet. * **Refund Payment**: Process a refund for a specific transaction. * **Update Payment Request**: Updates an existing payment request. ## Example Workflows Here are some popular ways businesses use HitPay with Make.com: ### 1. Send Thank You Emails * **Trigger:** Charge/Payment Created in HitPay * **Action:** Send Email in Gmail or Mailchimp * Automatically thank customers after successful payments. ### 2. Log Payments in Google Sheets * **Trigger:** Charge/Payment Created in HitPay * **Action:** Add a Row in Google Sheets * Keep a live record of all transactions in a spreadsheet. ### 3. Notify Your Team * **Trigger:** Charge/Payment Created in HitPay * **Action:** Send a Message in Slack or Microsoft Teams * Instantly alert your team when new payments are received. ### 4. Sync with Accounting * **Trigger:** Charge/Payment Created in HitPay * **Action:** Create an Invoice in Xero or QuickBooks * Easily sync all new payments into your accounting system. ### 5. Update CRM Contacts * **Trigger:** Charge/Payment Created in HitPay * **Action:** Create or Update a Contact in HubSpot * Keep customer data up to date automatically. ## Tips & Best Practices * ✅ **Test before activating** — Test and run your scenarios with sample data before turning them on. * 🔎 **Use filters** — Limit automations to only specific transactions, amounts or conditions. * 🏷️ **Label your scenarios** — Helps you stay organized as your automations grow. * 🚨 **Enable error notifications** — Set up error notifications to get alerts if any step fails. * ♻️ **Review regularly** — Update your automations periodically as your business evolves. ## Troubleshooting If something isn’t working as expected: * Double-check that your **API Key** is valid. * Ensure your webhook is **active** and properly linked. * Try re-authenticating your HitPay connection in Make. * Check HitPay’s API status or logs for recent activity. For persistent issues, contact: * **HitPay Support:** [support@hitpayapp.com](mailto:support@hitpayapp.com) * **Make Support:** [help.make.com](https://www.make.com/en/help) ## Support and Resources * 📘 **HitPay API Docs:** [https://docs.hitpayapp.com](https://docs.hitpayapp.com) * 💬 **Make Help Center:** [https://www.make.com/en/help](https://www.make.com/en/help) * ✉️ **HitPay Support:** [support@hitpayapp.com](mailto:support@hitpayapp.com) * 👥 **Make Community:** You can also connect with other Make users in the [Make Community](https://community.make.com/) *** ## You’re All Set! Once you’ve successfully connected HitPay with Make.com, your HitPay account is now linked with thousands of other apps, allowing you to automate your payment, order, and customer workflows effortlessly. Start building — and watch your business run itself. 🚀 # QuickBooks Sync Source: https://docs.hitpayapp.com/connections/quickbooks Sync your sales, processing fees, and refund data to QuickBooks Online ## Overview The HitPay QuickBooks integration automatically syncs your sales, processing fees, and refund data from HitPay to QuickBooks Online. This keeps your books up to date without manual data entry. ### What Gets Synced Each of the following items only syncs when its corresponding account is configured in your settings. You can choose to sync all of them, or only the ones relevant to your bookkeeping workflow. | Item | Requires | Description | | - | - | - | | **Sales (Invoices)** | Sales Account | Each charge creates an invoice (individual mode) or charges are grouped into a daily invoice per currency (bulk mode) | | **Payments** | Sales Account + Clearing Account (Bank) | Payments are recorded against invoices and deposited into your selected clearing account. If no clearing account is configured, payments are still created but without a deposit account. | | **Processing Fees** | Fee Account + Clearing Account (Bank) | HitPay processing fees are recorded as expenses paid from your clearing account | | **Refunds (Credit Memos)** | Refund Account | Refunded charges create credit memos linked to the original invoice | | **Payouts** | Clearing Account (Bank) + Payout Account | Transfers from HitPay clearing to your bank account | > [!TIP] > > If you only configure a Sales Account, HitPay will sync invoices and payments but skip fees and refunds. Add more accounts as needed — you can update your settings at any time. *** ## Prerequisites 1. A **QuickBooks Online** account (any plan — Simple Start, Essentials, or Plus) 2. A **HitPay** business account with admin access That's it. Account mappings are configured during setup. A **Sales Account** and a **Default Item** are required to enable sync; everything else is optional — you decide which accounts to map based on what you want to sync. *** ## Connecting QuickBooks 1. In your HitPay dashboard, go to **Others > Integrations**. 2. On the **Available** tab, find the **QuickBooks Online** card under the Accounting category and click it. Then, click **Connect to QuickBooks**. ![HitPay QuickBooks](https://mintcdn.com/hitpay/8IOdKFqJwU7jcYCq/images/quickbooks/quickbooks-connect-button.png?fit=max\&auto=format\&n=8IOdKFqJwU7jcYCq\&q=85\&s=40fe5a05da6a9866850ea7526bc81d5f) 3. A popup window will open prompting you to sign in to your QuickBooks account and authorize HitPay. 4. After authorizing, close the popup. HitPay will confirm the connection — you will see your QuickBooks company name and connection status on the integration page. ![HitPay QuickBooks](https://mintcdn.com/hitpay/8IOdKFqJwU7jcYCq/images/quickbooks/quickbooks-home-connected.png?fit=max\&auto=format\&n=8IOdKFqJwU7jcYCq\&q=85\&s=cc3e84b2cb234984af14699e30a913b4) > [!NOTE] > > Each QuickBooks company can only be connected to one HitPay business. If the company is already connected elsewhere, you'll see an error message. *** ## Configuring Sync Settings After connecting, click **Settings** to configure your sync preferences. ### Invoice Grouping | Mode | Description | | - | - | | **Bulk** *(default)* | Groups all charges into one invoice per day per currency. Line items are broken down by payment method. Best for high-volume businesses. | | **Individual** | Creates a separate invoice for each charge, with a QuickBooks customer created per HitPay customer. Best for businesses that need per-transaction detail. | ### Sales Channels Use **Select Sales Channels to Sync** to choose which sales channels are included: * **All** — Sync every charge regardless of source * Or select specific sources: Shopify, WooCommerce, Point of Sale, Payment Links, Online Store, Recurring Billing, etc. ![HitPay QuickBooks](https://mintcdn.com/hitpay/8IOdKFqJwU7jcYCq/images/quickbooks/quickbooks-settings-sync-config.png?fit=max\&auto=format\&n=8IOdKFqJwU7jcYCq\&q=85\&s=423a1147acf4f27147d9f0d6531689d1) ### Account Mappings The **Sales Account** is required to enable sync. The other mappings are optional — HitPay only syncs the corresponding items for accounts that are set up. | Account | Required? | What It Enables | Account Types | Classification | | - | - | - | - | - | | **Sales Account (Income)** | Required | Invoices for your charges | Income | Revenue | | **Fee Account (Expense)** | Optional | Expense entries for HitPay processing fees | Expense | Expense | | **Refund Account (Equity/Liability)** | Optional | Credit memos for refunded charges | Equity, Liability | Equity or Liability | | **Clearing Account (Bank)** | Optional\* | Deposit account for payments (and clearing account for fees and payouts) | Bank | Asset | | **Payout Account (Bank)** | Optional | Destination account for payout transfers | Bank | Asset | > [!NOTE] > > \*A Clearing Account (Bank) is required when a Fee Account is set, because QuickBooks records processing fees as expenses paid from a bank account. ![HitPay QuickBooks](https://mintcdn.com/hitpay/8IOdKFqJwU7jcYCq/images/quickbooks/quickbooks-settings-accounts.png?fit=max\&auto=format\&n=8IOdKFqJwU7jcYCq\&q=85\&s=072d71fe0c1c7bf312d91879f021a62f) > [!NOTE] > > **Flexible account type matching:** HitPay uses QuickBooks' Classification field to validate accounts, not just the specific AccountType. This means related account types work automatically across all QBO regions. For example, both "Income" and "Other Income" accounts are accepted for the Sales Account because they share the "Revenue" classification. Similarly, both "Equity" and "Other Current Liability" work for the Refund Account because HitPay accepts both the "Equity" and "Liability" classifications. ### Default Item Select the QuickBooks Product/Service item that appears on each synced invoice line. This is **required to enable sync**. The dropdown is filtered to items whose income account matches your selected Sales Account, so invoice revenue always posts to the account you chose. If you change the Sales Account, re-select a matching item. ### Tax Code Controls the tax code applied to synced invoice and credit memo line items: * **Auto-detect (default)** — HitPay automatically detects the appropriate tax code from your QuickBooks company (e.g., GST for Singapore companies) * **Specific tax code** — Pick a tax code to apply to all synced line items, overriding auto-detection If your QuickBooks company requires a tax rate on every transaction (common for SG GST-registered companies), this ensures synced records pass that validation. ### Enabling Sync After configuring your accounts, toggle **Enable automatic sync** on. HitPay will only sync charges created after the moment you enable sync — no historical charges are synced retroactively. If you disable and re-enable sync later, only new charges from the re-enable point forward will be synced. Charges created during the disabled period are skipped. ![HitPay QuickBooks](https://mintcdn.com/hitpay/8IOdKFqJwU7jcYCq/images/quickbooks/quickbooks-settings-save.png?fit=max\&auto=format\&n=8IOdKFqJwU7jcYCq\&q=85\&s=aaed6a6e77ec20cf3af5395eb52ced3d) *** ## How Syncing Works ### Automatic Sync HitPay runs an automatic sync daily at **2:00 AM SGT**. All charges since the last sync (or since sync was enabled) are processed. ### Manual Sync Once sync is enabled, a **Manual Sync** section appears on the QuickBooks integration page — click **Sync Now** to trigger a sync immediately. Manual sync is limited to **once per hour**. ### Sync Process For each charge, HitPay creates the following records in QuickBooks (depending on which accounts are configured): 1. **Invoice** — Records the sale amount 2. **Payment** — Marks the invoice as paid, depositing to your bank account 3. **Expense** — Records the HitPay processing fee (if fee account is configured) 4. **Credit Memo** — For refunded charges, linked to the original invoice (if refund account is configured) For charges that were refunded before being synced, HitPay creates the complete history: invoice, payment, and credit memo in one go. ### Idempotency Syncing is fully idempotent. If a sync is interrupted or partially completes, the next run picks up where it left off without creating duplicates. *** ## Multi-Currency Support HitPay handles multi-currency automatically: * In **Bulk** mode, charges are grouped by date and currency, creating separate invoices per currency * In **Individual** mode, each invoice uses the charge's original currency * Your QuickBooks company must have multi-currency enabled if you process payments in multiple currencies *** ## Sync Status & Errors The QuickBooks integration page shows: * **Connection status** — Whether your QuickBooks connection is active * **Last sync time** — When the most recent **successful** sync completed (it only updates when charges actually synced, so a failed run never masks the last real success) * **Sync results** — Number of charges synced and any failures * **Recent errors** — The last 10 sync errors with timestamps If a sync error occurs for a specific charge, HitPay skips it and continues with the remaining charges. Failed charges are automatically retried on the next sync run. ### Connection Failures If your QuickBooks connection loses authorization (e.g., token refresh fails), HitPay will: 1. Automatically disable sync to prevent repeated failures 2. Send you an email notification 3. Mark the connection as **Failed** in the dashboard To resolve, disconnect and reconnect your QuickBooks account. *** ## Disconnecting 1. Go to the QuickBooks integration page. 2. Click **Disconnect**. 3. Confirm the disconnection. Disconnecting removes the QuickBooks authorization but preserves all sync records in HitPay for audit purposes. If you reconnect later, sync starts fresh from the new connection point — previously synced charges are not re-synced. *** ## Important Notes * **Future-only sync** — Only charges created after sync is enabled are synced. There is no historical backfill. * **Flexible account types** — HitPay automatically recognizes related account types across QuickBooks Online regions using QuickBooks' Classification system. You don't need to worry about regional differences in account type naming (e.g., "Cash and cash equivalents" vs "Bank" both work for bank accounts if they have the correct classification). * **Account lists are cached for up to 1 hour** — If you just created an account or item in QuickBooks and it's not showing, use the refresh button in the settings to fetch the latest list. * **Tax codes** — Synced line items carry a QuickBooks tax code (auto-detected, or the one you pick in the **Tax Code** setting). Amounts are synced as tax-inclusive. *** ## Troubleshooting > **Accounts not appearing in dropdowns** > > If a QuickBooks account doesn't appear in the expected dropdown: > > * **Check the account type** — Each dropdown only shows accounts with compatible Classifications. For example, the Sales Account dropdown shows accounts with the "Revenue" classification (which includes both "Income" and "Other Income" account types). > * **Check if the account is active** — Only active accounts are shown. Archived or inactive accounts are hidden. > * **Regional account types** — QuickBooks uses different account type names in different regions (e.g., "Cash and cash equivalents" in some regions vs. "Bank" in others). HitPay handles this automatically through Classification matching, but if an account has an unexpected Classification, it may appear in a different group. > * **Refresh the list** — Click the refresh button to fetch the latest accounts from QuickBooks. > **Sync not running** > > * Verify that **Enable automatic sync** is toggled on > * Check that a **Sales Account** and **Default Item** are configured (both are required for sync) > * Ensure your QuickBooks connection is in **Linked** status (not Failed) > **Duplicate invoices** > > HitPay tracks every synced record. If you see duplicates, it may be because: > > * The same charge was processed through multiple payment sources > * A charge was manually created in QuickBooks before the sync ran > > HitPay will never create duplicate records for the same charge — each charge is tracked by its unique ID. > **Connection shows 'Failed'** > > This typically means QuickBooks revoked or couldn't refresh the authorization token. To fix: > > 1. Disconnect the integration > 2. Reconnect by going through the OAuth flow again > 3. Re-configure your settings > 4. Re-enable sync > > Your previous sync records are preserved. # Subscriptions (Auto-Charge) Source: https://docs.hitpayapp.com/connections/stripe/auto-charge Implement auto-charge subscriptions with Stripe Custom Payment Methods and HitPay Auto-charge subscriptions allow customers to authorize and tokenize a payment method once, with future invoices charged automatically via HitPay. This flow only works with tokenizable payment methods (Cards, ShopeePay, GrabPay). ## How It Works This integration connects Stripe's Subscription API with HitPay's Recurring Billing API, allowing customers to set up automatic payments using local payment methods while keeping all subscription records in Stripe. ### Key Concepts | Component | Purpose | | - | - | | **Stripe Subscription** | Manages the subscription lifecycle, billing periods, and invoice generation. | | **HitPay Recurring Billing** | Tokenizes the customer's payment method and processes automatic charges. | | **Stripe Payment Records** | Records each HitPay charge back in Stripe for unified reporting and reconciliation. | ### API References > **[HitPay Embedded Recurring Billing](https://docs.hitpayapp.com/apis/guide/embedded-recurring-billing)** > > Create recurring billing sessions with embedded authorization — returns QR codes and direct app links instead of redirecting to a hosted checkout page. > **[HitPay Save Payment Method & Charge](/apis/guide/save-payment-method)** > > How to charge a saved payment method via the HitPay API — the same charge endpoint used to bill both the first invoice and all future renewals. > **[Stripe Subscriptions API](https://docs.stripe.com/billing/subscriptions/overview)** > > Manage subscription lifecycle and invoice generation. > **[Third-Party Payment Processing](https://docs.stripe.com/billing/subscriptions/third-party-payment-processing)** > > Stripe's recommended pattern for processing subscription payments via external payment processors. ### Payment Method Compatibility | Method | Auto-Charge Support | HitPay Recurring Method | | - | - | - | | ShopeePay | Yes | `shopee_recurring` | | GrabPay | Yes | `grabpay_direct` | | Cards | Yes | `card` | ## Payment Flow ```mermaid theme={"system"} sequenceDiagram participant User participant Frontend participant Backend participant Stripe participant HitPay User->>Frontend: Select subscription + "Auto-Charge" Frontend->>Backend: POST /api/create-subscription Backend->>Stripe: Create Subscription (charge_automatically) Backend-->>Frontend: subscriptionId, customerId Frontend->>Backend: POST /api/hitpay/recurring-billing/create Backend->>HitPay: Create recurring billing session HitPay-->>Backend: redirectUrl Backend-->>Frontend: redirectUrl Frontend->>User: Redirect to HitPay User->>HitPay: Authorize payment method HitPay->>Frontend: Redirect to /setup callback Frontend->>Backend: POST /api/subscription/charge-invoice Backend->>HitPay: Charge saved payment method Backend->>Stripe: Mark invoice paid + PaymentRecord Backend-->>Frontend: Success Note over HitPay,Stripe: Future invoices: auto-charged via HitPay ``` ### API Calls Summary | Step | API | Endpoint / Method | Purpose | | - | - | - | - | | 1 | **Stripe** | `customers.create()` | Create or retrieve customer | | 2 | **Stripe** | `subscriptions.create()` | Create subscription with `charge_automatically` | | 3 | **HitPay** | `POST /recurring-billing` | Create recurring billing session (method-specific parameter returns QR code, direct link, or instructions) | | 4a | **HitPay** | (redirect) | **Redirect flow**: Customer authorizes on HitPay's hosted page | | 4b | **HitPay** | `GET /recurring-billing/{id}` | **Embedded flow**: Poll until `status === 'active'` (customer scanned QR or opened app) | | 5 | **HitPay** | `POST /charge/recurring-billing/{id}` | Charge first invoice via saved payment method | | 6 | **Stripe** | `paymentMethods.create()` | Create CPM PaymentMethod for reporting | | 7 | **Stripe** | `paymentRecords.reportPayment()` | Record payment for dashboard visibility | | 8 | **Stripe** | `invoices.pay()` | Mark invoice as paid | | — | **Stripe Webhook** | `invoice.payment_attempt_required` | Triggered by Stripe for each renewal invoice | | 9 | **HitPay** | `POST /charge/recurring-billing/{id}` | Auto-charge renewal invoices via webhook | *** ## Stripe Objects This integration touches six Stripe objects. Understanding each one makes it easier to follow the code and debug issues. > **Customer** > > A [Stripe Customer](https://docs.stripe.com/api/customers) represents the subscriber. In this integration, the customer object is the **bridge between Stripe and HitPay** — it stores the HitPay recurring billing session ID in its `metadata` so every future invoice knows which HitPay token to charge. > > **Key fields used:** > > | Field | Purpose | > | - | - | > | `metadata.hitpay_recurring_billing_id` | HitPay recurring billing session ID — used to charge all invoices | > | `metadata.hitpay_payment_method` | The HitPay recurring method (e.g. `shopee_recurring`, `grabpay_direct`, `card`) | > | `metadata.hitpay_cpm_type_id` | Stripe CPM Type ID — used when creating a `PaymentMethod` for reporting | > > The customer is created (or retrieved by email) when the subscription is set up, and its metadata is populated after the HitPay recurring billing session is created. > **Subscription** > > A [Stripe Subscription](https://docs.stripe.com/billing/subscriptions/overview) manages the **billing lifecycle** — it defines the billing interval, generates invoices on each renewal, and tracks subscription status (`active`, `past_due`, `canceled`, etc.). > > In this integration, subscriptions are created with `collection_method: 'charge_automatically'` and `payment_behavior: 'default_incomplete'`. This tells Stripe to generate invoices for each billing cycle and fire the `invoice.payment_attempt_required` webhook — but **not** to attempt payment via Stripe's own payment methods. Your webhook handler performs the actual charge via HitPay. > > **Key fields used:** > > | Field | Value / Purpose | > | - | - | > | `collection_method` | `charge_automatically` — generates invoices and fires the payment webhook | > | `payment_behavior` | `default_incomplete` — subscription stays incomplete until the first invoice is paid | > | `latest_invoice` | ID of the first invoice, retrieved immediately after subscription creation | > | `status` | Tracks whether the subscription is active, incomplete, or past due | > **Invoice** > > A [Stripe Invoice](https://docs.stripe.com/billing/invoices/overview) represents **one billing cycle**. Stripe creates an invoice automatically for each period of a `charge_automatically` subscription. > > There are two types of invoices in this flow: > > * **First invoice** (`billing_reason: 'subscription_create'`): Created when the subscription is set up. Charged manually after the customer authorizes their payment method on HitPay. Your webhook handler skips this one to avoid double-charging. > * **Renewal invoices** (`billing_reason: 'subscription_cycle'`): Generated automatically at each billing period. The `invoice.payment_attempt_required` webhook fires for these, and your handler charges them via HitPay. > > After a successful HitPay charge, the invoice is marked paid using `invoices.pay(invoiceId, { paid_out_of_band: true })` — this closes the invoice without Stripe attempting its own payment. > > **Key fields used:** > > | Field | Purpose | > | - | - | > | `amount_due` | Amount to charge (in the smallest currency unit, e.g. cents) | > | `currency` | Currency for the HitPay charge | > | `customer` | Customer ID — used to retrieve `hitpay_recurring_billing_id` from metadata | > | `billing_reason` | `subscription_create` vs `subscription_cycle` — used to skip the first invoice in the webhook | > | `id` | Stored in `PaymentRecord.metadata` for reconciliation | > **PaymentMethod (type: custom)** > > A [Stripe PaymentMethod](https://docs.stripe.com/api/payment_methods) of type `custom` represents a **Custom Payment Method** — it is created on the fly for each HitPay charge, purely for reporting purposes. > > This object is required as input to `paymentRecords.reportPayment()`. It carries the CPM Type ID that tells Stripe which custom payment method was used (e.g. your ShopeePay or GrabPay CPM). > > ```typescript theme={"system"} > const paymentMethod = await stripe.paymentMethods.create({ > type: 'custom', > custom: { type: cpmTypeId }, // e.g. 'cpmt_xxx' > }); > ``` > > **Note:** This `PaymentMethod` is not saved to the customer or reused. A new one is created per charge solely to satisfy the `reportPayment()` API. > **PaymentRecord** > > A [Stripe PaymentRecord](https://docs.stripe.com/billing/subscriptions/third-party-payment-processing) is how **external charges are made visible in the Stripe Dashboard**. After charging via HitPay, you call `paymentRecords.reportPayment()` to record the charge in Stripe — this gives your team unified reporting and reconciliation without HitPay payments being invisible inside Stripe. > > The `PaymentRecord` stores the HitPay payment ID in two places (for easy retrieval when processing refunds): > > * `processor_details.custom.payment_reference` — the HitPay payment ID > * `metadata.hitpay_payment_id` — same value, accessible as plain metadata > > **Key fields used:** > > | Field | Value / Purpose | > | - | - | > | `amount_requested.value` | Invoice `amount_due` (in smallest currency unit) | > | `payment_method_details.payment_method` | The custom `PaymentMethod` ID created above | > | `processor_details.custom.payment_reference` | HitPay `payment_id` returned by the charge API | > | `customer_presence` | `off_session` — charge was made without the customer present | > | `outcome` | `guaranteed` — HitPay confirmed the charge succeeded | > | `metadata.invoice_id` | Stripe invoice ID — links the record back to the billing cycle | > **invoice.payment\_attempt\_required (webhook event)** > > The [`invoice.payment_attempt_required`](https://docs.stripe.com/billing/subscriptions/third-party-payment-processing#handle-payment-attempt-required) event is fired by Stripe **whenever a subscription invoice needs to be charged** under `collection_method: charge_automatically`. > > This is the trigger for all renewal auto-charges. Your webhook handler receives this event, looks up the customer's `hitpay_recurring_billing_id`, and calls HitPay to charge the invoice. > > **Important:** Stripe fires this event for the **first invoice too** (`billing_reason: 'subscription_create'`). Your handler must skip it — the first invoice is already charged manually after the customer completes HitPay authorization. Charging it again here would double-bill the customer. > > ```typescript theme={"system"} > if (invoice.billing_reason === 'subscription_create') { > return NextResponse.json({ received: true }); // skip — already charged manually > } > ``` *** ## Step 1: Configure Custom Payment Methods Register each HitPay payment method as a Custom Payment Method (CPM) type in your Stripe Dashboard and map those CPM Type IDs to HitPay method identifiers in a config file. **1. Create Custom Payment Methods on Stripe Dashboard** Stripe Dashboard Create Custom Payment Method types in your Stripe Dashboard for each HitPay payment method you want to offer. > **[Create CPM in Stripe Dashboard](https://docs.stripe.com/payments/payment-element/custom-payment-methods#create-cpm-in-dashboard)** > > Follow Stripe's guide to create Custom Payment Method types and get your CPM Type IDs. > **[Download Payment Icons](/files/payment_icons.zip)** > > Download official HitPay payment method icons (PayNow, ShopeePay, GrabPay, FPX, and more) optimized for Stripe Custom Payment Methods. **2. Create Configuration File** Server-side Map your Stripe CPM Type IDs to HitPay payment methods. Include the `hitpayRecurringMethod` for auto-charge support. > **config/payment-methods.ts** > > ```typescript theme={"system"} > // config/payment-methods.ts > > interface CustomPaymentMethodConfig { > id: string; // Stripe CPM Type ID (cpmt_xxx) > hitpayMethod: string; // HitPay one-time payment method > hitpayRecurringMethod?: string; // HitPay recurring billing method > displayName: string; > chargeAutomatically: boolean; // Supports auto-charge subscriptions > } > > export const CUSTOM_PAYMENT_METHODS: CustomPaymentMethodConfig[] = [ > { > id: 'cpmt_YOUR_PAYNOW_ID', > hitpayMethod: 'paynow_online', > displayName: 'PayNow', > chargeAutomatically: false, // QR-based, no tokenization > }, > { > id: 'cpmt_YOUR_SHOPEEPAY_ID', > hitpayMethod: 'shopee_pay', > hitpayRecurringMethod: 'shopee_recurring', > displayName: 'ShopeePay', > chargeAutomatically: true, > }, > { > id: 'cpmt_YOUR_GRABPAY_ID', > hitpayMethod: 'grabpay', > hitpayRecurringMethod: 'grabpay_direct', > displayName: 'GrabPay', > chargeAutomatically: true, > }, > { > id: 'cpmt_YOUR_CARD_ID', > hitpayMethod: 'card', > hitpayRecurringMethod: 'card', > displayName: 'Card', > chargeAutomatically: true, > }, > ]; > > export function supportsAutoCharge(cpmTypeId: string): boolean { > const config = CUSTOM_PAYMENT_METHODS.find(pm => pm.id === cpmTypeId); > return config?.chargeAutomatically ?? false; > } > > export function getAutoChargeCpms(): CustomPaymentMethodConfig[] { > return CUSTOM_PAYMENT_METHODS.filter(pm => pm.chargeAutomatically); > } > ``` > [!TIP] > > The `chargeAutomatically` flag indicates whether a payment method supports tokenization for recurring charges. QR-based methods like PayNow cannot be saved for future charges. > [!TIP] > > You'll have **different CPM Type IDs in sandbox and production** — they are separate Stripe accounts. Consider using environment variables or an `ids: { sandbox: string, production: string }` structure so you can switch between environments without code changes. *** ## Step 2: Create Subscription When the customer submits the checkout form, two server calls happen in sequence: 1. **Create a Stripe Subscription** — creates an incomplete subscription and a pending invoice 2. **Create a HitPay Recurring Billing session** — tokenizes the payment method and returns authorization data (QR code or direct app link) The authorization data from step 2 is then used in [Step 3](#step-3-handle-payment-authorization) to let the customer approve the payment method inline. **1. Configure Environment Variables** Server-side Set up the required API keys and configuration for both Stripe and HitPay. ```bash theme={"system"} # Stripe NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_xxx STRIPE_SECRET_KEY=sk_test_xxx # HitPay HITPAY_API_KEY=xxx HITPAY_SALT=xxx NEXT_PUBLIC_HITPAY_ENV=sandbox # or 'production' NEXT_PUBLIC_SITE_URL=https://your-domain.com # Stripe Webhook (for auto-charge renewals — see Step 4) STRIPE_WEBHOOK_SECRET=whsec_xxx ``` > [!WARNING] > > Never expose `STRIPE_SECRET_KEY` or `HITPAY_API_KEY` to the client. These are server-side only. **2. Client: Collect customer info and initiate setup** Client-side Collect the customer's email address and selected plan, then make two sequential server calls: first to create the Stripe subscription, then to start the HitPay authorization session. ```typescript theme={"system"} // 1. Create Stripe subscription — returns subscription + invoice details const subRes = await fetch('/api/create-subscription', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, priceId, // Stripe Price ID for the selected plan cpmTypeId, // Stripe CPM Type ID for the selected payment method }), }); const { subscriptionId, customerId, invoiceId, invoiceAmount, currency } = await subRes.json(); // 2. Create HitPay recurring billing session — returns authorization embed data const hitpayRes = await fetch('/api/hitpay/recurring-billing/create', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ customerId, subscriptionId, invoiceId, amount: invoiceAmount, currency, customerEmail: email, paymentMethod: selectedRecurringMethod, // e.g. 'card', 'shopee_recurring', 'grabpay_direct' }), }); const { directLinkUrl, directLinkAppUrl, qrCode } = await hitpayRes.json(); // → Pass this data to Step 3 to render inline authorization ``` > [!TIP] > > `selectedRecurringMethod` comes from the CPM config (`hitpayRecurringMethod`) for whichever payment method the customer chose. See the `CUSTOM_PAYMENT_METHODS` config in Step 1. **3. Server: Create Stripe Subscription** Server-side Create a Stripe subscription with `charge_automatically` collection method. The subscription starts as `incomplete` — it will become `active` once the first invoice is charged in Step 3. **What this returns:** `subscriptionId`, `customerId`, `invoiceId`, and the `invoiceAmount` needed to create the HitPay session. > **app/api/create-subscription/route.ts** > > ```typescript theme={"system"} > // app/api/create-subscription/route.ts > import { NextResponse } from 'next/server'; > import { stripe } from '@/lib/stripe'; > > export async function POST(request: Request) { > const { priceId, email, cpmTypeId } = await request.json(); > > // Create or retrieve customer > let customer; > const existingCustomers = await stripe.customers.list({ email, limit: 1 }); > if (existingCustomers.data.length > 0) { > customer = existingCustomers.data[0]; > } else { > customer = await stripe.customers.create({ email }); > } > > // Create subscription with automatic charging > const subscription = await stripe.subscriptions.create({ > customer: customer.id, > items: [{ price: priceId }], > collection_method: 'charge_automatically', > payment_behavior: 'default_incomplete', > payment_settings: { > payment_method_types: ['card'], > }, > }); > > // Get invoice amount for HitPay setup > const invoice = await stripe.invoices.retrieve( > subscription.latest_invoice as string > ); > > return NextResponse.json({ > subscriptionId: subscription.id, > customerId: customer.id, > invoiceId: invoice.id, > invoiceAmount: invoice.amount_due / 100, > currency: invoice.currency, > billingType: 'charge_automatically', > }); > } > ``` **4. Server: Create HitPay Recurring Billing Session** Server-side Call `POST /v1/recurring-billing` with a method-specific generate parameter. This tokenizes the customer's payment method and returns the authorization data needed for inline rendering. Store the `recurring_billing_id` on the Stripe customer — you'll need it for all future charges. **What this returns:** A `session.id` (the recurring billing token), plus `qr_code_data` (ZaloPay), `direct_link` (ShopeePay / GrabPay / Touch 'N Go), or `instructions` (GIRO). > **app/api/hitpay/recurring-billing/create/route.ts** > > ```typescript theme={"system"} > // app/api/hitpay/recurring-billing/create/route.ts > import { NextResponse } from 'next/server'; > import { stripe } from '@/lib/stripe'; > > const HITPAY_API_URL = process.env.NEXT_PUBLIC_HITPAY_ENV === 'production' > ? 'https://api.hit-pay.com/v1' > : 'https://api.sandbox.hit-pay.com/v1'; > > export async function POST(request: Request) { > const { > customerId, > subscriptionId, > invoiceId, > amount, > currency, > customerEmail, > paymentMethod, // e.g., 'card', 'shopee_recurring' > } = await request.json(); > > const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:3000'; > > // POST /v1/recurring-billing — tokenize the customer's payment method. > // Pass a method-specific generate parameter to receive authorization data inline > // instead of redirecting the customer to HitPay's hosted checkout page. > // generate_direct_link: ShopeePay / GrabPay / Touch 'N Go > // generate_qr: ZaloPay > // generate_instructions: GIRO > const generateParam = paymentMethod === 'zalopay' > ? 'generate_qr' > : paymentMethod === 'giro' > ? 'generate_instructions' > : 'generate_direct_link'; > > const params = new URLSearchParams({ > customer_email: customerEmail, > amount: amount.toFixed(2), > currency, > redirect_url: `${baseUrl}/subscribe/setup?subscription_id=${subscriptionId}&customer_id=${customerId}&invoice_id=${invoiceId}`, > reference: subscriptionId, > [generateParam]: 'true', > }); > params.append('payment_methods[]', paymentMethod); > > const hitpayRes = await fetch(`${HITPAY_API_URL}/recurring-billing`, { > method: 'POST', > headers: { > 'Content-Type': 'application/x-www-form-urlencoded', > 'X-BUSINESS-API-KEY': process.env.HITPAY_API_KEY!, > }, > body: params.toString(), > }); > const session = await hitpayRes.json(); > > // Store recurring billing ID in customer metadata > await stripe.customers.update(customerId, { > metadata: { > hitpay_recurring_billing_id: session.id, > hitpay_payment_method: paymentMethod, > }, > }); > > // Extract embed fields for the frontend > const directLinkUrl = session.direct_link?.direct_link_url ?? null; > const directLinkAppUrl = session.direct_link?.direct_link_app_url ?? null; > const qrCode = session.qr_code_data?.qr_code ?? null; > > return NextResponse.json({ > recurringBillingId: session.id, > // Embed data — use one of these to authorize inline (preferred) > directLinkUrl, // ShopeePay / GrabPay: open in browser > directLinkAppUrl, // ShopeePay only: open Shopee app directly (mobile) > qrCode, // Card: render as QR code > // Fallback: redirect to HitPay's hosted checkout (not ideal — sends customer away) > hostedCheckoutUrl: session.url, > status: session.status, > }); > } > ``` *** ## Step 3: Handle Payment Authorization After creating the HitPay recurring billing session in Step 2, present the authorization UI to the customer. **Embedded (Recommended)** Instead of redirecting the customer to HitPay's hosted checkout page, the embedded approach returns authorization data directly in the API response — a QR code or a direct app link — which you render inline on your page. The customer never leaves your site. To enable this, pass the method-specific generate parameter when calling `POST /v1/recurring-billing`. For example, for ShopeePay: ```bash theme={"system"} curl -X POST https://api.sandbox.hit-pay.com/v1/recurring-billing \ -H "X-BUSINESS-API-KEY: your_api_key" \ -d "customer_email=customer@example.com" \ -d "amount=10.00" \ -d "currency=SGD" \ -d "payment_methods[]=shopee_pay" \ -d "redirect_url=https://your-site.com/setup/complete" \ -d "generate_direct_link=true" ``` With the generate parameter, the response includes authorization data instead of just a hosted checkout URL: ```json theme={"system"} { "id": "recurring_billing_id", "status": "pending", "url": "https://...", "qr_code_data": { "qr_code": "" }, "direct_link": { "direct_link_url": "https://...", "direct_link_app_url": "app://..." } } ``` Depending on the payment method, use the appropriate field: | HitPay Method | Parameter | Response Field | Customer Experience | | - | - | - | - | | `shopee_pay` | `generate_direct_link` | `direct_link.direct_link_url` / `direct_link.direct_link_app_url` | Button that opens Shopee app (deep link on mobile, web URL as fallback) | | `grabpay_direct` | `generate_direct_link` | `direct_link.direct_link_url` | Button that opens the Grab app | | `touch_n_go` | `generate_direct_link` | `direct_link.direct_link_url` | Button that opens Touch 'N Go | | `zalopay` | `generate_qr` | `qr_code_data.qr_code` | Inline QR code for the customer to scan | | `giro` | `generate_instructions` | `instructions` | Step-by-step bank portal instructions | Poll `GET /v1/recurring-billing/{id}` every few seconds until `status` becomes `active`, then charge the first invoice. > **components/EmbeddedAuthorizationForm.tsx** > > ```tsx theme={"system"} > // components/EmbeddedAuthorizationForm.tsx > 'use client'; > > import { useState, useEffect } from 'react'; > import { QRCodeSVG } from 'qrcode.react'; > > interface Props { > subscriptionId: string; > invoiceId: string; > customerId: string; > amount: number; > currency: string; > customerEmail: string; > selectedRecurringMethod: string; // e.g., 'shopee_recurring', 'card' > } > > export function EmbeddedAuthorizationForm({ > subscriptionId, invoiceId, customerId, amount, currency, > customerEmail, selectedRecurringMethod, > }: Props) { > const [qrCode, setQrCode] = useState(null); > const [directLinkUrl, setDirectLinkUrl] = useState(null); > const [directLinkAppUrl, setDirectLinkAppUrl] = useState(null); > const [recurringBillingId, setRecurringBillingId] = useState(null); > const [status, setStatus] = useState<'idle' | 'authorizing' | 'charging' | 'success' | 'error'>('idle'); > > const startAuthorization = async () => { > setStatus('authorizing'); > > // Create HitPay recurring billing session — method-specific generate parameter is set server-side, > // so the response contains QR code, direct link, or instructions instead of a hosted checkout URL. > const res = await fetch('/api/hitpay/recurring-billing/create', { > method: 'POST', > headers: { 'Content-Type': 'application/json' }, > body: JSON.stringify({ > customerId, > subscriptionId, > invoiceId, > amount, > currency, > customerEmail, > paymentMethod: selectedRecurringMethod, > }), > }); > const data = await res.json(); > > setRecurringBillingId(data.recurringBillingId); > > if (data.qrCode) { > // Card: render inline QR code for the customer to scan > setQrCode(data.qrCode); > } else if (data.directLinkUrl) { > // ShopeePay / GrabPay: open in browser or app > setDirectLinkUrl(data.directLinkUrl); > setDirectLinkAppUrl(data.directLinkAppUrl ?? null); // ShopeePay only: mobile deep link > } > }; > > // Poll for authorization status > useEffect(() => { > if (!recurringBillingId || status !== 'authorizing') return; > > const poll = setInterval(async () => { > const res = await fetch( > `/api/hitpay/recurring-billing/status?id=${recurringBillingId}` > ); > const { status: sessionStatus } = await res.json(); > > if (sessionStatus === 'active') { > clearInterval(poll); > setStatus('charging'); > > // Charge first invoice using the now-active recurring billing > await fetch('/api/subscription/charge-invoice', { > method: 'POST', > headers: { 'Content-Type': 'application/json' }, > body: JSON.stringify({ invoiceId }), > }); > > setStatus('success'); > window.location.href = `/subscribe/success?subscription_id=${subscriptionId}`; > } > }, 3000); > > return () => clearInterval(poll); > }, [recurringBillingId, status, invoiceId, subscriptionId]); > > if (status === 'idle') { > return ( > > ); > } > > if (qrCode) { > return ( >
>

Scan to Authorize

> >

Scan this QR code with your payment app to authorize recurring charges.

>
> ); > } > > if (directLinkUrl) { > return ( >
> {/* On mobile, prefer the deep link to open the app directly */} > {directLinkAppUrl ? ( > Open Shopee App to Authorize > ) : ( > > Open App to Authorize > > )} >

Waiting for authorization...

>
> ); > } > > return

Setting up authorization...

; > } > ``` **Backend: status polling endpoint** Add a lightweight endpoint that the frontend polls to check the recurring billing session status: > **app/api/hitpay/recurring-billing/status/route.ts** > > ```typescript theme={"system"} > // app/api/hitpay/recurring-billing/status/route.ts > import { NextResponse } from 'next/server'; > > const HITPAY_API_URL = process.env.NEXT_PUBLIC_HITPAY_ENV === 'production' > ? 'https://api.hit-pay.com/v1' > : 'https://api.sandbox.hit-pay.com/v1'; > > export async function GET(request: Request) { > const { searchParams } = new URL(request.url); > const id = searchParams.get('id'); > > if (!id) { > return NextResponse.json({ error: 'Missing id' }, { status: 400 }); > } > > // GET /v1/recurring-billing/{id} — check authorization status > const hitpayRes = await fetch(`${HITPAY_API_URL}/recurring-billing/${id}`, { > headers: { 'X-BUSINESS-API-KEY': process.env.HITPAY_API_KEY! }, > }); > const session = await hitpayRes.json(); > return NextResponse.json({ status: session.status }); > } > ``` The session `status` progresses through: * `pending` — customer has not yet authorized * `active` — customer has authorized the payment method (safe to charge) * `canceled` — authorization was canceled or expired > [!NOTE] > > Once `active`, the polling component calls `/api/subscription/charge-invoice` automatically. See [Charge the Saved Payment Method](/apis/guide/save-payment-method) for HitPay charge API details. **URL Redirect** > [!WARNING] > > This approach redirects the customer away from your site to HitPay's hosted checkout page. It breaks the subscription setup flow and is not recommended. Use the Embedded approach if possible. Use the `hostedCheckoutUrl` from the session response to redirect the customer. HitPay redirects them back to your `redirect_url` after authorization, where you then charge the first invoice. ```tsx theme={"system"} // Redirect customer to HitPay hosted checkout const { hostedCheckoutUrl } = await hitpayRes.json(); window.location.href = hostedCheckoutUrl; ``` When the customer returns to your `redirect_url`, handle the callback: > **app/subscribe/setup/page.tsx** > > ```tsx theme={"system"} > // app/subscribe/setup/page.tsx > 'use client'; > > import { useEffect, useState } from 'react'; > import { useSearchParams } from 'next/navigation'; > > export default function SetupPage() { > const searchParams = useSearchParams(); > const [status, setStatus] = useState<'processing' | 'success' | 'error'>('processing'); > const [error, setError] = useState(null); > > useEffect(() => { > const chargeFirstInvoice = async () => { > const subscriptionId = searchParams.get('subscription_id'); > const invoiceId = searchParams.get('invoice_id'); > > if (!invoiceId) { > setError('Missing invoice ID'); > setStatus('error'); > return; > } > > try { > const response = await fetch('/api/subscription/charge-invoice', { > method: 'POST', > headers: { 'Content-Type': 'application/json' }, > body: JSON.stringify({ invoiceId }), > }); > > const data = await response.json(); > > if (data.success) { > setStatus('success'); > setTimeout(() => { > window.location.href = `/subscribe/success?subscription_id=${subscriptionId}`; > }, 2000); > } else { > setError(data.error || 'Failed to charge invoice'); > setStatus('error'); > } > } catch (err) { > setError('An error occurred'); > setStatus('error'); > } > }; > > chargeFirstInvoice(); > }, [searchParams]); > > return ( >
> {status === 'processing' && ( >
>

Setting up your subscription...

>

Please wait while we process your first payment.

>
> )} > {status === 'success' && ( >
>

Subscription Active!

>

Redirecting to your subscription details...

>
> )} > {status === 'error' && ( >
>

Setup Failed

>

{error}

> Try Again >
> )} >
> ); > } > ``` **1. Charge via HitPay** Server-side Retrieve the customer's `hitpay_recurring_billing_id` from their Stripe metadata and call `POST /v1/charge/recurring-billing/{id}` to debit the saved payment method. ```typescript theme={"system"} const HITPAY_API_URL = process.env.NEXT_PUBLIC_HITPAY_ENV === 'production' ? 'https://api.hit-pay.com/v1' : 'https://api.sandbox.hit-pay.com/v1'; const invoice = await stripe.invoices.retrieve(invoiceId); const customer = await stripe.customers.retrieve(invoice.customer as string); const recurringBillingId = customer.metadata.hitpay_recurring_billing_id; const hitpayRes = await fetch( `${HITPAY_API_URL}/charge/recurring-billing/${recurringBillingId}`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-BUSINESS-API-KEY': process.env.HITPAY_API_KEY!, }, body: JSON.stringify({ amount: (invoice.amount_due / 100).toFixed(2), currency: invoice.currency, }), } ); const charge = await hitpayRes.json(); // charge.status: 'succeeded' | 'pending' | 'failed' // charge.payment_id: HitPay payment reference ``` > [!NOTE] > > Treat both `succeeded` and `pending` as success. `pending` means the charge is processing asynchronously — store `charge.payment_id` in invoice metadata and let the webhook confirm it later. **2. Report Payment in Stripe** Server-side Record the HitPay charge in Stripe using `stripe.paymentRecords.reportPayment()`. This gives Stripe a record of the payment for reconciliation and unified reporting. Without this step, Stripe has no visibility into what was collected by HitPay. ```typescript theme={"system"} const paymentMethod = await stripe.paymentMethods.create({ type: 'custom', custom: { type: customer.metadata.hitpay_cpm_type_id }, }); const now = Math.floor(Date.now() / 1000); const paymentRecord = await stripe.paymentRecords.reportPayment({ amount_requested: { value: invoice.amount_due, currency: invoice.currency }, customer_details: { customer: invoice.customer }, payment_method_details: { payment_method: paymentMethod.id }, processor_details: { type: 'custom', custom: { payment_reference: charge.payment_id }, }, initiated_at: now, customer_presence: 'off_session', outcome: 'guaranteed', guaranteed: { guaranteed_at: now }, }); ``` > [!TIP] > > Use `outcome: 'guaranteed'` for `succeeded` charges. If the charge returned `pending`, use `outcome: 'failed'` temporarily — update the PaymentRecord to `guaranteed` once the HitPay webhook confirms the charge. **3. Mark Invoice as Paid** Server-side Mark the Stripe invoice as paid with `paid_out_of_band: true`. This tells Stripe the payment was collected externally (via HitPay), transitions the invoice to `paid`, and activates the subscription. ```typescript theme={"system"} await stripe.invoices.pay(invoiceId, { paid_out_of_band: true, }); ``` Store the HitPay payment ID and Stripe payment record ID in invoice metadata as an idempotency guard — the webhook handler checks for these before charging future invoices to avoid double-charging. ```typescript theme={"system"} await stripe.invoices.update(invoiceId, { metadata: { hitpay_payment_id: charge.payment_id, stripe_payment_record_id: paymentRecord.id, }, }); ``` > [!NOTE] > > Once the invoice is `paid`, Stripe transitions the subscription from `incomplete` → `active`. Future renewals are handled automatically by the webhook in Step 4. > **Full implementation: app/api/subscription/charge-invoice/route.ts** > > ```typescript theme={"system"} > // app/api/subscription/charge-invoice/route.ts > import { NextResponse } from 'next/server'; > import { stripe } from '@/lib/stripe'; > > const HITPAY_API_URL = process.env.NEXT_PUBLIC_HITPAY_ENV === 'production' > ? 'https://api.hit-pay.com/v1' > : 'https://api.sandbox.hit-pay.com/v1'; > > export async function POST(request: Request) { > const { invoiceId } = await request.json(); > > const invoice = await stripe.invoices.retrieve(invoiceId); > const customer = await stripe.customers.retrieve(invoice.customer as string); > > if (customer.deleted) { > return NextResponse.json({ error: 'Customer not found' }, { status: 404 }); > } > > const recurringBillingId = customer.metadata.hitpay_recurring_billing_id; > if (!recurringBillingId) { > return NextResponse.json({ error: 'No recurring billing setup found' }, { status: 400 }); > } > > // Step 1: Charge via HitPay > const hitpayRes = await fetch( > `${HITPAY_API_URL}/charge/recurring-billing/${recurringBillingId}`, > { > method: 'POST', > headers: { > 'Content-Type': 'application/json', > 'X-BUSINESS-API-KEY': process.env.HITPAY_API_KEY!, > }, > body: JSON.stringify({ > amount: (invoice.amount_due / 100).toFixed(2), > currency: invoice.currency, > }), > } > ); > const charge = await hitpayRes.json(); > > if (charge.status !== 'succeeded' && charge.status !== 'pending') { > return NextResponse.json({ error: 'Charge failed', details: charge }, { status: 400 }); > } > > // Step 2: Report payment in Stripe > const paymentMethod = await stripe.paymentMethods.create({ > type: 'custom', > custom: { type: customer.metadata.hitpay_cpm_type_id }, > }); > > const now = Math.floor(Date.now() / 1000); > const paymentRecord = await stripe.paymentRecords.reportPayment({ > amount_requested: { value: invoice.amount_due, currency: invoice.currency }, > customer_details: { customer: invoice.customer }, > payment_method_details: { payment_method: paymentMethod.id }, > processor_details: { > type: 'custom', > custom: { payment_reference: charge.payment_id }, > }, > initiated_at: now, > customer_presence: 'off_session', > outcome: 'guaranteed', > guaranteed: { guaranteed_at: now }, > }); > > // Step 3: Mark invoice as paid > await stripe.invoices.pay(invoiceId, { paid_out_of_band: true }); > > // Store IDs for idempotency (webhook skips invoices already charged) > await stripe.invoices.update(invoiceId, { > metadata: { > hitpay_payment_id: charge.payment_id, > stripe_payment_record_id: paymentRecord.id, > }, > }); > > return NextResponse.json({ success: true, hitpayPaymentId: charge.payment_id }); > } > ``` *** ## Step 4: Handle Future Invoices On each billing cycle, Stripe fires `invoice.payment_attempt_required` when a new invoice is created. A webhook handler automatically charges the customer's saved HitPay payment method and records the payment in Stripe — no customer action required. **1. Setup Stripe Webhook** Server-side Handle the `invoice.payment_attempt_required` Stripe webhook event to automatically charge future invoices. **Webhook setup:** 1. Go to **Stripe Dashboard** → **Developers** → **Webhooks** → **Add endpoint** 2. Enter your endpoint URL: `https://your-domain.com/api/stripe/webhook` 3. Select the event: `invoice.payment_attempt_required` 4. Copy the **Signing secret** (`whsec_xxx`) and add it as `STRIPE_WEBHOOK_SECRET` For local development, use the [Stripe CLI](https://docs.stripe.com/stripe-cli): ```bash theme={"system"} stripe listen --forward-to localhost:3000/api/stripe/webhook ``` > **app/api/stripe/webhook/route.ts** > > ```typescript theme={"system"} > // app/api/stripe/webhook/route.ts > import { NextResponse } from 'next/server'; > import { stripe } from '@/lib/stripe'; > > const HITPAY_API_URL = process.env.NEXT_PUBLIC_HITPAY_ENV === 'production' > ? 'https://api.hit-pay.com/v1' > : 'https://api.sandbox.hit-pay.com/v1'; > > export async function POST(request: Request) { > const body = await request.text(); > const signature = request.headers.get('stripe-signature')!; > > let event; > try { > event = stripe.webhooks.constructEvent( > body, > signature, > process.env.STRIPE_WEBHOOK_SECRET! > ); > } catch (err) { > return NextResponse.json({ error: 'Invalid signature' }, { status: 400 }); > } > > if (event.type === 'invoice.payment_attempt_required') { > const invoice = event.data.object; > > // Skip first invoice — it's charged manually after HitPay authorization > // to avoid double-charging the customer on subscription creation > if (invoice.billing_reason === 'subscription_create') { > return NextResponse.json({ received: true }); > } > > // Skip if nothing is owed > if (!invoice.amount_due || invoice.amount_due === 0) { > return NextResponse.json({ received: true }); > } > > // Get customer's recurring billing ID > const customer = await stripe.customers.retrieve(invoice.customer as string); > if (customer.deleted) return NextResponse.json({ received: true }); > > const recurringBillingId = customer.metadata.hitpay_recurring_billing_id; > if (!recurringBillingId) return NextResponse.json({ received: true }); > > // POST /v1/charge/recurring-billing/{id} — charge the saved payment method > // See: /apis/guide/save-payment-method#step-3-charge-the-saved-payment-method > try { > const hitpayRes = await fetch( > `${HITPAY_API_URL}/charge/recurring-billing/${recurringBillingId}`, > { > method: 'POST', > headers: { > 'Content-Type': 'application/json', > 'X-BUSINESS-API-KEY': process.env.HITPAY_API_KEY!, > }, > body: JSON.stringify({ > amount: (invoice.amount_due / 100).toFixed(2), > currency: invoice.currency, > }), > } > ); > const chargeResult = await hitpayRes.json(); > > if (chargeResult.status === 'succeeded') { > // Record payment and mark invoice as paid > // (Same logic as charge-invoice endpoint) > } > } catch (error) { > console.error('Auto-charge failed:', error); > } > } > > return NextResponse.json({ received: true }); > } > ``` > **[Stripe Webhooks Guide](https://docs.stripe.com/webhooks)** > > Learn how to configure webhooks in your Stripe Dashboard. *** ## Testing 1. Create a subscription with "Auto-Charge" option 2. Select a tokenizable CPM (ShopeePay, GrabPay, or Card) 3. Complete authorization on HitPay redirect 4. Verify: * Customer metadata has `hitpay_recurring_billing_id` * First invoice is paid * Subscription is active > [!WARNING] > > In sandbox mode, you may need to manually trigger subsequent invoice payments. In production, the Stripe webhook handles this automatically. *** ## FAQ > **Which payment methods support auto-charge subscriptions?** > > Auto-charge requires tokenizable payment methods: **Cards**, **ShopeePay**, and **GrabPay**. PayNow is QR-based and cannot be tokenized — customers using PayNow must pay each invoice manually via the [out-of-band flow](/connections/stripe/out-of-band). > **Why is the recurring billing charge failing?** > > * Verify the recurring billing session is active (not pending or canceled) > * Check that the customer authorized the payment method > * Ensure the amount and currency are correct > **Why isn't the webhook triggering charges?** > > * Verify webhook endpoint is configured in Stripe Dashboard > * Check webhook signature verification > * Ensure `STRIPE_WEBHOOK_SECRET` is set correctly # One-Time Payments Source: https://docs.hitpayapp.com/connections/stripe/one-time-payments Implement one-time payments with Stripe Custom Payment Methods and HitPay One-time payments are single, non-recurring transactions where customers pay once for a product or service. The customer selects a HitPay payment method, completes the payment via QR code or redirect, and the transaction is recorded in Stripe. ## How It Works This integration connects Stripe's Payment Element with HitPay's Payment Request API, allowing customers to pay using local payment methods while keeping all transaction records in Stripe. ### Key Concepts | Component | Purpose | | - | - | | **Stripe PaymentIntent** | Tracks the payment intent on Stripe's side. Remains "incomplete" for external payments. | | **HitPay Payment Request** | Processes the actual payment via local methods (PayNow, ShopeePay, etc.) and generates QR codes. | | **Stripe Payment Records** | Records the external HitPay payment back in Stripe for unified reporting and reconciliation. | ### API References > **[HitPay Payment Request API](https://docs.hitpayapp.com/apis/reference/create-payment-request)** > > Create payment requests and generate QR codes for local payment methods. > **[HitPay Embedded QR Payments](https://docs.hitpayapp.com/apis/guide/embedded-qr-code-payments)** > > Embed QR codes directly in your checkout for seamless mobile payments. *** ## Payment Flow ```mermaid theme={"system"} sequenceDiagram participant User participant Frontend participant Backend participant Stripe as Stripe API participant HitPay as HitPay API User->>Frontend: Add to cart & checkout Frontend->>Backend: POST /api/create-payment-intent rect rgb(230, 240, 255) Note over Backend,Stripe: Stripe API Backend->>Stripe: paymentIntents.create() Stripe-->>Backend: clientSecret end Backend-->>Frontend: clientSecret Frontend->>User: Show Payment Element (with CPMs) User->>Frontend: Select CPM (e.g., PayNow) Frontend->>Backend: POST /api/hitpay/create rect rgb(255, 240, 230) Note over Backend,HitPay: HitPay API Backend->>HitPay: POST /payment-requests HitPay-->>Backend: QR code + paymentRequestId end Backend-->>Frontend: QR code data Frontend->>User: Display QR code User->>HitPay: Scan & pay via mobile app rect rgb(255, 240, 230) Note over HitPay,Backend: HitPay Webhook HitPay->>Backend: POST /api/hitpay/webhook end rect rgb(230, 240, 255) Note over Backend,Stripe: Stripe API Backend->>Stripe: paymentMethods.create() Backend->>Stripe: paymentRecords.reportPayment() end Backend-->>HitPay: 200 OK Frontend->>User: Redirect to success page ``` ## Step 1: Configure Custom Payment Methods Register each HitPay payment method as a Custom Payment Method (CPM) type in your Stripe Dashboard, map those CPM Type IDs to their HitPay method identifiers in a config file, and load them into the Stripe Elements provider so they appear as options in your checkout. **1. Create Custom Payment Methods on Stripe Dashboard** Stripe Dashboard Create Custom Payment Method types in your Stripe Dashboard for each HitPay payment method you want to offer. After creating the custom payment method, the Dashboard displays the custom payment method ID (beginning with cpmt\_) that you need for the next step. > **[Create CPM in Stripe Dashboard](https://docs.stripe.com/payments/payment-element/custom-payment-methods#create-cpm-in-dashboard)** > > Follow Stripe's guide to create Custom Payment Method types and get your CPM Type IDs. > **[Download Payment Icons](/files/payment_icons.zip)** > > Download official HitPay payment method icons (PayNow, ShopeePay, GrabPay, FPX, and more) optimized for Stripe Custom Payment Methods. **2. Create Configuration File** Server-side This configuration file maps the Custom Payment Methods you created in the Stripe Dashboard to their corresponding HitPay payment method identifiers. Each entry links a Stripe CPM Type ID (e.g. `cpmt_xxx`) to the HitPay API method name used when creating a payment request. See the [HitPay Payment Methods Reference](/apis/guide/payment-methods-reference) for the full list of supported payment method names and their identifiers. The `chargeAutomatically` flag indicates whether a payment method supports tokenized or recurring payments — these methods can be used to charge customers automatically without requiring re-authorization each time. The code below is a sample — adapt it to the payment methods you've configured: > **config/payment-methods.ts** > > ```typescript theme={"system"} > // config/payment-methods.ts > > interface CustomPaymentMethodConfig { > id: string; // Stripe CPM Type ID (cpmt_xxx) > hitpayMethod: string; // HitPay one-time payment method > hitpayRecurringMethod?: string; // Example only: used when the recurring method name differs from the one-time name > displayName: string; > chargeAutomatically: boolean; // Supports auto-charge subscriptions via HitPay tokenization > } > > export const CUSTOM_PAYMENT_METHODS: CustomPaymentMethodConfig[] = [ > { > id: 'cpmt_YOUR_PAYNOW_ID', // Replace with your CPM Type ID > hitpayMethod: 'paynow_online', > displayName: 'PayNow', > chargeAutomatically: false, // QR-based, no tokenization > }, > { > id: 'cpmt_YOUR_SHOPEEPAY_ID', > hitpayMethod: 'shopee_pay', > hitpayRecurringMethod: 'shopee_recurring', > displayName: 'ShopeePay', > chargeAutomatically: true, > }, > { > id: 'cpmt_YOUR_GRABPAY_ID', > hitpayMethod: 'grabpay', > hitpayRecurringMethod: 'grabpay_direct', > displayName: 'GrabPay', > chargeAutomatically: true, > }, > ]; > > export function getHitpayMethod(cpmTypeId: string): string | undefined { > return CUSTOM_PAYMENT_METHODS.find(pm => pm.id === cpmTypeId)?.hitpayMethod; > } > ``` > [!TIP] > > You'll have **different CPM Type IDs in sandbox and production** — they are separate Stripe accounts. Consider using environment variables or an `ids: { sandbox: string, production: string }` structure so you can switch between environments without code changes. **3. Add Custom Payment Method Type to Stripe Elements Configuration** Client-side Next, add the custom payment method type to your Stripe Elements configuration. In your `checkout.js` file where you initialise Stripe Elements, specify the `customPaymentMethods` to add to the Payment Element. Provide the custom payment method ID from the previous step, the `options.type` and an optional subtitle. Load Stripe.js with the beta flag: > **lib/stripe-client.ts** > > ```typescript theme={"system"} > // lib/stripe-client.ts > import { loadStripe } from '@stripe/stripe-js'; > > export const stripePromise = loadStripe( > process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY!, > { > betas: ['custom_payment_methods_beta_1'], > } > ); > ``` > **Add CPMs to Elements provider** > > ```tsx theme={"system"} > // Add CPMs to Elements provider > import { CUSTOM_PAYMENT_METHODS } from '@/config/payment-methods'; > > const elementsOptions = { > clientSecret, > customPaymentMethods: CUSTOM_PAYMENT_METHODS.map(pm => ({ > id: pm.id, > options: { type: 'static' as const }, > })), > }; > > > > > ``` After loading, the Payment Element shows your custom payment method. > **[Add CPM to Elements](https://docs.stripe.com/payments/payment-element/custom-payment-methods#add-cpm-to-elements)** > > Learn more about configuring Custom Payment Methods in the Payment Element. *** ## Step 2: Display Payment on Stripe Payment Elements When a customer selects a HitPay payment method in the Payment Element, your backend creates a HitPay payment request and returns a QR code or deep link for the customer to complete payment on their mobile device. **1. Configure Environment Variables** Server-side Set up the required API keys and configuration for both Stripe and HitPay. These credentials authenticate your server with both payment platforms. ```bash theme={"system"} # Stripe NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_xxx STRIPE_SECRET_KEY=sk_test_xxx # HitPay HITPAY_API_KEY=xxx HITPAY_SALT=xxx NEXT_PUBLIC_HITPAY_ENV=sandbox # or 'production' NEXT_PUBLIC_SITE_URL=https://your-domain.com ``` > [!WARNING] > > Never expose `STRIPE_SECRET_KEY` or `HITPAY_API_KEY` to the client. **2. Create HitPay Payment Request** Server-side When a user selects a CPM in the Payment Element, create a HitPay payment request and display the QR code: > **app/api/hitpay/create/route.ts** > > ```typescript theme={"system"} > // app/api/hitpay/create/route.ts > import { NextResponse } from 'next/server'; > > const HITPAY_API_URL = process.env.NEXT_PUBLIC_HITPAY_ENV === 'production' > ? 'https://api.hit-pay.com/v1' > : 'https://api.sandbox.hit-pay.com/v1'; > > export async function POST(request: Request) { > const { amount, currency, paymentMethod, paymentIntentId } = await request.json(); > > const baseUrl = process.env.NEXT_PUBLIC_BASE_URL; > > const response = await fetch(`${HITPAY_API_URL}/payment-requests`, { > method: 'POST', > headers: { > 'Content-Type': 'application/json', > 'X-BUSINESS-API-KEY': process.env.HITPAY_API_KEY!, > }, > body: JSON.stringify({ > amount: (amount / 100).toFixed(2), // Convert cents to dollars > currency, > payment_methods: [paymentMethod], > reference_number: paymentIntentId, > webhook: `${baseUrl}/api/hitpay/webhook`, > generate_qr: true, > }), > }); > > const data = await response.json(); > > return NextResponse.json({ > paymentRequestId: data.id, > qrCode: data.qr_code_data?.qr_code, > directLinkUrl: data.direct_link?.direct_link_url, > checkoutUrl: data.url, > }); > } > ``` > [!TIP] > > **Displaying QR Codes:** The `generate_qr: true` parameter returns QR code data in `qr_code_data.qr_code`. For detailed guidance on rendering QR codes and handling different payment methods, see our Embedded QR Code Payments guide. > [!NOTE] > > **App-based methods (ShopeePay, GrabPay):** Some payment methods don't generate a QR code — instead, HitPay returns a `direct_link.direct_link_url` that opens the payment app directly. When `directLinkUrl` is present, redirect the customer to that URL instead of displaying a QR code. > **[Embedded QR Code Payments](/apis/guide/embedded-qr-code-payments)** > > Learn how to embed and display QR codes for PayNow, ShopeePay, and other supported payment methods. **3. Display QR Code in Payment Element** Client-side Render the QR code in your checkout form when a customer selects a HitPay payment method. The customer scans the QR code with their mobile app to complete the payment. > **components/CheckoutForm.tsx** > > ```tsx theme={"system"} > // components/CheckoutForm.tsx > 'use client'; > > import { useState } from 'react'; > import { PaymentElement } from '@stripe/react-stripe-js'; > import { QRCodeSVG } from 'qrcode.react'; > import { CUSTOM_PAYMENT_METHODS, getHitpayMethod } from '@/config/payment-methods'; > > export function CheckoutForm({ amount, currency, paymentIntentId }) { > const [qrCode, setQrCode] = useState(null); > const [selectedCpm, setSelectedCpm] = useState(null); > > const handlePaymentElementChange = async (event: any) => { > const paymentType = event.value?.type; > > // Check if selected payment method is a CPM > const isCpm = CUSTOM_PAYMENT_METHODS.some(pm => pm.id === paymentType); > > if (isCpm) { > setSelectedCpm(paymentType); > > // Create HitPay payment request > const hitpayMethod = getHitpayMethod(paymentType); > const response = await fetch('/api/hitpay/create', { > method: 'POST', > headers: { 'Content-Type': 'application/json' }, > body: JSON.stringify({ > amount, > currency, > paymentMethod: hitpayMethod, > paymentIntentId, > }), > }); > > const data = await response.json(); > > if (data.directLinkUrl) { > // App-based method (e.g. ShopeePay, GrabPay) — redirect to payment app > window.location.href = data.directLinkUrl; > } else { > setQrCode(data.qrCode); > } > } else { > setSelectedCpm(null); > setQrCode(null); > } > }; > > return ( >
> > > {qrCode && ( >
>

Scan to Pay

> >

Waiting for payment...

>
> )} >
> ); > } > ``` *** ## Step 3: Record Payment Confirmation Once the customer pays via HitPay, your backend receives a webhook, verifies the payment, and records it in Stripe using the Payment Records API — making it visible in your Stripe Dashboard alongside native card payments. > [!NOTE] > > Without this step, HitPay payments only appear in your HitPay Dashboard. By recording them via Stripe's Payment Records API, you get a **single source of truth** for all transactions — cards, PayNow, ShopeePay, and more — all in one place. > **[Stripe Payment Records API](https://docs.stripe.com/payments/payment-element/custom-payment-methods#record-payment)** > > Learn how Payment Records work and how they appear in your Stripe Dashboard. **1. Listen for Payment Confirmation** Server-side **Webhooks (Recommended)** **Use webhooks for production.** HitPay automatically sends a POST request to your server when payment is completed. **How it works:** 1. Customer completes payment via HitPay (scans QR, etc.) 2. HitPay sends webhook to your `/api/hitpay/webhook` endpoint 3. Your server verifies the signature and confirms payment status 4. Your server creates a **Payment Record** in Stripe 5. Transaction now appears in **Stripe Dashboard** for reconciliation | Advantage | Description | | - | - | | **Reliable** | Payments recorded even if user closes browser | | **Real-time** | Instant notification on payment completion | | **Secure** | HMAC signature verification prevents fraud | | **Unified Dashboard** | All transactions visible in Stripe | > [!NOTE] > > **Frontend completion detection:** Even when using webhooks for payment recording, your frontend still needs a way to know when the payment is complete so it can redirect the customer. The recommended pattern is to have the frontend **poll a status endpoint** (e.g., `/api/payment/check-status`) every few seconds — this endpoint checks whether the webhook has already recorded the payment. Use an **idempotency key** (e.g., `prec-{paymentRequestId}`) when creating the Payment Record to prevent double-recording if both webhook and polling race. > **[HitPay Webhooks Guide](https://docs.hitpayapp.com/apis/guide/webhook)** > > Configure webhooks in your HitPay Dashboard. > **app/api/hitpay/webhook/route.ts** > > ```typescript theme={"system"} > // app/api/hitpay/webhook/route.ts > import { NextRequest, NextResponse } from 'next/server'; > import crypto from 'crypto'; > import Stripe from 'stripe'; > > const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, { > apiVersion: '2024-12-18.acacia;custom_payment_methods_beta=v1', > }); > > function verifySignature(payload: Record, hmac: string): boolean { > const salt = process.env.HITPAY_SALT!; > const sortedKeys = Object.keys(payload).filter(k => k !== 'hmac').sort(); > const signatureString = sortedKeys.map(k => `${k}${payload[k]}`).join(''); > const calculated = crypto.createHmac('sha256', salt).update(signatureString).digest('hex'); > return calculated === hmac; > } > > export async function POST(request: NextRequest) { > const contentType = request.headers.get('content-type') || ''; > let payload: Record; > > if (contentType.includes('application/x-www-form-urlencoded')) { > const formData = await request.formData(); > payload = Object.fromEntries(formData.entries()) as Record; > } else { > payload = await request.json(); > } > > // Verify webhook signature > if (!verifySignature(payload, payload.hmac)) { > return NextResponse.json({ error: 'Invalid signature' }, { status: 401 }); > } > > // Only process completed payments > if (payload.status !== 'completed') { > return NextResponse.json({ received: true }); > } > > const paymentIntentId = payload.reference_number; > const paymentIntent = await stripe.paymentIntents.retrieve(paymentIntentId); > > // Idempotency check > if (paymentIntent.metadata?.external_payment_status === 'completed') { > return NextResponse.json({ received: true, message: 'Already recorded' }); > } > > // Create PaymentMethod with CPM type > const cpmTypeId = paymentIntent.metadata?.cpm_type_id || 'cpmt_xxx'; > const paymentMethod = await stripe.paymentMethods.create({ > type: 'custom', > custom: { type: cpmTypeId }, > }); > > // Record payment via Payment Records API > const timestamp = Math.floor(Date.now() / 1000); > await stripe.paymentRecords.reportPayment({ > amount_requested: { > value: paymentIntent.amount, > currency: paymentIntent.currency, > }, > payment_method_details: { payment_method: paymentMethod.id }, > processor_details: { > type: 'custom', > custom: { payment_reference: payload.payment_request_id }, > }, > initiated_at: timestamp, > customer_presence: 'on_session', > outcome: 'guaranteed', > guaranteed: { guaranteed_at: timestamp }, > metadata: { > payment_intent_id: paymentIntentId, > hitpay_payment_id: payload.payment_id, > }, > }); > > // Update PaymentIntent metadata > await stripe.paymentIntents.update(paymentIntentId, { > metadata: { external_payment_status: 'completed' }, > }); > > return NextResponse.json({ received: true }); > } > ``` **Polling (Not Recommended)** > [!WARNING] > > **Not recommended for production.** Polling may miss payments if the user closes their browser before completion is detected. Use webhooks instead. Polling is useful for **local development** when you don't have a public webhook URL. **How it works:** 1. Frontend polls `/api/payment/check-status` every 3 seconds 2. Backend checks HitPay API for payment status 3. When completed, backend creates a **Payment Record** in Stripe 4. Frontend redirects to success page > **app/api/payment/check-status/route.ts** > > ```typescript theme={"system"} > // app/api/payment/check-status/route.ts > import { NextResponse } from 'next/server'; > import Stripe from 'stripe'; > > const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, { > apiVersion: '2024-12-18.acacia;custom_payment_methods_beta=v1', > }); > > const HITPAY_API_URL = process.env.NEXT_PUBLIC_HITPAY_ENV === 'production' > ? 'https://api.hit-pay.com/v1' > : 'https://api.sandbox.hit-pay.com/v1'; > > export async function POST(request: Request) { > const { paymentRequestId, paymentIntentId, cpmTypeId } = await request.json(); > > // Check HitPay payment status > const statusResponse = await fetch( > `${HITPAY_API_URL}/payment-requests/${paymentRequestId}`, > { headers: { 'X-BUSINESS-API-KEY': process.env.HITPAY_API_KEY! } } > ); > const statusData = await statusResponse.json(); > > if (statusData.status !== 'completed') { > return NextResponse.json({ status: statusData.status }); > } > > // Record payment in Stripe (same logic as webhook) > const paymentIntent = await stripe.paymentIntents.retrieve(paymentIntentId); > > if (paymentIntent.metadata?.external_payment_status === 'completed') { > return NextResponse.json({ status: 'completed', alreadyRecorded: true }); > } > > const paymentMethod = await stripe.paymentMethods.create({ > type: 'custom', > custom: { type: cpmTypeId }, > }); > > const timestamp = Math.floor(Date.now() / 1000); > await stripe.paymentRecords.reportPayment({ > amount_requested: { > value: paymentIntent.amount, > currency: paymentIntent.currency, > }, > payment_method_details: { payment_method: paymentMethod.id }, > processor_details: { > type: 'custom', > custom: { payment_reference: paymentRequestId }, > }, > initiated_at: timestamp, > customer_presence: 'on_session', > outcome: 'guaranteed', > guaranteed: { guaranteed_at: timestamp }, > }); > > await stripe.paymentIntents.update(paymentIntentId, { > metadata: { external_payment_status: 'completed' }, > }); > > return NextResponse.json({ status: 'completed' }); > } > ``` **Frontend polling:** > **Frontend polling snippet** > > ```tsx theme={"system"} > // Poll every 3 seconds until payment is completed > const poll = async () => { > const response = await fetch('/api/payment/check-status', { > method: 'POST', > body: JSON.stringify({ paymentRequestId, paymentIntentId, cpmTypeId }), > }); > const { status } = await response.json(); > > if (status === 'completed') { > window.location.href = '/success'; > } else { > setTimeout(poll, 3000); > } > }; > ``` **2. Record the Payment to Your Stripe Account** Server-side Once HitPay confirms the payment is complete, call `stripe.paymentRecords.reportPayment()` to create a **Payment Record** (`prec_xxx`) in Stripe. This is what makes the transaction visible in your Stripe Dashboard alongside native card payments. > [!NOTE] > > The original PaymentIntent remains `"Incomplete"` — this is expected for external payments. The Payment Record is the canonical record of the transaction and what Stripe uses for revenue reporting. Each field in the payload serves a specific purpose: | Field | Value | Why | | - | - | - | | `amount_requested` | PaymentIntent `amount` + `currency` | Ties the record to the original order amount | | `payment_method_details.payment_method` | Custom PaymentMethod ID (`pm_xxx`) | Links the CPM type (PayNow, ShopeePay, etc.) to this record | | `processor_details.custom.payment_reference` | HitPay payment ID | External transaction reference for reconciliation | | `initiated_at` | Unix timestamp | When the payment was initiated | | `customer_presence` | `'on_session'` | Customer was actively present at time of payment | | `outcome` | `'guaranteed'` | HitPay has confirmed settlement — funds are guaranteed | | `guaranteed.guaranteed_at` | Unix timestamp | When settlement was confirmed by HitPay | | `metadata` | HitPay IDs, PI ID | Searchable references for support and debugging | > **Record payment — stripe.paymentRecords.reportPayment()** > > ```typescript theme={"system"} > // After HitPay confirms payment is completed: > > // 1. Create a PaymentMethod instance for your CPM type > const paymentMethod = await stripe.paymentMethods.create({ > type: 'custom', > custom: { type: 'cpmt_xxx' }, // your CPM Type ID from Stripe Dashboard > }); > > // 2. Report the payment — creates a prec_xxx record in Stripe > const paymentRecord = await stripe.paymentRecords.reportPayment({ > amount_requested: { > value: paymentIntent.amount, // in cents, matches the original PaymentIntent > currency: paymentIntent.currency, > }, > payment_method_details: { > payment_method: paymentMethod.id, // links the CPM type to this record > }, > processor_details: { > type: 'custom', > custom: { > payment_reference: hitpayPaymentId, // HitPay's payment ID for reconciliation > }, > }, > initiated_at: Math.floor(Date.now() / 1000), > customer_presence: 'on_session', > outcome: 'guaranteed', > guaranteed: { guaranteed_at: Math.floor(Date.now() / 1000) }, > metadata: { > hitpay_payment_id: hitpayPaymentId, > hitpay_payment_request_id: hitpayPaymentRequestId, > stripe_payment_intent_id: paymentIntentId, > }, > }); > > // 3. Update PaymentIntent metadata for easy lookup > await stripe.paymentIntents.update(paymentIntentId, { > metadata: { > external_payment_status: 'completed', > stripe_payment_record_id: paymentRecord.id, // prec_xxx > }, > }); > ``` *** ## Testing ### Sandbox Testing 1. Set `NEXT_PUBLIC_HITPAY_ENV=sandbox` in your environment 2. Use HitPay sandbox API credentials 3. When a QR code is displayed, HitPay provides a "Complete Mock Payment" link 4. Click this link to simulate a successful payment ### Production Testing 1. Switch to production credentials 2. Use real payment apps to scan QR codes 3. Verify payments appear in both HitPay and Stripe dashboards > [!WARNING] > > PaymentIntents will show as "Incomplete" in Stripe - this is expected. External payments are tracked via Payment Records (`prec_*` IDs). *** ## FAQ > **Why isn't my CPM showing in the Payment Element?** > > * Verify the CPM Type is **enabled** in Stripe Dashboard > * Check that the CPM ID in your config matches the Dashboard > * Ensure you're loading Stripe.js with `custom_payment_methods_beta_1` > **Why isn't the QR code appearing?** > > * Not all HitPay methods support QR codes (e.g., GrabPay uses redirect) > * Check the `checkoutUrl` fallback is being displayed > * Verify the payment method is enabled in HitPay Dashboard > **Why am I getting a HitPay 422 validation error?** > > * The payment method may not be enabled in your HitPay account > * Some methods aren't available in sandbox mode > * Check the error message for specific details > **Why isn't the payment recording in Stripe?** > > * Check server logs for Payment Records API errors > * Verify your Stripe API version includes the beta flag > * The payment still succeeded if HitPay shows completed # Subscriptions (Out-of-Band) Source: https://docs.hitpayapp.com/connections/stripe/out-of-band Implement out-of-band subscriptions with Stripe Custom Payment Methods and HitPay Out-of-band subscriptions allow customers to pay each invoice manually using any HitPay payment method. This is the same flow as one-time payments, repeated per billing cycle. This approach works with all payment methods including QR-based ones like PayNow that cannot be tokenized. ## How It Works This integration connects Stripe's Subscription API with HitPay's Payment Request API, allowing customers to pay each invoice using local payment methods while keeping all subscription records in Stripe. ### Key Concepts | Component | Purpose | | - | - | | **Stripe Subscription** | Manages subscription lifecycle with `send_invoice` collection method. Generates invoices each billing cycle. | | **HitPay Payment Request** | Creates one-time payment requests (QR codes or redirect) for each invoice. | | **Stripe Payment Records** | Records each HitPay payment in Stripe for unified reporting and reconciliation. | ### API References > **[HitPay Payment Request API](https://docs.hitpayapp.com/apis/guide/payment-requests)** > > Create payment requests with QR codes for one-time payments. > **[Stripe Subscriptions API](https://docs.stripe.com/billing/subscriptions/overview)** > > Manage subscription lifecycle and invoice generation. > [!TIP] > > Out-of-band subscriptions work with **all payment methods** since each invoice is paid as a one-time payment. This is ideal for QR-based methods like PayNow that cannot be tokenized. ## Payment Flow ```mermaid theme={"system"} sequenceDiagram participant User participant Frontend participant Backend participant Stripe participant HitPay User->>Frontend: Select subscription + "Pay Each Invoice" Frontend->>Backend: POST /api/create-subscription Backend->>Stripe: Create Subscription (send_invoice) Stripe-->>Backend: subscriptionId + invoiceClientSecret Backend-->>Frontend: clientSecret Frontend->>User: Show Payment Element User->>Frontend: Select CPM & scan QR User->>HitPay: Complete payment Frontend->>Backend: POST /api/subscription/pay-invoice Backend->>Stripe: Mark invoice paid_out_of_band Backend->>Stripe: Create PaymentRecord Backend-->>Frontend: Success Note over User,Stripe: Next billing cycle: new invoice sent ``` *** ## Step 1: Configure Custom Payment Methods Register each HitPay payment method as a Custom Payment Method (CPM) type in your Stripe Dashboard and map those CPM Type IDs to HitPay method identifiers in a config file so they appear as options in your checkout. **1. Create Custom Payment Methods on Stripe Dashboard** Stripe Dashboard Create Custom Payment Method types in your Stripe Dashboard for each HitPay payment method you want to offer. > **[Create CPM in Stripe Dashboard](https://docs.stripe.com/payments/payment-element/custom-payment-methods#create-cpm-in-dashboard)** > > Follow Stripe's guide to create Custom Payment Method types and get your CPM Type IDs. > **[Download Payment Icons](/files/payment_icons.zip)** > > Download official HitPay payment method icons (PayNow, ShopeePay, GrabPay, FPX, and more) optimized for Stripe Custom Payment Methods. **2. Create Configuration File** Server-side Map your Stripe CPM Type IDs to HitPay payment methods. For out-of-band subscriptions, you only need the `hitpayMethod` (one-time payment method). > **config/payment-methods.ts** > > ```typescript theme={"system"} > // config/payment-methods.ts > > interface CustomPaymentMethodConfig { > id: string; // Stripe CPM Type ID (cpmt_xxx) > hitpayMethod: string; // HitPay one-time payment method > hitpayRecurringMethod?: string; // HitPay recurring billing method (optional) > displayName: string; > chargeAutomatically: boolean; // Supports auto-charge subscriptions > } > > export const CUSTOM_PAYMENT_METHODS: CustomPaymentMethodConfig[] = [ > { > id: 'cpmt_YOUR_PAYNOW_ID', > hitpayMethod: 'paynow_online', > displayName: 'PayNow', > chargeAutomatically: false, // QR-based, no tokenization > }, > { > id: 'cpmt_YOUR_SHOPEEPAY_ID', > hitpayMethod: 'shopee_pay', > hitpayRecurringMethod: 'shopee_recurring', > displayName: 'ShopeePay', > chargeAutomatically: true, > }, > { > id: 'cpmt_YOUR_GRABPAY_ID', > hitpayMethod: 'grabpay', > hitpayRecurringMethod: 'grabpay_direct', > displayName: 'GrabPay', > chargeAutomatically: true, > }, > { > id: 'cpmt_YOUR_CARD_ID', > hitpayMethod: 'card', > hitpayRecurringMethod: 'card', > displayName: 'Card', > chargeAutomatically: true, > }, > ]; > > export function getHitpayMethod(cpmTypeId: string): string | undefined { > const config = CUSTOM_PAYMENT_METHODS.find(pm => pm.id === cpmTypeId); > return config?.hitpayMethod; > } > ``` *** ## Step 2: Create Subscription Create a Stripe Subscription with `send_invoice` collection method, which tells Stripe to issue invoices that customers pay manually — rather than charging a saved payment method automatically. **1. Configure Environment Variables** Server-side Set up the required API keys and configuration for both Stripe and HitPay. ```bash theme={"system"} # Stripe (Standard Account Keys) NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_xxx STRIPE_SECRET_KEY=sk_test_xxx # HitPay HITPAY_API_KEY=xxx HITPAY_SALT=xxx NEXT_PUBLIC_HITPAY_ENV=sandbox # or 'production' ``` > [!WARNING] > > Never expose your `STRIPE_SECRET_KEY` or `HITPAY_API_KEY` to the client. These should only be used server-side. **2. Create Subscription with Send Invoice** Server-side Create a Stripe subscription with `send_invoice` collection method. This creates invoices that customers pay manually each billing cycle. > **app/api/create-subscription/route.ts** > > ```typescript theme={"system"} > // app/api/create-subscription/route.ts > import { NextResponse } from 'next/server'; > import { stripe } from '@/lib/stripe'; > > export async function POST(request: Request) { > const { priceId, email } = await request.json(); > > // Create or retrieve customer > let customer; > const existingCustomers = await stripe.customers.list({ email, limit: 1 }); > if (existingCustomers.data.length > 0) { > customer = existingCustomers.data[0]; > } else { > customer = await stripe.customers.create({ email }); > } > > // Create subscription with manual invoice payment > const subscription = await stripe.subscriptions.create({ > customer: customer.id, > items: [{ price: priceId }], > collection_method: 'send_invoice', > days_until_due: 0, // Invoice due immediately > payment_settings: { > payment_method_types: ['card'], > }, > }); > > // Finalize invoice to get PaymentIntent > const invoice = await stripe.invoices.retrieve(subscription.latest_invoice as string); > const finalizedInvoice = await stripe.invoices.finalizeInvoice(invoice.id); > > // Get client secret for Payment Element > let clientSecret: string; > if (finalizedInvoice.payment_intent) { > const pi = await stripe.paymentIntents.retrieve( > finalizedInvoice.payment_intent as string > ); > clientSecret = pi.client_secret!; > } else { > // Create a UI PaymentIntent if needed > const pi = await stripe.paymentIntents.create({ > amount: finalizedInvoice.amount_due, > currency: finalizedInvoice.currency, > customer: customer.id, > metadata: { invoice_id: finalizedInvoice.id }, > }); > clientSecret = pi.client_secret!; > } > > return NextResponse.json({ > subscriptionId: subscription.id, > invoiceId: finalizedInvoice.id, > clientSecret, > customerId: customer.id, > billingType: 'out_of_band', > type: 'payment', > }); > } > ``` > [!NOTE] > > The key difference from auto-charge is `collection_method: 'send_invoice'` with `days_until_due: 0`, which creates an invoice due immediately that customers pay manually. *** ## Step 3: Handle Invoice Payment When the customer selects a HitPay payment method for an invoice, create a HitPay payment request, display the QR code for them to scan, and mark the invoice as paid once HitPay confirms the payment. **1. Create HitPay Payment Request** Server-side Use the same HitPay Payment Request endpoint from the one-time payments flow. When a customer selects a custom payment method, create a payment request for the invoice amount. > **[HitPay Payment Request](/connections/stripe/one-time-payments#step-2-create-payment-request)** > > See the one-time payments guide for the HitPay payment request implementation. **2. Display QR Code and Poll for Payment** Client-side Show the QR code or redirect URL and poll for payment completion. This is the same flow as one-time payments. > **components/SubscriptionCheckoutForm.tsx** > > ```tsx theme={"system"} > // components/SubscriptionCheckoutForm.tsx > 'use client'; > > import { useState, useCallback } from 'react'; > import { PaymentElement, useStripe, useElements } from '@stripe/react-stripe-js'; > import { QRCodeSVG } from 'qrcode.react'; > import { CUSTOM_PAYMENT_METHODS, getHitpayMethod } from '@/config/payment-methods'; > > interface Props { > amount: number; > currency: string; > invoiceId: string; > subscriptionId: string; > } > > export function SubscriptionCheckoutForm({ > amount, > currency, > invoiceId, > subscriptionId, > }: Props) { > const stripe = useStripe(); > const elements = useElements(); > > const [selectedCpm, setSelectedCpm] = useState(null); > const [qrCode, setQrCode] = useState(null); > const [paymentRequestId, setPaymentRequestId] = useState(null); > const [isPolling, setIsPolling] = useState(false); > > const isCustomPaymentMethod = (type: string) => { > return CUSTOM_PAYMENT_METHODS.some(pm => pm.id === type); > }; > > const handlePaymentElementChange = async (event: any) => { > const paymentType = event.value?.type; > > if (paymentType && isCustomPaymentMethod(paymentType)) { > setSelectedCpm(paymentType); > await createHitPayRequest(paymentType); > } else { > setSelectedCpm(null); > setQrCode(null); > } > }; > > const createHitPayRequest = async (cpmTypeId: string) => { > const hitpayMethod = getHitpayMethod(cpmTypeId); > if (!hitpayMethod) return; > > const response = await fetch('/api/hitpay/create', { > method: 'POST', > headers: { 'Content-Type': 'application/json' }, > body: JSON.stringify({ > amount, > currency, > paymentMethod: hitpayMethod, > paymentIntentId: invoiceId, // Use invoice ID as reference > }), > }); > > const data = await response.json(); > > if (data.qrCode) { > setQrCode(data.qrCode); > setPaymentRequestId(data.paymentRequestId); > startPolling(data.paymentRequestId, cpmTypeId); > } > }; > > const startPolling = useCallback((requestId: string, cpmTypeId: string) => { > setIsPolling(true); > let attempts = 0; > > const poll = async () => { > if (attempts >= 60) { > setIsPolling(false); > return; > } > > // Check HitPay status > const statusRes = await fetch('/api/hitpay/status', { > method: 'POST', > headers: { 'Content-Type': 'application/json' }, > body: JSON.stringify({ paymentRequestId: requestId }), > }); > const { status } = await statusRes.json(); > > if (status === 'completed') { > // Mark invoice as paid > await fetch('/api/subscription/pay-invoice', { > method: 'POST', > headers: { 'Content-Type': 'application/json' }, > body: JSON.stringify({ > invoiceId, > paymentRequestId: requestId, > cpmTypeId, > }), > }); > > setIsPolling(false); > window.location.href = '/subscribe/success'; > } else { > attempts++; > setTimeout(poll, 3000); > } > }; > > poll(); > }, [invoiceId]); > > return ( >
> > > {qrCode && ( >
>

Scan to Pay Invoice

> > {isPolling &&

Waiting for payment...

} >
> )} > > {!selectedCpm && ( > > )} >
> ); > } > ``` **3. Mark Invoice as Paid** Server-side After verifying the HitPay payment, create a Payment Record in Stripe and mark the invoice as paid out-of-band. > **app/api/subscription/pay-invoice/route.ts** > > ```typescript theme={"system"} > // app/api/subscription/pay-invoice/route.ts > import { NextResponse } from 'next/server'; > import { stripe } from '@/lib/stripe'; > import { getHitPayPaymentStatus } from '@/lib/hitpay'; > > export async function POST(request: Request) { > const { invoiceId, paymentRequestId, cpmTypeId } = await request.json(); > > // Verify HitPay payment completed > const { status, payment_id } = await getHitPayPaymentStatus(paymentRequestId); > if (status !== 'completed') { > return NextResponse.json( > { error: 'Payment not completed' }, > { status: 400 } > ); > } > > // Create PaymentMethod with CPM type > const paymentMethod = await stripe.paymentMethods.create({ > type: 'custom', > custom: { type: cpmTypeId }, > }); > > // Get invoice details > const invoice = await stripe.invoices.retrieve(invoiceId); > > // Record the payment > const timestamp = Math.floor(Date.now() / 1000); > await (stripe as any).paymentRecords.reportPayment({ > amount_requested: { > value: invoice.amount_due, > currency: invoice.currency, > }, > payment_method_details: { > payment_method: paymentMethod.id, > }, > processor_details: { > type: 'custom', > custom: { > payment_reference: payment_id || paymentRequestId, > }, > }, > initiated_at: timestamp, > customer_presence: 'on_session', > outcome: 'guaranteed', > guaranteed: { guaranteed_at: timestamp }, > metadata: { > invoice_id: invoiceId, > hitpay_payment_request_id: paymentRequestId, > }, > }); > > // Mark invoice as paid out-of-band > await stripe.invoices.pay(invoiceId, { > paid_out_of_band: true, > }); > > return NextResponse.json({ > success: true, > invoiceId, > }); > } > ``` *** ## Step 4: Handle Future Invoices Each billing cycle, Stripe automatically generates a new invoice. Since out-of-band subscriptions don't use tokenized payment methods, customers pay each invoice manually using the same QR code flow — no webhook or automatic charge required. **1. Future Invoice Flow** Info Each billing cycle, Stripe automatically generates a new invoice. Since out-of-band subscriptions don't use tokenized payment methods, customers pay each invoice manually using the same one-time payment flow. **How it works:** 1. Stripe generates a new invoice at the start of each billing cycle 2. You notify the customer (via email or your app) that a new invoice is ready 3. Customer returns to your payment page and pays the invoice using any HitPay payment method 4. The payment is recorded and the invoice is marked as paid > [!NOTE] > > Unlike auto-charge subscriptions, there's no webhook to automatically charge the customer. You can optionally set up a webhook for `invoice.created` to send payment reminders. *** ## Testing 1. Create a subscription with "Pay Each Invoice" option 2. Select a CPM and scan the QR code 3. Complete the mock payment in HitPay sandbox 4. Verify: * Invoice marked as `paid_out_of_band` in Stripe * Payment Record created (`prec_*`) * Subscription is active *** ## FAQ > **Why isn't the invoice being marked as paid?** > > * Check that `paid_out_of_band: true` is passed to `invoices.pay()` > * Verify the Payment Record was created successfully > * Check server logs for API errors > **Why isn't the QR code appearing?** > > * Verify the HitPay API key is correct > * Check that the payment method supports QR codes > * Ensure the amount and currency are valid > **Why isn't the payment status updating?** > > * Check that polling is running correctly > * Verify HitPay webhook is configured for real-time updates > * Check browser console for network errors # Overview Source: https://docs.hitpayapp.com/connections/stripe/overview Integrate HitPay payment methods into Stripe's Payment Element using Custom Payment Methods ![Stripe Custom Payment Methods checkout demo showing PayNow, ShopeePay, and Card payment options](https://mintcdn.com/hitpay/kd0ne38czi0ypO6R/images/connections/stripe/hitpay-stripe-cpm-demo.gif?s=d17acc301f16025c975d5a7fa4f763b5) Stripe Custom Payment Methods (CPM) allow you to offer HitPay payment methods (PayNow, ShopeePay, GrabPay, etc.) directly within Stripe's Payment Element. This provides a unified checkout experience while leveraging HitPay's local payment processing capabilities. While you process custom payment method transactions outside of Stripe, you can still record the transaction details to your Stripe account to unify reporting and build back office workflows. > **[Custom Payment Methods](https://docs.stripe.com/payments/custom-payment-methods)** > > Learn how Stripe Custom Payment Methods work and how to configure them in your account. > **[Payment Records API](https://docs.stripe.com/payments/payment-records)** > > Understand how to record external payments in Stripe using the Payment Records API. ## Supported Payment Flows | Flow | Description | | - | - | | **One-Time Payments** | Customer selects a HitPay payment method, scans QR code or completes via redirect, payment recorded in Stripe | | **Subscriptions (Auto-Charge)** | Customer authorizes and tokenizes a payment method once, future invoices charged automatically via HitPay | | **Subscriptions (Out-of-Band)** | Customer completes a one-time payment for each invoice (not tokenized) - same flow as one-time payments, repeated per billing cycle | > [!NOTE] > > **Choosing a subscription flow:** Use **Auto-Charge** for the best customer experience with cards, ShopeePay, or GrabPay. Use **Out-of-Band** when customers prefer QR-based methods like PayNow, or when you want customers to actively approve each payment. *** ## Supported Payment Methods HitPay supports a wide range of local payment methods across Southeast Asia, including PayNow, ShopeePay, GrabPay, FPX, Touch 'n Go, and more. > **[HitPay Payment Methods](/payments/payments#list-of-currencies-supported-by-card-payments)** > > View the full list of payment methods and supported currencies available through HitPay. > **[Embedded QR Code Payments](https://docs.hitpayapp.com/apis/guide/embedded-qr-code-payments)** > > Learn how to embed QR codes directly in your checkout page for seamless mobile payments. > [!NOTE] > > **Auto-Charge Support:** Not all payment methods support tokenization for recurring charges. QR-based methods like PayNow require the "Out-of-Band" invoice flow where customers pay each invoice manually. Methods like Cards, ShopeePay, and GrabPay support auto-charge subscriptions. *** ## Architecture Overview ```mermaid theme={"system"} flowchart TB subgraph Browser["User's Browser"] PE["Stripe Payment Element"] end subgraph Backend["Your Backend Server"] StripeAPI["Stripe API"] HitPayAPI["HitPay API"] end subgraph External["Payment Platforms"] Stripe["Stripe"] HitPay["HitPay Gateway"] end Browser --> Backend StripeAPI --> Stripe HitPayAPI --> HitPay ``` *** ## Before you begin **1. Create a Stripe account or sign in with your existing account.** Ensure your business verification is complete to access Custom Payment Methods and the Payment Records API. **2. Create custom payment methods in the Stripe Dashboard.** Go to **Settings** → **Payments** → **Custom Payment Methods** and create a CPM for each HitPay method you want to offer. Provide the name and logo for the Payment Element to display. **Logo guidelines:** * For logos with a transparent background, consider the background colour of the Payment Element on your page and make sure that it stands out * For logos with a background fill, include rounded corners in your file, if needed * Choose a logo variant that can scale down to 16x16 pixels (often the standalone logo mark for a brand) After creating each custom payment method, copy the **CPM Type ID** (format: `cpmt_xxx`) - you'll need this for your integration. **3. Create a HitPay account or sign in with your existing account.** * **Activate payment methods**: Go to **Settings** → **Payment Methods** and enable the methods you want to offer (PayNow, ShopeePay, GrabPay, FPX, etc.) * **Get API credentials**: Go to **Settings** → **Payment Gateway** → **API Keys** and copy your **API Key** and **Salt** * **Use sandbox for testing**: Toggle to sandbox/test mode in your HitPay dashboard for development ## Build Your Integration > **[One-Time Payments](/connections/stripe/one-time-payments)** > > Implement single payment flow with QR codes > **[Subscriptions (Auto-Charge)](/connections/stripe/auto-charge)** > > Set up recurring billing with tokenized payment methods > **[Subscriptions (Out-of-Band)](/connections/stripe/out-of-band)** > > Set up recurring billing with one-time payments per invoice *** ## FAQ > **Why integrate HitPay with Stripe?** > > While Stripe offers excellent global payment coverage, **local payment methods in Southeast Asia** often have limited availability or higher fees through Stripe's native integrations. By integrating HitPay as a Custom Payment Method provider: > > **Benefits for You:** > > * **Better Local Rates** - HitPay's direct partnerships with local payment providers often result in lower transaction fees compared to Stripe's pass-through rates for regional methods. > * **Consolidated Reporting** - All HitPay transactions are recorded in Stripe via the Payment Records API - view all your payments in one dashboard without switching between platforms. > > **Benefits for Your Customers:** > > * **Unified Checkout Experience** - Customers see all payment options in a single Stripe Payment Element - no redirects to separate checkout pages or fragmented payment flows. > * **Expanded Local Coverage** - Access to PayNow, ShopeePay, GrabPay, FPX, Touch 'n Go, and other regional payment methods that customers prefer. > > **Best of both worlds:** Use Stripe's native support for cards and global methods, while leveraging HitPay for local Southeast Asian payment methods at competitive rates. > **Can I embed custom content directly in the Payment Element?** > > Yes! Instead of handling custom payment methods via the submit flow, you can use the **embedded** type to display your custom content (like QR codes) directly within the Payment Element. > > Use `type: 'embedded'` with `handleRender` and `handleDestroy` callbacks: > > ```tsx theme={"system"} > const options = { > customPaymentMethods: [ > { > id: '{{CUSTOM_PAYMENT_METHOD_TYPE_ID}}', > options: { > type: 'embedded', > subtitle: 'Pay with PayNow', > embedded: { > handleRender: (container) => { > // Render your QR code or custom content in the container > setEmbedContainer(container); > }, > handleDestroy: () => { > // Cleanup when payment method is deselected > setEmbedContainer(null); > } > } > } > } > ] > }; > ``` > > This allows you to render HitPay QR codes directly inside the Payment Element when customers select a custom payment method. > > > **[Stripe Embedded Custom Content Docs](https://docs.stripe.com/payments/payment-element/custom-payment-methods#embedded-custom-content)** > > > > Learn more about embedding custom content in the Payment Element. > **How do I customize the name and logo of my custom payment method?** > > You can customize how your custom payment methods appear in the Payment Element through the Stripe Dashboard. > > **To add or update the name and logo:** > > 1. Go to your [Stripe Dashboard](https://dashboard.stripe.com) > 2. Navigate to **Settings** → **Payments** → **Custom Payment Methods** > 3. Select the custom payment method you want to edit > 4. Update the **Display name** and upload a **Logo** image > > **Logo requirements:** > > * Recommended size: 128x128 pixels minimum > > * Supported formats: PNG, JPG, SVG > > * For transparent backgrounds, ensure the logo contrasts with your Payment Element background > > * Choose a logo variant that scales well to 16x16 pixels > > > **[Download Payment Icons](/files/payment_icons.zip)** > > > > Download a ZIP file containing official HitPay payment method icons (PayNow, ShopeePay, GrabPay, FPX, and more) optimized for Stripe Custom Payment Methods. # Refunds Source: https://docs.hitpayapp.com/connections/stripe/refunds Process refunds through HitPay and report them back to Stripe for unified reconciliation in the Custom Payment Method integration. Because HitPay processes the actual payment, refunds must be initiated through HitPay first — then reported back to Stripe. The bridge between the two systems is the **Stripe Payment Record**, which stores the HitPay payment ID at the time the payment is confirmed. ## How It Works When a payment completes, your backend calls `paymentRecords.reportPayment()` and embeds the HitPay payment ID inside the Payment Record — both in `processor_details` and in `metadata`. This creates a persistent, queryable link between the Stripe record and the HitPay payment that you can use to issue refunds later. ### Key Concepts | Component | Purpose | | - | - | | **Stripe Payment Record** | The source of truth linking Stripe and HitPay. Stores the HitPay payment ID in `processor_details.custom.payment_reference` and `metadata.hitpay_payment_id`. | | **HitPay Refund API** | Executes the actual money movement. This is the critical step — if it fails, the refund is aborted. | | **`paymentRecords.reportRefund()`** | Reports the completed HitPay refund back to Stripe so it appears in unified reporting and reconciliation. | ### API References > **[HitPay Refund API](https://docs.hitpayapp.com/apis/reference/refund-payment)** > > Initiate a refund by `payment_id` and `amount`. > **[Stripe reportRefund](https://docs.stripe.com/api/payment-records/report-refund)** > > Report a completed refund back to a Stripe Payment Record. > **[Stripe Payment Records](https://docs.stripe.com/api/payment-records)** > > Retrieve Payment Records and their metadata. *** ## How the HitPay Payment ID is Stored At payment confirmation time, your backend calls `paymentRecords.reportPayment()` with the HitPay payment ID embedded in two fields: > **Storing HitPay payment ID in reportPayment()** > > ```typescript theme={"system"} > const paymentRecord = await stripe.paymentRecords.reportPayment( > { > // ... amount, payment_method_details, etc. > processor_details: { > type: "custom", > custom: { > payment_reference: hitpayPaymentId, // ← stored here > }, > }, > metadata: { > hitpay_payment_id: hitpayPaymentId, // ← and here for easy lookup > hitpay_payment_request_id: hitpayPaymentRequestId, > stripe_payment_intent_id: paymentIntentId, > }, > }, > { idempotencyKey: `prec-${hitpayPaymentRequestId}` } > ); > ``` To look up the HitPay payment ID later, retrieve the Payment Record and read from either field: ```typescript theme={"system"} const paymentRecord = await stripe.paymentRecords.retrieve(paymentRecordId); // Option A — from processor_details const hitpayPaymentId = paymentRecord.processor_details?.custom?.payment_reference; // Option B — from metadata const hitpayPaymentId = paymentRecord.metadata?.hitpay_payment_id; ``` > [!NOTE] > > The Payment Record ID itself is typically stored on the PaymentIntent metadata as `stripe_payment_record_id` at the time of payment confirmation, so you can always trace: **PaymentIntent → Payment Record → HitPay Payment**. *** ## Refund Flow ```mermaid theme={"system"} sequenceDiagram participant Backend participant Stripe as Stripe API participant HitPay as HitPay API Backend->>Stripe: paymentRecords.retrieve(paymentRecordId) Stripe-->>Backend: paymentRecord.metadata.hitpay_payment_id rect rgb(255, 240, 230) Note over Backend,HitPay: HitPay API — critical path Backend->>HitPay: POST /v1/refund { payment_id, amount } HitPay-->>Backend: { id: hitpayRefund.id, status, amount_refunded } end rect rgb(230, 240, 255) Note over Backend,Stripe: Stripe API — non-blocking Backend->>Stripe: paymentRecords.reportRefund(paymentRecordId, { amount, refund_reference: hitpayRefund.id }) end ``` > [!NOTE] > > The HitPay refund call is the **only step that aborts the flow** on failure. The Stripe `reportRefund` call is best-effort — if it fails, the customer has still been refunded by HitPay. *** ## API Calls Summary | Step | System | Method / Endpoint | Purpose | Blocking? | | - | - | - | - | - | | 1 | Stripe | `paymentRecords.retrieve(id)` | Fetch the HitPay payment ID from Payment Record metadata | Yes | | 2 | HitPay | `POST /v1/refund` | Execute the actual refund — moves funds back to the customer | **Yes — aborts on failure** | | 3 | Stripe | `paymentRecords.reportRefund(id, {...})` | Report the completed refund back to Stripe | No | *** ## Implementation **1. Retrieve the Payment Record** Server-side Look up the Stripe Payment Record to retrieve the HitPay payment ID. The Payment Record ID should have been stored on the PaymentIntent metadata as `stripe_payment_record_id` at payment confirmation time. > **Retrieve Payment Record** > > ```typescript theme={"system"} > import Stripe from "stripe"; > > const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!); > > // Retrieve the payment record > const paymentRecord = await stripe.paymentRecords.retrieve(paymentRecordId); > const hitpayPaymentId = paymentRecord.metadata?.hitpay_payment_id; > > if (!hitpayPaymentId) { > return Response.json( > { error: "Payment Record is missing the HitPay payment ID." }, > { status: 400 } > ); > } > ``` **2. Call the HitPay Refund API** Server-side · Critical path Convert the amount from cents to a decimal string and call HitPay's refund endpoint. If this fails, the entire refund is aborted. > **Call HitPay Refund API** > > ```typescript theme={"system"} > const HITPAY_API_URL = "https://api.hit-pay.com"; // use https://api.sandbox.hit-pay.com for sandbox > > const hitpayResponse = await fetch(`${HITPAY_API_URL}/v1/refund`, { > method: "POST", > headers: { > "X-BUSINESS-API-KEY": process.env.HITPAY_API_KEY!, > "Content-Type": "application/x-www-form-urlencoded", > }, > body: new URLSearchParams({ > payment_id: hitpayPaymentId, > amount: (amountInCents / 100).toFixed(2), // HitPay expects decimal, e.g. "50.00" > }), > }); > > if (!hitpayResponse.ok) { > const error = await hitpayResponse.json(); > return Response.json({ error: error.message ?? "HitPay refund failed" }, { status: 500 }); > } > > const hitpayRefund = await hitpayResponse.json(); > // hitpayRefund.id links this refund back in Stripe > ``` > [!TIP] > > HitPay accepts `amount` as a decimal string (e.g. `"50.00"`). Stripe works in integer cents (e.g. `5000`). Always convert at system boundaries. **3. Report the refund to Stripe** Server-side · Non-blocking Report the completed refund back to the Stripe Payment Record. Pass the HitPay refund ID as `refund_reference` to cross-link the records. > **Report refund to Stripe** > > ```typescript theme={"system"} > try { > await stripe.paymentRecords.reportRefund(paymentRecordId, { > amount: { > value: amountInCents, // Stripe expects cents > currency: currency, // e.g. "sgd" > }, > processor_details: { > type: "custom", > custom: { > refund_reference: hitpayRefund.id, // links to HitPay refund > }, > }, > outcome: "refunded", > refunded: { > refunded_at: Date.now(), > }, > }); > } catch (err) { > console.error("[Refund] Failed to report refund to Stripe:", err); > // Continue — HitPay refund already processed > } > ``` *** ## Subscription Invoices For subscriptions, payments are tied to Stripe invoices rather than PaymentIntents directly. The same linkage applies — when the HitPay payment is confirmed for a subscription invoice, store both IDs in the invoice metadata: ```typescript theme={"system"} await stripe.invoices.update(invoiceId, { metadata: { hitpay_payment_id: hitpayPaymentId, stripe_payment_record_id: paymentRecord.id, }, }); ``` At refund time, retrieve the invoice to get both IDs, then follow the same refund steps above. > [!TIP] > > See [Auto-Charge](/connections/stripe/auto-charge) and [Out-of-Band](/connections/stripe/out-of-band) for how subscription payments are confirmed and how these metadata values are written. *** ## Error Handling The refund flow uses a **critical path / best-effort** pattern: | Step | Failure Behavior | | - | - | | **HitPay `POST /v1/refund`** | Returns error immediately — Stripe `reportRefund` does not execute | | `paymentRecords.reportRefund` | Logs error and continues — customer has already been refunded | *** ## Testing 1. Complete a test payment using a sandbox HitPay payment method 2. Confirm the Payment Record has `hitpay_payment_id` in its metadata 3. Initiate a refund with an amount ≤ the original payment 4. Verify in the HitPay dashboard: refund appears under the original payment 5. Verify in the Stripe dashboard: Payment Record shows the refund report **Sandbox credentials:** | System | Environment Variable | | - | - | | HitPay | `HITPAY_API_KEY_SANDBOX` | | Stripe | `STRIPE_SECRET_KEY_SANDBOX` | *** ## FAQ > **Why am I seeing 'Payment Record is missing the HitPay payment ID'?** > > The `hitpay_payment_id` was not written to the Payment Record's metadata when the original payment was confirmed. Check your `paymentRecords.reportPayment()` call and ensure the `metadata` object includes `hitpay_payment_id`. See [One-Time Payments](/connections/stripe/one-time-payments). > **Why is the HitPay refund API returning an error?** > > Common causes: > > * **Invalid `payment_id`**: Ensure you're passing the HitPay payment ID, not a Stripe ID. > * **Amount exceeds original payment**: HitPay rejects amounts greater than what was paid. > * **Already refunded**: HitPay does not allow a second refund on a fully refunded payment. > * **Wrong API key or environment**: Confirm your `HITPAY_API_KEY` matches the environment (sandbox vs. production). > **Why is Stripe reportRefund failing with 'Payment Record not found'?** > > The Payment Record ID may be from a different Stripe account or environment. Confirm the `STRIPE_SECRET_KEY` matches the account where the Payment Record was originally created. # Standard Connect Integration Source: https://docs.hitpayapp.com/connections/stripe/standard-connect Accept card payments with HitPay as a global merchant by connecting your Stripe Standard account. > [!WARNING] > > **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. > [!NOTE] > > This guide is for merchants based **outside** Singapore, Malaysia, the Philippines, and Indonesia. If you are in one of those countries, card payments are already supported natively through HitPay. HitPay supports card payments globally through **Stripe Standard Connect**. This gives you a direct relationship with Stripe — your own Stripe Dashboard, your own payout schedule, and full visibility into your card transactions — while still accepting payments through HitPay. ## How it works When you connect a Stripe Standard account to HitPay, card payments made through your HitPay payment links, online store, or integrations are processed via your Stripe account. Funds are paid out directly by Stripe to your bank account. | Area | Details | | - | - | | **Fees** | Stripe's standard processing rates apply directly to your account. HitPay charges 0.5% on transactions regardless of payment method — your HitPay dashboard reflects HitPay fees only | | **Stripe Dashboard** | You get full access to your Stripe Dashboard to view and manage your account directly | | **Fraud & disputes** | You bear liability for fraud and disputes on direct charges | | **Payouts & banking** | Payouts are controlled by Stripe — manage your banking details and payout schedule directly in your Stripe Dashboard | ## Pricing Card payments follow **Stripe's standard published rates** for your region, plus a **0.5% HitPay application fee** per transaction. | Fee | Description | | - | - | | **Stripe processing fee** | Stripe's sticker rate for your region (e.g. 2.9% + 30¢ for US cards). See [Stripe's pricing page](https://stripe.com/pricing) for your local rate. | | **HitPay application fee** | 0.5% per transaction, regardless of payment method | > [!NOTE] > > Stripe's processing fee is charged by Stripe and visible in your Stripe Dashboard. The HitPay application fee is charged separately and visible in your HitPay Dashboard. *** ## Connect your Stripe account **1. Go to Payment Methods** 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)](https://mintcdn.com/hitpay/yRLUTG8G8P9k656w/images/announcements/cards-migration-payment-methods.png?fit=max\&auto=format\&n=yRLUTG8G8P9k656w\&q=85\&s=aea86e6b6b935e6d163d2dfe29b691d8) **2. Connect your Stripe 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](https://mintcdn.com/hitpay/yRLUTG8G8P9k656w/images/announcements/cards-migration-stripe-connect-onboarding.png?fit=max\&auto=format\&n=yRLUTG8G8P9k656w\&q=85\&s=af1814b0472e7be9b6b76dd1597da217) **3. Complete the onboarding form** 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. **4. Confirm your account is active** 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](https://mintcdn.com/hitpay/yRLUTG8G8P9k656w/images/announcements/cards-migration-stripe-dashboard-confirmation.png?fit=max\&auto=format\&n=yRLUTG8G8P9k656w\&q=85\&s=becfe35d24b8d6f8806b13809ac2f69f) ![Payment Methods page showing Cards (Stripe Standard Account) as Active](https://mintcdn.com/hitpay/yRLUTG8G8P9k656w/images/announcements/cards-migration-active-confirmation.png?fit=max\&auto=format\&n=yRLUTG8G8P9k656w\&q=85\&s=b7982fa6aea8edd60b7556b9bd8fda6a) The process typically takes a few minutes. You will see a confirmation once your account is successfully connected. *** ## Terminal setup If you use HitPay terminals, some additional steps are required after connecting Stripe Standard. **WiFi Terminals** WiFi terminals must be re-registered after connecting your Stripe Standard account: 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 for every WiFi terminal. > [!WARNING] > > WiFi terminals will not work until you complete this re-registration process. **Tap to Pay** You may need to reconfigure Tap to Pay after connecting: * Open your HitPay App > More > Terminal > Forget Terminal * Reinitiate Tap to Pay pairing **Bluetooth Terminals** Bluetooth terminals are not affected and will continue to work as normal. *** ## FAQ > **What is Stripe Standard Connect vs Custom Connect?** > > HitPay partners with Stripe to process card payments. There are two ways this connection can be set up: > > | | Stripe Custom Connect | Stripe Standard Connect | > | - | - | - | > | **How it works** | HitPay manages the Stripe connection on your behalf. You interact with Stripe through HitPay only. | You have a direct relationship with Stripe. You connect your own Stripe account to HitPay. | > | **Stripe Dashboard** | Not available to you directly | Full access to your own Stripe Dashboard | > | **Verification** | Handled through HitPay | Handled directly with Stripe | > | **Disputes & fraud liability** | Managed by HitPay | You handle directly with Stripe | > | **Payouts & banking** | Managed by HitPay | You set up and manage directly with Stripe | > > > [!NOTE] > > > > Standard Connect gives you more direct control and visibility into your Stripe account, while Custom Connect kept most of that behind the scenes. > **Why is HitPay using Stripe Standard Connect?** > > HitPay uses Stripe Standard Connect for several reasons, both for platform integrity and to better protect merchants. > > 1. **Reducing chargeback and fraud risk** > > 2. **Aligning with Stripe's platform requirements** > > 3. **Better experience for merchants** > > Standard Connect unlocks benefits that Custom Connect does not offer: > > * **Full Stripe Dashboard access** — view transactions, payouts, disputes, and account health directly > * **Direct Stripe support** — you can contact Stripe directly for account-level issues, not just through HitPay > * **More transparency** — see exactly how your card payments are processed and settled > * **Consistent onboarding** — your setup mirrors how new HitPay users in your region are onboarded today > **How does this affect refunds?** > > Refunds are not affected. You can continue to initiate refunds the same way — either from the HitPay dashboard or directly from your Stripe dashboard. > > Please note that transaction fees collected on the original payment are not returned as part of a refund. > **Where can I view my payout schedule and balance?** > > Your payout schedule and available balance are managed directly through your Stripe account. You can view and configure these in your [Stripe Dashboard](https://dashboard.stripe.com) under **Balances** and **Payouts**. > > These details are not visible in your HitPay dashboard. > **Which countries are supported?** > > 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. > **How does Stripe Radar fraud detection work?** > > With Stripe Standard Connect, Stripe Radar fraud detection rules are applied based on **your own Standard Stripe account's rules** — not HitPay's rules. > > This means: > > * **Your Radar rules apply.** Any Radar rules you configure in your Stripe Dashboard are the ones that run on your transactions. > * **HitPay's Radar rules do not apply.** HitPay's internal fraud rules are not inherited by your Standard account. > * **You are responsible for your fraud configuration.** You can set up custom Radar rules, review flagged payments, and manage blocklists directly in your [Stripe Dashboard](https://dashboard.stripe.com) under **Radar**. > > If you previously relied on HitPay to manage fraud rules on your behalf, you should review and configure your own Radar rules after connecting. Learn more in [Stripe's Radar for Connect documentation](https://docs.stripe.com/connect/radar). *** ## Need help? Contact **[support@hit-pay.com](mailto:support@hit-pay.com)** and include your registered email address. # Twilio Messaging Source: https://docs.hitpayapp.com/connections/twilio Send SMS and WhatsApp payment confirmations to customers automatically ## Overview The HitPay Twilio integration automatically sends SMS and WhatsApp messages to your customers after a successful payment. This helps you keep customers informed and build trust with instant payment confirmations. ### Key Features * **SMS notifications** — Send customizable text messages after every successful charge * **WhatsApp messages** — Send WhatsApp messages using Twilio Content Templates * **Customizable templates** — Personalize messages with customer name, amount, currency, and more * **Multi-channel** — Enable SMS and WhatsApp independently * **Automatic triggering** — Messages are sent automatically after each successful payment *** ## Prerequisites Before connecting, make sure you have: 1. An active **HitPay** account 2. An active **Twilio** account ([sign up here](https://www.twilio.com/try-twilio)) 3. Your Twilio **Account SID** and **Auth Token** (found on your [Twilio Console](https://console.twilio.com/)) 4. At least one **phone number** purchased in Twilio with SMS capability 5. *(For WhatsApp)* A pre-approved **Content Template** created in Twilio's Content Template Builder *** ## Connecting Twilio 1. In your HitPay dashboard, go to **Integrations**. 2. On the **Available** tab, find the **Twilio** card and click it. 3. Enter your Twilio credentials: | Field | Description | Example | | - | - | - | | **Account SID** | Your Twilio Account SID | `AC1234567890abcdef1234567890abcdef` | | **Auth Token** | Your Twilio Auth Token | Found in Twilio Console | | **From Number** | Your Twilio phone number in E.164 format | `+6591234567` | 4. Click **Connect**. HitPay will validate your credentials and verify that the phone number exists on your Twilio account with SMS capability. > [!NOTE] > > Your Auth Token is stored securely and is never displayed after the initial connection. *** ## Configuring Messaging After connecting, configure your messaging settings on the Twilio integration page. ### Enable Messaging Toggle **Enable messaging** to start sending messages after successful payments. When disabled, no messages will be sent even if the connection is active. ### Choose Channels Select which channels to use for sending messages: * **SMS** — Standard text messages * **WhatsApp** — Messages sent via WhatsApp (requires a Content Template) You can enable one or both channels. ### Customize Your SMS Template Write a custom message template using the following placeholders: | Placeholder | Replaced With | Example | | - | - | - | | `{customer_name}` | Customer's name | John Doe | | `{amount}` | Formatted payment amount | 50.00 | | `{currency}` | Currency code | SGD | | `{reference}` | Charge reference ID | ch\_abc123... | | `{business_name}` | Your business name | My Cat Shop | **Example template:** ``` Hi {customer_name}, your payment of {currency} {amount} to {business_name} has been received. Reference: {reference}. Thank you! ``` > [!NOTE] > > SMS templates have a maximum length of 1,600 characters. ### Configure WhatsApp *(optional)* If you enable the WhatsApp channel: 1. Create a **Content Template** in your [Twilio Console](https://console.twilio.com/) using the Content Template Builder. 2. Your template can include up to 5 variables that map to: * `{{1}}` — Customer name * `{{2}}` — Amount * `{{3}}` — Currency * `{{4}}` — Reference * `{{5}}` — Business name 3. Once your template is approved by Twilio, copy the **Content SID** and enter it in the WhatsApp Content SID field in HitPay. > [!WARNING] > > WhatsApp messages require a Content Template SID. Messages will fail if no template is configured. ### Save Settings Click **Save** to apply your messaging configuration. Messages will be sent automatically for all future successful charges. *** ## How It Works 1. A customer completes a payment on any of your HitPay sales channels 2. HitPay detects the successful charge and checks for active messaging integrations 3. If the customer provided a phone number, HitPay formats it and sends the configured message(s) 4. SMS and WhatsApp messages are sent asynchronously so they don't delay the payment flow ### Retry Logic If a message fails to send (e.g., temporary network issue), HitPay will retry up to **3 times** with increasing delays (30s, 60s, 120s). If all retries fail due to an authentication error, the connection will be marked as **Failed** and you will need to reconnect. *** ## Disconnecting Twilio 1. On the Twilio integration page, click **Disconnect**. 2. A confirmation dialog will appear. Click **Disconnect** to confirm. After disconnecting, no further messages will be sent. You can reconnect at any time with your Twilio credentials. *** ## Important Notes * **Messages are only sent for successful charges.** Failed or pending payments do not trigger messages. * **Customer phone number required.** Messages are only sent when the customer provides a phone number during checkout. * **Phone numbers are automatically formatted** to E.164 international format before sending. * **One Twilio connection per business.** Each HitPay business account requires its own Twilio connection. * **Connection failures trigger alerts.** If your Twilio credentials expire or become invalid, HitPay will mark the connection as failed and stop sending messages until you reconnect. *** ## FAQs > **How is this different from the email notifications HitPay sends?** > > HitPay includes a free built-in email notification service that automatically sends payment confirmation emails to your customers. The Twilio integration is for businesses that want to go further — sending custom **SMS** or **WhatsApp** messages using your own Twilio account. This gives you full control over the message content, branding, and delivery channel. > **My customers are not receiving messages. What should I check?** > > Start by checking your **Twilio logs** first — go to your [Twilio Console](https://console.twilio.com/) > Monitor > Logs to see if the message was sent and its delivery status. If the message was sent but not delivered, the issue is on the carrier or recipient side. > > If no message appears in your Twilio logs, check the following in HitPay: > > 1. **Messaging is enabled** — Verify the messaging toggle is turned on. > 2. **Connection status** — Check that the connection status is "Linked", not "Failed". > 3. **Customer phone number** — Ensure the customer provided a valid phone number during checkout. > 4. **Twilio balance** — Check your Twilio account has sufficient balance for sending messages. > 5. **Phone number capability** — Verify your Twilio phone number has SMS enabled in the Twilio Console. > **Why are my WhatsApp messages failing?** > > 1. **Content Template SID** — Verify the Content SID is correctly entered and the template is approved in Twilio. > 2. **Template variables** — Ensure your Content Template uses the correct variable format (`{{1}}` through `{{5}}`). > 3. **WhatsApp opt-in** — Customers may need to have interacted with your WhatsApp number before receiving messages. > **My connection is marked as Failed** > > This typically means your Twilio credentials have become invalid. Go to the Twilio integration page and click **Reconnect** with valid Account SID and Auth Token. # Xero Sync Source: https://docs.hitpayapp.com/connections/xero Sync your HitPay sales, fees and refund data to Xero ## Overview The HitPay Xero integration automatically feeds your HitPay sales, processing fees, and refund data into Xero once a day. This keeps your books up to date without manual data entry. ### What Gets Synced | Item | What HitPay creates in Xero | | - | - | | **Sales** | A sales invoice for each transaction (or one combined invoice per day, depending on your import setting), with payment recorded against the **HitPay Clearing Account** | | **Processing fees** | A spend transaction from the HitPay Clearing Account to your selected fee account | | **Refunds** | Recorded against your selected refund account | | **Daily settlement** | A daily transfer from the HitPay Clearing Account to your selected bank account, equal to total sales minus fees — so the feed matches the money actually arriving in your bank | > [!NOTE] > > This page covers the **sales data feed**. If you want your customers to pay your Xero invoices using HitPay payment methods, see [Xero Invoices Payment](/plugins/xero). If you use HitPay Bill Pay, your vendor bills and bill payments can also sync to Xero — set this up from the **Xero (Bill Pay)** card under Accounting. *** ## Prerequisites 1. A **Xero** account with access to the organisation you want to connect. 2. A verified **HitPay** business account with admin access. 3. The Xero accounts you plan to use for **Sales** and **Fees** must have payments enabled. In your Xero dashboard, go to **Accounting > Chart of Accounts**, open the account, and tick **"Enable payments to this account"**. Accounts without this setting will not appear in the HitPay dropdowns. ![Enable payments to this account in Xero](https://mintcdn.com/hitpay/oHF66ce96akmC0Fe/images/xero/xero_enable.png?fit=max\&auto=format\&n=oHF66ce96akmC0Fe\&q=85\&s=df82837cd9c619091a0539f7cb2a0b45) > [!NOTE] > > Each Xero organisation can only be connected to **one** HitPay account. If your organisation is already connected to another HitPay account, the connection will fail with an error message. *** ## Connecting Xero 1. In your HitPay dashboard, go to **Others > Integrations**. 2. Under the **Accounting** section, find the **Xero** card and click **Manage**. ![Xero card on the Connections page](https://mintcdn.com/hitpay/7sJWd-fSSRpxr1Zd/images/xero/xero-connections-card.png?fit=max\&auto=format\&n=7sJWd-fSSRpxr1Zd\&q=85\&s=add3862e75821b10927bf53941e46cd6) 3. On the Xero Integration page, click **Connect to Xero**. A Xero login page opens — sign in and select the organisation you want to connect. ![Connect to Xero button](https://mintcdn.com/hitpay/7sJWd-fSSRpxr1Zd/images/xero/xero-connect-button.png?fit=max\&auto=format\&n=7sJWd-fSSRpxr1Zd\&q=85\&s=bce3823447fa0e2b200c0537d45ca18f) 4. After you authorise, you are returned to the Xero Integration page in HitPay with a **"Successfully authorized"** confirmation. The page now shows **Setting** and **Disconnect** buttons — this means your connection is active. ![Connected Xero Integration page](https://mintcdn.com/hitpay/7sJWd-fSSRpxr1Zd/images/xero/xero-connected-home.png?fit=max\&auto=format\&n=7sJWd-fSSRpxr1Zd\&q=85\&s=c0f01e3c377b4ba4b43b7f0a070ae423) > [!TIP] > > If you grant access to more than one organisation during login, HitPay connects the most recently active one. To be sure the right organisation is connected, select only one during the Xero authorisation step. You can verify the connected organisation under **Setting** at any time. *** ## Configuring Sync Settings After connecting, click **Setting** on the Xero Integration page. You'll see your **Connected Email** and **Connected Xero Organization** at the top, followed by the sync configuration: ![Xero sync settings form](https://mintcdn.com/hitpay/7sJWd-fSSRpxr1Zd/images/xero/xero-settings-form.png?fit=max\&auto=format\&n=7sJWd-fSSRpxr1Zd\&q=85\&s=e2343f6f20a65ec1080de906aba7e6b3) | Setting | What it does | | - | - | | **Select Sync Start Date** | Transactions from this date onwards are included in the feed. Must be set for the feed to run. | | **Xero PayNow button text** | The label shown on the payment button if you also use [Xero Invoices Payment](/plugins/xero). Defaults to "PayNow". | | **Select Xero branding theme** | The Xero branding theme applied to invoices HitPay creates. "Standard" works for most businesses. | | **Select Sales Channel Data for Data Import** | Which HitPay sales channels are included in the feed. Choose **All Sales Channels** unless you specifically want to limit the feed. | | **Select Xero Bank Account For Payout** | Your real bank account in Xero — the one your HitPay payouts arrive in. Used for the daily settlement transfer from the HitPay Clearing Account. | | **Select Xero Account For Sales** | The Xero account your sales revenue is posted to. | | **Select Xero Account For Fee** | The Xero account HitPay processing fees are posted to. | | **How do you want to import data?** | **Lumpsum for each day**: one invoice per day combining all transactions. **By individual transaction**: one invoice per transaction. | | **Allow HitPay to Automatically Create Invoices for HitPay Sales and Fees** | **Yes**: the daily feed runs and creates records in Xero. **No**: the feed is paused — nothing is sent to Xero until you switch back to Yes. | > [!WARNING] > > If **Allow HitPay to Automatically Create Invoices** is set to **No**, no data will appear in Xero at all — this is the most common reason merchants see no feed data. Set it to **Yes** to enable the sync. > [!NOTE] > > When you save your settings for the first time, HitPay automatically creates a **HitPay Clearing Account** in your Xero organisation. Sales payments are recorded into this clearing account, and a daily transfer moves the settled amount (sales minus fees) to your selected bank account so reconciliation matches your actual bank credits. Sales channels you don't tick are silently excluded from the feed. If some of your payments aren't appearing in Xero, check this setting first — **All Sales Channels** is the safe choice. *** ## How Syncing Works * The feed runs automatically **once a day in the early morning (Singapore time)** — sales first, refunds after, followed by the daily settlement transfer. * Each transaction is only ever synced **once**. Re-running the feed never duplicates records in Xero. * New transactions since the last successful feed are picked up in the next run — including days the feed may have missed. * The **Xero Integration page** shows a daily feed history: the date synced and the number of sales, refunds, and fees pushed in each run. ![Xero daily feed history](https://mintcdn.com/hitpay/7sJWd-fSSRpxr1Zd/images/xero/xero-feed-logs.png?fit=max\&auto=format\&n=7sJWd-fSSRpxr1Zd\&q=85\&s=b510a21359342d3a3d12c4c161227f2c) *** ## Limitations * **Home currency only.** Only transactions in your HitPay account's home currency are fed to Xero. Foreign-currency transactions are skipped. * **Xero invoice payments are excluded.** Payments your customers make on Xero invoices via [Xero Invoices Payment](/plugins/xero) are reconciled through the invoice itself, so the sales feed intentionally skips them to avoid double counting. * **One organisation per account.** A Xero organisation cannot be connected to more than one HitPay account. * **Forward-looking.** The feed starts from your Sync Start Date. Older transactions are not imported. *** ## Disconnecting On the Xero Integration page, click **Disconnect** and confirm. This stops the daily feed and removes the connection. Records already created in Xero are not deleted. > [!WARNING] > > Disconnecting cannot be undone — reconnecting later requires authorising with Xero again and reviewing your settings. *** ## Troubleshooting > **The feed history shows 'No feed found' / no data is appearing in Xero** > > Check these in order: > > 1. **Allow HitPay to Automatically Create Invoices** is set to **Yes** in Setting — if it's No, the feed never runs. > 2. Your **Sync Start Date** is set and is not in the future. > 3. **Select Sales Channel Data for Data Import** includes the channels you actually sell on — channels that aren't ticked are skipped silently. Choose **All Sales Channels** if unsure. > 4. The transaction is in your **home currency** — foreign-currency transactions are not fed. > 5. The feed runs once a day — payments taken today appear after the next morning's run, not immediately. > **Some payments appear in Xero but others never do** > > This is usually the **sales channel filter**: only ticked channels are included. Open **Setting** and select **All Sales Channels**. Foreign-currency transactions and payments made on Xero invoices (via Xero Invoices Payment) are also excluded by design. > **I see duplicate entries in Xero** > > HitPay never sends the same transaction twice. Duplicates usually mean the same transactions were **also entered manually** in Xero (or imported via another tool). If you've been recording HitPay sales manually, stop manual entry from the day the feed is enabled, and remove manual entries that overlap with fed data. > **An account is missing from the Sales/Fee dropdowns** > > Only Xero accounts with **"Enable payments to this account"** ticked appear in the dropdowns. In Xero, go to **Accounting > Chart of Accounts**, open the account, tick the option and save — then reopen Setting in HitPay. > **Connecting fails with 'already connected to another HitPay account'** > > That Xero organisation is linked to a different HitPay account. Disconnect it from the other account first, or connect a different organisation. > **I connected the wrong Xero organisation** > > Click **Disconnect**, then reconnect and grant access to only the correct organisation during the Xero authorisation step. # Zapier Source: https://docs.hitpayapp.com/connections/zapier Automate your workflow and streamline payments and Order processes using Zapier This guide will walk you through the process of connecting your HitPay account with Zapier, allowing you to automate your workflow and streamline payment processes for your small business. With Zapier, you can create customized automated workflows, known as "zaps," that trigger actions in response to specific events in your HitPay account. Let's get started! ## About HitPay on Zapier HitPay is now available as a public integration on [Zapier](https://zapier.com/apps/hitpay/integrations#integrations), allowing you to connect with thousands of popular apps to automate your payment workflows. HitPay is categorized as a **Payment Processing** app on Zapier. ## Step 1: Sign up and Log in to HitPay If you haven't already, sign up for a HitPay account at our website ([www.hitpayapp.com](http://www.hitpayapp.com)). Once you've created an account, log in to your HitPay dashboard using your credentials. ## Step 2: Obtain API Keys Before setting up the Zapier integration, you'll need to obtain your API keys from the HitPay dashboard. These API keys will serve as the authentication method for connecting HitPay with Zapier. 1. In your HitPay dashboard, navigate to "Payment Gateway" and select "API Keys." 2. You will find your API Key which is used for identifying and authenticating your account. Keep these keys secure and do not share them publicly. ![API Keys](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Api-Keys.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=f15ca9c48ebe69ea1af87b247b3553f3) ## Step 3: Sign up and Log in to Zapier To begin using the Zapier integration, sign up for a Zapier account at the Zapier website ([www.zapier.com](http://www.zapier.com)). If you already have an account, log in to your Zapier account using your credentials. ## Step 4: Connect HitPay to Zapier HitPay is now available as a public integration on Zapier. You can connect HitPay directly through the Zapier platform: 1. Go to [HitPay on Zapier](https://zapier.com/apps/hitpay/integrations#integrations) 2. Click "Start free with email" or "Continue with Google" to create a Zapier account 3. Search for "HitPay" in the app directory 4. Click on HitPay to begin the connection process ## Step 5: Available Triggers and Actions ### Triggers (Events that start your workflow) HitPay offers the following triggers on Zapier: * **Charge Created** - Triggers when a payment is successfully completed * **Charge Updated** - Triggers when a payment is refunded/partially refunded * **Invoice Created** - Triggers when a new invoice is created * **Invoice Updated** - Triggers when an invoice is marked as paid or partially paid * **Order Created** - Triggers when an order is created successfully * **Order Updated** - Triggers when an order status is updated ### Actions (Tasks your Zap can perform) HitPay offers the following actions on Zapier: * **Create Payment Request** - Creates a payment request with customizable parameters including: * Amount (Required) * Currency (Required) * Payment Methods (Required) * Customer's Email, Name, Phone Number * Wifi Terminal ID, Staff ID * Purpose, Reference Number * Redirect URL, Webhook * Allow Repeated Payments * Expiry Date, Expires After * Add Admin Fee * Send Email, Send SMS * Generate QR * **Get Payment Request Details** - Gets the status of the specified payment request * **Update Payment Request** - Updates an existing payment request * **Delete Payment Request** - Deletes a payment request * **Refund Payment** - Refunds a payment in the system ## Step 6: Popular Integration Templates Zapier provides pre-built templates for common HitPay workflows: * **Create new Mailchimp subscribers when charges are posted in HitPay** * **Add or update HubSpot contacts for new HitPay charges** ## Step 7: Popular App Integrations HitPay integrates with thousands of apps on Zapier, including popular ones like: * Google Sheets * Mailchimp * Gmail * Xero * Airtable * ActiveCampaign * HubSpot * Code by Zapier ## Step 8: Create Your First Zap 1. In Zapier, click on "Make a Zap" to start creating a new zap 2. Choose "HitPay" as the trigger app 3. Select the specific trigger event you want to use from the available options 4. Follow the prompts to connect your HitPay account using your API Key 5. Choose an action app and configure the desired action 6. Test your zap with sample data 7. Activate your zap ![Authenticate HitPay](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Zapier-Trigger.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=63495be8741d75a950765b256764ead2) ## Step 9: Example Workflows Here are some practical examples of how you can automate tasks with HitPay and Zapier: ### 1. Send Thank You Emails * **Trigger**: "Charge Created" in HitPay * **Action**: "Send Email" in Gmail or Mailchimp * Automatically send personalized thank you emails to customers for each new payment ### 2. Track Payments in Spreadsheets * **Trigger**: "Charge Created" in HitPay * **Action**: "Add Row to Google Sheets" in Zapier * Keep track of all incoming payments by automatically adding payment details to a spreadsheet ### 3. Update CRM Systems * **Trigger**: "Charge Created" in HitPay * **Action**: "Create Contact" in HubSpot or Salesforce * Automatically create or update customer records in your CRM system ### 4. Team Notifications * **Trigger**: "Charge Created" in HitPay * **Action**: "Send Message" in Slack or Microsoft Teams * Get real-time notifications when new payments are received ### 5. Accounting Integration * **Trigger**: "Charge Created" in HitPay * **Action**: "Create Invoice" in Xero or QuickBooks * Automatically sync payment data with your accounting software ## Step 10: Best Practices * **Test your zaps** before activating them with real data * **Monitor your zaps** regularly to ensure they're working correctly * **Use filters** to only trigger zaps for specific conditions * **Set up error notifications** to be alerted when zaps fail * **Review and update** your zaps periodically as your business needs change ## Support and Resources * **Zapier Help Center**: [help.zapier.com](https://help.zapier.com) * **HitPay Support**: Contact our support team for HitPay-specific questions * **Zapier Community**: Connect with other users in the [Zapier Community](https://community.zapier.com) ## Pricing Zapier offers: * **Free plan**: Core features available forever * **Premium plans**: Advanced features and unlimited zaps * **14-day trial**: Try premium features before committing No credit card is required to start with the free plan. *** Congratulations! You've successfully set up the HitPay Zapier Integration. Your HitPay account is now connected with thousands of applications, enabling seamless automation of your payment workflows. Remember to explore different triggers and actions to find the perfect automation for your business needs. # Zoho Books Sync Source: https://docs.hitpayapp.com/connections/zoho-books Sync your sales, processing fees, and refund data from HitPay to Zoho Books ## Overview The HitPay Zoho Books integration automatically syncs your sales, processing fees, and refund data from HitPay to Zoho Books. This keeps your books up to date without manual data entry. ### What Gets Synced * **Sales** — Each charge is recorded as an Invoice and Payment in Zoho Books * **Processing Fees** — HitPay fees are recorded as Expenses * **Refunds** — Refunds are recorded as Credit Notes applied to the original invoice ### Key Features * Two sync modes: **Bulk** (daily summary) or **Individual** (per charge) * Filter syncing by specific sales channels * Daily automatic sync * Manual sync on demand (once per hour) * Connection health monitoring with email alerts *** ## Prerequisites Before connecting, make sure you have: 1. An active **HitPay** account 2. An active **Zoho Books** account 3. Know which **Zoho datacenter** your account is on (e.g., `.com`, `.eu`, `.in`, `.com.au`, `.jp`) 4. The following account types set up in your Zoho Books Chart of Accounts: * An **Income** account (for recording sales revenue) * An **Expense** account (for recording HitPay processing fees) * An **Other Current Liability** account (for recording refunds) * A **Bank** account (to use as a HitPay clearing account) 5. At least one **Item** created in Zoho Books (used as the default line item on invoices) *** ## Connecting Zoho Books 1. In your HitPay dashboard, go to **Integrations**. 2. On the **Available** tab, find the **Zoho Books** card under the Accounting category and click it. 3. Select your **Zoho datacenter** from the dropdown and click **Connect**. > [!NOTE] > > Choose the datacenter that matches your Zoho account region. If you're unsure, check the URL when you log in to Zoho Books (e.g., `books.zoho.com` = US, `books.zoho.eu` = EU). 4. A popup window will open prompting you to sign in to your Zoho account and authorize HitPay. 5. After authorizing, you will be asked to select which **Zoho Books organization** to connect. Choose the organization and click **Confirm**. 6. HitPay will confirm the connection. You will see your organization name and connection status on the integration page. *** ## Configuring Sync Settings After connecting, you need to configure how data syncs to Zoho Books before enabling sync. 1. On the Zoho Books integration page, open the **Settings** modal. 2. **Map your accounts.** Select the Zoho Books accounts that HitPay should use for each type of transaction: | Setting | Account Type | Purpose | | - | - | - | | **Sales Account** | Income | Records your sales revenue from invoices | | **Fee Account** | Expense | Records HitPay processing fees | | **Refund Account** | Other Current Liability | Records refund entries (credit notes) | | **Bank Account** | Bank | Tracks payments received via HitPay before payout | 3. **Select a Default Item.** Choose a product or service from Zoho Books to use as the line item on invoices. 4. **Choose your Invoice Grouping mode:** * **Bulk** *(default)* — Groups all transactions from each day into a single invoice per currency. Best for high-volume businesses that prefer a summarized view. * **Individual** — Creates a separate invoice for each individual charge. Best for businesses that need per-transaction detail in Zoho Books. 5. **Select Sales Channels to sync.** Choose which HitPay sales channels should have their charges synced. Options include: * All Sales Channels *(default)* * Shopify, Wix, WooCommerce, Prestashop, Magento, Ecwid, OpenCart * Payment Links, Invoice, Online Store, Point of Sale * Custom API, Recurring Billing, Google Forms, Xero You can select multiple channels. Charges from unselected channels will not be synced. 6. **Enable the sync toggle** to start syncing data to Zoho Books. 7. Click **Save** to apply your settings. > [!WARNING] > > Only charges created **after** sync is enabled will be synced. Historical charges are not retroactively synced. *** ## How Sync Works ### Automatic Sync HitPay automatically syncs your data to Zoho Books on a daily schedule. You can check the **Last Sync** timestamp on the integration page to see when the last sync ran. ### Manual Sync You can trigger a manual sync at any time by clicking the **Sync Now** button on the integration page. Manual sync is limited to **once per hour** to prevent API throttling. ### What Gets Created in Zoho Books For each synced charge, HitPay creates: 1. **Invoice** — Records the sale amount, mapped to your Sales Account 2. **Customer Payment** — Links to the invoice, mapped to your Bank Account 3. **Expense** — Records HitPay processing fees, mapped to your Fee Account 4. **Credit Note** *(for refunds only)* — Applied to the original invoice, mapped to your Refund Account *** ## Disconnecting Zoho Books 1. On the Zoho Books integration page, click the **Disconnect** button. 2. A confirmation dialog will appear. Click **Disconnect** to confirm. Your sync history will be preserved after disconnecting. You can reconnect at any time. *** ## Important Notes * **Only future charges are synced.** Syncing begins from the moment you enable sync. Past charges are not retroactively synced. * **Re-enabling sync after disabling** only syncs new charges going forward. Charges that occurred while sync was off are skipped. * **One HitPay business connects to one Zoho Books organization.** Each business account requires its own Zoho Books connection. * **Duplicate invoices are prevented.** The sync is idempotent — re-running it will not create duplicate records in Zoho Books. * **Connection issues trigger email notifications.** If your Zoho Books connection fails (e.g., expired authorization), HitPay will automatically mark the connection as failed and notify you with instructions to reconnect. *** ## FAQs > **My connection failed or authorization expired. What do I do?** > > If you see a connection error on the integration page, your Zoho authorization may have expired. Click **Reconnect** to re-authorize the connection. Sync will resume once the connection is restored. > **Why are some charges missing in Zoho Books?** > > Check the following: > > 1. **Sync is enabled** — Verify the sync toggle is turned on in Settings. > 2. **Sales channel filter** — Make sure the relevant sales channel is selected in your sync settings. Charges from unselected channels are not synced. > 3. **Charge timing** — Only charges created after sync was enabled are synced. Charges from before that date are not included. > 4. **Last sync time** — Check the "Last Sync" timestamp on the integration page. If the last sync was before the charge was created, wait for the next automatic sync or trigger a manual sync. > **Charges appear but amounts seem wrong** > > HitPay syncs the exact charge amounts in the original currency. Verify the currency matches between your HitPay charge and the Zoho Books invoice. In Bulk mode, daily totals are grouped by currency, so amounts reflect the sum of all charges for that day and currency. # Development Source: https://docs.hitpayapp.com/development Learn how to preview changes locally > [!NOTE] > > **Prerequisite** You should have installed Node.js (version 18.10.0 or > higher). Step 1. Install Mintlify on your OS: ```bash npm theme={"system"} npm i -g mintlify ``` ```bash yarn theme={"system"} yarn global add mintlify ``` Step 2. Go to the docs are located (where you can find `mint.json`) and run the following command: ```bash theme={"system"} mintlify dev ``` The documentation website is now available at `http://localhost:3000`. ### Custom Ports Mintlify uses port 3000 by default. You can use the `--port` flag to customize the port Mintlify runs on. For example, use this command to run in port 3333: ```bash theme={"system"} mintlify dev --port 3333 ``` You will see an error like this if you try to run Mintlify in a port that's already taken: ```md theme={"system"} Error: listen EADDRINUSE: address already in use :::3000 ``` ## Mintlify Versions Each CLI is linked to a specific version of Mintlify. Please update the CLI if your local website looks different than production. ```bash npm theme={"system"} npm i -g mintlify@latest ``` ```bash yarn theme={"system"} yarn global upgrade mintlify ``` ## Deployment > [!TIP] > > Unlimited editors available under the [Startup > Plan](https://mintlify.com/pricing) You should see the following if the deploy successfully went through: ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/checks-passed.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=9a35c3c67ecf523d690cf499d6c8a60b) ## Troubleshooting Here's how to solve some common problems when working with the CLI. > **Mintlify is not loading** > > Update to Node v18. Run `mintlify install` and try again. > **No such file or directory on Windows** > > Go to the `C:/Users/Username/.mintlify/` directory and remove the `mint` > folder. Then Open the Git Bash in this location and run `git clone > https://github.com/mintlify/mint.git`. > > Repeat step 3. > **Getting an unknown error** > > Try navigating to the root of your device and delete the \~/.mintlify folder. > Then run `mintlify dev` again. Curious about what changed in a CLI version? [Check out the CLI changelog.](/changelog/command-line) # Availability by market Source: https://docs.hitpayapp.com/files/availability-by-market # HitPay — Availability by Market (LLM-friendly) > Plain-text canonical reference of HitPay's payment capabilities across 45 markets. > Source: [https://docs.hitpayapp.com/getting-started/availability-by-market](https://docs.hitpayapp.com/getting-started/availability-by-market) ## Summary HitPay enables partners to accept payments across 45 markets. * **Core markets (3):** Singapore, Malaysia, Philippines. HitPay holds direct payment licenses (MAS MPI, BNM Merchant Acquirer, BSP MAL/OPS respectively) and operates its own card acquiring stack. * **Stripe Standard Connect markets (42):** Cards are acquired via Stripe Standard Connect. All other payment methods (APMs, regional QR rails, recurring) are HitPay-acquired direct, never sourced through Stripe. * **Borderless QR (cross-border):** 13-scheme stack available in every market — PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay. In each market, the country's own local QR is excluded. ## Licenses held by HitPay | Market | Regulator | Licence | | - | - | - | | Singapore | MAS | Major Payment Institution (PS20200643) | | Malaysia | BNM | Registered payment instrument issuer / system operator | | Philippines | BSP | MAL/OPS | | Australia | AUSTRAC | Payouts | | United States | FinCEN | MSB | ## Payout timing ### Core markets * **Singapore** — HitPay Balance: T+1 calendar day. Card Balance (Stripe): from T+1 business day. Min payout SGD 1. * **Malaysia** — HitPay Balance: T+2 calendar days. Card Balance (Stripe) + FPX: T+1 business day. Min payout RM 5. * **Philippines** — HitPay (Non-Cards): T+1 calendar day. HitPay (Online Cards): T+7 calendar days. HitPay (In-Person Cards): T+2 calendar days. Payouts under PHP 50,000 via Instapay (same day), above via PESONet (2–3 working days). ### Stripe Standard Connect markets (42) Card payouts follow Stripe's standard payout schedule, varying by country. Typical: T+2 to T+7 business days in local currency. See [https://docs.stripe.com/payouts#standard-payout-timing](https://docs.stripe.com/payouts#standard-payout-timing) for authoritative per-country data. HitPay-acquired APMs and Borderless QR in non-core markets settle on HitPay's schedule (T+1 to T+2 calendar days), independent of Stripe. ## Recurring billing ### Live globally (any market) * Cards (where Stripe Standard Connect is supported) * TnG (Touch 'n Go) — tokenised recurring * ZaloPay — tokenised recurring * GrabPay (non-core markets) * ShopeePay (non-core markets) ### Per-market additions (live) * **Singapore:** + GIRO Direct Debit, GrabPay, ShopeePay, WeChat Pay * **Malaysia:** + GrabPay, ShopeePay * **Philippines:** + ShopeePay ### Coming soon (all 45 markets) * LinePay * GCash ## Stripe Standard Connect migration Partners outside Singapore, Malaysia, the Philippines, and Indonesia on the legacy Stripe Custom Connect setup must migrate to Stripe Standard Connect by 5 June 2026. See [https://docs.hitpayapp.com/announcements/standard-connect-migration](https://docs.hitpayapp.com/announcements/standard-connect-migration). ## Per-market detail ## APAC (9 markets) ### Singapore (SG) * **Tier:** Core market (HitPay-direct license) * **Region:** APAC * **Licence:** MAS MPI * **Card (online):** HitPay direct + Stripe + Adyen * **Card (offline):** Stripe Terminal + Adyen * **Local APMs:** PayNow, GrabPay, Grab PayLater, ShopeePay, SPayLater, ShopBack PayLater, Atome, Atome QR, WeChat Pay, Alipay, UPI QR, GIRO Direct Debit * **Cross-border APMs (Borderless QR):** DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, GIRO, ShopeePay, GrabPay, TnG, WeChat Pay, ZaloPay ### Malaysia (MY) * **Tier:** Core market (HitPay-direct license) * **Region:** APAC * **Licence:** BNM Merchant Acquirer * **Card (online):** HitPay direct + Stripe * **Card (offline):** Stripe Terminal * **Local APMs:** FPX, DuitNow Online Banking, DuitNow QR, Touch 'n Go eWallet, GrabPay, ShopeePay, MAE, Atome, SPayLater, Grab PayLater, WeChat Pay, Alipay * **Cross-border APMs (Borderless QR):** PayNow QR (SG), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ShopeePay, GrabPay, ZaloPay ### Philippines (PH) * **Tier:** Core market (HitPay-direct license) * **Region:** APAC * **Licence:** BSP MAL/OPS * **Card (online):** HitPay direct * **Card (offline):** HitPay POS (HitPay direct, BSP-licensed) * **Local APMs:** QR Ph, InstaPay, PESONet, GCash, Maya, GrabPay, ShopeePay, SPayLater, BillEase, OTC (Bayad / ECPay / Palawan) * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, ShopeePay, TnG, ZaloPay ### Australia (AU) * **Tier:** Stripe Standard Connect market * **Region:** APAC * **Licence:** AUSTRAC (HitPay payouts) * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Hong Kong (HK) * **Tier:** Stripe Standard Connect market * **Region:** APAC * **Licence:** — * **Card (online):** Adyen + Stripe * **Card (offline):** Not on Stripe Terminal * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### India (IN) * **Tier:** Stripe Standard Connect market * **Region:** APAC * **Licence:** Stripe IN approval at >US\$1M/yr * **Card (online):** Stripe * **Card (offline):** Not on Stripe Terminal * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Japan (JP) * **Tier:** Stripe Standard Connect market * **Region:** APAC * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### New Zealand (NZ) * **Tier:** Stripe Standard Connect market * **Region:** APAC * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Thailand (TH) * **Tier:** Stripe Standard Connect market * **Region:** APAC * **Licence:** Stripe TH (newly live) * **Card (online):** Stripe * **Card (offline):** Not on Stripe Terminal * **Local APMs:** PromptPay * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ## Europe & UK (32 markets) ### Austria (AT) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Belgium (BE) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Bulgaria (BG) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Croatia (HR) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Cyprus (CY) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Czech Republic (CZ) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Denmark (DK) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Estonia (EE) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Finland (FI) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### France (FR) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Germany (DE) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Gibraltar (GI) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay on Android only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Greece (GR) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Not on Stripe Terminal * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Hungary (HU) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Ireland (IE) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Italy (IT) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Latvia (LV) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Liechtenstein (LI) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Lithuania (LT) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Luxembourg (LU) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Malta (MT) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Netherlands (NL) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Norway (NO) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Poland (PL) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Portugal (PT) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Romania (RO) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Slovakia (SK) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Slovenia (SI) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (Tap-to-Pay only) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Spain (ES) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Sweden (SE) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Switzerland (CH) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### United Kingdom (GB) * **Tier:** Stripe Standard Connect market * **Region:** Europe * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ## Americas (3 markets) ### Canada (CA) * **Tier:** Stripe Standard Connect market * **Region:** Americas * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### Mexico (MX) * **Tier:** Stripe Standard Connect market * **Region:** Americas * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Not on Stripe Terminal * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ### United States (US) * **Tier:** Stripe Standard Connect market * **Region:** Americas * **Licence:** FinCEN MSB (HitPay) * **Card (online):** Stripe * **Card (offline):** Stripe Terminal (GA) * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay ## MENA (1 markets) ### United Arab Emirates (AE) * **Tier:** Stripe Standard Connect market * **Region:** MENA * **Licence:** — * **Card (online):** Stripe * **Card (offline):** Not on Stripe Terminal * **Local APMs:** — * **Cross-border APMs (Borderless QR):** PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay * **Recurring:** Cards, TnG, ZaloPay, GrabPay, ShopeePay # Approval Workflows Source: https://docs.hitpayapp.com/finance/bill-pay/approvals Set up multi-level approval rules, approve or reject bills, and recall submitted bills for edits. ## Overview Every bill submitted in HitPay goes through an approval rule before it can be paid, giving you an audit trail and separation between who submits a payment and who authorises it. By default, every business starts with a single rule: all bills route to the **Owner**. Owners and Admins can customise this with rules based on amount. ## Setting up approval rules Approval rules live under **Settings > Approval Rules**. Each rule covers an amount range - for example, $0-$1,000, $1,000-$10,000, and \$10,000+ - and ranges must be mutually exclusive, with no gaps or overlaps. Each range has one or more **sequential approval steps**, and each step needs at least one approver - either any user with the Admin role, specific named users, or both (up to 5 approvers per step; the Cashier role can't approve). A step only activates once the previous step has been approved. Example: ``` If amount ≥ $0 and < $1,000 Require approval from: Any Admin If amount ≥ $1,000 and < $10,000 Require approval from: Any Admin And require approval from: Sarah Lim If amount ≥ $10,000 Require approval from: Any Admin And require approval from: Sarah Lim or John Doe And require approval from: Owner ``` Foreign-currency bills are converted at the mid-market rate at submission time to determine which range applies. Approval is opt-in: if you delete every rule, bills skip approval entirely and go straight to **Approved** once submitted. ![Approval Rules settings showing amount ranges and approval steps](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/approval-rules-settings.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=6c95814d336c04b9b9f369f50a9d91e4) ### Self-approval skip If the person submitting a bill is also an assigned approver on a step, that entire step is skipped automatically - the bill advances to the next step they're not part of. If they're the only approver across every remaining step, the bill moves straight through to its next stage without requiring a separate approval. ## Approving or rejecting a bill Anyone assigned as an approver sees the bills currently waiting on them, and is notified whenever a bill enters a step they're responsible for. * **Approve** - the bill advances to the next step. * **Reject** - requires a reason. The bill moves to **Rejected**, any funds already collected are returned to your HitPay Balance, and the submitter is notified. ![Approver view showing bills waiting for approval](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/approver-view.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=9d79b19e9f86729f2e8b79c775b4b097) ## Approving without paying An Owner can approve a bill without funding it right away. The bill moves to **Approved** with the transfer still unfunded, so you can sign off for audit purposes and decide later when to actually send the money. Fund it whenever you're ready using **Fund Transfer** > [!WARNING] > > Once a bill's funds are collected, approval must be completed within **3 days**. If it isn't, HitPay automatically returns the collected funds to your HitPay Balance and the bill moves to **Expired**. See [If a bill isn't funded or paid in time](/finance/bill-pay/payments-scheduling#if-a-bill-isnt-funded-or-paid-in-time). ## Recalling a bill * **Pending** bills are directly editable - no recall needed. * **Need Approval** or **Approved** bills must be recalled before they can be edited. Recalling clears the approval chain and returns the bill to **Pending**. Only the original submitter or the Owner can recall a bill - approvers can only approve or reject. You can't recall a bill once its funds have been collected, or once it's **Processing**, **Completed**, **Rejected**, or **Canceled**. After editing a recalled bill, resubmitting re-evaluates it against your current approval rules - if the amount changed, it may now match a different rule with different approvers. # Batch Actions Source: https://docs.hitpayapp.com/finance/bill-pay/batch-actions Select multiple bills to submit, approve, reject, or fund in a single action. ## Overview The Bill Pay dashboard has an always-visible checkbox column so you can act on several bills at once instead of repeating the same flow one bill at a time. Only **Pending**, **Need Approval**, and **Approved** bills can be selected - other statuses show a disabled checkbox, since they've already moved past the point where a batch action applies. Selecting the header checkbox selects every eligible row currently visible under the active status filter. Batch actions apply to **up to 50 bills** at a time, and every bill in a selection must share the same status - mixing, say, a Pending bill with a Need Approval bill blocks the action until you deselect one. ![Bill Pay dashboard with multiple bills selected and the batch action bar](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/batch-selection.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=249fa04e89b85319cb2e5ca885d22b4b) ## What you can do in bulk | Status | Action | Who | | - | - | - | | Pending | Send for approval | Manager, Owner, Admin | | Pending | Cancel | Manager, Owner, Admin | | Need Approval | Approve & Fund | Approver | | Need Approval | Reject | Approver | | Approved | Fund Transfer | Manager, Owner, Admin | ## Submitting or canceling in bulk **Submit for Approval** moves every selected Pending bill straight to Need Approval - no confirmation needed, since it's non-destructive and can still be rejected. Each bill triggers its usual submission notification to approvers. If a selected bill is missing required fields (like a vendor or amount), it's skipped and stays Pending, and you'll see a summary of how many were submitted versus skipped. **Cancel** opens a confirmation, since it's destructive - confirming soft-deletes the selected drafts. Managers can only cancel drafts they created; Owners and Admins can cancel any draft. ## Approving and funding in bulk Selecting **Need Approval** bills and choosing **Approve & Fund** opens a review panel showing: * The total across all selected bills, and a separate "to collect" total that excludes bills already funded * A row per bill (vendor, invoice number, amount, due date) - you can open any bill to inspect it, or remove it from the batch without losing your other selections If any bill in the batch still needs funding, you'll choose one funding method - **PayNow** or **Bank Transfer** - that applies to the whole batch. FX rates for foreign-currency bills are locked at this step, the same as a single-bill payment. If every bill is already funded, this step is skipped and the batch is approved straight away. ![Batch review panel for approving and funding multiple bills at once](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/batch-review.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=8fd16524d995e83871197ae1b497df63) ## Rejecting in bulk Rejecting a batch asks for a single reason that's applied to every bill in the selection. Each bill still transitions to **Rejected** individually, with that reason logged on its own timeline, and each submitter receives their own rejection email rather than one combined message. ## Funding in bulk Managers, Owners, and Admins can select **Approved** bills that aren't yet funded and fund them in bulk using **Fund Transfer**, without needing to make an approval decision - useful when an Owner has approved a batch of bills and someone just needs to fund them. # Overview Source: https://docs.hitpayapp.com/finance/bill-pay/overview Upload, approve, schedule, and pay vendor bills - locally and internationally - from the same HitPay account you use to accept payments. ## Overview Bill Pay brings accounts payable into the same platform you already use to accept payments - no separate AP tool, no moving money between providers, no manual reconciliation. Upload or forward an invoice, let HitPay extract the details, route it through your approval workflow, and pay the vendor locally or internationally. With Bill Pay, you can: * Upload a bill or forward an invoice by email - OCR extracts the vendor, amount, and dates automatically * Maintain a vendor directory instead of scattered spreadsheets and bank details * Require approval before any payment goes out, with rules based on amount * Pay local and international vendors from the same workflow * Schedule payments ahead of their due date * Sync every bill and payment with Xero automatically Bill Pay is available to **Singapore-registered** businesses (local and international payments) and **Philippines-registered** businesses (local payments only). See [Payments & Scheduling](/finance/bill-pay/payments-scheduling) for the full breakdown of supported countries, currencies, and funding methods. ![Bill Pay dashboard showing bills grouped by status](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/overview.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=7dca19858d5e69759d782505009078ad) ## Creating a bill There are three ways to get a bill into HitPay: ### Upload a file Drag and drop a PDF, JPG, or PNG (up to 10MB), or click **Upload Bill**. Once uploaded, you'll see a two-column view: the file preview on the left, and an editable form on the right pre-filled by OCR - vendor, payment details, invoice number, amount, currency, invoice date, due date, and notes. Every field remains editable before you submit. ![Bill detail screen with a file preview on the left and OCR-extracted fields on the right](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/ocr-upload.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=3a56b407fa8d143a0d605c990b354726) ### Enter a bill manually If you don't have a file to upload, start directly from the editable form. Enter the vendor, amount, invoice number, dates, category, and notes. The bill follows the same review and approval flow as an uploaded bill - it just won't have an attached file. ### Forward an invoice by email Every business gets a dedicated forwarding address: ``` {your-business-slug}@bills.hitpay.com ``` Found under **Settings > Bill Inbox**, with a one-click copy button. You can customise the slug portion of the address. Only emails from **approved senders** are accepted - add trusted addresses or entire domains (e.g. `@yourvendor.com`) under **Settings > Bill Inbox > Approved Senders**. Your own email is added automatically so you can start forwarding immediately. Emails from senders not on the list are bounced back with a message explaining how to get added. ![Bill Inbox settings showing the forwarding email address and Approved Senders list](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/email-inbox-settings.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=6771d1d4fe83cc5109e90efb74f9d5b1) When an approved sender forwards an invoice: * Each attachment becomes its own bill, pre-filled by OCR, same as a manual upload * Supported formats are PDF, JPG, and PNG, up to 10MB each * An email with no attachment, an unsupported file type, or an oversized file is bounced back to the sender with the reason * HitPay tries to match the sender to an existing vendor automatically ## Duplicate bill warning Before payment, HitPay checks whether a bill looks like a duplicate of one you've already got - matching on vendor, currency, amount, and invoice number. When the invoice number is missing (common on manual entries), it falls back to vendor, currency, and amount plus a confirming signal, such as a matching payee account number. If a likely duplicate is found, a dismissible warning banner appears on the **Bill Details** and **Review** screens, listing the matching bill(s) with a link to view each one. The warning doesn't block payment - it's there so you can catch a double payment before it happens. ## Categories Every bill is assigned a category, either automatically suggested by OCR and keyword matching (for example, "Electricity" maps to Utilities) or chosen manually. If nothing matches, the bill defaults to **Miscellaneous**. You can override the suggested category or create your own. If you connect Xero, categories map to your chart of accounts - see [Xero Integration](/finance/bill-pay/xero-integration). ## Bill statuses | Status | Meaning | | - | - | | **Pending** | Uploaded or created, not yet submitted. Fully editable. | | **Need Approval** | Submitted, waiting on an approver. | | **Approved** | Approved by all required approvers, waiting to fund the transfer. | | **Scheduled** | Funded and waiting for its scheduled payment date. | | **Processing** | Payment has been initiated; funds are in motion. | | **Compliance Screening** | The payment is on hold while our compliance team reviews it. | | **Completed** | Payment successfully executed. | | **Failed** | The payment attempt was unsuccessful (for example, insufficient funds or an invalid account). | | **Expired** | Approval wasn't completed within 3 days of the funds being collected; the collected funds were automatically returned to your HitPay Balance. | | **Rejected** | Declined by an approver before payment. | | **Canceled** | Canceled by the user after submission but before processing. | See [Approval Workflows](/finance/bill-pay/approvals) for how bills move between **Need Approval**, **Approved**, and **Rejected**, and [Payments & Scheduling](/finance/bill-pay/payments-scheduling) for how scheduling and the **Expired** auto-return work. Every bill keeps an activity timeline - who created it, submitted it, approved or rejected it, and paid it - so you always have an audit trail to refer back to. ## The Bill Pay dashboard The dashboard lists every bill in a table: vendor, invoice number, amount, due date, and status. You can: * Filter by status using the tabs at the top * Search and sort the list * Select bills with the checkbox column to act on multiple at once - see [Batch Actions](/finance/bill-pay/batch-actions) * Export the current view to CSV ## Notifications HitPay sends email notifications to merchants and vendors at each key step - when a bill is submitted for approval, approved, rejected, paid, or when collected funds are returned because a bill expired. ## FAQs > **Who can create, submit, and approve bills?** > > Any Admin or manager member access can create and submit bills. Approval depends on your business's approval rules - by default, every bill routes to the Owner, but Owners and Admins can configure multi-level rules that route different amount ranges to different approvers. See [Approval Workflows](/finance/bill-pay/approvals). > **Which currencies and payment types are supported?** > > Singapore-registered businesses can pay local vendors (SGD via FAST/PayNow) or international vendors in 150+ countries and territories. Philippines-registered businesses can currently pay local PHP vendors only. See [Payments & Scheduling](/finance/bill-pay/payments-scheduling) for the full breakdown. > **How does payment scheduling work?** > > You can set an optional future payment date when creating a bill. Funding opens within a compliant window ahead of that date, and payment executes automatically once it arrives. See [Payments & Scheduling](/finance/bill-pay/payments-scheduling). > **What do the bill statuses mean?** > > See the [Bill statuses](#bill-statuses) table above. > **Is there a limit on how many bills I can create?** > > No limit on the total number of bills. Batch actions on the dashboard act on up to 50 bills at a time, and vendor CSV imports are capped at 500 rows per file. > **What documents besides invoices can I forward?** > > Any PDF, JPG, or PNG under 10MB - invoices, receipts, or other bill documents. Other file formats, like Word or Excel files, aren't currently supported and will be bounced back. > **Can I pay a bill using my HitPay Balance?** > > No. HitPay Balance can't be used to fund a Bill Pay transfer - you fund each one directly with PayNow, Bank Transfer, or QRPH (Philippines). See [Payments & Scheduling](/finance/bill-pay/payments-scheduling). > **Can I edit a bill after I've submitted it?** > > Bills still in Pending are directly editable. Once a bill is Need Approval or Approved, you'll need to recall it first, which returns it to Pending for editing and clears the approval chain. See [Recalling a bill](/finance/bill-pay/approvals#recalling-a-bill). > **Do I always need approval before paying a bill?** > > Only if you've set up approval rules. By default every bill routes to the Owner, but approval is opt-in - if you delete all your rules, submitted bills skip approval and go straight to the next step. See [Approval Workflows](/finance/bill-pay/approvals). > **Can I approve a bill without paying it right away?** > > Yes. An approver can approve a bill without funding it, leaving it in Approved until someone funds it later with Fund Transfer. See [Approving without paying](/finance/bill-pay/approvals#approving-without-paying). > **What fees apply to Bill Pay transfers?** > > S\$0.50 per local transfer in Singapore (PayNow/FAST), ₱15 per local transfer in the Philippines, and a competitive FX rate for international transfers from Singapore. See [Pricing](/finance/bill-pay/payments-scheduling#pricing) for the full breakdown. # Payments & Scheduling Source: https://docs.hitpayapp.com/finance/bill-pay/payments-scheduling Fund, schedule, and track vendor payments locally and internationally. ## Funding a bill HitPay Balance can't be used to fund a Bill Pay transfer. Instead, you fund each transfer directly with **PayNow**, **Bank Transfer**, or **QRPH** (Philippines) - so the transfer to your vendor only happens once the bill is actually funded, not before. ![Make Payment screen with PayNow and Bank Transfer funding options](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/make-payment.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=ed60f1966b1c4b85edea9837e4836c46) ## Supported countries & currencies | Business registration | Where you can pay | Rails | Speed | | - | - | - | - | | Singapore | Singapore | Local Transfer, FAST, PayNow | Real-time | | Singapore | 150+ other countries and territories (e.g. Australia, United States, United Kingdom, across Europe and Asia) | Local Transfer where available, otherwise SWIFT | Local: real-time to T+3 depending on country. SWIFT: T+3 business days | | Philippines | Philippines only | Local Transfer, InstaPay, PESONet | Real-time (Local Transfer, InstaPay) or T+2 (PESONet) | Philippines-registered businesses currently have local payments only - international payments aren't available yet for that market. > [!NOTE] > > See the full [Payout Network](/apis/guide/payout-network) reference for the complete list of destination countries, rails, and transfer speeds. ## Pricing | Market | Fee | Amount | | - | - | - | | Singapore | Local transfer (PayNow/FAST) | S\$0.50 | | Philippines | Local transfer | ₱15 | | Singapore | International transfer | Competitive FX rate | Fees vary by currency and are subject to change. Full pricing is at [hitpayapp.com/pricing](https://www.hitpayapp.com/pricing). ## Payment scheduling When creating a bill, you can set an optional **Schedule Payment For** date instead of paying immediately. As a MAS-regulated payment institution, HitPay must settle collected funds within a strict window rather than holding them indefinitely. For a scheduled bill, that means funding can only happen within a compliant window ahead of the scheduled date: * **Local transfers** - can be funded any time from 3 days before the scheduled date through the scheduled date itself * **Foreign-currency transfers** - can be funded up to 24 hours before the scheduled date, with the FX rate locked for that 24-hour period Outside that window, the **Fund Transfer** button is disabled and shows when funding will open. Once you fund the bill within the window, it moves to **Scheduled** and pays automatically on the date you chose - no need to remember or come back to trigger it. ## If a bill isn't funded or paid in time HitPay must settle collected funds within 3 days. That means **approval must be completed within 3 days of the bill's funds being collected**, if it stalls past that deadline, HitPay automatically returns those funds to your HitPay Balance and marks the bill **Expired**, no manual refund request needed. You'll get a warning email one day before the deadline if a bill is still waiting on approval, and a follow-up notification once funds are returned. An expired bill can be reprocessed at any time - just create a new bill. For what each status means, see [Bill statuses](/finance/bill-pay/overview#bill-statuses). # Vendors Source: https://docs.hitpayapp.com/finance/bill-pay/vendors Maintain a vendor directory, link bank accounts, and import vendors in bulk. ## Overview A vendor is a supplier or contractor record that groups everything you pay them for in one place - contact details, linked bank accounts, spend history, and every bill you've paid them. Instead of a vendor appearing as several disconnected beneficiaries because they have multiple bank accounts (for example, an SGD account and a USD account), Bill Pay links them all under a single vendor profile. ## Vendor directory Go to **Vendors** in the Bill Pay sidebar to see every vendor in a table: name, email, number of bills, payment details (masked account number, or a "Missing" warning if none is linked), last payment date, and when the vendor was added. * Search by name, email, or tax ID * Filter by status: **All**, **Active**, or **Archived** * Sort by clicking any column header * Click a row to open that vendor's profile If you have no vendors yet, they're created automatically the first time you create a bill for a new supplier - or you can add one manually. ![Vendor directory table listing vendors with bills, payment details, and last payment date](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/vendor-directory.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=3970bbfe5311bcf1b882502df0568848) ## Vendor profile Each vendor profile shows: * **Header** - name, entity type, status, email, and phone * **Summary cards** - Total Spend (all-time), This Month, This quarter and Outstanding. Amounts are grouped by home currency. * **Bills** tab - every bill for this vendor, filterable by status. * **Payment Information** tab - linked bank accounts, with the option to add a new one, set a primary account, or unlink an existing one * **Details** tab - editable legal name, entity type, tax ID, email, phone, and address * **Timeline** tab - a chronological activity log of everything that's happened on this vendor (creation, edits, bank account changes, payments) ![Vendor profile page showing summary cards and Bills, Payment Information, Details, and Timeline tabs](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/vendor-profile.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=a602edf1358af56744f82bcb27d8481d) ## Adding and managing vendors To add a vendor manually, go to **Vendors > Add Vendor** and fill in: | Field | Required | | - | - | | Legal Name | Yes | | Email | No | | Tax ID | No | | Phone | No | | Address | No | | Notes | No | **Archiving** a vendor hides it from the default list and bill-creation dropdowns without affecting any of its existing bills or bank accounts. Filter by **Archived** to find it again, and unarchive it from the vendor profile at any time. ## Linking a bank account From a vendor's **Payment Information** tab, click **Add Payment Information** and enter the country, transfer method, currency, account holder name, and account number. If a vendor has more than one bank account, click **Set as Primary** on the one that should be pre-selected automatically when you create new bills for them. Deleting a payment method only unlinks it from the vendor - it doesn't delete the underlying bank account. ## Vendor matching during bill creation When you upload a bill, HitPay tries to match it to an existing vendor automatically. If a match is found, you'll see "Matched to `{vendor name}`" with the option to change it. If not, you can search your existing vendors or create a new one inline, with the name pre-filled from OCR where available. ## Bulk vendor import If you're migrating from a spreadsheet or another platform, import your whole vendor list at once instead of adding them one by one. Go to **Vendors > Import Vendors** and choose: * **CSV Upload** - for vendors kept in a spreadsheet * **Sync from Accounting** - for Xero (see [Xero Integration](/finance/bill-pay/xero-integration)) ![Bulk vendor import screen for uploading a CSV file](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/vendor-bulk-import.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=0f1791d3dc6ddc8b9f5ad0aebde325e6) ### CSV upload Download the official template. It includes vendor fields (name, email, phone, tax ID, address) and bank account fields (country, currency, account holder name, account number, and a routing code where the destination country requires one). * Maximum **500 rows** per upload * Rows are validated before anything is created; invalid rows are flagged with the specific error (for example, an unrecognised country code or a badly formatted phone number) * You can fix and re-upload, or proceed - valid rows import while flagged rows are skipped and available to re-download ### How duplicates are handled The import only ever creates vendors and bank accounts - it never edits existing vendor details, even if the file has different values. | Situation | What happens | | - | - | | The exact same bank account (country + currency + account number) already exists | Row is skipped - already imported. Makes re-uploads safe. | | Exactly one existing vendor matches the name | The bank account is added to that vendor. | | More than one existing vendor matches the name | Row is flagged as ambiguous and skipped - you resolve it manually. | | No match | A new vendor is created with its bank account. | ## Xero vendor sync If you connect Xero, existing suppliers can be imported as vendors and new HitPay vendors are pushed to Xero automatically. See [Xero Integration](/finance/bill-pay/xero-integration) for how vendor sync works. # Xero Integration Source: https://docs.hitpayapp.com/finance/bill-pay/xero-integration Sync vendors and bills with Xero and automatically reconcile payments. ## Overview Connect Bill Pay to Xero to keep your vendors, bills, and payments in sync without double entry. Once connected, you can: 1. Import your existing Xero suppliers as HitPay vendors 2. Have new HitPay vendors pushed to Xero automatically 3. Map your HitPay bill categories to your Xero chart of accounts 4. Have approved bills appear in Xero as bills, with the right vendor and account code 5. Have payments recorded in Xero automatically once a bill is paid ## Connecting Xero Go to **Settings > Connections** and click **Connect BillPay Xero** to start the OAuth flow. ![Xero connection settings before connecting an account](https://mintcdn.com/hitpay/LCNi4EzvGDeAi_ES/images/finance/bill-pay/xero-connect.png?fit=max\&auto=format\&n=LCNi4EzvGDeAi_ES\&q=85\&s=3925cffffa22a7a1126da7d74e0916fb) Once connected, HitPay begins syncing your accounts and contacts in the background, and you'll be prompted to import your existing Xero suppliers - or skip and import them later from the Vendors page. You'll also be asked to map your HitPay categories to Xero expense accounts (auto-suggested by name match where possible), and can optionally set a default expense account for anything unmapped. ![Xero settings after connecting, showing category to GL account mapping](https://mintcdn.com/hitpay/WfFInkr4q9vulbgI/images/finance/bill-pay/xero-connected.png?fit=max\&auto=format\&n=WfFInkr4q9vulbgI\&q=85\&s=cbbf61be08b69b6a0dac00f126e077ef) ## Vendor sync * **Vendors imported from Xero are read-only in HitPay.** To change one, edit it in Xero and re-sync. * **Vendors created in HitPay push to Xero automatically** on create and update. If a Xero contact with the same name already exists, HitPay links to it instead of creating a duplicate. * Only Xero contacts marked as suppliers are imported - customer-only contacts aren't relevant to Bill Pay. See [Vendors](/finance/bill-pay/vendors) for how the vendor directory works day-to-day, and [Bulk vendor import](/finance/bill-pay/vendors#bulk-vendor-import) if you'd rather import via CSV instead of syncing from Xero. ## Bill & payment sync When a bill is approved, HitPay pushes it to Xero as a bill using the vendor and the GL account mapped to its category, automatically creating the vendor contact in Xero first if it doesn't exist yet. When that bill is paid in HitPay, the corresponding Xero bill is automatically marked as paid - there's nothing to reconcile manually. Sync status (synced, pending, or error) is shown against each bill and vendor. If a sync fails, HitPay retries automatically before asking you to retry manually. ## Disconnecting You can turn Xero sync off at any time from **Settings > Connections**. Disabling it stops future syncing but doesn't change anything already recorded in Xero. # Virtual Accounts Source: https://docs.hitpayapp.com/finance/virtual-accounts Receive local and international business payments into a dedicated account, available to businesses registered in Singapore or the Philippines. ## Overview A Virtual Account is a dedicated receiving account, issued in a business's registered name, for inbound business payments - invoices, receivables, and B2B transfers. It is separate from customer-facing checkout (payment links, POS, online store) but settles into the same HitPay Wallet, so business receivables and customer payments appear in one transaction ledger. Virtual Accounts are available to businesses registered in **Singapore** or the **Philippines**. Which currencies and transfer networks you get depend on where your business is registered. ![Virtual Accounts page in the HitPay Dashboard, showing bank details and a Received transfers log with completed transfers across multiple currencies](https://mintcdn.com/hitpay/oG_1za_YgsOqA4tZ/images/finance/virtual-accounts-overview.png?fit=max\&auto=format\&n=oG_1za_YgsOqA4tZ\&q=85\&s=0c4ca47bbda6ecbcacb659020c80c0a0) ## How funds flow A Virtual Account is a **collection method, not a bank account**. Funds never sit in it - every transfer moves straight through to your HitPay Wallet and out to your bank, the same way your customer payments do. **1. Payer sends a transfer** A client, partner, or marketplace sends money to your Virtual Account details from their own bank. **2. Funds land in your HitPay Wallet** The transfer is collected into your **Available** HitPay Wallet, alongside the rest of your HitPay sales. > [!NOTE] > > This can be **instant or take up to 3 business days**, depending on the Virtual Account you use and the currency sent. **3. Paid out to your bank** Funds are paid out to your linked external bank account on your normal HitPay **payout schedule** (daily, weekly, or monthly). > [!WARNING] > > * You can't hold funds in a Virtual Account or send money out of it. > * **Refunds are not supported** for Virtual Account transactions. If money needs to be returned to a payer, send it back manually, outside of HitPay. ## Country and currency availability The currencies you can receive, and the bank location of each Virtual Account, depend on where your business is registered. **Singapore** | Bank location | You can receive | Rails (transfer networks) | Settlement | | - | - | - | - | | Singapore | SGD | FAST | Real-time to HitPay Balance | | Singapore | USD, EUR, GBP, AUD, HKD, CNH, CAD, NZD, NOK, SEK, CHF | SWIFT | Real-time to HitPay Balance | | Philippines | PHP | InstaPay, PESONet | T+3, automatically converted to SGD | Singapore-registered businesses can receive 13 currencies in total. **Why hold an account in another country?** A Virtual Account held with a bank outside Singapore is mainly for your customers' convenience. With a PHP account, customers in the Philippines pay you like a local - through GCash, Maya, or any Philippine bank over InstaPay or PESONet - instead of making an international transfer. Funds are automatically converted to SGD and settled into your HitPay Wallet. > [!NOTE] > > Local GBP, EUR, and AUD receiving accounts are coming soon. Until available, these currencies are received via SWIFT into the SGD account structure. **Philippines** | Bank location | You can receive | Rails (transfer networks) | Settlement | | - | - | - | - | | Philippines | PHP | InstaPay, PESONet | Real-time to HitPay Balance | ## How to activate Activating a Virtual Account does not require a separate sign-up or another business verification check - it uses the same HitPay account you already have. **1. Create your free HitPay Account** Sign up or log in to [HitPay](https://dashboard.hit-pay.com). You'll need to **complete onboarding and have payments enabled** for your business before you can activate a Virtual Account. **2. Create your Virtual Account** In the HitPay Dashboard, go to **Settings > Payments > Virtual Accounts**. ![Virtual Accounts page in the HitPay Dashboard, showing bank name, account name, address, and supported currencies for a Singapore-registered SGD account, with a Received transfers log below](https://mintcdn.com/hitpay/oG_1za_YgsOqA4tZ/images/finance/virtual-accounts-dashboard.png?fit=max\&auto=format\&n=oG_1za_YgsOqA4tZ\&q=85\&s=f3c619b5d9d1e1db6b21fe63a9140a9b) Each Virtual Account entry shows: | Field | Description | | - | - | | Bank name | The regulated banking partner holding the account (for example, DBS Bank) | | Account name | The registered business name the account is issued to | | Address | The registered address associated with the account | | Supported currencies | The currencies receivable into this account | Below the account details, **Received transfers** lists incoming payments by date and amount, filterable by status: **All**, **Completed**, **Pending**, or **Failed**. Approval typically takes **1–3 business days**. **3. Account issued** Once approved, the account number (and SWIFT/BIC, where applicable) is available on the Virtual Accounts page. Use **Copy account details** to copy them as a ready-to-send message and share it with your payers. ## What it's for * **Business collections and receivables** - amounts owed by customers or clients, collected into the same account as other receivables. * **Invoice receivables** - let clients pay an invoice by bank transfer, straight into your Virtual Account. See [Accepting invoice payments](#accepting-invoice-payments) below. * **B2B collections** - payments from partners, distributors, or marketplaces. ## Accepting invoice payments Add Bank transfer as a payment option on your invoices, so clients can pay by transferring money from their own bank instead of paying online. > [!NOTE] > > Invoice payments via Virtual Account are currently available for **Singapore-registered businesses only**. Support for the Philippines is coming soon. **1. Turn on Bank transfer as a payment method** When creating or editing an invoice, open **Payment methods** and switch on **Bank transfer**, alongside any other methods you offer. ![Invoice creation screen in the HitPay Dashboard with the Payment methods panel open and the Bank transfer toggle switched on](https://mintcdn.com/hitpay/oG_1za_YgsOqA4tZ/images/finance/virtual-accounts-invoice-payment-method.png?fit=max\&auto=format\&n=oG_1za_YgsOqA4tZ\&q=85\&s=130057d712f810d4442fdfc07ba81e95) **2. Your client pays by bank transfer** On the invoice, your client selects **Bank transfer** under **How to pay**. They'll see your Virtual Account's bank name, account number, and SWIFT code - plus a unique **Payment reference** for that invoice. ![Customer-facing invoice payment page with Bank transfer selected, showing the Virtual Account bank details and a highlighted Payment reference field](https://mintcdn.com/hitpay/oG_1za_YgsOqA4tZ/images/finance/virtual-accounts-invoice-bank-transfer.png?fit=max\&auto=format\&n=oG_1za_YgsOqA4tZ\&q=85\&s=494f0d8f1ed44487f3c8adbf153daa8a) > [!WARNING] > > * **The Payment reference must match exactly.** Nothing added, removed, or changed - HitPay uses it to automatically match the transfer to the right invoice. If it's missing or altered, the payment may not be detected and the invoice won't be marked as paid on time. Let your clients know about this before they pay. > * **Only full payments are matched.** A transfer must be for the full invoice amount. Partial payments are not recorded or associated with the invoice. Once HitPay matches the transfer to the invoice, it's marked as paid, and the funds are collected the same way as any other Virtual Account payment - see [How funds flow](#how-funds-flow). ## Account details and reconciliation * The account number (and SWIFT/BIC, where applicable) is issued in the business's registered name - not a shared or pooled account. * Customer payments (cards, PayNow, GCash, QR, wallets) and business receivables settle into the same HitPay Wallet and appear in one transaction ledger, each entry tagged with sender, currency, amount, and fee. * A single reconciliation export covers both transaction types. * Every Virtual Account collection appears in **Transactions** with its own charge ID, showing the sender, amount, fee, and the Virtual Account it was received into. * Singapore-registered entities can additionally sync transactions to Xero or QuickBooks. ## Fund custody Each currency balance is held with a regulated banking partner in your business's own name - never pooled together with other merchants' funds. In Singapore, HitPay Payment Solutions Pte. Ltd. is licensed as a **Major Payment Institution** (PS20200643) under the Payment Services Act. In the Philippines, HitPay Payment Solutions Inc. is a **Registered Operator of a Payment System** regulated by Bangko Sentral ng Pilipinas (BSP registration OPSCOR-2023-0006) and registered with the Anti-Money Laundering Council (AMLC registration PBSP-20230220903000068-5). ## Pricing There are no monthly or setup fees in either market. You only pay per collection received. **Singapore** | Currency | Collection fee | | - | - | | SGD (FAST) | S\$0.50 per collection | | PHP (InstaPay/PESONet) | PHP 15 flat fee per collection, 0% transaction fee | | AUD | A\$3.00 per collection | | All other currencies | Free | Currencies other than SGD are converted to SGD at **1% over the interbank mid-rate**. **Philippines** | Currency | Collection fee | | - | - | | PHP (InstaPay/PESONet) | PHP 15 per collection, PHP 20 minimum | Fees are subject to change. Full pricing is at [hitpayapp.com/pricing](https://www.hitpayapp.com/pricing). ## API integration You can manage Virtual Accounts programmatically - create a Virtual Account, retrieve its details, or list existing accounts. See the [VA (Virtual Account) API reference](/apis/virtual-account/create-va). ## FAQs > **Which businesses are eligible?** > > Businesses registered in Singapore (private limited company, LLP, sole proprietorship, or partnership under ACRA) or the Philippines (sole proprietorship, partnership, or corporation under DTI/SEC). The account type issued depends on the registration market - see [Country and currency availability](#country-and-currency-availability). > **What currencies can a business receive, and which settle locally versus via SWIFT?** > > Singapore-registered entities receive SGD in real time via FAST and PHP via a local PHP account (InstaPay or PESONet), plus SWIFT reach to SGD, USD, EUR, GBP, AUD, HKD, CNH, CAD, NZD, NOK, SEK, and CHF. Philippines-registered entities receive PHP in real time via InstaPay or PESONet; SWIFT reach is not currently supported for Philippines-registered entities. Combined, that's 13 currencies across both markets. > **Will local GBP, EUR, and AUD receiving accounts be available for Singapore-registered entities?** > > Yes - local receiving accounts in GBP, EUR, and AUD for Singapore-registered entities are coming soon. Until then, these currencies are received via SWIFT into the SGD account structure. A local PHP receiving account is already available for Singapore-registered entities - see [Country and currency availability](#country-and-currency-availability). > **How does the PHP account work for Singapore businesses?** > > Singapore businesses can accept PHP from customers in the Philippines through local payment rails (InstaPay and PESONet), so customers can pay via GCash, Maya, or any Philippine bank. Funds are automatically converted to SGD at 1% over the interbank mid-rate and are available in your HitPay Wallet on **T+3**. The fee is a flat PHP 15 per collection, with no transaction fee and no monthly or setup fee. To request one, your business needs Payments enabled and QRPH enabled. > **How does the PHP account work for Philippines businesses?** > > Philippines-registered entities receive a persistent local PHP account reachable by any InstaPay- or PESONet-connected bank or e-wallet, including GCash, Maya, BPI, BDO, and UnionBank. Transfers settle in real time. The fee is a flat PHP 15 per collection with a PHP 20 minimum; there is no monthly or setup fee. > **Does a business need to open a new account to use this?** > > No. Existing HitPay merchants can activate a Virtual Account straight from the dashboard, with no new sign-up and no extra business verification. New businesses complete a single onboarding - ACRA in Singapore, DTI/SEC in the Philippines - and get both customer payment tools and the Virtual Account together. > **How are funds safeguarded?** > > Each account is held in your business's own name with a regulated banking partner, never pooled together with other merchants' money. HitPay Payment Solutions Pte. Ltd. is licensed as a Major Payment Institution in Singapore (MAS licence PS20200643), and HitPay Payment Solutions Inc. is a Registered Operator of a Payment System regulated by Bangko Sentral ng Pilipinas (BSP registration OPSCOR-2023-0006) in the Philippines. > **How is this different from HitPay Payouts?** > > Payouts moves a business's settled HitPay sales balance out to an external bank account. Virtual Accounts are the receiving side - they let customers, partners, or marketplaces send money into a dedicated account in the business's name, whether that's a customer sale, an invoice payment, or a B2B transfer. > **Is a Virtual Account a bank account I can hold funds in?** > > No. **A Virtual Account does not hold or store funds.** It's a collection method, not a bank account - you can't hold money in it or send money out. Every transfer received is swept immediately into your **Available** HitPay Wallet and paid out on your normal payout schedule, just like the rest of your HitPay sales. See [How funds flow](#how-funds-flow). > **Can I close my Virtual Account?** > > Singapore-registered businesses can close a Virtual Account held with a bank in Singapore. Once it's closed, the account can no longer receive funds - any payer who tries to send money to it will see an error. Make sure your clients and partners have updated payment details before you close it. > **What documents are required to open a Virtual Account?** > > Singapore entities provide their ACRA UEN and the director's NRIC or passport (sole proprietors: NRIC and Myinfo). Philippines entities provide DTI or SEC registration and a valid government ID. Both markets require a local business bank account. Sign-up is fully online with no setup fee; approval takes 1–3 business days. # Availability by Market Source: https://docs.hitpayapp.com/getting-started/availability-by-market 45 markets where HitPay processes payments — cards, local APMs, cross-border QR, and recurring billing HitPay enables partners to accept payments across **45 markets**. In our three core markets — Singapore, Malaysia, and the Philippines — HitPay holds direct payment licenses and operates its own acquiring stack. In the remaining 42 markets, HitPay uses **Stripe Standard Connect for cards only**; all alternative payment methods (APMs, regional QR rails, recurring) are always HitPay-acquired direct. ## How to read this page * **Card (online):** who acquires the card transaction. `HitPay direct` = HitPay's own license + acquiring relationship; `Stripe` = Stripe Standard Connect; `Adyen` = HitPay's direct Adyen MID. * **Card (offline):** card-present support, via HitPay POS, Adyen, or Stripe Terminal. * **Local APMs:** account-to-account, QR, and wallet rails settling in the partner's **local currency**. Always HitPay-acquired direct. * **Cross-border APMs:** foreign-wallet QR rails (Borderless QR — 13-scheme stack) settling in the partner's **local currency**. Always HitPay-acquired direct. * **Recurring:** methods supporting tokenisation + scheduled auto-charge. > [!NOTE] > > **Cards in non-core markets** are acquired via Stripe Standard Connect. All other payment methods on this page — every APM, QR rail, and recurring rail — are acquired direct by HitPay. ## Coverage at a glance > **45 markets** > > Cards, APMs, cross-border QR, and recurring billing across APAC, Europe, Americas, and MENA. > **3 core markets** > > Singapore, Malaysia, Philippines — HitPay holds direct payment licenses and operates its own acquiring stack. > **13-scheme Borderless QR** > > HitPay's cross-border QR stack accepts foreign wallets in every market we support. ## Availability by country Pick a region, then click any market to see its full capability detail. **APAC (9)** > **🇸🇬 Singapore (SG)** > > **Core market** · HitPay direct + Stripe + Adyen > > | Capability | Detail | > | - | - | > | Licence | MAS MPI | > | Card (online) | HitPay direct + Stripe + Adyen | > | Card (offline) | Stripe Terminal + Adyen | > | Local APMs | PayNow, GrabPay, Grab PayLater, ShopeePay, SPayLater, ShopBack PayLater, Atome, Atome QR, WeChat Pay, Alipay, UPI QR, GIRO Direct Debit | > | Cross-border APMs | DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, GIRO, ShopeePay, GrabPay, TnG, WeChat Pay, ZaloPay | > **🇲🇾 Malaysia (MY)** > > **Core market** · HitPay direct + Stripe > > | Capability | Detail | > | - | - | > | Licence | BNM Merchant Acquirer | > | Card (online) | HitPay direct + Stripe | > | Card (offline) | Stripe Terminal | > | Local APMs | FPX, DuitNow Online Banking, DuitNow QR, Touch 'n Go eWallet, GrabPay, ShopeePay, MAE, Atome, SPayLater, Grab PayLater, WeChat Pay, Alipay | > | Cross-border APMs | PayNow QR (SG), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ShopeePay, GrabPay, ZaloPay | > **🇵🇭 Philippines (PH)** > > **Core market** · HitPay direct > > | Capability | Detail | > | - | - | > | Licence | BSP MAL/OPS | > | Card (online) | HitPay direct | > | Card (offline) | HitPay POS (HitPay direct, BSP-licensed) | > | Local APMs | QR Ph, InstaPay, PESONet, GCash, Maya, GrabPay, ShopeePay, SPayLater, BillEase, OTC (Bayad / ECPay / Palawan) | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, ShopeePay, TnG, ZaloPay | > **🇦🇺 Australia (AU)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | AUSTRAC (HitPay payouts) | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇭🇰 Hong Kong (HK)** > > Adyen + Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Adyen + Stripe | > | Card (offline) | Not on Stripe Terminal | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇮🇳 India (IN)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | Stripe IN approval at >US\$1M/yr | > | Card (online) | Stripe | > | Card (offline) | Not on Stripe Terminal | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇯🇵 Japan (JP)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇳🇿 New Zealand (NZ)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇹🇭 Thailand (TH)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | Stripe TH (newly live) | > | Card (online) | Stripe | > | Card (offline) | Not on Stripe Terminal | > | Local APMs | PromptPay | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | **Europe & UK (32)** > **🇦🇹 Austria (AT)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇧🇪 Belgium (BE)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇧🇬 Bulgaria (BG)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇭🇷 Croatia (HR)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇨🇾 Cyprus (CY)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇨🇿 Czech Republic (CZ)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇩🇰 Denmark (DK)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇪🇪 Estonia (EE)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇫🇮 Finland (FI)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇫🇷 France (FR)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇩🇪 Germany (DE)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇬🇮 Gibraltar (GI)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay on Android only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇬🇷 Greece (GR)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Not on Stripe Terminal | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇭🇺 Hungary (HU)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇮🇪 Ireland (IE)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇮🇹 Italy (IT)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇱🇻 Latvia (LV)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇱🇮 Liechtenstein (LI)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇱🇹 Lithuania (LT)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇱🇺 Luxembourg (LU)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇲🇹 Malta (MT)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇳🇱 Netherlands (NL)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇳🇴 Norway (NO)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇵🇱 Poland (PL)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇵🇹 Portugal (PT)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇷🇴 Romania (RO)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇸🇰 Slovakia (SK)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇸🇮 Slovenia (SI)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (Tap-to-Pay only) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇪🇸 Spain (ES)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇸🇪 Sweden (SE)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇨🇭 Switzerland (CH)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇬🇧 United Kingdom (GB)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | **Americas (3)** > **🇨🇦 Canada (CA)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇲🇽 Mexico (MX)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Not on Stripe Terminal | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | > **🇺🇸 United States (US)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | FinCEN MSB (HitPay) | > | Card (online) | Stripe | > | Card (offline) | Stripe Terminal (GA) | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | **MENA (1)** > **🇦🇪 United Arab Emirates (AE)** > > Stripe > > | Capability | Detail | > | - | - | > | Licence | — | > | Card (online) | Stripe | > | Card (offline) | Not on Stripe Terminal | > | Local APMs | — | > | Cross-border APMs | PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay | > | Recurring | Cards, TnG, ZaloPay, GrabPay, ShopeePay | ## Cross-border APMs (Borderless QR) HitPay's 13-scheme Borderless QR stack is available in **every market** we support. Foreign wallets scan the local QR; HitPay handles FX and settles to the partner's local currency. The full stack covers: **PayNow QR (SG), DuitNow QR (MY), TnG (MY), PromptPay (TH), LinePay (TH), QR Ph (PH), GCash (PH), BillEase (PH), UPI QR (IN), ZaloPay (VN), VietQR (VN), WeChat Pay.** In each market, the country's own local QR is excluded from the cross-border set (since it's already the local rail). ## Payout timing ### Core markets (SG, MY, PH) **Singapore** | Balance | Payment Methods | Frequency | Payout Done By | | :- | :- | :-: | :-: | | **HitPay Balance** | PayNow, GrabPay, ShopeePay, SPayLater, ShopBack Pay, Atome, WeChat Pay, UPI, plus 13-scheme Borderless QR | T + 1 Calendar Day | HitPay | | **Card Balance** | Cards (Visa, Mastercard, Amex, UnionPay, Apple Pay, Google Pay) | From T + 1 Business Day | Stripe | > [!NOTE] > > Minimum payout: **SGD 1**. See [full payout schedule](/getting-started/payouts) for split-payout rules and bank account setup. **Malaysia** | Balance | Payment Methods | Frequency | Payout Done By | | :- | :- | :-: | :-: | | **HitPay Balance** | DuitNow, FPX, Touch 'n Go, ShopeePay, SPayLater, GrabPay, Atome, MaybankQR, plus 13-scheme Borderless QR | T + 2 Calendar Days | HitPay | | **Card Balance** | Cards (Visa, Mastercard, UnionPay, Apple Pay, Google Pay) + FPX | T + 1 Business Day | Stripe | > [!NOTE] > > Minimum payout: **RM 5**. See [full payout schedule](/getting-started/payouts). **Philippines** > [!WARNING] > > Payouts under **PHP 50,000** use **Instapay** (same day, subject to recipient bank support). Payouts over **PHP 50,000** use **PESONet** (2–3 working days). | Balance | Payment Methods | Frequency | Payout Done By | | :- | :- | :-: | :-: | | **HitPay (Non-Cards)** | QRPH, GCash, Maya, ShopeePay, BillEase, GrabPay, OTC (Bayad/ECPay/Palawan), Unionbank Online, PESONet, plus 13-scheme Borderless QR | T + 1 Calendar Day | HitPay | | **HitPay (Online Cards)** | Cards (Visa, Mastercard) | T + 7 Calendar Days | HitPay | | **HitPay (In-Person Cards)** | Cards (Visa, Mastercard) | T + 2 Calendar Days | HitPay | See [full payout schedule](/getting-started/payouts) for details. ### Stripe Standard Connect markets (42) For non-core markets, **card payouts follow Stripe's standard payout schedule**, which varies by country. Typical timing is **T+2 to T+7 business days** in local currency. > **[Stripe's standard payout timing reference](https://docs.stripe.com/payouts#standard-payout-timing)** > > Authoritative per-country payout schedule for Stripe Standard Connect accounts. Includes first-payout delays (typically 7–14 days after first successful transaction) and minimum payout amounts. > [!NOTE] > > **HitPay-acquired APMs and Borderless QR** in non-core markets still settle on HitPay's schedule (T+1 to T+2 calendar days), not Stripe's. Only the **Card Balance** in non-core markets follows Stripe's standard timing. ## Recurring billing — coming soon > [!NOTE] > > **LinePay** and **GCash** recurring rails are coming soon to all 45 markets. > > Already live globally (any market): **TnG** and **ZaloPay** tokenised recurring. ## Licenses held by HitPay | Market | Regulator | Licence | | - | - | - | | 🇸🇬 Singapore | MAS | Major Payment Institution — `PS20200643` | | 🇲🇾 Malaysia | BNM | Registered payment instrument issuer / system operator | | 🇵🇭 Philippines | BSP | MAL/OPS | | 🇦🇺 Australia | AUSTRAC | Payouts | | 🇺🇸 United States | FinCEN | MSB | ## Stripe Standard Connect migration Partners outside Singapore, Malaysia, the Philippines, and Indonesia who were on the legacy Stripe Custom Connect setup must migrate to Stripe Standard Connect by **5 June 2026**. See the [Standard Connect migration guide](/announcements/standard-connect-migration) for steps. # Payouts Source: https://docs.hitpayapp.com/getting-started/payouts Guide to understanding payout cycles and methods with HitPay A payout is the transfer of funds from HitPay to your bank account. When you start processing live payments from your customers with HitPay, you will receive the corresponding payouts to your bank account according to the schedule provided below. ![Payouts](https://mintcdn.com/hitpay/YeMTjx6l4Y3ML72_/images/Payouts.png?fit=max\&auto=format\&n=YeMTjx6l4Y3ML72_\&q=85\&s=ce590263668b4762d15945b6b43f1a2e) ## Payout Schedule You can view a list of all of your payouts and the date that they are expected to be received in your bank account in the HitPay Dashboard under **Payouts & Balances > Payouts**. **Singapore** | Balance | Payment Methods Included | Frequency | Payout Done By | | :-: | :-: | :-: | :-: | | HitPay Balance | PayNow QR GrabPay GrabPay PayLater ShopeePay SPayLater ShopBack Pay Atome WeChatPay UPI QRPH PromptPay TrueMoney Rabbit LINE Pay PayCo KakaoPay LINEPay DuitNow VietQR ZaloPay | T + 1 Calendar Day | HitPay | | Card Balance | Cards (Visa, Mastercard, Amex, UnionPay, Apple Pay, Google Pay) | From T + 1 Business Day (Final payout schedule determined by Compliance on a case-by-case basis) | Stripe | > [!NOTE] > > **Minimum to pay out:** SGD 1 (after deducting fees). **Malaysia** | Balance | Payment Methods Included | Frequency | Payout Done By | | :-: | :-: | :-: | :-: | | HitPay Balance | Touch 'n Go ShopeePay SPayLater GrabPay GrabPay PayLater Atome WeChat Pay DuitNow ShopBack Pay MayBank QR AliPay PromptPay TrueMoney Rabbit LINE Pay PayCo KakaoPay LINEPay VietQR ZaloPay | T + 2 Calendar Days | HitPay | | Card Balance | Cards (Visa, Mastercard, UnionPay, Apple Pay, Google Pay) FPX | T + 1 Business Day (Final payout schedule determined by Compliance on a case-by-case basis) | Stripe | > [!NOTE] > > **Minimum to pay out:** RM 5 (after deducting fees). **Philippines** > [!WARNING] > > Payouts less than PHP 50,000.00 the transfer type will be **Instapay**.\ > Payouts greater than PHP 50,000.00 the transfer type will be **PESONet**. > > **Instapay** transfers will reach your bank on the same day the payout is initiated. (Your bank must support Instapay)\ > **PESONet** transfers will reach your bank 2 to 3 working days from the day the payout is initiated. | Balance | Payment Methods Included | Frequency | Payout Done By | | :-: | :-: | :-: | :-: | | HitPay (Non-Cards) | QRPH GCash ShopeePay SPayLater Unionbank Online PESONet BillEase GrabPay Over the counter (Bayad, ECPay, Palawan, Instapay) PromptPay TrueMoney Rabbit LINE Pay PayCo KakaoPay LINEPay DuitNow VietQR ZaloPay | T + 1 Calendar Day | HitPay | | HitPay (Online Cards) | Cards - Visa, Mastercard | T + 7 Calendar Days | HitPay | | HitPay (In-Person Cards) | Cards - Visa, Mastercard | T + 2 Calendar Days | HitPay | ## Payout Limits & Timing Understanding when and how your funds are transferred is essential for managing your cash flow. ### Payout Limits * **First Payout Delay:** For Card (Stripe) payments, the initial payout is held for **7–14 days** following your first successful transaction for security verification. * **Minimum Payout:** Limits vary by country of registration. Consult [Stripe's Minimum Payout Guide](https://docs.stripe.com/payouts#cbp-minimum-payout-amounts) for details. * **Maximum Payout (Split Payouts):** If a single payout exceeds network limits (e.g., FAST/PayNow limits), HitPay automatically splits the transfer into multiple smaller transactions to ensure successful delivery. | Region | Payment Method | Maximum Payout Limit | | :- | :- | :- | | **Singapore** | PayNow (FAST) | SGD 200,000 | > [!NOTE] > > **Split Payout Example:** An **SGD 450,000** PayNow balance will be automatically processed as two SGD 200,000 payouts and one SGD 50,000 payout. Each will appear as a separate entry in your dashboard. ### Payout Timing (Card Balance) For Card Balance payouts, you can view when your payout will be initiated once you have transactions. Navigate to **Payouts & Balances > Payouts** to see your upcoming payouts. ![Card Payout Timing](https://mintcdn.com/hitpay/JS4PXXi6ssVVUS4_/images/payout_schedule_card_balance.png?fit=max\&auto=format\&n=JS4PXXi6ssVVUS4_\&q=85\&s=d98871e356f923f6d7b927330e4b9a75) Hover over the **info icon** next to the Status to see how many days until your payout is ready. The payout timing is determined by the assessed risk level of your business. ## Payout Settings ### Automatic Scheduling You can customize how often funds from your **HitPay Balance** are transferred to your bank. 1. Navigate to **Bank Payouts > HitPay Balance**. 2. Click the **"..."** icon and select **Settings**. 3. Select your preferred frequency: **Daily**, **Weekly**, or **Monthly**. > [!WARNING] > > This schedule applies specifically to your **HitPay Balance**. **Card Balance** payouts are handled automatically by Stripe's independent processing schedule. ### Bank Account Management A default bank account is required to process payments. * **Adding an Account:** Navigate to `Settings` > `Bank Accounts` > `Add bank account`. * **Setting a Default:** Tick the **"Use in HitPay"** checkbox for the preferred account. You may save multiple accounts, but only one can be set as the default payout destination. * **Editing an Account:** 1. Navigate to **Settings > Bank Accounts > Edit** 2. Upload Proof of Bank Account 3. Enter your password for security. > [!NOTE] > > The bank account must be a **business bank account** (not personal), and the **business name must be reflected in the bank account**. Onfido verification is not required for bank account changes. ## Viewing Payout Details You can view detailed information about each payout, including all charges included in that payout. ### Payout Breakdown Downloads You can download a breakdown of your payouts for reconciliation purposes: ![Download Payout Breakdown](https://mintcdn.com/hitpay/U5oNdh9JnlyohIhl/images/download_payoutbreakdown.png?fit=max\&auto=format\&n=U5oNdh9JnlyohIhl\&q=85\&s=ba6021903c2a789b00c300301b9fff0f) * **HitPay Balance payouts:** Download available * **Card Balance payouts:** Download available * **Card (by Adyen) Balance:** Download not available > [!NOTE] > > To view payouts, go to **Payouts & Balances > Payouts**. Once you make transactions, you will see "Next Payout" card payouts, and your payout period will be shown in the **info icon** next to the Status. ### Viewing Charges in a Payout To see all charges associated with a specific payout: ![Payout Details](https://mintcdn.com/hitpay/JS4PXXi6ssVVUS4_/images/payouts_detail.png?fit=max\&auto=format\&n=JS4PXXi6ssVVUS4_\&q=85\&s=6bc2802ebb2fd7442dfeda3fcf33e9e6) 1. Navigate to **Payouts & Balances > Payouts** 2. Click on the specific payout to open its details 3. View the **"Charges included in this payout"** section to see all transactions, including date, customer, amount, fees, payment method, and status You can also export the charges list using the **Export** button. > [!NOTE] > > Viewing charges in a payout is only applicable to **HitPay Balance** payouts. ## USD Payouts (Singapore Only) Merchants in Singapore can receive USD directly by linking a **Singapore-domiciled USD bank account**. * **How to add:** This cannot be done through the HitPay dashboard — email [support@hit-pay.com](mailto:support@hit-pay.com) to request it. * **Logic:** USD transactions are credited to your USD account. All other currencies are converted to SGD and sent to your SGD account. * **Requirement:** You must have a primary SGD bank account linked before adding a USD account. ### USD Fee Schedule | Fee Type | Rate | | :- | :- | | **Transaction Fee** | 5.65% + SGD 0.50 | | **Conversion Fee** | 2% (Applicable only if currency conversion is required) | | **Payout Fee** | **Free** (\$0.00) | ## Supported Bank Accounts by Country > **Singapore** > > * ABN AMRO BANK NV > * AMERICAN EXPRESS BANK LTD > * ANEXT BANK PTE. LTD. > * ANZ SINGAPORE > * BANGKOK BANK PUBLIC COMPANY > * BANK OF AMERICA > * BANK OF CHINA > * BANK OF INDIA > * BANK OF NEW ZEALAND > * BANK OF TOKYO-MITSUBISHI > * BNP PARIBAS > * CALYON > * CHINATRUST COMMERCIAL BANK CO., LTD > * CIMB BANK BERHAD > * CITIBANK NA > * CITIBANK SINGAPORE > * CITIC Bank International Ltd > * COMMERZBANK AG > * COMMERZBANK SG > * DBS Bank/POSB > * DEUTSCHE BANK > * DnB NOR Bank ASA > * FAR EASTERN BANK > * FIRST COMMERCIAL BANK > * HABIB BANK LIMITED > * HL BANK > * HONGKONG & SHANGHAI BANKING CORPORATION (HSBC) > * ICICI BANK > * INDIAN BANK > * INDIAN OVERSEAS BANK > * INTERNALTIONALE NEDERLANDEN BANK N.V. > * INTESA SANPAOLO S.p.A > * INTESABCI S.P.A. > * Industrial & Commercial Bank of China > * JP MORGAN CHASE BANK, N.A. > * KEB HANA BANK > * MALAYAN BANKING BERHAD > * MAYBANK SINGAPORE LIMITED > * MIZUHO CORPORATE BANK, LTD > * MOSCOW NARODNY BANK LIMITED > * NATIONAL AUSTRALIA BANK LTD > * NATIONAL BANK OF KUWAIT, SAK > * NORDEA BANK FINLAND PLC > * OVERSEA-CHINESE BANKING CORPORATION LTD > * PT. BANK NEGARA INDONESIA > * RHB BANK BERHAD > * SINGAPORE ISLAND BANK > * SKANDINAVISKA ENSKILDA BANKEN > * SOCIETE GENERALE > * STANDARD CHARTERED BANK > * STATE BANK OF INDIA > * SUMITOMO MITSUI BANKING CORPORATION > * SVENSKA HANDELSBANKEN AB (PUBL) > * SWISS BANK CORP > * THE BANK OF EAST ASIA > * THE BANK OF NOVA SCOTIA > * THE DAI-ICHI KANGYO BANK, LTD > * UCO BANK > * UNION DE BANQUES ARABES ET FRANCAISES > * UNITED OVERSEAS BANK LTD > * Wise Asia-Pacific Pte Ltd > **Malaysia** > > * Affin Bank > * Affin Islamic Bank > * Agrobank > * Al-Rajhi Banking & Investment Corporation > * Alliance Bank > * AmBank > * AmBank Islamic > * BNP Paribas > * Bank Islam > * Bank Kerjasama Rakyat Malaysia > * Bank Muamalat > * Bank Simpanan Nasional > * Bank of America > * Bank of China > * Bank of Tokyo-Mitsubishi UFJ > * CIMB Bank > * CIMB Islamic Bank > * Citibank > * Deutsche Bank > * HSBC Amanah > * HSBC Bank > * Hong Leong Bank > * Hong Leong Islamic Bank > * Industrial & Commercial Bank of China (ICBC) > * JP Morgan Chase > * Kuwait Finance House > * Maybank > * Mizuho Bank > * OCBC Al-Amin Bank > * OCBC Bank > * Public Bank > * RHB Bank > * Standard Chartered Bank > * Sumitomo Mitsui Banking Corporation > * United Overseas Bank > **Philippines** > > * ALLBANK (A Thrift Bank), Inc. > * Al-Amanah Islamic Investment Bank > * Asia United Bank > * Australia and New Zealand Bank > * BANK OF FLORIDA INC. > * BANK OF MAKATI (A SAVINGS BANK), INC. > * BANKO, A SUBSIDIARY OF BPI > * BDO Network Bank > * BIÑAN RURAL BANK, INC. > * Banco De Oro Unibank, Inc. > * Bangko Kabayan, Inc. (A Private Development Bank) > * Bangko Mabuhay (A Rural Bank), Inc. > * Bangko Nuestra Señora Del Pilar, Inc. (A Rural Bank) > * Bangkok Bank Public Co., Ltd. > * Bank Of America, National Association > * Bank Of China > * Bank Of Commerce > * Bank Of The Philippine Islands > * CATHAY UNITED BANK CO., LTD. - MANILA BRANCH > * CIMB Bank Philippines Inc > * COOPERATIVE BANK OF QUEZON PROVINCE > * CTBC Bank (Philippines) Corp. > * Camalig Bank > * Cantilan Bank, Inc. (A Rural Bank) > * Cebuana Lhuillier Rural Bank, Inc. > * China Bank Savings > * China Banking Corporation > * Citibank N.A. > * Community Rural Bank of Romblon, Inc. > * Country Builders Bank, Inc. (A Rural Bank) > * DCPay Philippines, Inc. > * Deutsche Bank > * Development Bank of the Philippines > * Dumaguete City Development Bank, Inc. > * Dungganon Bank Inc. > * East West Rural Bank, Inc. > * East-West Banking Corporation > * Equicom Savings Bank, Inc. > * First Consolidated Bank Inc. > * Globe Gcash > * GoTyme Bank Corporation > * Guagua Rural Bank, Inc. > * HK and Shanghai Banking Corp. > * HSBC Savings Bank, Inc. > * ING Bank N.V. > * Industrial & Commercial Bank of China, Ltd > * Industrial Bank of Korea - Manila > * Innovative Bank, Inc. (A Rural Bank) > * JPMorgan Chase Bank > * KEB Hana Bank > * LAGUNA PRESTIGE BANKING CORPORATION (A RURAL BANK) > * LULU FINANCIAL SERVICES (PHILS), INC.- Participation Temporarily Deactivated > * Land Bank Of The Philippines > * MALARAYAT RURAL BANK, INC. > * MONEY MALL RURAL BANK, INC. > * MUFG Bank, Ltd > * MVSM BANK (A RURAL BANK SINCE 1953), INC. > * Malayan Bank > * Maya Bank, Inc. > * Maybank Philippines, Inc. > * Mega Intl Comml Bank Co. Ltd > * Metropolitan Bank and Trust Co > * Mizuho Bank, Ltd. > * NEW RURAL BANK OF SAN LEONARDO (NUEVA ECIJA), INC. > * PAYMONGO PAYMENTS, INC. > * Paymaya Philippines, Inc. > * Philippine Bank of Communications > * Philippine Business Bank > * Philippine National Bank > * Philippine Savings Bank > * Philippine Trust Company > * Philippine Veterans Bank > * Producers Savings Bank Corporation > * Queen City Development Bank, Inc. > * RBT BANK, INC. A RURAL BANK > * RURAL BANK OF BACOLOD CITY, INC. > * RURAL BANK OF BAUANG, INC. > * RURAL BANK OF LA PAZ, INC. > * RURAL BANK OF LEBAK (SULTAN KUDARAT), INCORPORATED > * RURAL BANK OF PORAC (PAMPANGA), INC. > * RURAL BANK OF ROSARIO (LA UNION), INC. > * RURAL BANK OF SAGAY, INC. > * RURAL BANK OF STA. IGNACIA, INC. > * Rang-Ay Bank, Inc. (A Rural Bank) > * Rizal Commercial Banking Corp. > * Robinsons Bank Corporation > * Rural Bank of Digos, Inc. > * Rural Bank of Montalban, Inc > * Seabank Philippines, Inc. > * Security Bank Corporation > * Shinhan Bank > * Sterling Bank Of Asia > * Sumimoto Mitsui Banking Corp > * TAYOCASH, INC. > * The Standard Chartered Bank > * Tonik Digital Bank, Inc. > * UNO BANK, INC. > * USSC MONEY SERVICES, INC. > * Union Bank of the Philippines > * Union Digital Bank > * United Overseas Bank Phils. > * Wealth Development Bank, Inc. > * Yuanta Savings Bank, Inc. > * ZYBI TECH, INC. > **Indonesia** > > * BANK ALADIN SYARIAH > * BANK ALLO > * BANK ANZ INDONESIA > * BANK ARTHA GRAHA > * BANK BCA SYARIAH > * BANK BNI 46 > * BANK BRI > * BANK BSI (BANK SYARIAH INDONESIA) > * BANK BTPN SYARIAH > * BANK BUKOPIN SYARIAH > * BANK BUMI ARTA > * BANK CAPITAL > * BANK CCB INDONESIA > * BANK CIMB NIAGA > * BANK COMMONWEALTH > * BANK CTBC INDONESIA > * BANK DANAMON INDONESIA > * BANK DBS INDONESIA > * BANK DIGITAL BCA > * BANK GANESHA > * BANK HSBC > * BANK IBK INDONESIA > * BANK ICBC > * BANK INA PERDANA > * BANK INDEX SELINDO > * BANK JABAR > * BANK JABAR BANTEN SYARIAH > * BANK JAGO > * BANK JASA JAKARTA > * BANK JATENG > * BANK JTRUST INDONESIA > * BANK KB BUKOPIN > * BANK KEB HANA > * BANK MANDIRI > * BANK MANDIRI TASPEN POS > * BANK MASPION INDONESIA > * BANK MAYAPADA INTERNATIONAL > * BANK MAYORA > * BANK MEGA > * BANK MESTIKA DHARMA > * BANK MNC INTERNASIONAL > * BANK MUAMALAT INDONESIA > * BANK MULTI ARTA SENTOSA > * BANK NATIONAL NOBU > * BANK NEO COMMERCE > * BANK OCBC NISP > * BANK OF INDIA INDONESIA > * BANK OKE INDONESIA > * BANK PANIN > * BANK PANIN DUBAI SYARIAH > * BANK PERMATA > * BANK PRIMA MASTER > * BANK QNB KESAWAN > * BANK RAYA INDONESIA > * BANK SAHABAT SAMPOERNA > * BANK SBI INDONESIA > * BANK SEABANK INDONESIA > * BANK SHINHAN INDONESIA > * BANK SINARMAS > * BANK STANDARD CHARTERED > * BANK SULSELBAR > * BANK SULUTGO > * BANK SUMUT > * BANK SYARIAH MEGA > * BANK UOB BUANA INDONESIA > * BANK VICTORIA INTERNASIONAL > * BANK VICTORIA SYARIAH > * BANK WOORI SAUDARA > * BII Maybank > * BPD ACEH > * BPD BALI > * BPD BANTEN > * BPD BENGKULU > * BPD DIY > * BPD DKI JAKARTA > * BPD JAMBI > * BPD KALBAR > * BPD KALSEL > * BPD KALTENG > * BPD KALTIMTARA > * BPD LAMPUNG > * BPD MALUKU > * BPD NUSA TENGGARA BARAT > * BPD PAPUA > * BPD RIAU > * BPD SULAWESI TENGAH > * BPD SULAWESI TENGGARA > * BPD SUMATERA BARAT/BANK NAGARI > * BPD SUMSEL BABEL > * Bank BCA > * Bank BTN > * Bank BTPN > * Bank Jatim > * Bank NTT > * CITIBANK > * MUFG BANK > * OVO > * THE BANK OF CHINA > **Thailand** > > * BANGKOK BANK PUBLIC COMPANY LTD. \[002] > * BANK FOR AGRICULTURE AND AGRICULTURAL COOPERATIVES \[034] > * BANK OF AMERICA, NATIONAL ASSOCIATION \[027] > * BANK OF AYUDHYA PUBLIC COMPANY LTD. \[025] > * BANK OF CHINA (THAI) PUBLIC COMPANY LIMITED \[052] > * BNP PARIBAS \[045] > * CIMB THAI BANK Public Company Limited \[022] > * CITIBANK, N.A. \[017] > * DEUTSCHE BANK AG. \[032] > * EXPORT-IMPORT BANK OF THAILAND \[035] > * GOVERNMENT HOUSING BANK \[033] > * GOVERNMENT SAVINGS BANK \[030] > * INDIAN OVERSEA BANK \[029] > * INDUSTRIAL AND COMMERCIAL BANK OF CHINA (THAI) PUBLIC COMPANY LIMITED \[070] > * ISLAMIC BANK OF THAILAND \[066] > * JPMORGAN CHASE BANK, NATIONAL ASSOCIATION \[008] > * KASIKORNBANK PUBLIC COMPANY LTD. \[004] > * KIATNAKIN BANK PUBLIC COMPANY LIMITED \[069] > * KRUNG THAI BANK PUBLIC COMPANY LTD. \[006] > * LAND AND HOUSES BANK PUBLIC COMPANY LIMITED \[073] > * MEGA INTERNATIONAL COMMERCIAL BANK PUBLIC COMPANY LIMITED \[026] > * Mizuho Bank, Ltd. Bangkok Branch \[039] > * OVER SEA-CHINESE BANKING CORPORATION LIMITED \[009] > * RHB BANK BERHAD \[023] > * SIAM COMMERCIAL BANK PUBLIC COMPANY LTD. \[014] > * SMALL AND MEDIUM ENTERPRISE DEVELOPMENT BANK OF THAILAND \[098] > * STANDARD CHARTERED BANK (THAI) PUBLIC COMPANY LIMITED \[020] > * SUMITOMO MITSUI BANKING CORPORATION \[018] > * SUMITOMO MITSUI TRUST BANK (THAI) PUBLIC COMPANY LIMITED \[080] > * THANACHART BANK PUBLIC COMPANY LTD. \[065] > * THE HONGKONG AND SHANGHAI BANKING CORPORATION LTD. \[031] > * THE THAI CREDIT RETAIL BANK PUBLIC COMPANY LIMITED \[071] > * TISCO BANK PUBLIC COMPANY LIMITED \[067] > * TMB BANK PUBLIC COMPANY LIMITED \[011] > * UNITED OVERSEAS BANK (THAI) PUBLIC COMPANY LIMITED \[024] ## FAQs > **Can I customize the payout frequency for HitPay payouts?** > > Yes, you can customize the payout frequency for HitPay payouts. Refer to the [Payout Settings](#payout-settings) section above for instructions. # Wallet Balances Source: https://docs.hitpayapp.com/getting-started/wallet-balances Understanding your HitPay Balance and Card Balance A balance is the total amount of funds for a given payment provider. There can be two balances for a merchant's HitPay account: the **HitPay Balance** and the **Card Balance**. ![Wallet Balances Overview](https://mintcdn.com/hitpay/QX7yeGuXHdkpf7xR/images/walletbalances_overview.png?fit=max\&auto=format\&n=QX7yeGuXHdkpf7xR\&q=85\&s=5ddbe872a37068602cef16680f15a851) ### Singapore * **HitPay Balance:** PayNow QR, GrabPay, GrabPay PayLater, ShopeePay, SPayLater, ShopBack Pay, Atome, WeChatPay, UPI, QRPH, PromptPay, TrueMoney, Rabbit LINE Pay, PayCo, KakaoPay, LINEPay, VietQR, ZaloPay * **Card Balance (Stripe):** Cards (Visa, Mastercard, Amex, UnionPay, Apple Pay, Google Pay) ### Malaysia * **HitPay Balance:** Touch 'n Go, ShopeePay, SPayLater, GrabPay, GrabPay PayLater, Atome, WeChat Pay, DuitNow, ShopBack Pay, MayBank QR, AliPay, PromptPay, TrueMoney, Rabbit LINE Pay, PayCo, KakaoPay, LINEPay, VietQR, ZaloPay * **Card Balance (Stripe):** Cards (Visa, Mastercard, UnionPay, Apple Pay, Google Pay), FPX ### Philippines * **HitPay Balance:** All payment methods including Cards, QRPH, GCash, ShopeePay, SPayLater, Unionbank Online, PESONet, BillEase, GrabPay, Over the counter (Bayad, ECPay, Palawan, Instapay), PromptPay, TrueMoney, Rabbit LINE Pay, PayCo, KakaoPay, LINEPay, VietQR, ZaloPay ## Managing Your Balances ![Balance Breakdown](https://mintcdn.com/hitpay/QX7yeGuXHdkpf7xR/images/walletbalances_detail.png?fit=max\&auto=format\&n=QX7yeGuXHdkpf7xR\&q=85\&s=48ae4670acad97e46ec6219f1533eb46) Your Balance is organised into five buckets, depending on the status and intended use of the funds: * **Pending Balance:** Funds from new payments appear here first while the payment is being confirmed. * **Available Balance:** After approximately **1 day**, confirmed payments move here. These funds are **eligible for automatic payout** and will be transferred to your bank account in the next payout cycle. * **In Transit:** Funds that have been paid out and are **currently being transferred** to your bank account (not yet received). * **Reserve Balance:** Funds set aside to cover **refunds and chargebacks**, ensuring refunds can be processed smoothly. Funds may be moved into the Reserve Balance from the Available Balance. * **Deposit Balance:** Funds held to cover a **negative account balance**. Deposits may be applied by HitPay for merchant accounts in **higher-risk categories**. ### Viewing Transaction History You can easily review your complete transaction history within your HitPay account dashboard. Navigate to **Bank Payouts > Transactions** to access all relevant details. ### Holding Funds in Your Reserve Balance If you wish to maintain a reserve of funds for refund purposes, you can easily move funds to your Reserve sub-balance. Funds in the Reserve sub-balance will not be included in regular payouts until they are moved back to the Available balance. 1. Go to **Bank Payouts > HitPay Balance** 2. Click on **Reserve** 3. Click on the link labeled **here** to transfer funds between available and reserve balance 4. Select the transfer request, enter the transfer amount, and click **Confirm** ## Balance Top Up Maintain sufficient balance in your HitPay Balance (non-card payments) and Cards Balance (card payments) to execute refunds. If your balance is insufficient, you can top it up from the dashboard. HitPay Balance top-up is available for businesses in **Singapore, Malaysia, and the Philippines**. Cards Balance top-up is available in **Singapore only**. ![Balance Top Up](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Balance%20Top%20Up.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=7f41f3dd69da7988f219b754b3d87ba3) ### Top-up methods and fees | Country | Method | Fee | Limits | | - | - | - | - | | Singapore | PayNow QR | Free | Min SGD 0.50 | | Malaysia | DuitNow QR | 1% of the top-up amount | RM 1.00 to RM 999,999.00 | | Philippines | QR Ph | Free | Min PHP 20.00 | | Philippines | Bank transfer to a virtual account | Free | Min PHP 20.00 | QR top-ups are credited as soon as the payment is made. Bank transfers are credited when the funds arrive in your virtual account. ### Topping Up HitPay Balance 1. Navigate to **Bank Payouts** 2. Click on **HitPay Balance** 3. Click on "Top up balance" button 4. Enter the Top Up amount and click on "Next" 5. Select the Payment Method you would like to top up with 6. Make the payment. You will receive a success message once payment is made. 7. The balance is automatically added to your "Reserve" sub-balance > [!NOTE] > > The reserve sub-balance is used for deducting refund amounts for non-card payments. If the sub-balance is not updated, refresh the page. ### Topping Up Cards Balance (Singapore only) 1. Navigate to **Bank Payouts** 2. Click on **Cards Balance** 3. Enter the Top Up amount and click on "Next" 4. Select the Payment Method you would like to top up with 5. Make the payment. You will receive a success message once payment is made. 6. The balance is automatically added to your "Available to Payout" sub-balance > [!NOTE] > > The "Available to Payout" sub-balance is used for deducting refund amounts for card payments. ## FAQs > **Is the HitPay Balance available in my country?** > > HitPay Balance is available in Singapore, Malaysia, and Philippines. > **Can I top up my Cards Balance in Malaysia or the Philippines?** > > No. Cards Balance top-up is currently available in Singapore only. In Malaysia, DuitNow QR top-ups go to your HitPay Balance, which covers non-card refunds. In the Philippines, all payment methods including cards settle to the HitPay Balance, so a separate Cards Balance top-up is not needed. > **Can I link multiple payment methods to my HitPay Balance?** > > Yes, you can link various payment methods, such as bank accounts and credit/debit cards, to your HitPay Balance for added convenience. > **Why is my balance negative?** > > HitPay merchants are required to maintain their account's balance for card payments and ensure that it does not become negative. A negative card payments balance on your HitPay account may occur due to the time differences between HitPay payouts that are sent to your bank account and when a customer refund is executed. > > If you have a significant negative balance that needs to be addressed, please email [compliance@hit-pay.com](mailto:compliance@hit-pay.com) with the following header: HitPay \[Your Account Name] Negative Card Payments Balance Top-Up Required for further instructions. # Introduction Source: https://docs.hitpayapp.com/introduction HitPay API documentation for accepting PayNow, FPX, GrabPay, cards, and 40+ payment methods across Southeast Asia and beyond. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/hero/docs_cover.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=4954911d306c88064474ff521b19fc62) # HitPay Docs Explore the capabilities of HitPay through our user-friendly documentation. For developers, our comprehensive API documentation provides clear guidance and code samples for easy integration. ![](https://mintlify.s3.us-west-1.amazonaws.com/hitpay/images/hero/get_started.png) ### [Account Setup](/setup/account-creation) Create your HitPay account, set up business details, and start accepting payments in minutes ![](https://mintlify.s3.us-west-1.amazonaws.com/hitpay/images/hero/developers.png) ### [Developers](/apis/overview) Start building with our simple APIs for PayNow, FPX, QR codes, and more. Built for scale and speed in APAC. ![](https://mintlify.s3.us-west-1.amazonaws.com/hitpay/images/hero/no_code.png) ### [No Code Tools](/payment-links/payment-links) Invoicing, payment links, POS and more. HitPay's tools work out of the box so you can launch fast without writing code. ![](https://mintlify.s3.us-west-1.amazonaws.com/hitpay/images/hero/plugins.png) ### [Integrations](/plugins/overview) Connect HitPay to Shopify, WooCommerce, Xero, Zapier, and other platforms with our seamless 1st-party plugins. # Invoicing Source: https://docs.hitpayapp.com/invoicing/invoice-basics Create, send, and track invoices from the HitPay dashboard that customers can pay with any enabled payment method. ## Overview Manage your cashflows and get paid faster with HitPay's online invoicing generator. Our free invoicing software supports all payment methods from HitPay, including credit cards, PayNow, Grab, and many more! ## Creating an Invoice * Navigate to **Invoicing** from the left menu and click on the **Create Invoice** button. * Fill in your currency details, amount, and invoice number. Then, click on Create Invoice to generate the invoice. If you're creating invoices for already-sold products, select Payment by products and add each product as line items. These can be already existing or one-time products. For each item, you can specify the name, quantity, price, discount (fixed amount or percentage), and description. HitPay's invoicing software supports over 100 currencies worldwide. All foreign currency payment acceptance is automatically converted and settled to your home/default currency. > [!NOTE] > > **Optional:** You can split up your total invoice amount and set a due date for each partial payment. This is especially useful if you are delivering a product or service that will be fulfilled over a period of time. To enable this option, just check the box on Allow partial payments. You can also select the payment methods accepted for each invoice. * Once you've created an invoice and selected the option "Send invoice email to the customer," HitPay will automatically send the invoice email to your customer's email address. The invoice's status will change to Pending. The email contains the link to payment and a PDF of the invoice. Customer Email Invoice (Example): ![Customer Email Invoice Example](https://mintcdn.com/hitpay/WILKTRr7AnkcbuQT/images/Invoice-Example.png?fit=max\&auto=format\&n=WILKTRr7AnkcbuQT\&q=85\&s=c525f69cbd07b41827dc7d96cb192082) ## Editing Invoices You can edit invoices even after partial or full payments have been made. All invoices display **Balance Due** (Total Amount minus Amount Paid) and **Amount Paid** (shown only if a payment has been received). ### Editable Invoice Statuses | Status | Editable | Notes | | - | - | - | | Draft | Yes | Fully editable | | Sent | Yes | All fields can be modified | | Overdue | Yes | Remains Overdue unless due date is extended | | Partially Paid | Yes (with conditions) | Only unpaid portion can be edited | | Paid | Yes (with conditions) | Total cannot be lower than amount paid | | Void / Deleted | No | Not editable | ### Editing Rules for Paid Invoices When editing a partially paid or fully paid invoice: * Already paid amounts cannot be modified. * Unpaid partial payments can be edited or canceled. * Invoice total cannot be lower than the amount already received. ### Editing a Paid Invoice with a Higher Amount When you increase the total on a paid invoice: 1. **Allow partial payment** is automatically enabled. 2. A new payment row is created for the remaining balance: * **Payment 1:** Shows the original paid amount (read-only) with a "Paid on \[date]" indicator. * **Payment 2:** Shows the new balance due, which you can edit. ## Sending Payment Reminders to Customers You can save time on chasing overdue payments by sending payment reminders with just a click. The invoicing tool allows you to trigger three types of reminders for your customers: 1. **Resending Pending Invoices:** If an invoice is in Sent status, you can click on Resend Invoice. Clicking on Resend Invoice triggers another email to the customer. 2. **Manually Sending a Reminder for Overdue Invoices:** If an invoice is in Overdue status, you can click on Send Reminder. Clicking on Send Reminder will trigger an email to the customer, prompting them to pay the invoice. 3. **Automatically Scheduled Reminders:** You can set up automatic reminders based on the invoice's creation date or due date. Simply go to Invoice > Reminders and specify the number of days before or after the invoice's date for sending the reminders. ## Accessing Invoice Settings: 1. Click on **Invoicing**. 2. Click on the gear icon. 3. Select the **Settings** option, which opens a popup modal. ### Settings Modal: * **Invoice Title Customisation:** * Select the invoice title from a dropdown menu with options "Invoice" or "Tax Invoice". * **Tax Registration Number:** * Enter your tax registration number to be displayed on all invoices. * **Description:** * Enter the description that will appear on every new invoice. * **Footer:** * Enter the footer that will appear on every new invoice. * **Late Fee**: * **Enable/Disable Late Fee**: Toggle this setting to enable or disable late fees by default on all new invoices. * **Type of Late Fee**: Select whether the late fee will be a fixed amount, a percentage of the invoice total, or a percentage of the outstanding balance. * **Late Fee Amount/Percentage**: Enter the amount or percentage to apply as a late fee. * **Grace Period**: Set the number of days after the invoice due date before the late fee is applied. ## Late Fee Settings To help manage overdue payments, HitPay's Late Fee feature enables you to apply late fees automatically to overdue invoices. You can configure parameters such as the fee amount, type (fixed or percentage), and a grace period before the late fee applies. This feature streamlines cash flow management and encourages timely payments. ### Enabling Late Fee on an Invoice 1. **Navigate to the Invoice**: Open the invoice where you want to apply a late fee or create a new invoice. 2. **Go the Late Fee Section**: Scroll to the **Late Fee** section on the invoice. 3. **Configure the Late Fee**: * **Type of Late Fee**: Choose if the fee is a fixed amount, a percentage of the invoice total, or a percentage of the outstanding balance. * **Late Fee Amount/Percentage**: Enter the specific amount or percentage. * **Grace Period**: Set the number of days after the due date before the late fee is applied. 4. **Save Settings**: * You can choose to save this configuration for future invoices by selecting "Save late fee settings to future invoices." 5. **Apply the Late Fee**: Save and apply the configured late fee to the invoice. If payment is overdue beyond the grace period, the fee will automatically apply. ### Automatic Late Fee Application * Once the late fee is configured, HitPay monitors the payment status. If an invoice is unpaid after the due date and grace period, the late fee is added as a line item. ### How Late Fees are Calculated * **Fixed Amount**: Adds a specific amount to the overdue invoice. * **Percentage of Invoice Total**: Applies the percentage to the full invoice total, regardless of any payments made. * **Percentage of Outstanding Balance**: Applies the percentage to the unpaid balance. ## Custom Fields Add custom fields to invoices for tracking additional information like Salesperson, Project Code, or PO Number. You can create up to 3 custom fields per business and choose whether each field is visible to customers or kept internal. ### Setting Up Custom Fields 1. Go to **Invoicing > Settings** and click on to the **Custom Fields** section. 2. Click **Add Additional Field** and configure: * **Field Type:** Text, Long Text, Dropdown, Checkbox, or Radio * **Field Label:** The name displayed on the invoice (e.g., "PO Number") * **Options:** For Dropdown, Radio, and Checkbox types, define the available choices * **Mark as Required:** When enabled, this field must be filled before the invoice can be saved or sent * **Show on Customer Invoice:** When enabled, this field appears on the customer's invoice and PDF. Turn off to keep it internal. ### Using Custom Fields on Invoices When creating or editing an invoice, your custom fields appear with inputs matching their configured type. Required fields must be completed before saving or sending. * Fields marked as **Show on Customer Invoice** will appear on the invoice PDF and customer-facing view. * Fields kept internal are only visible to you in the dashboard. ### Custom Fields in Repeating Invoices Custom fields also apply to Repeating Invoices: * Set default values for each field on the template. * Required fields must be filled before the template can be saved. * When a repeating invoice generates a new invoice, custom field values are copied over. ### Exporting Invoices with Custom Fields When exporting invoices to CSV, each custom field appears as a separate column using its label. Both visible and internal field values are included in the export. ## Adding a Cash Payment With the Add Payment feature, you can record cash payments for your invoices, enhancing your ability to manage and track offline payments. ### Recording a Payment * **Navigation:** Within the **Invoices** section, under **All Invoices**, click the three dots icon next to the desired invoice. Select the **Add Payment** option. This option is also available directly on the individual invoice page for invoices with statuses: sent, pending, overdue, or partially paid. ### Add Payment Popup * **Customer Name / Balance Due:** This information will be displayed as read-only, so you can easily reference the customer and the outstanding balance. * **Payment Options:** Available only for invoices that allow partial payments. You can choose from: * **Specific Partial Payment:** This option allows you to record a specific partial payment, labeled as "Payment 1" or subsequent pending payment numbers. * **Full Payment:** This option is selectable only if there are multiple partial payments pending, allowing you to mark the invoice as fully paid. * **Amount:** The amount field will be displayed as read-only and will automatically populate based on the selected payment option or the full amount for invoices that do not allow partial payments. * **Payment Date:** You can record the date when the payment was received, with the flexibility to enter both past and future dates. ### Viewing the Payment All payments you record will be displayed in the same manner as payments made using cards and other methods. These records are visible in three specific locations: * **Invoice Payment Details Section:** Provides a detailed view of all recorded payments for the invoice. * **Public Invoice:** Shows payment records to customers when they view their invoice online. * **Transactions Page:** Payments will be displayed as cash transactions. ## Creating Invoices in Bulk You can save even more time by using the bulk invoice generator. This feature allows you to add invoices in bulk instead of creating invoices individually. * Navigate to **Invoicing** and click on **Add Invoices in Bulk**. * Download the invoice feed template CSV file by clicking the **Download** button. * Fill in the following details inside the CSV file: * Customer email associated with a Customer profile in your HitPay account * Invoice number * Currency and amount * Optional reference * Invoice date and due date * Once done, upload the completed file by clicking the **Choose File** button. Your invoices will be automatically generated in your HitPay account. ## Exporting Invoices You can export your invoices to a CSV file by following these steps: * Click on the gear icon. * Select the "Export" button. * Choose the date range and status of the invoices you want to export. * Click "OK". After completing these steps, you will receive an email with the exported file. ## Voiding Invoices You can void invoices to stop payments and reminders for invalid or refunded invoices while keeping a record for audits. ### Eligible Invoices You can void the following types of invoices: * **Unpaid invoices:** Sent, Pending, or Overdue. * **Partially or fully paid invoices:** Only if all associated payments have been fully refunded. ### How to Void an Invoice 1. Go to **Invoices > All Invoices**. 2. Find the invoice you want to void. 3. Click **Void Invoice**, provide a reason, and confirm. ### Once voided: * The status changes to **Void**. * Payments and reminders are disabled. * The invoice becomes read-only but remains accessible. ### For Customers * Voided invoices show as "Void" and cannot be paid. * Any outstanding balance or reminders are canceled. Voiding ensures invalid invoices don't disrupt your workflow and keeps your records clear. # Repeating Invoices Source: https://docs.hitpayapp.com/invoicing/repeating-invoice Schedule invoices to go out automatically on a weekly, monthly, or custom cycle. ## Overview Unlock the power of automation with our Repeating Invoice tool, designed to save you time and minimize errors. Easily set the frequency, start date, and quantity of recurring invoices. Our system ensures timely dispatch of your invoices, whether they’re on a weekly, monthly, or custom schedule. ![Repeating](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/RepeatingInvoice.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=1515babc26ef43d786b35d2b8870d2b5) ## Creating a Repeating Invoice Template * Go to **Invoicing > Repeating** in the left menu and click the **New Repeating Invoice** button. * Complete the details for your repeating invoice template: * Invoice Start Date \[Required]: Choose the start date for the first invoice. Selecting today's date will generate the first invoice immediately. * Due Date \[Optional]: You have three options for setting due dates for future invoices: * No Due Date * On the day of the Invoice * After a set number of days post-invoice creation * Bill to \[Required]: Select the customer receiving the invoice. * Frequency \[Required]: Determine the invoice generation frequency (e.g., weekly, monthly). For example, choosing "every week" generates an invoice weekly on the specified day. * Number of Invoices \[Optional]: Indicate the total number of invoices to be generated. For example, setting this to 10 will conclude the sequence after the 10th invoice. * Reference \[Optional]: Include an invoice reference. * Payment By \[Required]: Select between payment by products or a fixed amount. For product-based invoices, choose Payment by products and list each product as a line item. * Delivery Options \[Required]: Decide if new invoices will be sent automatically or saved as drafts for your review and manual sending. * Payment Methods \[Required]: Specify accepted payment methods for the invoices. * Additional Information \[Optional]: Add any other important details such as descriptions, footer notes, options for attachments, or alternative email addresses for sending the invoice. ## Manage Recurring Invoices After setting up your repeating invoices, managing them becomes a breeze. This section guides you through viewing, editing, pausing, or canceling your recurring invoices to ensure your billing cycle runs smoothly. ### Viewing Your Repeating Invoices * Go to **Invoicing > Repeating** in the left menu. Here, you'll find a list of all your repeating invoice templates. * Select any template to access its details, including specific repeating invoice information, all the invoices generated, and the total revenue accumulated. ### Editing a Repeating Invoice Template * In the **Repeating** section, find the invoice template you want to edit and click on it. * Click the **Edit** button to modify any details of the invoice template. Remember, changes will only affect future invoices and not those already sent or drafted. ### Pausing a Repeating Invoice * If you need to temporarily stop a recurring invoice without canceling it, simply pause it. * Find the template in the **Repeating** section and select it. Click on the **Pause** button. You can resume it anytime by clicking **Resume**. ### Canceling a Recurring Invoice * To permanently stop a recurring invoice, you will need to cancel it. * Navigate to the invoice template you wish to cancel, select it, and press the **Cancel** button. Please note, this action is irreversible, and you'll need to create a new template to restart any canceled repeating invoices. # New IP Address Source: https://docs.hitpayapp.com/notes/new-ip Upcoming Change: Adding New IP Address on 25th September 2024 ## Overview We want to inform you about an important update to our production environment. On 25th September 2024, we will be adding a new IP address as part of our ongoing efforts to enhance the reliability of our services. New IP Address: * **Existing IP Address**: `3.1.13.32` * **New IP Address**: `168.220.91.61` **If you are not whitelisting our IP addresses, no action is required on your part.** ## Who Does This Impact? * **API Users**: If you are currently whitelisting our IP addresses for API access, please make sure to add the new IP address to your whitelist by the specified date. * **WooCommerce / Magento Plugin Users**: If you have security rules that involve whitelisting HitPay’s IP addresses, it’s important to update these rules with the new IP to ensure uninterrupted service. We recommend taking action before the 25th of September to avoid any issues. Our support team is here to assist if you have any questions or need guidance on updating your whitelist. If you have any questions or need further assistance, feel free to ask in our [WhatsApp group](https://chat.whatsapp.com/KD8kxT4Nk4yASQQnSP3t5x). We’re here to help! # Business Restrictions Source: https://docs.hitpayapp.com/onboarding/business-restrictions Prohibited and restricted business types for HitPay partners **Effective May 2026** **High-Risk Jurisdictions and Persons** HitPay does not permit its services to be used for any dealings, transactions, or provision of goods and services - whether directly or indirectly - involving the following: **Prohibited Jurisdictions** HitPay prohibits the use of its services by or for the benefit of persons located in, resident in, or a citizen of, or in connection with products or services originating from, the following jurisdictions: * FATF High-Risk Jurisdictions subject to a Call for Action ("black list"), currently comprising: **North Korea, Myanmar, and Iran** * Comprehensively sanctioned jurisdictions, currently comprising: **Cuba, Russia, Syria, Belarus, Venezuela, Tajikistan, Kyrgyzstan, Ukraine, and Israel** These lists are subject to change and will be updated in line with guidance from relevant regulatory authorities. **Restricted Jurisdictions** The following jurisdictions are subject to enhanced due diligence: * All FATF Jurisdictions under Increased Monitoring ("grey list"), as updated from time to time * Jurisdictions identified by HitPay as elevated fraud risk **Prohibited Persons** HitPay does not permit its services to be used by or for the benefit of any individual or entity that is: * Listed on any sanctions or restricted party list maintained by the United States, United Kingdom, European Union, United Nations, Monetary Authority of Singapore, Bank Negara Malaysia, or Bangko Sentral ng Pilipinas * Designated under any applicable sanctions regime **General rules** HitPay has strict guidelines regarding the businesses, products, and services that we deem to be prohibited or restricted from using HitPay's Services. This Acceptable Use Policy sets out the terms under which you may access our Services and applies as soon as you access and/or use HitPay. You must be aware that our platform may be used internationally; hence, the sale of certain items may be prohibited by laws outside of the country in which you are based. You agree that it is your sole responsibility to comply with the relevant laws. The types of businesses listed below are representative, but not exhaustive. Businesses that offer illegal products or services are never eligible to use HitPay. While this list is representative, it is not exhaustive, and we reserve our right to deny our services to any customers who exceed our risk tolerance and reserve our right to impose additional restrictions. **Terms of Service** You may not use HitPay for products or services that: a. in any way breaches any applicable local, national, or international law or regulation, or causes HitPay to breach any applicable law or regulation; b. are in any way unlawful or fraudulent, or has any unlawful or fraudulent purpose or effect; c. are for the purpose of harming or attempting to harm minors in any way; d. are discriminatory, derogatory in any way, or encourage violence, hatred or religious or racial intolerance; e. are sexual in nature; f. are involved in human trafficking, child labor and prostitution; g. deal in harmful programs such as viruses, spyware, or similar computer code designed to adversely affect the operation of any computer software or hardware; h. are investment interests such as bonds, stocks, or other securities; i. are related to lottery, gambling, or contests; j. in any way that would locally or internationally evade any applicable taxes or facilitate tax evasion. **Prohibited Businesses: These will not be allowed or supported by HitPay** 1. **Illegal products and services** * Any business or organization who provides products and/or services that are discriminatory, derogatory in any way, or encourage violence, hatred or religious or racial intolerance; terrorism * Products and/or services that constitute a form of drugs (whether medical of nature or not), including but not limited to steroids, narcotics, cannabidiol products, prescription drugs or other controlled substances on our Platforms; * Products and/or services that involve the re-sale of personal information, including but not limited to application forms that contain personal information; * Fake references and other services/products that foster deception (including fake IDs and government documents) * Products such as devices that are designed to block, jam or interfere with cellular and personal telecommunication device/signals (e.g. GPS), Decryption and descrambler products including mod chips, Spy devices / services / software. * Firms involved in the sale of prohibited animal and animal products such as endangered species, elephant ivory, etc * Any other Products and services which are not legal in the jurisdiction they are being offered in 2. **Intellectual Property Infringement** * Counterfeit goods/replicas or those infringing on intellectual property rights, including those designed to infringe on such intellectual property (i.e., knock-offs, imitations, bootlegs) * Sales or distribution of music, movies, software, or any other licensed materials without appropriate authorization * Unauthorized sale of brand name or designer products or services * Any other products or services that directly infringe or facilitate infringement upon the trademark, patent, copyright, trade secrets, proprietary or privacy rights of any third party 3. **Products and services that are unfair, predatory, or deceptive** * Offering or disseminating fraudulent goods, services, schemes or promotions, such as make-money-fast schemes * Pyramid schemes and selling * Merchants engaged in any form of deceptive marketing practices including but not limited to: * Hidden Disclosures * Fake claims & endorsements * Pre-checked opt in boxes * Refund/Cancellation avoidance * Poorly disclosed negative options * Negative response marketing * Sales of online traffic or engagement such as social media "click farms" * Any other businesses that HitPay considers unfair, deceptive, or predatory towards consumers  4. **Adult entertainment and content** * Adult entertainment, including prostitution, escorts, pay-per-view, sexual massages, fetish services, mail-order brides, and adult live-chat features, gentleman's clubs, topless bars, strip clubs, sexually oriented dating sites or services * Adult content, including books, magazines, audio, videos, websites, streaming services and other content formats deemed offensive or of a sexual nature depicting nudity or explicit sexual acts * Products relating to adult entertainment in any form are strictly prohibited in Malaysia and Indonesia. 5. **Certain Legal services** * Products and/or services that would constitute regulated activities, such as bail bond services, security brokers and/or bankruptcy attorneys 6. **Weapons, firearms, explosives and dangerous materials** * Firearms, explosive devices, ammunition, weapons, guns, rifles, shotguns, pistols, knives or other sanctioned items and/or investments relating to the same; * Peptides, industrial and research chemicals, and other toxic, flammable and radioactive materials. 7. **Betting and gambling or transactions involving games of chance** * Products and/or services that promote illegal activities or relate to the gambling business, including casinos, online gambling, lotteries, games of chance, sports forecasting or odd-making. 8. **Marijuana-related products and services** * Cannabis products * Cannabis dispensaries and related businesses * Products containing any amount of CBD/THC * Any other products or services related to legal marijuana trade 9. **Financial and Professional Services** * Bearer share entities * Shell entities * Unlicensed or unregulated financial investments, including securities, foreign currencies, commodities, derivatives, crypto investments, and precious metals. * Unlicensed brokerages, trading platforms, and financial instrument distribution on our platforms. 10. **Digital Assets and Cryptocurrencies** * Products and/or services that constitute a form of currency including but not limited to,virtual and cryptocurrencies, crypto assets, non-fungible tokens (NFTs), and mining services, and other forms of digital tokens such as Bitcoin and Ethereum 11. **Others** * Dropshipping * Illegal timeshare services in Singapore and Malaysia **Restricted Businesses: These may require further documentation or further review before accounts can be fully opened for transactions** HitPay will review the application and approve restricted business categories on a case-by-case basis. Additional restrictions on business areas may be imposed through card network rules, requirements of financial partners, or due to compliance and legal obligations. 1. **Financial Products and Services** * Banks * Lending and Buy Now Pay Later services * Crowdfunding platforms * Debt collection agencies * Insurance services * Money transmitters, remittances, currency exchange services, and other money service businesses * Trust companies * External asset managers * Security brokers/investments of any kind * Other financial institutions 2. **Government or public services** * Government payments, service delivery or grants * Embassy, foreign consulate, or other foreign governments 3. **Travel and Tourism** * Travel and tour reservation and booking services 4. **Charities and non-profit organisations** * Religious organisations, charities, societies and other associations 5. **High Value Goods and Luxury Items** * Sale of high value items such as luxury goods, jewellery, precious stones, precious metals, car dealerships, collectibles, art pieces, precious stones and metals, artifacts and antiquities. 6. **Trade and Shipping / Logistics** * International import, export of wholesale goods * Commercial shipping and trade activities such as shipping brokers, forwarding brokers 7. **Corporate service providers, who assist in the formation and incorporation of companies** 8. **Real estate and construction** * Construction firms * Real estate brokers, agents, and related investments. 9. **Airlines and cruises** * Commercial airlines and cruises, charter and private airlines 10. **Other business activities** * Products and services related to online gaming industry such as sale of gaming credits * Aggregators, including but not limited to marketplaces, platforms * Tobacco and other smokable products * Alcohol and liquor businesses * Pharmaceuticals, medical devices, and regulated health products * Private hire or limousine services # Australia Source: https://docs.hitpayapp.com/onboarding/requirements-au Required documents and verification process for businesses in Australia ## Verifying an Australia-Registered Business Businesses operating in Australia must complete ID verification and provide business documents to onboard with HitPay. ## Verification Process ### Identity Verification The **account representative** must complete: * Government-issued ID verification * Selfie submission > [!TIP] > > ID verification is required after the bank account is successfully linked. ### Document Verification Please prepare and submit the following: * **Australian Business Number (ABN)** – for all businesses * **Australian Company Number (ACN)** – for companies * **Business Registration Document** showing shareholder names * **Supporting documents** proving ongoing business operations If the account representative is **not listed** in the business registration profile: * A signed **Letter of Authorisation (LOA)** from a company secretary or director * **Identification documents** (e.g., passport with signature) of: * The account representative * The person signing the LOA > [!NOTE] > > Additional documentation may be required depending on your business type, ownership, or activities. ### Common Additional Requirements * **Complex ownership structures** → Submit a detailed Beneficial Ownership Structure * **Shareholders with 25%+ ownership** → Submit valid ID for each beneficial owner * **Regulated industries** → Submit applicable licenses: * **Liquor**: License issued by your state’s gaming authority (e.g., Liquor & Gaming NSW, VCGLR) * **Healthcare**: Registration with [AHPRA](https://www.ahpra.gov.au/) (Australian Health Practitioner Regulation Agency) > [!TIP] > > Make sure all uploaded documents are clear and unaltered to avoid onboarding delays. ## FAQs > **How do I register a business in Australia?** > > * **Register online**: [Business registration portal](https://register.business.gov.au/) > * **Get started**: [Step-by-step startup guide](https://business.gov.au/Guide/Starting) > * **Register a company**: [Steps via ASIC](https://asic.gov.au/for-business/registering-a-company/steps-to-register-a-company/) # Hong Kong Source: https://docs.hitpayapp.com/onboarding/requirements-hk Required documents and verification process for businesses in Hong Kong ## Verifying a Hong Kong-Registered Business Businesses registered in Hong Kong can verify their HitPay account by completing both identity and document verification steps. ## Verification Process ### Identity Verification The **account representative** must complete: * ID verification * Selfie submission > [!TIP] > > This step is done after you’ve successfully linked your business bank account. ### Document Verification Submit the following documents for review: * **Business Registration Number (BRN)** * **Company Registration Number (CRN)** (optional) * **ARN Business Document** that includes shareholder names * Supporting business documents If the account representative is **not listed** in the ARN Business Document: * A signed **Letter of Authorisation (LOA)** from a company secretary or director * **Identification documents** (with signature, e.g. passport) of both: * The account representative * The person signing the LOA > [!NOTE] > > Our Compliance team may request additional documentation depending on your business type or ownership structure. ### Common Additional Requirements * **Complex ownership structures** → Submit a detailed Beneficial Ownership Structure * **Multiple shareholders or partners** → Submit valid ID of any owner/shareholder with 25%+ ownership * **Regulated industries** → Submit applicable licenses, such as: * Travel Agents Licence issued by the **Travel Industry Authority (TIA)** * Hire Car Permit (Private Service Vehicles) issued by the **Transport Department of Hong Kong** > [!TIP] > > Ensure that all scanned documents are clear, legible, and not cropped. Names must match the registration documents. # Indonesia Source: https://docs.hitpayapp.com/onboarding/requirements-id Document and Information Requirements for Indonesia # KYB Document Requirements Guide for Indonesia ## 1. Mandatory documents for sole proprietorships * KTP for resident or KITAS + Passport for foreigners * NPWP * NIB * Sole Proprietorship Certificate of Registration (Sertifikat Pendaftaran Pendirian Perseorangan) * Proof of bank account through bank statement * Proof of business activity (**see Section 2 below**) * Any additional business licenses or documents (**see Section 4 below**) ## 2. Mandatory documents for corporations, partnerships and foundations * For PIC director of the entity: KTP for residents or KITAS + Passport for foreigners * Announcement/Approval Letter from the Minister Law & Human Rights (SK Menkeh atas Akta Pengangkatan Direktur Terakhir) * NIB document * NPWP of entity * Deed of establishment (Akta Pendirian Perusahaan) * Latest Deed of Amendment (Akta Perubahan Perusahaan Terakhir) * Proof of bank account through bank statement * Proof of business activity (**see Section 2 below**) * Any additional business licenses or documents (**see Section 5 below**) ## 3. General Proofs of Business Activity > Please consult the below list in order to see what type of additional documents we may require your Indonesia-based business to possess.\ > If your business is just starting out, we understand it can be hard to provide supporting documentation. However, please take a look at the list below and see if there are some documents you can supply. > > In addition, if there are any documents you can think of that might help us to verify your business that are not on the below list, feel free to supply them also. > > Your proofs of business activity should match and corroborate with the activities shown on your website. * Contracts for sale; * Bank statement indicating business operations; * Copies of sales or purchase invoices; * Pro forma invoices from suppliers; * Proof of business insurance; * Receipts for software subscriptions, such as AWS or Xero; * Proof of owning a website domain; * Proof of being registered with an online marketplace or e-commerce platform (Tokopedia, Shopee); * Utility bills issued in the name of the business or; * Qualifications, membership in professional organizations, or membership in professional service registers or industry associations. ## 4. Additional documents for individuals/sole proprietorships | **Business Area** | **Specific Activity Industry** | **Additional legal document requirement** | | - | - | - | | **Retail** | Beauty (selling own brand) | BPOM | | | Food and Beverage | BPOM/PIRT | | | Bakery | BPOM/PIRT | | | Health supplements (selling own brand) | BPOM/PIRT | | | Alcohol | SIUP Minuman Beralkohol | | **Services** | Education - School | School License OR Accreditation Cert | | | Education - University | School License OR Accreditation Cert | | | Health/Beauty Care services (with physical site, eg Clinic) | Surat Izin Operasional Dinas Kesehatan | | | Salon, Barber Shop, SPA | Tanda Daftar Usaha Pariwisata (TDUP) | | | Training & Courses (that issues certifications) | Surat Izin Operasional Lembaga Pendidikan Non-Formal | | **Entertainment** | Cinema | Tanda Daftar Usaha Pariwisata (TDUP) | | | Tourist Destination and Exhibition | Tanda Daftar Usaha Pariwisata (TDUP) | | | Amusement Park, Carnival, Circus | Tanda Daftar Usaha Pariwisata (TDUP) | | **Travel & Hospitality** | Tour | Tanda Daftar Usaha Pariwisata (TDUP) | | | Travel Agency | Tanda Daftar Usaha Pariwisata (TDUP) | | **Restaurant** | Bar | Tanda Daftar Usaha Pariwisata (TDUP) | | | Fast Food | Tanda Daftar Usaha Pariwisata (TDUP) | | | Cafe / Coffeeshop | Tanda Daftar Usaha Pariwisata (TDUP) | ## 5. Additional documents for corporations, partnerships and foundations | **Business Area** | **Specific Activity Industry** | **Additional legal document requirement** | | - | - | - | | **Retail** | Beauty (selling own brand) | BPOM | | | Food and Beverage | BPOM | | | Bakery | BPOM | | | Health supplements (selling own brand) | BPOM | | | Pharmacy | Surat Izin Operasional Dinas Kesehatan | | | Optic | Surat Izin Optikal or Laboratorium Optikal | | | Chemical Material | SIUP Bahan Berbahaya | | | Alcohol | SIUP Minuman Beralkohol | | **Services** | Education - School | School License OR Accreditation Cert | | | Education - University | School License OR Accreditation Cert | | | Health/Beauty Care services (with physical site, eg Clinic) | Surat Izin Operasional Dinas Kesehatan | | | Salon, Barber Shop, SPA | Tanda Daftar Usaha Pariwisata (TDUP) | | | Reflexology & Massage | Tanda Daftar Usaha Pariwisata (TDUP) | | | Training & Courses | Surat Izin Operasional Lembaga Pendidikan Non-Formal | | | Dental Clinic | Surat Izin Operasional Dinas Kesehatan | | | Hospital | Surat Izin Operasional Dinas Kesehatan | | | Optician Clinic | Surat Izin Optikal/Laboratorium Optikal | | | Laboratory | Surat Izin Laboratorium Klinik | | | Internet Service Provider | Internet Service Provider from Kominfo | | | Training & Courses | Surat Izin Operasional Lembaga Pendidikan Non-Formal | | **Entertainment** | Fitness & Sport Club | Tanda Daftar Usaha Pariwisata (TDUP) | | | Tourist Destination and Exhibition | Tanda Daftar Usaha Pariwisata (TDUP) | | | Amusement Park, Carnival, Circus | Tanda Daftar Usaha Pariwisata (TDUP) | | **Travel & Hospitality** | Tour | Tanda Daftar Usaha Pariwisata (TDUP) | | | Online Travel Agent | Tanda Daftar Usaha Pariwisata (TDUP) | | | Airline | Izin Usaha Angkutan Udara | | | Taxi | Izin Usaha Angkutan Darat | | | Bus | Izin Usaha Angkutan Darat | | | Camping Site and Trailer Park | Tanda Daftar Usaha Pariwisata (TDUP) | | | Ferry / Water Transportation | Izin Usaha Angkutan Laut | | | Train | Izin Usaha Angkutan Darat | | | Airport | Izin Badan Usaha Bandar Udara | | | Haj and Umrah Provider | Surat Izin Penyelenggara Haji | | **Non Profit** | Zakat Collection | Surat Izin Badan Zakat Nasional | | | Religious Organization | Surat Izin Departemen Agama | | | Charity and Donation | Surat Izin Pengumpulan Uang dan Barang (PUB) | | | Charity and Social Services | Surat Izin Pengumpulan Uang dan Barang (PUB) | | | Charity and Social Services | Surat Izin Pengumpulan Uang dan Barang (PUB) | | **Restaurants** | Bar | Tanda Daftar Usaha Pariwisata (TDUP) | | | Fast Food | Tanda Daftar Usaha Pariwisata (TDUP) | | | Cafe / Coffeeshop | Tanda Daftar Usaha Pariwisata (TDUP) | ## FAQs > **How do I register a business in Indonesia?** > > Visit [OSS.go.id](https://oss.go.id/) to register your NIB and manage > licenses. You may also consult a local corporate service provider for > help. # Malaysia Source: https://docs.hitpayapp.com/onboarding/requirements-my Required documents and verification process for businesses in Malaysia ## Verifying a Malaysia-Registered Business Businesses registered in Malaysia can verify their HitPay account by completing both identity and document verification steps. ## Verification Process ### Identity Verification The **account representative** must complete: * **ID verification** * A **selfie submission** for facial match > [!TIP] > > This step is required after setting up your bank account. ### Document Verification You’ll need to submit the following: * **SSM Business Profile**\ (or Business License for Sabah-based businesses not registered with SSM) If the account representative is **not listed in the SSM document**, include: * A signed **Letter of Authorisation (LOA)** from a company secretary or director * **Identification documents** (with signature, e.g., passport) for: * The account representative * The person signing the LOA > [!NOTE] > > Additional documents may be requested by our Compliance team based on your > business type. #### Common Additional Requirements Some business types may need to submit more documentation: * **Complex ownership structures** → Provide a detailed Beneficial Ownership Structure * **Regulated industries** → Submit relevant licenses, such as: * Ministry of Tourism, Arts and Culture (MOTAC) license – for travel agencies * Medical Device Authority (MDA) license – for medical device businesses > [!WARNING] > > Missing or incomplete documents may delay your onboarding. ## Bank Account Requirements * **Companies and LLPs** must use a **corporate bank account** to receive payouts. * **Sole Proprietors** may use a **personal bank account** registered under the owner’s name. > [!NOTE] > > Ensure the bank account name matches the business or owner's registered > name. ## Entity Types and Required Documents | Entity Type | Required Documents | | - | - | | Business (Sole Proprietor) | SSM Business Profile [(Sample Document)](https://www.ssm.com.my/Pages/Product/PDF/ROC/COMPANY%20PROFILE.pdf) | | Company | SSM Company Profile [(Sample Document)](https://www.ssm.com.my/Pages/Product/PDF/ROB/BUSINESS%20PROFILE.pdf) | | LLP | LLP Profile from SSM [(Sample Document)](https://www.ssm.com.my/Pages/Product/PDF/LLP/LLP%20PROFILE.pdf) | | Club / Society / Charity | - Registration Certificate or Certificate of Incorporation | * Constitution, Directors’ Resolution, or Partnership Agreement * ID documents of all office bearers | > [!TIP] > > Make sure your SSM documents are the latest version downloaded from official > sources. ## FAQs > **How do I register a business in Malaysia?** > > Use the following official government resources: > > * [SSM – Business Registration (ROB)](https://www.ssm.com.my/Pages/Services/Registration-of-Business-\(ROB\)/Registration/Registration.aspx) > * [SSM – Company Registration (ROC)](https://www.ssm.com.my/Pages/Services/Registration-of-Company-\(ROC\)/Client-Service-Charter.aspx) > * [MyCoID 2016 Portal – For Companies](https://mycoid2016.ssm.com.my/) > * [SSM – CLBG Registration](https://www.ssm.com.my/Pages/Services/Registration-of-Company-\(ROC\)/CLBG/CLBG.aspx) > * [SSM – LLP Registration](https://www.ssm.com.my/Pages/Services/Limited-Liability-of-Partnership-\(LLP\)/Limited-Liability-of-Partnership-\(LLP\).aspx) # New Zealand Source: https://docs.hitpayapp.com/onboarding/requirements-nz Required documents and verification process for businesses in New Zealand ## Verifying a New Zealand-Registered Business Businesses registered in New Zealand must complete both identity verification and submit supporting documents for account approval. ## Verification Process ### Identity Verification The **account representative** must complete: * ID verification * Selfie submission > [!TIP] > > This step is completed after the business bank account is successfully linked. ### Document Verification Submit the following documents: * **New Zealand Business Number (NZBN)** * **Business Registration Document** that includes shareholder names * **Supporting documents** showing proof of business operations If the account representative is **not listed** in the registration profile: * A signed **Letter of Authorisation (LOA)** from a company secretary or director * **Identification documents** (with signature, e.g., passport) of both: * The account representative * The person signing the LOA > [!NOTE] > > Our Compliance team may request additional documentation depending on your business type or ownership structure. ### Common Additional Requirements * **Complex ownership structures** → Provide a detailed Beneficial Ownership Structure * **Multiple shareholders or partners** → Provide valid ID of any owner/shareholder with 25%+ ownership * **Regulated industries** → Submit applicable licenses: * **Passenger Services**: P Endorsement on driver’s licence and Transport Service Licence (TSL) * **Alcohol Businesses**: On-licence, off-licence, or club licence issued by the Local District Licensing Committee under the Sale and Supply of Alcohol Act 2012 > [!TIP] > > Ensure all documents are clear, valid, and legible. Mismatches in names or incomplete submissions may delay onboarding. ## FAQs > **How to register a business in New Zealand?** > > * **Sole Traders / Self-Employed**: [Apply for an NZBN](https://www.nzbn.govt.nz/get-an-nzbn/self-employed-or-sole-trader/) > * **Companies**: [Business structure guide](https://www.business.govt.nz/getting-started/choosing-the-right-business-structure/starting-a-company/) > * **Help & Support**: [Companies Register Help Centre](https://companies-register.companiesoffice.govt.nz/help-centre/) # Philippines Source: https://docs.hitpayapp.com/onboarding/requirements-ph Required documents and verification process for businesses in the Philippines ## Verifying a Philippines-Registered Business Businesses registered in the Philippines can verify their HitPay account by completing both identity and document verification steps. ## Verification Process ### Identity Verification The **account representative** must complete: * **ID verification** * A **selfie submission** for facial match > [!TIP] > > This step takes place after you’ve set up your bank account. ### Document Verification You’ll need to submit the following: * **Registration document**: * DTI Registration (for sole proprietors) * SEC Registration Certificate (for corporations and partnerships) * **Ownership information**: * Articles of Incorporation or GIS (for corporations) * Articles of Partnership (for partnerships) * **BIR Requirements**: * BIR Certificate of Registration (Form 2303) * Business bank account proof (e.g. passbook, bank certificate, statement, or screenshot) * Sworn Declaration (if applicable) If the account representative is **not listed** in the SEC registration: * A signed **Letter of Authorisation (LOA)** from the company secretary or director * **Identification documents** for: * The account representative * The person signing the LOA > [!NOTE] > > Additional documents may be requested by our Compliance team based on your > business type. #### Common Additional Requirements * **Complex ownership structures** → Provide Beneficial Ownership Structure * **Multiple shareholders/partners** → Submit ID of owners with 25%+ ownership * **Regulated industries** → Submit licenses, such as: * Department of Tourism (DOT) accreditation * NTC Certificate (for telcos) * **No online presence** → Provide physical proof (store photos, tenancy agreement, Mayor's Permit) ## Entity Types and Required Documents | Entity Type | Required Documents | | - | - | | Corporation | SEC Registration Certificate, Articles of Incorporation, GIS, BIR Form 2303, Proof of Business, Corporate Bank Proof | | Partnership | SEC Registration, Articles of Partnership, BIR Form 2303, Proof of Business, Partnership Bank Proof | | Sole Proprietorship | DTI Registration, BIR Form 2303, Proof of Business, Business Bank Proof | | Not-for-Profit | One of: ITR, AFS, PCNC Cert, SEC Mandatory Disclosure Form | | Document Requirements | Details | Corporation | Partnership | Sole-Proprietorship | | - | - | - | - | - | | Government IDs of authorized person and of the owners/incorporators | Clear copy of ID, not cropped and no information removed. Full name is consistent with authorized person and not expiring in the next 3 months. | ✔ | ✔ | ✔ | | SEC Registration Certificate | Document must be active. Legal name consistent with information provided. | ✔ | ✔ | | | Latest General Information Sheet | Full name is consistent with name of merchant. Must have confirmation that document was received by SEC | ✔ | | | | Articles of Incorporation and By-Laws | Primary purpose consistent with industry information provided. Legal name consistent with information provided. | ✔ | | | | For Not-for-Profit, provide one of the following:(a) Latest Income Tax Return (ITR). (b) Latest Audited Financial Statements (AFS) (c) Philippine Council for NGO Certification (d) SEC Mandatory Disclosure Form | ✔ Applicable to Non-stock Corporation / Not-for-Profit Organizations | ✔ | | | | Articles of Partnership | Primary purpose consistent with industry information provided. Legal name consistent with information provided. | | ✔ | | | DTI registration certificate | | | | ✔ | | Proof of Business | Brand logo and storefront Photo of products, invoice for services; Website | ✔ | ✔ | ✔ | | BIR Certificate of Registration (Colored copy of Form 2303) 2 pages | Must be Business TIN for DTI and SEC-registered businesses | ✔ Corporate BIR registration | ✔ Partnership BIR registration | ✔ Business BIR form | | Proof of bank account | Proof of bank account that reflects the account you are using in HitPay, **containing full account name and account number**. Passbook, Online banking screenshot, Bank certificate, Validated deposit slip are acceptable | ✔ Corporate bank account | ✔ Partnership bank account | ✔ Business bank account | > [!TIP] > > Ensure documents are not cropped, names are consistent, and ID documents are > valid for at least 3 months. ## BIR Withholding Tax Regulations ### BIR Business Registration * Register here: [BIR New Business Registration](https://web-services.bir.gov.ph/newbizreg/) ### Overview Under **[Revenue Regulations No. 16-2023](https://bir-cdn.bir.gov.ph/BIR/pdf/RR%2016-2023.pdf)**, as amended, and **[RMC No. 55-2024](https://bir-cdn.bir.gov.ph/BIR/pdf/RMC%20No.%2055-2024%20\(1\).pdf)**, a **0.50% withholding tax** will apply to gross remittances made by digital financial service providers and electronic marketplace operators to sellers/merchants. > [!NOTE] > > The withholding tax rate transitioned from 1% to 0.50%. See **[RMO No. 018-2025](/files/RMO%20No.%20018-2025.pdf)** and **[RMO No. 26-2025 Digest](/files/RMO%20No.%2026-2025%20Digest.pdf)** for details. All HitPay-registered merchants are subject to this 0.50% withholding tax **unless** they qualify for an exemption. ### Exemptions Include: * Non-stock, non-profit organizations exempt from income tax * Entities with annual gross remittances via digital financial service providers **not exceeding PHP 500,000** *** ## Required Documents During Onboarding 1. **BIR Certificate of Registration (Form 2303)** 2. **Business Bank Account** * *Note: As per BIR rules (RMC No. 8-2024), payouts can only be made to business bank accounts — not personal accounts.* 3. **To Assess Tax Exemption Eligibility** * **Sworn Declaration** * Must be notarized, stamped, and verified by your BIR RDO * [Download Sworn Declaration Template](https://drive.google.com/file/d/1zzrG23IvFC0OJ8RpkQMSuGgMbJWGzI9d/view) * **Alternative Documents** *(if applicable)*: * Certification of BMBE registration * Proof of non-profit, tax-exempt status ## Important: If the sworn declaration is **not submitted**, the 0.50% withholding tax will automatically be applied to **your gross sales** starting **October 12, 2024**, regardless of your earnings. *** ## Tax Forms and Reporting Merchants subject to withholding tax will receive **BIR Form 2307** at their registered email within **15 days after the end of each quarter**. ## FAQs > **How do I register a business in the Philippines?** > > Use the following official resources: > > * [DTI Business Registration](https://www.dti.gov.ph/negosyo/business-registration-and-permits/) > * [BNRS Guide](https://bnrs.dti.gov.ph/resources/registration-guide) > * [SEC Registration for Partnerships](https://www.sec.gov.ph/company/primary-registration-2/processing-of-applications-for-partnerships/) > * [Stock Corporations](https://www.sec.gov.ph/company/primary-registration-2/primary-registration-of-stock-corporations/) > * [Non-Stock Corporations](https://www.sec.gov.ph/company/primary-registration-2/primary-registration-of-non-stock-corporations/) > **What are the tax compliance requirements for HitPay merchants?** > > Under BIR [Revenue Regulations No. 16-2023](https://bir-cdn.bir.gov.ph/BIR/pdf/RR%2016-2023.pdf) and [RMC No. 55-2024](https://bir-cdn.bir.gov.ph/BIR/pdf/RMC%20No.%2055-2024%20\(1\).pdf), a 0.50% withholding tax applies to remittances made by digital platforms unless exempt. > > **Exemptions include**: > > * Non-stock, non-profits > > * Merchants earning below PHP 500,000 via digital providers annually > > > [!NOTE] > > > > Submit a notarized, stamped, and BIR-verified **Sworn Declaration** to qualify for exemption. > > If not submitted, 0.50% tax applies to **gross sales** starting **October 12, 2024**. > > > [!TIP] > > > > Withholding tax will be reported quarterly via **BIR Form 2307**, sent to your registered email. # Singapore Source: https://docs.hitpayapp.com/onboarding/requirements-sg Required documents and verification process for businesses in Singapore ## Singapore Verification Requirements - ACRA Registered Companies registered in Singapore are required to complete identity and entity verification before processing payments through HitPay. The following outlines the accepted verification methods, required documentation by entity and applicable bank requirements. ## Company Verification ### CorpPass (MyInfo Business) - Recommended The preferred method of verification is through **CorpPass** using the **MyInfo Business** service. This approach retrieves entity information directly from ACRA, enabling a streamlined and automated verification process. It is the fastest and most secure option available to Singapore-registered entities. > [!TIP] > > Whilst the use of CorpPass replaces the need to manually upload business registration documents, you will still be required to upload certain documents and information not available in MyInfo. Refer below for more information. ### Manual Verification Where CorpPass is unavailable, the Company may complete verification manually by submitting the following: * **ACRA Business Profile** dated within the last 12 months * **Government-issued identification documents** (e.g. NRIC, Passport) and **Proof of Residential Address** *(see Note 1)* for all Beneficial Owners (individuals who hold effective control or own more than 25% of the Company) * **Letter of authorisation** signed by a Director or Beneficial Owner dated within the last 12 months (if you are acting on behalf of the Company but are not a Director or Beneficial Owner of the Company) * **Ultimate Beneficial Owner structure declaration** signed by a Director or Beneficial Owner (if majority shareholding is held by a legal entity) * **Source of wealth / source of funds** (if required): Documentation to support your declared source of wealth and/or source of funds may be requested depending on your business type and risk profile > [!NOTE] > > **Note 1:** Utility or mobile bill dated in the past 3 months. Required for foreign nationals only. ## Proof of Business Verification As part of your application, we require proof of your business to verify its legitimacy and ensure it aligns with our onboarding and regulatory requirements. Please ensure that you have prepared the following prior to application: * **Online businesses:** A functioning and accessible website that clearly reflects your business activities and offerings * **Physical businesses:** * A photograph of the storefront clearly displaying the registered business name; or * A signed tenancy agreement for the business premises * **Licences, permits or certifications** as applicable to your industry > [!TIP] > > All documents should be clear, valid, and consistent with the details provided in your application. ## FAQs > **What are the requirements for Non-Profit Organisations (NPOs)?** > > If your organisation is a **Company Limited by Guarantee (CLG)**, **Society**, or **Mosque/Madrasah**, the verification requirements differ from standard ACRA-registered businesses. CorpPass (MyInfo Business) is still the recommended verification method. > > Where CorpPass is unavailable, manual verification is required based on your organisation type: > > **a. Company Limited by Guarantee (CLG) registered on charities.gov.sg** > > * Certificate of Incorporation or equivalent government-issued registration document > * For all Directors: colour copy of government-issued identification (e.g. NRIC - front and back) and proof of residential address for foreign nationals only > * Letter of authorisation signed by a Director dated within the last 12 months (if acting on behalf of the Organisation but not a Director) > * Documentation (such as signed financial statements) to support your declared source of wealth and/or source of funds > > **b. Society** > > * Latest Committee Management List from Ministry of Home Affairs (MHA), Annual Returns, or equivalent government-issued registration documents > * For all Key Office Bearers (i.e. President, Treasurer, Secretary): colour copy of government-issued identification (e.g. NRIC - front and back) and proof of residential address for foreign nationals only > * Letter of authorisation signed by a Key Office Bearer dated within the last 12 months (if acting on behalf of the Organisation but not a Key Office Bearer) > * Documentation (such as signed financial statements) to support your declared source of wealth and/or source of funds > > **c. Mosques/Madrasahs** > > * MUIS registration or approval letter confirming the establishment of the mosque or madrasah > * Committee appointment letter from MUIS confirming the management committee > * For all Key Office Bearers (i.e. President, Treasurer, Secretary): colour copy of government-issued identification (e.g. NRIC - front and back) and proof of residential address for foreign nationals only > * Letter of authorisation signed by a Key Office Bearer dated within the last 12 months (if acting on behalf of the Organisation but not a Key Office Bearer) > * Documentation (such as signed financial statements) to support your declared source of wealth and/or source of funds > **Why is HitPay asking me for additional information?** > > HitPay regularly updates the information we hold on your business to ensure it remains accurate and meets our regulatory compliance obligations. As part of this, we may reach out to request additional information or documents to keep your account in good standing. > > This may entail requests for your business': > > * Updated business registration documents (e.g. ACRA Business Profile or equivalent) > * Identity confirmation of the person authorised to act on your behalf in HitPay > * Verification of your business' source of wealth or source of funds > **What are Source of Wealth (SoW) and Source of Funds (SoF)?** > > * **Source of Wealth (SoW):** The origin of your business' overall accumulated wealth (e.g. business profits, past employment income, investments) > * **Source of Funds (SoF):** The specific origin of the funds used for a particular transaction or flowing through your account (e.g. sales revenue, client payments) > > HitPay is a licensed financial institution regulated by the **Monetary Authority of Singapore (MAS)**. To fulfil MAS requirements, we perform customer due diligence to detect and prevent money laundering and terrorism financing. As part of this, we may request information on your SoW and/or SoF to ensure that funds processed through our platform are legitimate and consistent with your business activities. > > **Documents that may be requested:** > > * Bank statements > * Financial statements > * Proof of business revenue (e.g. past payment processor statements) > * Investment or funding documents > * Loan or financing agreements > * Income tax assessments / notices of assessment > > We will only request additional information where necessary to complete our verification. > **How do I register a business in Singapore?** > > Refer to these official ACRA resources to register a business: > > * [How to Register a Business – ACRA](https://www.acra.gov.sg/how-to-guides/before-you-start) > * [Sole Proprietorship or Partnership Guide](https://www.acra.gov.sg/how-to-guides/setting-up/starting-a-sole-proprietorship-or-partnership) > * [Setting Up a Local Company](https://www.acra.gov.sg/how-to-guides/setting-up/setting-up-a-local-company) > **How do I register for CorpPass to verify my HitPay account?** > > HitPay uses **MyInfo Business** via **CorpPass** for verifying Singapore-registered businesses. > > To complete verification: > > 1. Set up a **CorpPass** account > 2. Use it to log in and verify your HitPay account > > Visit [corppass.gov.sg](https://www.corppass.gov.sg) for full registration instructions and support. # Thailand Source: https://docs.hitpayapp.com/onboarding/requirements-th Required documents and verification process for businesses in Thailand ## Verifying a Thailand-Registered Business Businesses registered in Thailand are required to complete both identity and document verification as part of the onboarding process. ## Verification Process ### Identity Verification The **account representative** must complete: * Government-issued ID verification * Selfie submission > [!TIP] > > ID verification will be required after your bank account has been successfully linked. ### Document Verification Submit the following: * **Business registration documents** showing owner/shareholder names * **Supporting documents** proving active business operations If the account representative is **not listed** in the business registration: * A signed **Letter of Authorisation (LOA)** from a company secretary or director * **Identification documents** (e.g., passport with signature) of: * The account representative * The person signing the LOA > [!NOTE] > > Additional documentation may be requested by our Compliance team depending on the nature of your business or ownership structure. ### Common Additional Requirements * **Businesses with complex ownership structures** → Provide a Beneficial Ownership Structure chart * **Shareholders with 25%+ ownership** → Submit valid ID for each * **Regulated industries** → Provide the relevant licenses: * **Drug-related businesses** → Thai FDA import/manufacturing license * **Tourism-related businesses** → Tourism Business License from the Department of Tourism, Ministry of Tourism and Sports > [!NOTE] > > Documents must be clear, valid, and unaltered. Blurry or edited files may delay approval. ## FAQs > **How do I register a business in Thailand?** > > You can refer to the [Department of Business Development (DBD)](https://www.dbd.go.th/index.php) website for steps on registering a new entity in Thailand. # Reseller Partners Source: https://docs.hitpayapp.com/partner/overview Be a HitPay Reseller to earn commissions by referring merchants ## Overview The HitPay Reseller Partner program is designed to reward partners who promote HitPay and refer merchants to our platform. As a partner, you will earn a commission for every transaction processed by the merchants you refer and onboard. This program offers an excellent opportunity to generate a steady income by helping businesses access a comprehensive payment solution. ## What you earn Get **0.1% recurring commission** on every payment your referred merchants process. As they grow, this can scale into **\$1,000 to \$10,000 in monthly passive revenue**. Join **500+ partners** who've referred **10,000+ businesses** and earned over **\$1M in commissions**. ## Who You Might Be **YOU MIGHT BE** * Web & App Developer * Digital Agency * Event Organiser * Tech or Business Consultant * POS & Hardware Provider * Business Accountant **YOUR CLIENTS MIGHT BE** * Businesses navigating their payment setup * Businesses Exploring Payments * Newly Launched Businesses * Online Store Owners * Brick & Mortar Retailers * Service-based Businesses * Growing SMBs * Businesses Expanding Regionally ## Key Benefits * **Earn Commission**: Receive 0.1% commission on every transaction processed by the merchants you refer. * **Automated Payouts**: Commissions are automatically paid out monthly to your linked bank account. * **Simple Referral** Process: Easily refer clients using your unique referral link. ## Signup Process To get started, navigate to [HitPay Partner Registration](https://dashboard.hit-pay.com/register-partner) and create your partner account. During the registration process, you will be required to link your bank account and complete the necessary account verification steps. [https://dashboard.hit-pay.com/register-partner](https://dashboard.hit-pay.com/register-partner) ![HitPay Partner Setup](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/partner/signup.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=354eeb1ef91f3b72dad46aaf46992946) ### Approval Process After registering and linking your bank account, your application will be reviewed by the HitPay team. Once approved, you will gain access to the HitPay Partner Dashboard, where you can manage your referrals and monitor your earnings. ![HitPay Partner Setup](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/partner/partner_overview.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=5800618c10b784470083e31724cf0465) ## Invite a Merchant Inviting merchants to join HitPay is simple and ensures they are correctly linked to your partner account: * **Get Your Referral Link**: After your account is approved, find your unique referral link in the Partner Dashboard. * **Share the Link**: Copy the referral link and share it with potential merchants via email, social media, or any other preferred communication method. * **Merchant Sign-up**: Ensure that the merchant uses your referral link to sign up for HitPay. This will automatically map them to your partner account. ### Linking an existing merchant If a merchant you referred signed up without using your referral link, they can still link you as their partner. Share your **referral code** (shown in your Partner Dashboard) with the merchant. The merchant then goes to **Settings → Business Details** in their HitPay dashboard, clicks **Link a partner**, and enters your code. A business can only be linked to one partner, and linking does not change the merchant's fees. See [Business Details](/settings/business-details#link-a-partner) for the merchant-side steps. ### Viewing Linked Businesses Access the "Linked Businesses" section to see the list of merchants you've referred to HitPay. ![HitPay Partner Setup](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/partner/linked_businesses.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=2edfe92222b0996d5c8c2594cc2aeb7f) ## FAQs > **When do I get paid?** > > Partner payments are processed on the 1st day of each month for the previous month's transactions from your linked merchants. > **What if the merchant did not use the correct referral link?** > > The merchant can link your partner account themselves. Ask them to go to **Settings → Business Details** in their HitPay dashboard, click **Link a partner**, and enter your referral code. This only works if the business is not already linked to another partner. Commission applies to transactions processed after the link is made. For any additional questions or concerns, our support team ([support@hit-pay.com](mailto:support@hit-pay.com)) is always available to provide assistance and ensure your account creation process is as smooth as possible. # Refer and Earn Source: https://docs.hitpayapp.com/partner/refer-and-earn Share your referral link, invite businesses to HitPay, and earn recurring commissions on every payment they process. ## Overview Every HitPay account comes with **Refer and Earn** built in. Share your unique referral link, invite businesses to join HitPay, and earn a recurring commission on every online payment they process — no separate partner application required. ## What you earn Get **0.1% recurring commission** on every payment your referred merchants process. As they grow, this can scale into **\$1,000 to \$10,000 in monthly passive revenue**. Join **500+ partners** who've referred **10,000+ businesses** and earned over **\$1M in commissions**. > [!NOTE] > > Commission is earned on your referred merchants' online payments and excludes POS / Terminal and Recurring plan transactions. ## How to get your unique link Open the **Refer** tab from the bottom of the left-hand navigation in your HitPay dashboard. Here you'll find your unique referral link along with a running count of the businesses you've referred. ![HitPay Refer and Earn dashboard showing your unique referral link](https://mintcdn.com/hitpay/p0tLI3uV6mTlDYs3/images/partner/refer-unique-link.png?fit=max\&auto=format\&n=p0tLI3uV6mTlDYs3\&q=85\&s=5b29fef74762ca198a62c1120fd8dbeb) You have two ways to invite a business: * **Copy or Share your link** — Use **Copy** to grab your referral link, or **Share** to send it directly through your preferred channel (email, social media, messaging apps). * **Send an invite by email** — Enter the merchant's email address in the invite box and click **Send** to email them your referral automatically. > [!WARNING] > > The business must sign up using your referral link (or emailed invite) for the referral to be correctly attributed to your account. Manual linking is not supported. ## Tracking your referrals The **Businesses referred** counter at the top of the Refer page shows how many merchants have signed up through your link. As your referred businesses process payments, your commissions accrue automatically. ## Getting paid Commissions are calculated on your referred merchants' eligible online transactions and paid out to your linked account. Payments are processed on the 1st day of each month for the previous month's transactions. ## FAQs > **How much commission do I earn?** > > You earn 0.1% recurring commission on every eligible online payment your referred merchants process, for as long as they remain active on HitPay. > **Which transactions are eligible?** > > Commission applies to online payments. POS / Terminal and Recurring plan transactions are excluded. > **When do I get paid?** > > Payments are processed on the 1st day of each month for the previous month's transactions from your referred merchants. > **What if the merchant didn't use my referral link?** > > We do not support manual linking of merchants. If a merchant did not sign up using your referral link or emailed invite, they will not be attributed to your account. For assistance, contact our support team. For any additional questions, our support team ([support@hit-pay.com](mailto:support@hit-pay.com)) is always available to help. # Payment Links Source: https://docs.hitpayapp.com/payment-links/payment-links Create shareable payment links from the HitPay dashboard or mobile app to collect payments without a website. ## Overview HitPay Payment Links is a versatile payment solution that enables you to accept payments on various sales channels with ease. Payment links can be created using the HitPay Mobile App or the HitPay Dashboard. This documentation focuses on creating and customizing payment links through the HitPay Dashboard. ![Payment Link](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Payment-Link.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=2be4fc59d9af0a6cae83038ca471d0bb) ## Creating a Payment Link **Web Dashboard** ### Navigate to Payment Links * Log in to your HitPay Dashboard. * From the left-hand menu, click on Payment Links. ### Create Payment Link * Click on the **Create Payment Link** button. * Fill in the necessary details for the payment link, as shown below: * Location: If you have more than one location, you will be able to select the specific location for the payment link. If you only have one location, this field will not appear, and the payment link will default to your main location. * Note: Leave the amount field empty to allow your customer to choose their payment amount. Alternatively, select 'Any amount' to enable customers to pick their preferred currency. ![payment link details](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Create-Payment-Link.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=42737c258a363b4a4d6fb082eaf01247) * You can choose to create the payment link in any currency that's supported by the [payment methods that you have setup](/payments/payments#supported-payment-methods) * Click on **Create Link** when done. ### Share Payment Link * Once the payment link is generated, you can copy/paste or share it directly with your customer. * When the customer clicks the payment link, available payment methods linked to your HitPay account will be displayed. **Mobile App** ### Navigate to Payment Links * Log in to the HitPay mobile app on iOS or Android and go to the **More** tab. * Click on **Payment Links** ### Create Payment Link * Click on the **Create** button. * Enter the amount and reference number (optional) * If additional details are required, toggle the **Additional Information** and fill up the details, as shown below: ![payment link details](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Payment-Link-Details-POS.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=bf55e990b11d6e3b08bc2e1443b41ee4) * Click on **Create** when done. ### Share Payment Link * Once the payment link is generated, you can copy/paste or share it directly with your customer. * When the customer clicks the payment link, available payment methods linked to your HitPay account will be displayed. > [!NOTE] > > To choose which payment methods show on your payment links, go to **Integrations** in your HitPay dashboard and open Links and Payment Request API. ## Editing Payment Link Editing a payment link allows you to make changes to its details, ensuring that it remains up-to-date and accurate. * Locate the Payment Link: In the payment links table, identify the payment link that you wish to edit. * Access Edit Mode: Click on the associated icon, followed by "Edit." This action will open the editing interface for the selected payment link. * Modify Payment Details: In the edit interface, you can make changes to various fields of the payment link. This includes updating the amount, reference number, expiry date, and more. * Save Changes: After making the necessary edits, be sure to click the "Edit Link" button to confirm and save your modifications. ## Viewing Payment Link Details You can access a comprehensive overview of each payment link by following these steps: * Locate the Payment Link: In the table, identify the payment link and click on the associated icon, followed by "View Details." * Explore Insights: On the View Details page, you will discover a wealth of information, including payment link information, customer details, and payment history. * Sharing: To share a payment link, click the "Share" button. You can copy the URL or directly share it on WhatsApp, Facebook, Twitter, or Gmail. * QR Code Generation: Conveniently generate a QR code by clicking on the QR code icon. You can then copy it to the clipboard or download the image. ## Managing Default Links You get access to a default **Payment Link** in the HitPay dashboard under Payment Links. This default link, when shared to customers, will allow them to manually enter the amount they want to send/pay to you. Below are the steps involved in managing the Default Payment Links **HitPay Dashboard** * Click on Payment Links in the left menu. You can copy the default link from here, which can then be directly shared with any customer. Additionally, you can add the link to any order-taking form (e.g., Google Forms) or embed it as a button on your website. ### Locating QR Code, Deactivate Button, and View Details Page * View QR Code: To access the QR code for the default link, click the vertical three-dot icon next to the link. This QR code simplifies mobile payments and in-store transactions. * Deactivate Default Link: If you wish to temporarily disable the default payment link and prevent further access, simply click on the three-dot icon, followed by selecting "Deactivate". This can be valuable when you need to suspend the link temporarily. * View Details Page: For a deeper understanding of your default payment link, click the three-dot icon, then select the "View Details" option. This action will navigate you to the Details Page, where you can explore revenue insights and access a complete payment history. **Mobile App** * Log in to the HitPay mobile app on iOS or Android and go to the **More** tab. * Click on the **"QR Code"** button and you'd be directed to the QR Code page where you can copy or share your HitPay Payment link. * Share, display, or download the QR code for in-person payments. * Scanning the QR code redirects customers to the default payment link. ## Custom Checkout Fields Collect additional information from customers at checkout, like t-shirt size, delivery notes, or a membership number, without pairing your payment link with a separate Google Form. Answers show up alongside the payment everywhere you already look at payment data. You can define fields at two levels: * **Payment links settings** — a business-level default template that seeds every new payment link. * **Individual payment links** — the fields actually attached to a specific link, which you can customise independently of the template. > [!NOTE] > > Custom Checkout Fields are supported on Payment Links only. They are not available on links or charges created through the Payment Request API. ### Standard Fields Three standard fields are always available and are toggled per payment link. When enabled, they appear before any custom fields and are required at checkout: * **Collect Name** — captures the customer's full name. * **Collect Address** — captures the customer's address (street, city, state, postal code, and country). * **Collect Phone Number** — captures the customer's phone number. Standard fields don't count towards the custom field limit and are configured independently of them. ### Custom Fields Custom fields are the questions you define yourself. Each one has: * **Label** — the question shown to the customer. * **Type** — Text, Long Text, Dropdown, Checkbox, Radio Button, or Date. * **Required** — whether the customer must answer before paying. * **Options** — for Dropdown, Checkbox, and Radio Button fields, the list of choices the customer can pick from. You can add up to **10 custom fields** per payment link (and per template). Labels and options have a maximum length, and the reserved labels **email**, **name**, and **phone** can't be reused for a custom field, since they're already collected as standard checkout fields. ### Setting a Default Template To define the fields new payment links start with, go to **Payment Links > Settings > Custom Fields** and add, edit, or remove fields the same way you would on an individual link. > [!NOTE] > > The template is copy-at-creation: its fields are copied into a payment link only at the moment that link is created. Editing the template afterwards only affects payment links created from then on — it never changes fields on links that already exist. To change an existing link's fields, edit that link directly. ### Configuring Fields on a Payment Link You can add or edit custom fields on any individual payment link, whether you're creating a new one or editing an existing one: * Open **Create Payment Link** (or **Edit** on an existing link). * Go to the **Custom Fields** section. * Toggle any standard fields you want to collect (name, address, phone). * Click **Add Field** to define a custom field: set its label, type, required flag, and options if applicable. * Save the payment link. ### What Customers See at Checkout Custom fields render on the checkout page as part of the existing customer information block, before payment: * Enabled standard fields (name, phone, address) appear first, followed by your custom fields in the order you defined them. * Required fields block payment and show inline validation if left blank or answered incorrectly. For payment links that accept repeat payments, customers answer the fields independently on every payment. ### Viewing Responses Once customers start paying, their answers are available in two places: * **Transactions details page** — shows the answers submitted for that specific payment. * **Payment link details page** — shows a responses view with one row per payment, so you can review answers across every payment made on that link. Click **Export** to download all responses as a CSV, with one column per field. > [!NOTE] > > Changing a link's field configuration doesn't alter answers already collected — each response keeps a snapshot of the field labels as they were at the time the customer submitted it. # AlfaMart Source: https://docs.hitpayapp.com/payment-methods/alfamart Popular Payment Method through Convenience Stores in Indonesia ## Overview | Detail | Description | | :- | :- | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+4 | | Presentment Currency (Currency displayed to your customer) | IDR | | Settlement Currency (Currency that you get paid out in) | IDR | | Minimum Amount | IDR 5,500 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Indonesia | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up AlfaMart as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **AlfaMart** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `doku_alfa_o2o` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # AliPay Source: https://docs.hitpayapp.com/payment-methods/alipay Popular among Chinese customers ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+2 | | Presentment Currency (Currency displayed to your customer) | MYR | | Settlement Currency (Currency that you get paid out in) | MYR | | Minimum Amount | MYR 1.00 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Malaysia | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up AliPay as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **E-Wallets** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `alipay` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # Atome Source: https://docs.hitpayapp.com/payment-methods/atome Popular in SEA ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 (SG), T+2 (MY) | | Presentment Currency (Currency displayed to your customer) | SGD / MYR | | Settlement Currency (Currency that you get paid out in) | SGD / MYR | | Minimum Amount | SGD 1.50 / MYR 2 | | Maximum Amount | - | | Refund Supported | ✓ (SG) / ✕ (MY) | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ | | Supported Countries | Singapore, Malaysia | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up Atome as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **Atome** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `atome` | | Sandbox Testing | Available | | Refund API Support | ✓ (SG) / ✕ (MY) | | Supports Embedded QR | ✓ | | Drop-in UI Support | ✓ | ### API Testing in Sandbox Developers can test Atome integration in the sandbox environment to ensure smooth processing. Use the HitPay API to simulate transactions and verify payment confirmation and error handling mechanisms. ### Drop-in UI Support HitPay offers a drop-in UI component for easy integration of Atome into your website or app. This allows for a seamless payment experience without the need for extensive development work. ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # BillEase Source: https://docs.hitpayapp.com/payment-methods/billease Popular Buy Now, Pay Later (BNPL) in Phillipines ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 | | Presentment Currency (Currency displayed to your customer) | PHP | | Settlement Currency (Currency that you get paid out in) | PHP | | Minimum Amount | PHP 50.00 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Phillipines | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up BillEase as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **Billease** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `billease` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # Boost Source: https://docs.hitpayapp.com/payment-methods/boost Popular in Asia and Malaysia ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 | | Presentment Currency (Currency displayed to your customer) | MYR | | Settlement Currency (Currency that you get paid out in) | MYR | | Minimum Amount | MYR 1.00 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Malaysia | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up Boost as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **E-Wallets** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `razer_boost` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # DOKU EWallet Source: https://docs.hitpayapp.com/payment-methods/dokuewallet Popular EWallet in Indonesia ## Overview | Detail | Description | | :- | :- | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+2 | | Presentment Currency (Currency displayed to your customer) | IDR | | Settlement Currency (Currency that you get paid out in) | IDR | | Minimum Amount | IDR 5,000 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Indonesia | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up DOKU EWallet as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **VA and E-Wallets** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `doku_doku_wallet` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # DuitNow Source: https://docs.hitpayapp.com/payment-methods/duitnow Malaysia's national instant payment system ## Overview DuitNow is Malaysia's national instant payment system, enabling real-time transfers between bank accounts and e-wallets 24/7. Users scan a unified DuitNow QR code at merchants to pay from any linked bank or e-wallet, promoting interoperability across providers like Touch 'n Go. | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+2 (Local) / T+3 (Cross-Border) | | Presentment Currency (Currency displayed to your customer) | MYR | | Settlement Currency (Currency that you get paid out in) | MYR | | Activation Time | Instant | | Minimum Amount | MYR 0.01 | | Maximum Amount | MYR 999,999.00 (Local) / MYR 5,100.00 (Cross-border) | | Refund Supported | ✕ (Not Supported) | | Supported for online transactions | ✓ | | Supported for in-person transactions | ✓ | | Supported Countries | Malaysia (Local), All (Cross-Border) | | Transaction Fees | [See Pricing Page](https://hitpayapp.com/pricing) | > [!NOTE] > > DuitNow payments cannot be refunded through HitPay. ## Setup DuitNow is automatically available to all business-verified Malaysian merchants — no additional steps required. For cross-border merchants outside Malaysia: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Click **Turn On** next to **DuitNow**. ## Payment Flows ### Online 1. Customer sees the **DuitNow** option on the checkout page. 2. Customer selects **DuitNow** — a QR code is displayed. 3. Customer scans the QR using any supported e-wallet or banking app. 4. Transaction is completed. ### POS / Quick Sale 1. Merchant selects **DuitNow** from the Payment Methods list. 2. A dynamic DuitNow QR code is displayed to the customer. 3. Customer scans the QR using any supported e-wallet or banking app. 4. Transaction is completed. ## Developer Section | Feature | Description | | - | - | | Method Code | `duitnow` | | Sandbox Testing | ✕ | | Refund API Support | ✕ | | Supports Embedded QR | ✓ | | Drop-in UI Support | ✕ | ## FAQs > **Which wallets and banks can customers use to pay with DuitNow?** > > Customers can pay using any bank or e-wallet linked to the DuitNow network, including Touch 'n Go, Maybank, CIMB, Public Bank, and more. > **Can I refund a DuitNow payment?** > > No. DuitNow payments cannot be refunded through HitPay. > **Is DuitNow available for cross-border merchants?** > > Yes. Cross-border merchants can enable DuitNow with instant activation after clicking **Turn On** on the Payment Methods page. > **Is there a transaction limit for DuitNow?** > > Yes. The per-charge limit depends on whether the merchant is in Malaysia or accepting DuitNow as a cross-border method: > > * **Malaysia (local):** MYR 0.01 to MYR 999,999.00 per charge. > * **Cross-border (non-Malaysia merchants):** MYR 5,100.00 per charge (SGD 1,500 equivalent). Charges above this are rejected with: *Maximum amount allowed to be charged is MYR 5,100.00.* > > The customer's bank or e-wallet may also apply its own daily or per-transaction limit. For other questions, reach out to [support@hit-pay.com](mailto:support@hit-pay.com). # FPX Source: https://docs.hitpayapp.com/payment-methods/fpx Popular in Malaysia ## Overview | Detail | Description | | - | - | | Fund Credit To | Card Balance | | Charge Confirmation (When the funds reach your Available Balance) | Instant | | Presentment Currency (Currency displayed to your customer) | MYR | | Settlement Currency (Currency that you get paid out in) | MYR | | Minimum Amount | - | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Malaysia | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up FPX as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **Cards and FPX** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `fpx` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # GCash Source: https://docs.hitpayapp.com/payment-methods/gcash Popular Mobile Wallet in Phillipines ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 | | Presentment Currency (Currency displayed to your customer) | PHP | | Settlement Currency (Currency that you get paid out in) | PHP | | Minimum Amount | PHP 1.00 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ | | Supported Countries | Phillipines | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up GCash as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **GCash** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `gcash_qr` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✓ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # GrabPay Source: https://docs.hitpayapp.com/payment-methods/grabpay Popular in SEA ## Overview GrabPay is a versatile digital payment solution widely utilized across Southeast Asia, particularly in Singapore, Malaysia, and the Philippines. As a part of the Grab app ecosystem, GrabPay enables users to make seamless transactions for various services, including ride-hailing, food delivery, and online shopping. Users can pay directly from their GrabPay wallet, eliminating the need for cash or physical cards. | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 (SG/PH), T+2 (MY) | | Presentment Currency (Currency displayed to your customer) | SGD / MYR / PHP | | Settlement Currency (Currency that you get paid out in) | SGD / MYR / PHP | | Minimum Amount | SGD 0.50 / MYR 0.50 / PHP 50 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions (Jump App Redirect ) | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ (SG) / ✓ (MY) / ✕ (PH) | | Supported Countries | Singapore, Malaysia, Phillipines | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Key Features * **Instant Payments:** Users can make real-time payments by scanning QR codes at partner merchants or online platforms. * **Rewards Program:** Every transaction made with GrabPay earns users GrabRewards points, which can be redeemed for discounts and special offers across the Grab ecosystem. ## Setup To set up GrabPay as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **GrabPay (SG, PH)** or **E-Wallets (MY)** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `grabpay` or `grabpay_direct` (SG embedded QR in-person, MY merchants) | | Sandbox Testing | Available | | Supports Embedded QR | ✓ (SG) / ✓ (MY) / ✕ (PH) | | Refund API Support | True | | Drop-in UI Support | ✓ (SG) / ✓ (MY) / ✕ (PH) | ### Drop-in UI Support HitPay offers a drop-in UI component for easy integration of GrabPay into your website or app. This allows for a seamless payment experience without the need for extensive development work. ## FAQs Coming soon. Contact our support team if you have any questions. # GrabPay PayLater Source: https://docs.hitpayapp.com/payment-methods/grabpay_paylater Popular in SEA ## Overview GrabPay PayLater is a versatile digital payment solution widely utilized across Southeast Asia, particularly in Singapore, Malaysia, and the Philippines. As a part of the Grab app ecosystem, GrabPay PayLater enables users to make seamless transactions for various services, including ride-hailing, food delivery, and online shopping. Users can pay directly from their GrabPay PayLater wallet, eliminating the need for cash or physical cards. | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 (SG) / T+2 (MY) | | Presentment Currency (Currency displayed to your customer) | SGD / MYR | | Settlement Currency (Currency that you get paid out in) | SGD / MYR | | Minimum Amount | SGD 0.50 / MYR 0.50 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions (Jump App Redirect ) | ✓ (SG) / ✓ (MY) | | Supported for in-person transactions (Embedded QR Code) | ✓ (SG) / ✓ (MY) | | Supported Countries | Singapore | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up GrabPay PayLater as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **GrabPay PayLater** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `grabpay_paylater` | | Sandbox Testing | Available | | Refund API Support | ✓ | | Supports Embedded QR | ✓ (SG) / ✓ (MY) | | Drop-in UI Support | ✓ | ### API Testing in Sandbox Developers can test GrabPay PayLater integration in the sandbox environment to ensure smooth processing. Use the HitPay API to simulate transactions and verify payment confirmation and error handling mechanisms. ### Drop-in UI Support HitPay offers a drop-in UI component for easy integration of GrabPay PayLater into your website or app. This allows for a seamless payment experience without the need for extensive development work. ## FAQs Coming soon. Contact our support team if you have any questions. # Korean Payment Methods - PayCo, LINEPay, KakaoPay Source: https://docs.hitpayapp.com/payment-methods/korean-payment-methods Popular in Korea ## Overview GrabPay is a versatile digital payment solution widely utilized across Southeast Asia, particularly in Singapore, Malaysia, and the Philippines. As a part of the Grab app ecosystem, GrabPay enables users to make seamless transactions for various services, including ride-hailing, food delivery, and online shopping. Users can pay directly from their GrabPay wallet, eliminating the need for cash or physical cards. | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 | | Presentment Currency (Currency displayed to your customer) | KRW | | Settlement Currency (Currency that you get paid out in) | KRW | | Minimum Amount | - | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions (Jump App Redirect ) | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Global | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Key Features * **Instant Payments:** Users can make real-time payments by scanning QR codes at partner merchants or online platforms. * **Rewards Program:** Every transaction made with GrabPay earns users GrabRewards points, which can be redeemed for discounts and special offers across the Grab ecosystem. ## Setup To set up GrabPay as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **Korean Payment Methods** ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `nhn_kcp_payco` or `nhn_kcp_naver_pay` or `nhn_kcp_kakaopay` | | Sandbox Testing | ✕ | | Supports Embedded QR | ✕ | | Refund API Support | True | | Drop-in UI Support | ✕ | ### Drop-in UI Support HitPay offers a drop-in UI component for easy integration of GrabPay into your website or app. This allows for a seamless payment experience without the need for extensive development work. ## FAQs Coming soon. Contact our support team if you have any questions. # LINE Pay Source: https://docs.hitpayapp.com/payment-methods/linepay Popular mobile payment service in Thailand ## Overview LINE Pay is a mobile payment service integrated into the LINE messaging app, one of the most widely used apps in Thailand. It allows users to pay directly from their LINE Pay wallet, enabling fast and familiar checkout experiences for Thai consumers — both online and in-person. | Detail | Description | | :- | :- | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+5 | | Presentment Currency (Currency displayed to your customer) | THB | | Settlement Currency (Currency that you get paid out in) | THB | | Minimum Amount | THB 1 | | Maximum Amount | Contact Sales | | Refund Supported | Partial and Full | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ | | Supported Countries | ALL (Cross-border Payment Method) | | Transactions Fees | 3.4% | ## Setup To set up LINE Pay as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **LINE Pay** and complete the onboarding process. > [!NOTE] > > Activation takes 5-7 business days after completing the onboarding form. ## Developer Section | Feature | Description | | - | - | | Method Code | `line_pay` | | Sandbox Testing | ✓ | | Refund API Support | ✓ | | Supports Embedded QR | ✓ | | Drop-in UI Support | ✓ | | Recurring Payments | ✓ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # Maybank QR Source: https://docs.hitpayapp.com/payment-methods/maybankqr Popular in Malaysia ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 | | Presentment Currency (Currency displayed to your customer) | MYR | | Settlement Currency (Currency that you get paid out in) | MYR | | Minimum Amount | MYR 1.00 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Malaysia | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up Maybank QR as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **E-Wallets** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `razer_maybankqr` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # Over The Counter (Bayad, ECPay, Palawan, InstaPay) Source: https://docs.hitpayapp.com/payment-methods/overthecounter_bayad_ecpay_palawan_instapay Popular OTC Payment Methods in Phillipines ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 | | Presentment Currency (Currency displayed to your customer) | PHP | | Settlement Currency (Currency that you get paid out in) | PHP | | Minimum Amount | PHP 1.00 | | Maximum Amount | - | | Refund Supported | ✕ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Phillipines | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up Over The Counter (Bayad, ECPay, Palawan, Instapay) as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **Online Banking and OTC** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `upay_bayad` `upay_ecpy` `upay_plwn` `upay_instapay` | | Sandbox Testing | ✕ | | Refund API Support | ✕ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # PayID Source: https://docs.hitpayapp.com/payment-methods/payid Popular digital payment service in Australia ## Overview | Detail | Description | | :- | :- | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | Instant | | Presentment Currency (Currency displayed to your customer) | AUD | | Settlement Currency (Currency that you get paid out in) | AUD | | Minimum Amount | - | | Maximum Amount | AUD 1,000 (\~US\$650) | | Daily Limit | Bank-specific limits (Please consult your bank) | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | AU | | Transactions Fees | [Contact Sales](https://hitpayapp.com/contact-us) | ## Setup To set up PayID as a payment method, follow these steps: 1. Click on **Payment Methods**. 2. Enable **PayID** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `monoova_payid` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # PayNow Source: https://docs.hitpayapp.com/payment-methods/paynow Most popular payment method in Singapore ## Overview PayNow is a real-time payment method widely used in Singapore that allows customers to make instant payments using their mobile number or a unique PayNow QR code. It simplifies the payment process by eliminating the need for bank account details, making it a popular choice for both online and offline transactions. | Detail | Description | | :- | :- | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | Instant | | Presentment Currency (Currency displayed to your customer) | SGD | | Settlement Currency (Currency that you get paid out in) | SGD | | Minimum Amount | SGD 0.50 | | Maximum Amount | - (Local) / SGD 200,000 (\~US\$146,000) (Cross-border) | | Daily Limit | Subject to bank's daily transfer limit | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ | | Supported Countries | ALL (Cross-border Payment Method) | | Transactions Fees (Local) | 0.65% + SGD 0.30 (for transaction values of SGD 100 and above) 0.9% (min fee SGD 0.20) (for transaction values below SGD 100) | | Transactions Fees | [Contact Sales](https://hitpayapp.com/contact-us) | ## Key Features * **Instant Transfers:** Funds are transferred instantly between bank accounts. * **Convenience:** Easy setup and use via mobile banking apps. * **Security:** Enhanced security features with two-factor authentication. * **Wide Acceptance:** Supported by major banks in Singapore. ## User Experience Watch this video to see how the PayNow payment experience looks: [YouTube video player](https://www.youtube.com/embed/YIjy_3h6CQo) ## Setup To set up PayNow as a payment method, follow these steps: PayNow payment method is enabled by default for all Singapore businesses. For other countries, make sure to follow the below steps. 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **PayNow** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | :- | :- | | Method Code | `paynow_online` | | Sandbox Testing | Available | | Supports Embedded QR | True | | Refund API Support | True | | Drop-in UI Support | True | ### API Testing in Sandbox Developers can test PayNow integration in the sandbox environment to ensure smooth processing. Use the HitPay API to simulate transactions and verify payment confirmation and error handling mechanisms. ### Drop-in UI Support HitPay offers a drop-in UI component for easy integration of PayNow into your website or app. This allows for a seamless payment experience without the need for extensive development work. ## FAQs > **What banks support PayNow?** > > Major banks in Singapore, including DBS, OCBC, and UOB, support PayNow. Ensure that your customer's bank is part of the PayNow network. > **Is there a transaction limit for PayNow?** > > Transaction limits may vary depending on the customer's bank policies. Check with the respective bank for specific limits applicable to PayNow transactions. > **Can I display my business name when customers pay with PayNow QR?** > > By default, PayNow QR payments processed through HitPay will display "HITPAY PAYMENTS – CUSTOMER'S ACCOUNT" when scanned. If you would like your business name to appear instead, this can be enabled with a PayNow QR option that involves a 1.5% transaction fee. To activate this feature, please contact our team at [support@hit-pay.com](mailto:support@hit-pay.com). # PESONet Source: https://docs.hitpayapp.com/payment-methods/pesonet Popular Electronic Fund Transfers in Phillipines ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 | | Presentment Currency (Currency displayed to your customer) | PHP | | Settlement Currency (Currency that you get paid out in) | PHP | | Minimum Amount | PHP 1.00 | | Maximum Amount | - | | Refund Supported | ✕ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Phillipines | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up PESONet as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **Online Banking and OTC** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `upay_pchc` | | Sandbox Testing | ✕ | | Refund API Support | ✕ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # PromptPay Source: https://docs.hitpayapp.com/payment-methods/promptpay Popular QR in Thailand ## Overview | Detail | Description | | :- | :- | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | Instant | | Presentment Currency (Currency displayed to your customer) | THB | | Settlement Currency (Currency that you get paid out in) | THB | | Minimum Amount | THB 20 | | Maximum Amount | THB 2,000,000 (\~US\$55,000) | | Daily Limit | Bank-specific limits (Please consult your bank) | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ | | Supported Countries | ALL (Cross-border Payment Method) | | Transactions Fees | [Contact Sales](https://hitpayapp.com/contact-us) | ## Setup To set up PromptPay as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **PromptPay** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `opn_prompt_pay` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✓ | | Drop-in UI Support | ✓ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # PromptPay Source: https://docs.hitpayapp.com/payment-methods/promptpay_thailand Popular QR in Thailand ## Overview | Detail | Description | | :- | :- | | Fund Credit To | Card Balance (Local) / HitPay Balance (Cross-Border) | | Charge Confirmation (When the funds reach your Available Balance) | Instant (Local) / T+3 (Cross-Border) | | Presentment Currency (Currency displayed to your customer) | THB | | Settlement Currency (Currency that you get paid out in) | THB | | Minimum Amount | THB 10 (Local) / THB 20 (Cross-Border) | | Maximum Amount | THB 999,999.99 (Local) / THB 1,500,000 (Cross-Border) | | Daily Limit | Bank-specific limits (Please consult your bank) | | Refund Supported | ✕ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ (Cross-border only) | | Supported Countries | ALL (Cross-border Payment Method and Local) | | Transactions Fees | [Contact Sales](https://hitpayapp.com/contact-us) | ## Setup To set up PromptPay as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **Cards and Ewallets**. PromptPay will be automatically activated once you have successfully onboarded onto Cards and Ewallets. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code (Local) | `promptpay_th` | | Method Code (Cross-border) | `opn_prompt_pay` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✓ (Cross-border only) | | Drop-in UI Support | ✕ Coming soon | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # QRPH Source: https://docs.hitpayapp.com/payment-methods/qrph Popular in Phillipines ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 | | Presentment Currency (Currency displayed to your customer) | PHP | | Settlement Currency (Currency that you get paid out in) | PHP | | Minimum Amount | PHP 1.00 | | Maximum Amount | - (Local) / PHP 50,000 (\~US\$880) (Cross-border) | | Daily Limit | PHP 100,000 (\~US\$1,760) | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | ALL (Cross-border Payment Method) | | Transactions Fees (Local) | [See Pricing Page](https://hitpayapp.com/pricing) | | Transactions Fees | [Contact Sales](https://hitpayapp.com/contact-us) | ## Setup To set up QRPH as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **QRPH** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `qrph_netbank` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✓ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # ShopBack Source: https://docs.hitpayapp.com/payment-methods/shopback Popular in SEA ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 (SG), T+2 (MY) | | Presentment Currency (Currency displayed to your customer) | SGD / MYR | | Settlement Currency (Currency that you get paid out in) | SGD / MYR | | Minimum Amount | SGD 1.50 / MYR 1.50 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ (SG only) | | Supported Countries | Singapore, Malaysia | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up ShopBack as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **Shopback Pay** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `shopback` | | Embedded QR Method Code | `shopback_qr` (SG only) | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✓ (SG only) | | Drop-in UI Support | *Coming soon* | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # ShopeePay Source: https://docs.hitpayapp.com/payment-methods/shopeepay Popular in SEA ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 (SG), T+2 (MY/PH) | | Presentment Currency (Currency displayed to your customer) | SGD / MYR / PHP | | Settlement Currency (Currency that you get paid out in) | SGD / MYR / PHP | | Minimum Amount | SGD 0.50 / MYR 0.50 / PHP 0.50 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ (not supported for PH) | | Supported Countries | Singapore, Malaysia, Phillipines | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up ShopeePay as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **ShopeePay** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `shopee_pay` | | Sandbox Testing | Available | | Refund API Support | ✓ | | Supports Embedded QR | ✓ (not supported for PH) | | Drop-in UI Support | ✓ | ### API Testing in Sandbox Developers can test ShopeePay integration in the sandbox environment to ensure smooth processing. Use the HitPay API to simulate transactions and verify payment confirmation and error handling mechanisms. ### Drop-in UI Support HitPay offers a drop-in UI component for easy integration of ShopeePay into your website or app. This allows for a seamless payment experience without the need for extensive development work. ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # ShopeePay's SPayLater Source: https://docs.hitpayapp.com/payment-methods/spaylater Popular in SEA ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 (SG), T+2 (MY/PH) | | Presentment Currency (Currency displayed to your customer) | SGD / MYR / PHP | | Settlement Currency (Currency that you get paid out in) | SGD / MYR / PHP | | Minimum Amount | SGD 0.50 / MYR 0.50/ PHP 0.50 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ (not supported for PH) | | Supported Countries | Singapore, Malaysia, Philippines | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up ShopeePay's SPayLater as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **ShopeePay's SPayLater** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `shopee_pay_later` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✓ (not supported for PH) | | Drop-in UI Support | ✓ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # Touch 'n Go Source: https://docs.hitpayapp.com/payment-methods/touchngo Popular in Malaysia ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+2 (MY) / T+3 (Global) | | Presentment Currency (Currency displayed to your customer) | MYR | | Settlement Currency (Currency that you get paid out in) | MYR | | Minimum Amount | MYR 1.00 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ (MY) / ✕ (Global) | | Supported Countries | Malaysia / Global | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup Touch 'n Go is automatically enabled for all business verified merchants. Local and globally. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `touch_n_go` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✓ (MY) / ✕ (Global) | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # TrueMoney Source: https://docs.hitpayapp.com/payment-methods/truemoney Popular Ewallet QR in Thailand ## Overview | Detail | Description | | :- | :- | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+3 | | Presentment Currency (Currency displayed to your customer) | THB | | Settlement Currency (Currency that you get paid out in) | THB | | Minimum Amount | THB 100 | | Maximum Amount | THB 500,000 (\~US\$14,000) | | Daily Limit | Bank-specific limits (Please consult your bank) | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ | | Supported Countries | ALL (Cross-border Payment Method) | | Transactions Fees | [Contact Sales](https://hitpayapp.com/contact-us) | ## Setup To set up TrueMoney as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **PromptPay** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `opn_true_money_qr` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✓ | | Drop-in UI Support | ✓ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # UnionBank Online Source: https://docs.hitpayapp.com/payment-methods/unionbank_online Popular in Phillipines ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 | | Presentment Currency (Currency displayed to your customer) | PHP | | Settlement Currency (Currency that you get paid out in) | PHP | | Minimum Amount | PHP 1.00 | | Maximum Amount | - | | Refund Supported | ✕ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Phillipines | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up UnionBank Online as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **Online Banking and OTC** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `upay_online` | | Sandbox Testing | ✕ | | Refund API Support | ✕ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # UPI Source: https://docs.hitpayapp.com/payment-methods/upi Popular QR in India ## Overview | Detail | Description | | :- | :- | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 | | Presentment Currency (Currency displayed to your customer) | SGD | | Settlement Currency (Currency that you get paid out in) | SGD | | Minimum Amount | SGD 0.50 | | Maximum Amount | ₹1 lakh (standard); up to ₹5 lakh for specific categories | | Refund Supported | No | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ | | Supported Countries | ALL (Cross-border Payment Method) | | Transactions Fees | [Contact Sales](https://hitpayapp.com/contact-us) | ## Setup To set up UPI as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **UPI** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `upi_qr` | | Sandbox Testing | ✕ | | Refund API Support | ✕ | | Supports Embedded QR | ✓ | | Drop-in UI Support | ✓ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # VietQR Source: https://docs.hitpayapp.com/payment-methods/vietqr Popular QR in Vietnam ## Overview | Detail | Description | | :- | :- | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | Instant | | Presentment Currency (Currency displayed to your customer) | VND | | Settlement Currency (Currency that you get paid out in) | VND | | Minimum Amount | VND 15,000 | | Maximum Amount | VND 200,000,000 (\~US\$8,200) | | Daily Limit | Bank-specific limits (Please consult your bank) | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ | | Supported Countries | ALL (Cross-border Payment Method) | | Transactions Fees | [Contact Sales](https://hitpayapp.com/contact-us) | ## Setup To set up VietQR as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **VietQR** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `vietqr_payme` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✓ | | Drop-in UI Support | ✓ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # VietQR/ZaloPay Source: https://docs.hitpayapp.com/payment-methods/vietqrzalopay Popular E-wallet in Vietnam ## Overview VietQR/ZaloPay is the second-largest e-wallet in Vietnam, commanding around a 23% market share with about 21 million users as of early 2025. Users can pay directly from their ZaloPay wallet, eliminating the need for cash or physical cards. | Detail | Description | | :- | :- | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+3 | | Presentment Currency (Currency displayed to your customer) | VND | | Settlement Currency (Currency that you get paid out in) | VND | | Minimum Amount | VND 15,000 | | Maximum Amount | Contact Sales | | Refund Supported | Partial and Full | | Max Refund Period | 7 business days | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ | | Supported Countries | ALL (Cross-border Payment Method) | | Transactions Fees | [Contact Sales](https://hitpayapp.com/contact-us) | ## Setup To set up ZaloPay as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **ZaloPay** and complete the onboarding process. > [!NOTE] > > Activation takes 5-7 business days after completing the onboarding form. ## Developer Section | Feature | Description | | - | - | | Method Code (ZaloPay) | `zalopay` | | Method Code (VietQR via ZaloPay) | `vietqr_zalopay` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✓ | | Drop-in UI Support | ✓ | | Recurring Payments | ✓ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # Virtual Account (BRI, BNI, BSM, Mandiri, Permata, Danamon, CIMB, Bank Syariah Indonesia, DOKU) Source: https://docs.hitpayapp.com/payment-methods/virtualaccount Popular in Indonesia ## Overview | Detail | Description | | :- | :- | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 | | Presentment Currency (Currency displayed to your customer) | IDR | | Settlement Currency (Currency that you get paid out in) | IDR | | Minimum Amount | IDR 5,000 | | Maximum Amount | - | | Refund Supported | ✓ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✕ | | Supported Countries | Indonesia | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up Virtual Account (BRI, BNI, BSM, Mandiri, Permata, Danamon, CIMB, Bank Syariah Indonesia, DOKU) as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **VA and E-Wallets** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Developer Section | Feature | Description | | - | - | | Method Code | `doku_bri_va`, `doku_bni_va`, `doku_mandiri_va`, `doku_permata_va`, `doku_cimb_va`, `doku_danamon_va`, `doku_doku_va`, `doku_bri_direct_debit` | | Sandbox Testing | ✕ | | Refund API Support | ✓ | | Supports Embedded QR | ✕ | | Drop-in UI Support | ✕ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # WeChat Pay Source: https://docs.hitpayapp.com/payment-methods/wechatpay Accept payments from 1 billion+ WeChat users in Singapore, Malaysia, and Philippines ## Overview | Detail | Description | | - | - | | Fund Credit To | HitPay Wallet | | Charge Confirmation (When the funds reach your Available Balance) | T+1 (SG, PH) / T+2 (MY) | | Presentment Currency (Currency displayed to your customer) | SGD / MYR / PHP | | Settlement Currency (Currency that you get paid out in) | SGD / MYR / PHP | | Minimum Amount | SGD 0.10 / MYR 1.00 / PHP 1.00 | | Maximum Amount | - | | Refund Supported | ✕ | | Supported for online transactions | ✓ | | Supported for in-person transactions (Embedded QR Code) | ✓ | | Supported for recurring transactions | ✓ (Singapore only) | | Supported Countries | Singapore / Malaysia / Philippines | | Transactions Fees | [See Pricing Page](https://hitpayapp.com/pricing) | ## Setup To set up WeChat Pay as a payment method, follow these steps: 1. Navigate to **Settings** in your HitPay dashboard. 2. Click on **Payment Methods**. 3. Enable **WeChat Pay** and configure the necessary options. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/methods/paynow_settings.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ea8404e27ed1fe6cddc46ce1d059c142) ## Recurring Payments (Singapore) WeChat Pay now supports recurring payments for subscriptions, memberships, and other recurring services in Singapore. To enable WeChat Pay for recurring payments: 1. Navigate to **Payment Methods** in your dashboard. 2. Click on **WeChat Pay**. 3. Select **Enable Recurring Payments**. 4. Submit the required documentation. Once approved, your customers can use WeChat Pay for subscriptions and recurring billing. Learn more about [setting up subscriptions](/billing/subscriptions). ## Developer Section | Feature | Description | | - | - | | Method Code | `wechat_pay` | | Sandbox Testing | ✕ | | Refund API Support | ✕ | | Supports Embedded QR | ✓ | | Drop-in UI Support | ✓ | ## FAQs Coming soon. Please contact our support team if you have any questions - we are here to help. # Adaptive Pricing Source: https://docs.hitpayapp.com/payments/adaptive-pricing Accept payments in your home currency while international customers pay in theirs — no conversions, no surprises. ![HitPay checkout showing currency selector with SGD and IDR options alongside PayNow QR payment](https://mintcdn.com/hitpay/aMjoy_1gOFbRljxS/images/payments/adaptive-pricing-checkout.png?fit=max\&auto=format\&n=aMjoy_1gOFbRljxS\&q=85\&s=ad7dede108271f89361ffc7bd0f04f4c) ## Charge in your home currency. Let customers pay in theirs. HitPay Adaptive Pricing lets online merchants serve international customers without creating separate payment links per currency. When a customer from overseas lands on your hosted checkout, HitPay detects their location and automatically shows the amount in their local currency with local payment methods — while you still receive your home currency payout. > **[Get HitPay Adaptive Pricing](https://www.hitpay.com/signup)** > > Start accepting cross-border payments online > **[See how it works](#how-it-works)** > > Learn the simple checkout flow *** ## How It Works **1. Merchant creates a payment request in their home currency** You create a payment link or hosted checkout as normal, priced in your home currency (e.g. SGD 120). **2. Customer opens the checkout** HitPay detects the customer's location via IP address and determines their likely local currency (e.g. IDR, MYR, THB, PHP). **3. Customer sees and selects their local currency** If the detected currency differs from the merchant's default currency, the checkout displays a currency selector. The customer sees the converted amount in their local currency alongside relevant local payment methods. The FX rate is locked at page load and refreshes on reload. **4. Customer pays, merchant receives home currency** The customer pays in their local currency using their preferred local payment method. HitPay handles the FX conversion automatically and credits the merchant's payout in their home currency. *** ## Supported Payment Methods Without Adaptive Pricing, overseas customers can only pay by card in a foreign currency. Adaptive Pricing unlocks local payment methods — such as DuitNow, PromptPay, QR Ph, and VietQR — so customers pay in their own currency using methods they already trust. See the full list on the [Cross-Border Payments](/payments/cross-border-payments#supported-payment-methods) page. *** ## How to Set Up **1. Create a HitPay account** [Sign up for HitPay](https://www.hitpay.com/signup) if you haven't already, and complete account verification. **2. Enable cross-border payment methods** Navigate to **Settings > Payment Methods** and connect the cross-border payment methods you want to support (e.g. DuitNow, PromptPay, QR Ph, VietQR). > [!NOTE] > > Partner providers review new requests within 3–5 business days. **3. Enable Adaptive Pricing in Checkout Customisation** Go to **Settings > Checkout Customisation > Adaptive Pricing** and turn on the **Enable Adaptive Pricing** toggle. Save your settings. Once enabled, all hosted checkout sessions for your account will automatically activate adaptive pricing for international customers. *** ## How Fees Work > [!NOTE] > > **Example scenario:** A Singapore merchant charges SGD 100 to an overseas customer. > > 1. Merchant creates a payment request for **SGD 100** > 2. The customer opens the checkout link > 3. HitPay detects the customer's country from their IP and displays the equivalent in their **local currency**, with a local payment method as an option > 4. Customer selects their local currency, sees the converted amount, and pays with the local payment method > 5. Merchant receives payout in **SGD** #### Fees borne by Merchant | | ❌ Without Adaptive Pricing | ✅ With Adaptive Pricing | | - | - | - | | Payment method | Card only | Local payment method | | Payment method fee | 3.65% (overseas card) | 2% | | FX conversion fee | +2.00% | — | | **Total fees** | **5.65%** | **2%** | The FX conversion fee is an additional 2% charged on card transactions where the card's billing currency differs from the charge currency. Local payment methods processed via Adaptive Pricing are not subject to this fee, which is why it disappears in the With Adaptive Pricing column. > [!NOTE] > > Your settlement amount is the customer's IDR payment converted back to SGD at the time of settlement. Because the IDR→SGD rate may differ slightly from the SGD→IDR rate shown at checkout, the amount settled may be marginally less than the original SGD 100 requested — before fees are deducted. Your HitPay dashboard shows the exact settlement and net amounts for each transaction. > [!NOTE] > > **Adaptive Pricing also works with cards — and still improves conversion.** When customers see the price in their local currency, they are more likely to complete the purchase even if they choose to pay by card. Fee breakdown for card payments with Adaptive Pricing: > > | Fee | Rate | > | - | - | > | Payment method fee (overseas card) | 3.65% | > | FX conversion fee | +2.00% | > | **Total** | **5.65%** | #### Fees borne by Customer | | ❌ Without Adaptive Pricing | ✅ With Adaptive Pricing | | - | - | - | | Pays in | SGD (merchant's currency) | IDR (own currency) | | Bank FX surcharge | \~4–5% charged by customer's bank | None | | Transparency | Customer sees SGD amount only | Customer sees exact IDR amount upfront | > [!NOTE] > > Without Adaptive Pricing, the Indonesian customer's bank performs the SGD→IDR conversion and typically charges a 4–5% FX surcharge on top of an unfavourable rate — a hidden cost the customer only sees on their bank statement. With Adaptive Pricing, the customer pays in IDR at the mid-market rate with no bank FX fee, and the merchant's payout in SGD is unaffected. *** ## Restrictions Adaptive Pricing is **not available** for the following: * **Default payment link** — The default payment link on your account does not support Adaptive Pricing. * **Open amount payment links** — Payment links without a fixed amount set are not eligible for currency conversion. *** ## Frequently Asked Questions > **Which customers see the currency selector?** > > Only customers whose detected country maps to a currency that differs from the merchant's default currency. Domestic customers (same currency as the merchant) see the standard checkout with no currency selector. > **How is the exchange rate determined?** > > The rate is based on the **mid-market exchange rate** at the time the checkout page loads. The FX rate and associated FX cost are borne by the customer — the merchant always receives their payout in their home currency. The rate is locked for the duration of that checkout session and refreshes when the customer reloads the page. > **What if a customer's currency is not supported?** > > If the detected currency is not supported or matches the merchant's default currency, the checkout falls back to showing only the merchant's default currency and payment methods — no currency selector is shown. > **Does Adaptive Pricing work with API-created payment requests?** > > Yes. Payment requests created via the API also support adaptive pricing on the hosted checkout, as long as Adaptive Pricing is enabled in your Checkout Customisation settings. > **Does Adaptive Pricing work with recurring billing or subscriptions?** > > No. Adaptive Pricing is currently available for one-time hosted checkout payments only. Recurring billing and subscription charges are out of scope for this feature. > **Will my customer be charged exactly the amount shown at checkout?** > > It depends on how they pay. > > **Local payment method (e.g. DuitNow, PromptPay):** Yes — the customer pays exactly the local currency amount displayed at checkout. HitPay does not add any charges on top of what is shown. Your customers can confidently share this with their own customers. > > **Card:** The customer is charged the displayed local currency amount by HitPay. However, if their card issuer applies a foreign transaction fee or uses their own exchange rate, an additional charge may appear on the customer's bank statement. This is outside HitPay's control and varies by the customer's bank and card type. > **What card fees apply with Adaptive Pricing?** > > Card fees are borne by the merchant, not the customer. When a customer pays by card with Adaptive Pricing enabled, the merchant is charged: > > | Fee | Rate | > | - | - | > | Payment method fee (overseas card) | 3.65% | > | FX conversion fee | +2.00% | > | **Total** | **5.65%** | > > The FX conversion fee applies because the card's billing currency differs from the charge currency. This is the same rate as without Adaptive Pricing — the benefit for cards is improved conversion, since customers are more likely to complete a purchase when they see the price in their local currency. > **What is the payout period?** > > Cross-border payments processed via Adaptive Pricing are credited to your HitPay Balance on a **T+1 calendar day** basis. *** ## Testing To test local currency presentment, pass a location-formatted email address that includes a `+location_XX` suffix — where `XX` is a valid two-letter ISO country code — as the customer email when creating a payment request. For example, to simulate a customer in France, use an email like `test+location_FR@example.com`. When the checkout is opened, HitPay will present the currency as a customer in that country would see it. You can do this in two ways: * **API** — Set the `email` field to a location-formatted address when creating a payment request via the [Payment Request API](/apis/guide/cross-border-payments). * **Dashboard** — When sending a payment link by email, enter a location-formatted address (e.g. `test+location_ID@example.com`) in the email field. *** ## For Developers > **[Payment Request API](/apis/guide/cross-border-payments)** > > Integrate adaptive pricing into your custom checkout via the Payment Request API. The `localised_pricing` parameter enables currency selection on the hosted checkout page. # Admin Fees Source: https://docs.hitpayapp.com/payments/admin-fees Configure pass-the-fees surcharge to add processing fees to checkout by payment method ## Overview Dynamically update the checkout pricing by adding administrative fees to the final amount based on the selected payment method. With HitPay's Pass-the-Fees feature, you can now include a surcharge fee in the form of a fixed percentage (%). This feature can be customized for specific payment methods and HitPay sales channels (such as Shopify, WooCommerce, Payment Links, etc.). ![Admin Fees configuration in Checkout Customisation](https://mintcdn.com/hitpay/v7KuLHsxaSTGqgHq/images/payments/admin-fees.png?fit=max\&auto=format\&n=v7KuLHsxaSTGqgHq\&q=85\&s=c30a073db3f05a01249f076687e98306) ## Activate Pass-the-Fees > [!NOTE] > > Pass-the-Fees works for both online payments and HitPay Point of Sale. To add a surcharge from the HitPay POS app at checkout, see [POS surcharge](/pos/surcharge). 1. Navigate to Settings > Checkout Customization. 2. Configure the Pass-the-Fees settings. 3. Choose which payment methods you want to apply the payment processing fees to be passed on to the customer. 4. Enter the surcharge percentage and select the HitPay sales channel for which you want the Pass-the-Fee function to be applicable. 5. Specify the sales channels where you want to apply the Pass-the-Fee feature. 6. Enter the text you wish to display to the customer. 7. Click "Save." **Sample HitPay Checkout Page with Pass-the-Fees Enabled** ![Sample HitPay checkout page with Pass-the-Fees enabled](https://mintcdn.com/hitpay/v7KuLHsxaSTGqgHq/images/payments/admin-fees-checkout.png?fit=max\&auto=format\&n=v7KuLHsxaSTGqgHq\&q=85\&s=584f2e176bc92dafb787384704d34df8) ### Note on Fees > [!NOTE] > > Note: HitPay transaction fees are applied on the final amount, after the surcharge fee has been added. Example: * A product is \$100 * You've set a 5% fees * The final amount on the payment page will reflect \$105 * HitPay transaction fees are then applied on \$105 (Not \$100) Hence, do set the % accordingly. ## Supported Sales Channels You can apply Pass-the-Fees to any of the following HitPay sales channels: * Payment Links * Invoice * Recurring Billing * HitPay Online Store * Payment Request APIs * Point of Sale * Shopify Payments App * Wix Payments App * WooCommerce Plugin * Prestashop * Magento * Ecwid * OpenCart * Xero * Google Forms * WHCMS * Odoo * Give WP * Cal.com ## Restrictions > [!WARNING] > > Admin fees cannot be applied to **PayNow** payments. Under the [Association of Banks in Singapore (ABS) guidelines](https://abs.org.sg/docs/library/merchant-surcharge-prohibition-faq.pdf), merchants may not impose any surcharge or additional fee on PayNow transactions. HitPay does not apply admin fees to PayNow, even if it was previously enabled. > [!WARNING] > > Admin fees are not supported for businesses in the **Philippines**. To comply with the Department of Trade and Industry (DTI) Department Administrative Order (DAO) No. 21-03 and DAO No. 10, Series of 2006, HitPay removed the Admin Fee feature for Philippine businesses on 14 July 2026. Customers are charged only the purchase amount. ## Foreign Currency Support Admin Fees now also apply when a customer checks out in a foreign currency via [Adaptive Pricing](/payments/adaptive-pricing). If both features are enabled, the same admin fee percentage configured for a payment method is applied on top of the converted (foreign currency) amount shown to the customer, rather than only on your base currency amount. > [!NOTE] > > The admin fee percentage is set once per payment method and is not configurable separately per currency — the same rate is reused for the converted amount. Example: * Your base currency is SGD and a product is priced at SGD 100 * You've set a 5% admin fee * A customer checking out in USD sees the converted amount (e.g. USD 74) plus the same 5% admin fee applied on top of that converted amount * HitPay transaction fees are then applied on the final surcharged amount, same as base-currency checkouts > [!NOTE] > > Admin fees on foreign currency checkouts only apply to fixed-amount payment requests. Payment requests with an editable amount or currency do not show or apply the admin fee. ## FAQs > **Can I pass the exact fees that HitPay charges to the user?** > > No, it is not possible to pass the exact fees that HitPay charges because the fees depend on various factors that are hard to predict before the payment. It is recommended that you set an approximate fee based on your average order value. You can use the example widget to view the approximate values. > **Can I add an admin fee to PayNow payments?** > > No. The [Association of Banks in Singapore (ABS) guidelines](https://abs.org.sg/docs/library/merchant-surcharge-prohibition-faq.pdf) prohibit merchants from imposing any surcharge or additional fee on PayNow transactions. If you previously enabled an admin fee for PayNow, HitPay has removed it from your checkout. No action is needed from you, and your checkout continues to work as usual without the fee on PayNow. > **Are admin fees available for businesses in the Philippines?** > > No. To comply with the Department of Trade and Industry (DTI) Department Administrative Order (DAO) No. 21-03 and DAO No. 10, Series of 2006, HitPay removed the Admin Fee feature for businesses in the Philippines on 14 July 2026. Admin fees are no longer applied to transactions, and customers are charged only the purchase amount. No action is needed from you. > **Does the admin fee apply when a customer pays in a foreign currency?** > > Yes, if you have Adaptive Pricing enabled. The same admin fee percentage you've configured for a payment method is applied to the converted foreign currency amount shown at checkout. # Checkout Customisation Source: https://docs.hitpayapp.com/payments/checkout-customisation Fully customise your online checkout experience ## Overview Customizing the checkout process is essential for maintaining your brand's identity and improving the user experience. With the Checkout Customization option, you can tailor the appearance of the checkout page to match your brand's aesthetics. This includes selecting the preferred payment gateway and configuring various elements of the checkout page to align with your design preferences. The following rules can be customized by HitPay merchants: * Themes, including your logo * Customer Information * Enable/Disable [Pass-the-fee](/payments/admin-fees) per Payment Method * Display Payment Methods by Order of Preference * Checkout Rules To enable rules in HitPay Smart Checkout, navigate to **Settings > Checkout Customisation** in the HitPay dashboard. ![Checkout Customisation Themes](https://mintcdn.com/hitpay/aWCuB2F7VHnUWQIp/images/payments/checkout-customisation-themes.png?fit=max\&auto=format\&n=aWCuB2F7VHnUWQIp\&q=85\&s=de8cfc15ce5b259ee522685cf13a093f) > [!NOTE] > > All the settings saved here will be applicable to all your HitPay Sales Channels/Integrations ## Themes ### Logo Show your business logo at the top of the checkout page. * **Upload Logo**: Upload or remove your business logo * **Logo display**: Choose **Logo + Business Name** to show your business name next to the logo, or **Logo Only** if your logo already includes your name or is a symbol on its own * **Logo size**: Choose how large the logo appears on the checkout page * **Standard**: A small logo at the top of the page. This is the default. * **Large**: A bigger logo at the top of the page * **Featured**: A prominent logo centred above the payment amount > [!TIP] > > Logos are scaled down on mobile so they fit smaller screens. With **Featured**, wide logos such as wordmarks are shown slightly smaller so they don't crowd the page. ### Payment Methods Alignment Control how payment method options are laid out on the checkout page. Three options are available: * **Automatic (Recommended)** — HitPay automatically selects the best layout based on the number of payment methods enabled * **Horizontal** — Payment methods are displayed side by side in a row * **Vertical** — Payment methods are stacked in a single column ### Mode Choose the colour mode for your checkout page: * **Light** — Always display the checkout in light mode * **Dark** — Always display the checkout in dark mode * **System** — Follows the customer's device preference (light or dark) ### Select Theme * **Default** — Use the standard HitPay checkout theme * **Custom** — Define your own brand colours using the custom colour picker ## Enable/Disable Pass-the-fee per Payment Method This [guide](/payments/admin-fees) provides a detailed walkthrough on how to enable the pass-the-fee feature for specific payment methods during the checkout process. You'll have the flexibility to select the payment methods for which you want to activate this feature. Set the desired percentage rate to be charged to customers and specify the Sales Channels where these settings should be applied. Additionally, you can customize the text description that will be displayed to customers during checkout. ## Displaying Payment Methods by Preference On the HitPay checkout page, you have the ability to arrange payment methods in a specific order based on preference. Only the payment methods that are enabled by you will appear on the checkout page. You can set the order of the payment methods displayed by dragging the payment methods from right to left. The rightmost payment method will be the first one displayed to the customer during checkout. > [!NOTE] > > The chosen order of payment methods will apply across all your HitPay Sales Channels and Integrations. ## Checkout Rules ### Enable/Disable Payment Methods by Total Checkout/Order Amount Adding Payment Method Amount Rules - You have the flexibility to define up to three payment method amount rules. Each rule lets you specify the range of checkout amounts for which a particular payment method will be enabled or disabled: For instance, you might set the following rule: * **Minimum Amount**: \$0 * **Maximum Amount**: \$1000 * **Payment Method**: PayNow This means that customers with a total checkout amount between **\$0 - 1000** will see the PayNow payment method as an option. Beyond this range, the payment method will automatically be disabled. > [!NOTE] > > Any rules you set will apply across all your HitPay sales channels and integrations. ### Display Payment Methods Based on Device You can also tailor the payment methods presented to customers based on the device they are using for payment. You can customize the available payment methods separately for both Mobile and Desktop devices. This level of customization ensures a seamless and optimized payment experience for customers depending on the device they're using. > [!NOTE] > > The device-based rules you set will be effective across all your HitPay sales channels and integrations. ## Custom Checkout Fields For Payment Links, you can also collect your own custom questions at checkout, alongside standard fields like customer name, business address, and phone number. Navigate to **Payment links > Settings > Custom Fields** to set the default set of fields new payment links are created with. > [!NOTE] > > This template only seeds fields into a payment link at the moment it's created. Editing the template later doesn't change fields on links that already exist — edit those links directly instead. See [Custom Checkout Fields](/payment-links/payment-links#custom-checkout-fields) for supported field types, per-link configuration, and how to view and export customer responses. ## FAQs > **Can I pass the exact fees that Hitpay charges to the user?** > > No, it is not possible to pass the exact fees that Hitpay charges because the fees depend on various factors that are hard to predict before the payment. It is recommended that you set an approximate fee based on your average order value. You can use the example widget to view the approximate values. # Overview Source: https://docs.hitpayapp.com/payments/cross-border-payments Sell to international customers with the right HitPay product for your use case. # Cross-Border Payments HitPay offers multiple ways to accept payments from international customers. The right product depends on where you're selling and how you want to price. *** ## Supported Payment Methods These cross-border payment methods are available across HitPay's products. | Payment Method | Popular In | Customers Pay In | Online | In-Person (QR) | | :- | :- | :- | :-: | :-: | | [PayNow](/payment-methods/paynow) | Singapore | SGD | ✓ | ✓ | | [UPI](/payment-methods/upi) | India | SGD | ✓ | ✓ | | [WeChat Pay](/payment-methods/wechatpay) | China | SGD / MYR | ✓ | ✓ | | [Touch 'n Go](/payment-methods/touchngo) | Malaysia | MYR | ✓ | ✕ | | [DuitNow](/payment-methods/duitnow) | Malaysia | MYR | ✓ | ✓ | | [QRPH](/payment-methods/qrph) | Philippines | PHP | ✓ | ✓ | | [VietQR / ZaloPay](/payment-methods/vietqrzalopay) | Vietnam | VND | ✓ | ✓ | | [PromptPay](/payment-methods/promptpay) | Thailand | THB | ✓ | ✓ | | [TrueMoney](/payment-methods/truemoney) | Thailand | THB | ✓ | ✓ | | [LINE Pay](/payment-methods/linepay) | Thailand | THB | ✓ | ✓ | | [PayCo](/payment-methods/korean-payment-methods) | South Korea | KRW | ✓ | ✕ | | [KakaoPay](/payment-methods/korean-payment-methods) | South Korea | KRW | ✓ | ✕ | | [NaverPay](/payment-methods/korean-payment-methods) | South Korea | KRW | ✓ | ✕ | *** ## Cross-Border Solutions > **[Borderless QR](/pos/borderless-qr)** > > In-personFixed storefront > > Charge in your home currency. Customers scan and pay in their local currency using their home payment app. Best for physical stores serving foreign tourists. > **[Multi-Currency Products](/pos/multi-currency-products)** > > In-personSelling overseas > > Price products in the local currency of the country you're operating in. Best for merchants at overseas popup booths, markets, and events. > **[Adaptive Pricing](/payments/adaptive-pricing)** > > OnlinePriced in your currency > > Charge in your home currency. International customers automatically see and pay in their local currency at checkout. Best for online stores priced in the merchant's currency. > **[Multi-Currency Payment Links](/payments/checkout-customisation)** > > OnlinePriced in customer's currency > > Create payment links denominated in the customer's currency. Best for merchants who quote prices directly in the buyer's local currency. > **[Building a custom integration?](/apis/guide/cross-border-payments)** > > See the Developer Cross-Border Guide to compare Borderless QR API vs Payment Request API. *** ## Which Product Is Right for You? | | Borderless QR | Multi-Currency Products | Adaptive Pricing | Multi-Currency Payment Links | | - | - | - | - | - | | **Channel** | In-person (POS) | In-person (POS) | Online | Online | | **Who's it for** | Fixed storefront serving tourists | Merchant traveling overseas | Online store, priced in home currency | Online store, priced in customer's currency | | **You charge in** | Your home currency | The foreign currency | Your home currency | Customer's currency | | **Customer pays in** | Their local currency | Their local currency | Their local currency | Their local currency | | **FX handled by** | HitPay (automatic) | You set the price | HitPay (automatic) | You set the price | | **Payout currency** | Your home currency | Your home currency | Your home currency | Your home currency | *** ## Refunds *** ## Frequently Asked Questions > **What fees apply to cross-border payments?** > > A **1% FX markup** is applied on top of the mid-market rate when HitPay handles the currency conversion (Borderless QR and Adaptive Pricing). Standard payment processing fees also apply. > > For Multi-Currency Products and Multi-Currency Payment Links, you set the price directly in the customer's currency — no automatic FX conversion is applied by HitPay. > > Customers are not charged any additional FX fees. > **How is the exchange rate determined?** > > HitPay uses the **mid-market exchange rate**, plus a 1% markup. The rate is refreshed daily at **6:00 AM SGT** and cached for the rest of the day — so all transactions, settlements, and refunds processed within the same day use the same rate. > **When do I receive my payout?** > > Cross-border payments are credited to your HitPay Balance on a **T+1 calendar day** basis. The collected amount is automatically converted to your home currency and included in your daily payout. > **How do refunds work for cross-border payments?** > > The refund is issued in the charge currency. The amount deducted from your home currency wallet is converted at the **live exchange rate at the time of refund** — not the rate from the original transaction. This means you may experience a small FX gain or loss depending on how rates have moved. > **How do I enable cross-border payment methods?** > > Go to **Settings > Payment Methods**, click **Connect** on the desired payment method and complete the required information. Partner providers review new requests within 3–5 business days. > > Once activated, go to **Integrations**, select your integration, and enable the payment methods for that sales channel. > **Do I need additional hardware for in-person cross-border payments?** > > No. Borderless QR and Multi-Currency Products work with the existing HitPay POS app. No additional hardware is required. # Payments Source: https://docs.hitpayapp.com/payments/payments HitPay's versatile payment solutions enable secure and convenient payments across online and in-person channels. Our integrated payment providers support seamless transactions for eCommerce, point-of-sale, invoices, and recurring subscriptions with multiple payment methods to enhance customer flexibility and improve conversion rates. ## Overview Before you can start accepting payments using any of HitPay's products, you'll need to set up your payment methods and complete business verification. These are parallel steps, but both are required before payments can go live. HitPay supports a wide range of local and cross-border payment methods for both online and in-person transactions, giving your customers flexibility whether they're shopping on your website or at your physical store. This guide helps you understand the available payment methods, their activation times, and how to enable them for your business. ## Activate Payment Methods **1. Navigate to Payment Methods** Go to **Payments > Payment Methods** ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/payment_methods.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=b8e93cc57a6056edf8cc965c854a1aed) **2. Connect Payment Method** Click **Connect** on your preferred method **3. Complete Setup** Submit any required details > [!NOTE] > > Once submitted, our partner providers will typically process your activation within 3–5 business days. ## Supported Payment Methods The following payment methods are available and supported by HitPay across different countries: **Singapore** 🇸🇬 Local | Payment Method | Supported Currencies | Activation Time | Charge Confirmed (This refers to the time it takes for the charge to be confirmed and for it to move from Pending to Available Balance. A charge can only be refunded once it has been confirmed.) | Recurring Payments | | :- | :- | :- | :- | :- | | [PayNow QR](/payment-methods/paynow) | SGD | Auto | Instant | No | | Cards (Visa, Mastercard, American Express, UnionPay, Apple Pay, Google Pay) | All (Check below for full list) | Instant | Instant | Yes | | [GrabPay](/payment-methods/grabpay) | SGD | 3-5 business days | T+1 | Yes | | [GrabPay PayLater](/payment-methods/grabpay_paylater) | SGD | 3-5 business days | T+1 | No | | [ShopeePay](/payment-methods/shopeepay) | SGD | 3-5 business days | T+1 | Yes | | [SPayLater](/payment-methods/spaylater) | SGD | 3-5 business days | T+1 | Yes | | [ShopBack Pay](/payment-methods/shopback) | SGD | 3-5 business days | T+1 | No | | [Atome](/payment-methods/atome) | SGD | 3-5 business days | T+1 | No | 🌍 Cross-Border | Payment Method | Supported Currencies | Activation Time | Charge Confirmed (This refers to the time it takes for the charge to be confirmed and for it to move from Pending to Available Balance. A charge can only be refunded once it has been confirmed.) | Recurring Payments | | :- | :- | :- | :- | :- | | [UPI](/payment-methods/upi) | SGD | Auto | T+1 | No | | [QRPH](/payment-methods/qrph) | PHP | Auto | T+3 | No | | [Touch 'n Go](/payment-methods/touchngo) | MYR | Auto | T+3 | Yes | | [DuitNow](/payment-methods/duitnow) | MYR | Auto | T+3 | No | | [PayCo, KakaoPay, LINEPay](/korean-payment-methods/) | KRW | Auto | T+1 | No | | [WeChatPay](/payment-methods/wechatpay) | SGD | Instant | T+1 | Yes | | [PromptPay](/payment-methods/promptpay_thailand) | THB | 3-5 business days | T+3 | No | | [TrueMoney](/payment-methods/truemoney) | THB | 3-5 business days | T+3 | No | | [LINE Pay](/payment-methods/linepay) | THB | 5-7 business days | T+5 | Yes | | [VietQR, ZaloPay](/payment-methods/vietqrzalopay) | VND | 5-7 business days | T+3 | Yes | **Malaysia** 🇲🇾 Local | Payment Method | Supported Currencies | Activation Time | Charge Confirmed (This refers to the time it takes for the charge to be confirmed and for it to move from Pending to Available Balance. A charge can only be refunded once it has been confirmed.) | Recurring Payments | | :- | :- | :- | :- | :- | | [Touch 'n Go](/payment-methods/touchngo) | MYR | Auto | T+2 | Yes | | [DuitNow](/payment-methods/duitnow) | MYR | Auto | T+2 | No | | Cards (Visa, Mastercard, UnionPay, Apple Pay, Google Pay) | All (Check below for full list) | Instant | Instant | No | | [FPX](/payment-methods/fpx) | MYR | Instant | Instant | No | | [WeChat Pay](/payment-methods/wechatpay) | MYR | Instant | T+2 | No | | [ShopBack Pay](/payment-methods/shopback) | MYR | 3-5 business days | T+2 | No | | [MayBank QR](/payment-methods/maybankqr) | MYR | 3-5 business days | T+2 | No | | [AliPay](/payment-methods/alipay) | MYR | 3-5 business days | T+2 | No | | [GrabPay](/payment-methods/grabpay) | MYR | 4-5 business days | T+2 | Yes | | [GrabPay PayLater](/payment-methods/grabpay_paylater) | MYR | 4-5 business days | T+2 | No | | [Atome](/payment-methods/atome) | MYR | 5-6 business days | T+2 | No | | [ShopeePay](/payment-methods/shopeepay) | MYR | 30 business days | T+2 | Yes | | [SPayLater](/payment-methods/spaylater) | MYR | 30 business days | T+2 | No | 🌍 Cross-Border | Payment Method | Supported Currencies | Activation Time | Charge Confirmed (This refers to the time it takes for the charge to be confirmed and for it to move from Pending to Available Balance. A charge can only be refunded once it has been confirmed.) | Recurring Payments | | :- | :- | :- | :- | :- | | [PayNow QR](/payment-methods/paynow) | SGD | Auto | T+3 | No | | [PayCo, KakaoPay, LINEPay](/korean-payment-methods/) | KRW | Auto | T+1 | No | | [UPI](/payment-methods/upi) | SGD | Auto | T+1 | No | | [PromptPay](/payment-methods/promptpay_thailand) | THB | 3-5 business days | T+3 | No | | [TrueMoney](/payment-methods/truemoney) | THB | 3-5 business days | T+3 | No | | [LINE Pay](/payment-methods/linepay) | THB | 5-7 business days | T+5 | Yes | | [VietQR, ZaloPay](/payment-methods/vietqrzalopay) | VND | 5-7 business days | T+3 | No | **Philippines** 🇵🇭 Local | Payment Method | Supported Currencies | Activation Time | Charge Confirmed (This refers to the time it takes for the charge to be confirmed and for it to move from Pending to Available Balance. A charge can only be refunded once it has been confirmed.) | Recurring Payments | | :- | :- | :- | :- | :- | | [QRPH](/payment-methods/qrph) | PHP | Instant | T+1 | No | | [Gcash](/payment-methods/gcash) | PHP | 3-7 business days | T+1 | No | | Cards (Online) (Visa, Mastercard) | PHP | 3-5 business days | T+7 | No | | Cards (In-Person) (Visa, Mastercard) | PHP | 3-5 business days | T+2 | No | | [ShopeePay](/payment-methods/shopeepay) | PHP | 5-7 business days | T+2 | Yes | | [SPayLater](/payment-methods/spaylater) | PHP | 5-7 business days | T+2 | No | | [Unionbank Online](/payment-methods/unionbank_online) | PHP | Instant | T+1 | No | | [PESONet](/payment-methods/pesonet) | PHP | Instant | T+1 | No | | [BillEase](/payment-methods/billease) | PHP | 3-7 business days | T+1 | No | | [GrabPay](/payment-methods/grabpay) | PHP | 3-5 business days | T+1 | No | | [Over the counter payments (Bayad, ECPay, Palawan, Instapay)](/payment-methods/overthecounter_bayad_ecpay_palawan_instapay) | PHP | Instant | T+1 | No | 🌍 Cross-Border | Payment Method | Supported Currencies | Activation Time | Charge Confirmed (This refers to the time it takes for the charge to be confirmed and for it to move from Pending to Available Balance. A charge can only be refunded once it has been confirmed.) | Recurring Payments | | :- | :- | :- | :- | :- | | [PayNow QR](/payment-methods/paynow) | SGD | Auto | T+3 | No | | [Touch 'n Go](/payment-methods/touchngo) | MYR | Auto | T+3 | No | | [DuitNow](/payment-methods/duitnow) | MYR | Auto | T+3 | No | | [PayCo, KakaoPay, LINEPay](/korean-payment-methods/) | KRW | Auto | T+1 | No | | [UPI](/payment-methods/upi) | SGD | Auto | T+1 | No | | [WeChatPay](/payment-methods/wechatpay) | PHP | Instant | T+1 | No | | [PromptPay](/payment-methods/promptpay_thailand) | THB | 3-5 business days | T+3 | No | | [TrueMoney](/payment-methods/truemoney) | THB | 3-5 business days | T+3 | No | | [LINE Pay](/payment-methods/linepay) | THB | 5-7 business days | T+5 | Yes | | [VietQR, ZaloPay](/payment-methods/vietqrzalopay) | VND | 5-7 business days | T+3 | No | ## Checkout Experience Once your payment methods are set up and activated, they will be available across all your sales channels. For online payments, HitPay offers a hosted checkout experience where all enabled payment methods are automatically displayed. For in-person payments, your activated methods will appear on your POS terminal or QR code displays. This provides your customers with a seamless payment experience whether they're shopping online or in-store. **Online Checkout** ![Online Checkout Page](https://mintcdn.com/hitpay/v7KuLHsxaSTGqgHq/images/payments/admin-fees-checkout.png?fit=max\&auto=format\&n=v7KuLHsxaSTGqgHq\&q=85\&s=584f2e176bc92dafb787384704d34df8) **Mobile POS App** ![HitPay Mobile App](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/hitpay-app-hero-updated.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=ca47988f74be2a14376bc321068ac051) ![Mobile POS App Checkout](https://mintcdn.com/hitpay/C7v-tU0hjbPk6EwO/images/checkout_mobile_pos.png?fit=max\&auto=format\&n=C7v-tU0hjbPk6EwO\&q=85\&s=95e150d46f13ec1af76998acec1c4994) Learn more about [Mobile POS](/pos/overview). **Web POS** ![Web POS Checkout](https://mintcdn.com/hitpay/C7v-tU0hjbPk6EwO/images/checkout_web_pos.png?fit=max\&auto=format\&n=C7v-tU0hjbPk6EwO\&q=85\&s=a6d0945511bffdc9d7752f655d80d524) Learn more about [Web POS](/pos/overview). **Card Terminal** ![Sunmi V3 All-in-One Terminal](https://mintcdn.com/hitpay/PmXByZo0OdaFaQII/images/readers/sunmi-v3.png?fit=max\&auto=format\&n=PmXByZo0OdaFaQII\&q=85\&s=fb63eebf7dbb21550d2c17ed0d7111ad) For more payment acceptance options via HitPay Terminals, see [Terminals & Devices](/pos/readers/overview). **Static QR** ![Static QR Payment](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/payments/staticqr.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=69a08c54afcc9c732d9c19b00b487b48) Learn more about [Static QRs](/static-qrs/static-qr#static-qrs). **Recurring Billing** ![Recurring Billing](https://mintcdn.com/hitpay/-cD8HWd1uePmhk98/images/recurring-ui-cards.png?fit=max\&auto=format\&n=-cD8HWd1uePmhk98\&q=85\&s=59560ce0947fe25c22d92e213eb0f8cd) Learn more about [Recurring Billing](/apis/guide/recurring-billing). **Soundbox** ![Soundbox Payment Notification](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/Received-Notif-Soundbox.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=7cb65c228b28413fd13ff0b1ec388713) Learn more about [Soundbox](/pos/readers/soundbox). ## Next Steps Now that you have set up your payment methods, here are your next steps to start accepting payments: > **[API Integration](/apis/overview)** > > Build custom integrations using our REST APIs to create payment flows, manage customers, and handle webhooks for real-time updates. > **[Plugins & Integrations](/plugins/overview)** > > Use our ready-made plugins for popular platforms like Shopify, WooCommerce, Wix, and more to quickly integrate payments into your existing store. > **[HitPay Tools](/payment-links/payment-links)** > > Create payment links, invoices, and use our hosted checkout to start accepting payments immediately without any technical setup. ## FAQs > **Customer payment is not showing on my HitPay dashboard. What should I do?** > > If a customer's payment is missing, please: > > 1. **Check the card statement** for confirmation if it was a card payment. > > 2. **Send us the transaction details**: > > * Timestamp > * Customer email > * Screenshot or receipt > Send the details to [support@hit-pay.com](mailto:support@hit-pay.com) for investigation. > **What Charges/Fees are involved when using HitPay?** > > HitPay only charges a transaction fee per successful payment. There are no hidden, rental, or monthly fees. [View pricing](https://www.hitpayapp.com/pricing). > **When do I get paid by HitPay?** > > Payouts are made automatically to your bank account based on your payout schedule. Check your payout details under **Sales and Reports > Bank Payouts**. [More info](/bank-payouts/bank-payouts). > **When does the checkout page expire?** > > Checkout pages automatically expire after 5 minutes across all plugins and payment links. For other questions, reach out to [support@hit-pay.com](mailto:support@hit-pay.com). # Refunds and Chargebacks Source: https://docs.hitpayapp.com/payments/refund Guidelines for processing refunds and chargebacks with HitPay ![Refunds](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Refunds.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=9210f3b9a4455e1e0eaf07e9f95f6ff2) ## Refund Process The refund process streamlines managing and processing HitPay order refunds. This guide outlines steps for seamless handling and offers vital information. It's important to maintain sufficient balance in your HitPay account (for non-card payments) and Stripe accounts (for card payments) to execute refunds. If your HitPay account balance is insufficient, navigate to **Bank Payouts > HitPay Balance** and click **Top Up** to top up manually. > [!NOTE] > > Topping up your HitPay balance is available for businesses in Singapore, Malaysia, and the Philippines. See [Balance Top Up](/getting-started/wallet-balances#balance-top-up) for the methods and fees per country. Refunds can be processed within specific time periods. Refer to the table below for details regarding refund processing time and the maximum allowable refund period for each payment method available on HitPay, along with the source from which refunds are deducted: > [!NOTE] > > Please note that fees are not refunded ### How to Process Refunds **Web Dashboard** #### Step-By-Step Refund Process for Desktop Follow these steps to process refunds using HitPay: 1. Navigate to **Transactions** 2. Click on the transaction that you would like to refund 3. Click on the **Refund** button 4. Click on the **Confirm** button and wait for the refund success message > [!NOTE] > > If you want to fully refund the transaction, leave the refund amount field **empty** or enter the specific refund amount if you want to partially refund the transaction. **POS App** #### Step-By-Step Refund Process for POS Mobile App 1. Navigate to **Transactions** tab 2. Click on the transaction that you would like to refund 3. Click on the **Refund** button 4. Input the amount you'd like to refund then click on the **Confirm** button and wait for the refund success message ### Understanding Refund Errors When attempting to process a refund on HitPay transactions, you might encounter errors due to two main reasons: 1. **Insufficient Funds**: If your HitPay balance does not have the necessary funds to cover the refund amount. 2. **Exceeded Refund Period**: If the refund surpasses the allowable refund period. 3. **Unconfirmed Charge**: Every payment method has its own charge confirmation time. This is the time it takes for the charge to move from your "Pending" to "Available to Payout" wallet balance. Charges can only be refunded after it has been confirmed. See [charge confirmation times here](/payments#supported-payment-methods). 4. **Refund Not Supported**: Some payment providers do not support refunds. This includes Atome (MY), WeChatPay (MY, PH), PromptPay, QRPH (PH), Unionbank Online, PESONet, InstaPay, and Over the Counter payments (PH). To verify your HitPay balance, navigate to **Bank Payouts > HitPay Balance**. For a successful refund, ensure that your **Available to Pay Out** balance or your **Reserves** balance holds at least the amount you intend to refund. If the balance isn't sufficient, you can wait for new transactions to come into your HitPay account, or you can manually top up your balance. Furthermore, refunds must be executed within a designated timeframe. Refer to the table above to confirm the maximum refund period for each payment method. In cases where a refund surpasses the permissible time window, consider an alternative approach. You can initiate a direct transfer to the customer instead. ## Refunds with Multi-Currency Charges ## Chargebacks ### Understanding Chargebacks A chargeback, also referred to as a dispute, arises when a cardholder questions a payment with their card issuer (usually their bank). The card issuer initiates a formal dispute, resulting in an immediate reversal of the payment. This reversal includes both the original payment amount and an additional dispute fee mandated by the card network. The deduction is made from your HitPay account. During the dispute resolution process, HitPay deducts the original payment amount along with an administrative fee. If the dispute is resolved in your favor, the disputed payment amount and administrative fee are returned to you. However, if the dispute is upheld, the decision of the card issuer prevails, and the cardholder's payment remains refunded. ### Challenging a Dispute If you wish to challenge a card dispute, please send an email to [support@hit-pay.com](mailto:support@hit-pay.com) with the following subject header: **Dispute Response: (Business Name)** Include supporting documents or evidence relevant to the dispute category. For assistance in preparing a dispute challenge, consult the guidance on this page: [Dispute Category Types](https://stripe.com/docs/disputes/categories#dispute-category-types). ![Chargeback Process](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Chargeback-Process.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=9c52f1ce85723073eece06b920ffee79) ### Chargeback Fees and Liability In the event of a chargeback, both the chargeback fee and the complete original transaction amount will be reversed from your merchant balance. | Country | Chargeback Fee | | :-: | :-: | | Singapore | 20 SGD | | Malaysia | 200 MYR | | Australia | 40 AUD | | New Zealand | 45 NZD | | USA | 25 USD | | United Kingdom | 25 GBP | | Canada | 30 CAD | | UAE | 100 AED | | Brazil | 110 BRL | | Hong Kong | 170 HKD | | India | 2000 INR | | Japan | 3000 JPY | | Thailand | 600 THB | | Mexico | 400 MXN | | Czechia | 700 CZK | | Denmark | 250 DKK | | Sweden | 300 SEK | | European Union | 25 EUR | > [!NOTE] > > European Union countries covered include Austria, Belgium, Finland, France, Germany, Luxembourg, Netherlands, Portugal, Ireland, Italy, and Spain All card payments are processed using 3DS technology, defaulting to protecting HitPay merchants from chargebacks and shifting payment liability to the bank. However, if the issuing bank submits a chargeback, the mentioned fees will be applicable. Given that HitPay bears the merchant's risk, in case of a chargeback, the associated fees and transaction amount are immediately deducted from your Stripe balance. Payments authenticated through 3D Secure come with a liability shift. If a 3D Secure payment is disputed as fraudulent by the cardholder, the liability shifts from you to the card issuer, which is the bank. For payments disputed for reasons other than fraud, such as non-receipt of a product, the standard dispute process applies. > [!NOTE] > > Please note that policies are subject to change without prior notice. ## FAQs > **When I refund a transaction, will the linked Shopify/WooCommerce order be refunded?** > > No, you still need to mark the order as refunded in your Shopify or WooCommerce admin dashboard. # Connect Merchant Accounts (OAuth) Source: https://docs.hitpayapp.com/platforms/oauth Let HitPay merchants connect their account to your platform with OAuth 2.0 > [!NOTE] > > **Beta** — OAuth apps are currently in beta. The flow is stable and available to all businesses, but the API surface is still expanding and details may change. Share feedback at [support@hit-pay.com](mailto:support@hit-pay.com). ## Overview If you run a marketplace, SaaS platform, or any tool that serves HitPay merchants, you can add a **"Connect your HitPay account"** button to your product. Merchants authorize your app once, and your platform receives API tokens to act on their behalf — create payment requests, look up charges, issue refunds, manage recurring billing, and work with the merchant's products, orders, invoices, and customers. This is the structured alternative to collecting merchants' API keys: access is scoped, revocable, and no secrets change hands. (New to HitPay's platform model? Start with the [Platforms overview](/platforms/overview) for how the integration paths compare.) The integration uses the industry-standard **OAuth 2.0 authorization code flow**: 1. You create an **app** in the HitPay Dashboard and receive a client ID and client secret. 2. Your platform redirects the merchant to HitPay's authorization page. 3. The merchant reviews the permissions your app is requesting and approves the connection. 4. HitPay redirects the merchant back to your platform with an authorization code. 5. Your server exchanges the code for an access token and refresh token. 6. You call the HitPay API with the access token, scoped to that merchant's business. Merchants stay in control: they can see every connected app in their dashboard and revoke access at any time. > [!NOTE] > > Looking to collect a platform commission on transactions? OAuth handles account access only — to take commissions, have your account [platform-enabled](/platforms/overview#add-on-platform-enablement) and pass your `X-PLATFORM-KEY` header alongside the Bearer token when creating payment requests. See [Platform Key](/apis/guide/platform-apis). ## Create your app **1. Open the App Builder** In the [HitPay Dashboard](https://dashboard.hit-pay.com), go to **Developers → App Builder** and click **New App**. You need to be an Owner or Admin of your business. **2. Fill in your app details** | Field | Required | Description | | - | - | - | | App Name | Yes | Shown to merchants on the authorization screen. | | Redirect URIs | Yes | One URL per line. HitPay will only redirect merchants back to a URI in this list, so it must exactly match the `redirect_uri` you use in the flow. | | App icon | No | Shown to merchants. PNG or JPG, square works best. | | Developer website | No | Your platform's homepage. | **3. Save your client credentials** After creating the app you'll see your **Client ID** and **Client Secret**. > [!WARNING] > > The client secret is shown **only once**. Store it securely on your server — it can't be retrieved again. If you lose it, use **Regenerate Secret** in the app's detail panel (this immediately invalidates the old secret). **4. Request the scopes you need** New apps start with the `business:read` scope only. To act on payments or commerce data, open your app's detail panel, click **Request Scopes**, select the scopes your integration needs, and describe your use case. HitPay reviews scope requests and you'll see the status (pending, approved, or rejected) in the same panel. ## Scopes | Scope | Grants | | - | - | | `business:read` | View the connected business profile and account information (default) | | `payments` | Create, view, cancel, and refund payments (includes all `payments:*` scopes below) | | `payments:read` | View payment and payment request details | | `payments:create` | Create payments and payment requests | | `payments:cancel` | Cancel or delete payments and payment requests | | `payments:refund` | Create refunds for eligible payments | | `commerce` | Create, view, update, and delete commerce resources (includes all `commerce:*` scopes below) | | `commerce:read` | View products, product categories, orders, and invoices | | `commerce:create` | Create products, orders, and invoices | | `commerce:update` | Update products, orders, and invoices | | `commerce:delete` | Delete products, orders, and invoices | | `customer` | Create, view, update, and delete customers (includes all `customer:*` scopes below) | | `customer:read` | View customers | | `customer:create` | Create customers | | `customer:update` | Update customers | | `customer:delete` | Delete customers | Request only the scopes your integration actually needs — merchants see the full list on the authorization screen. ## Step 1: Redirect the merchant to HitPay When the merchant clicks **Connect your HitPay account** on your platform, redirect them to: ```text theme={"system"} https://dashboard.hit-pay.com/oauth/authorize ?client_id=CLIENT_ID &redirect_uri=https://yourplatform.com/hitpay/callback &response_type=code &scope=business:read payments:create payments:read &state=RANDOM_STRING ``` | Parameter | Required | Description | | - | - | - | | `client_id` | Yes | Your app's client ID. | | `redirect_uri` | Yes | Where the merchant is sent after approving or denying. Must exactly match one of your app's registered redirect URIs. | | `response_type` | Yes | Always `code`. | | `scope` | Yes | Space-separated list of scopes to request. Must be scopes granted to your app. | | `state` | Recommended | An opaque random value you generate and verify on the callback to protect against CSRF. | | `code_challenge`, `code_challenge_method` | Optional | PKCE parameters (`S256`) for an additional layer of security. | ### What the merchant sees The merchant signs in to HitPay (if they aren't already) and lands on the authorization screen, which shows your app's name and icon and the permissions you're requesting. If the merchant manages multiple businesses, they choose which business to connect. Only business **Owners and Admins** can authorize an app. The merchant then clicks **Authorize** or **Deny access**. ## Step 2: Handle the redirect If the merchant approves, HitPay redirects back to your `redirect_uri` with an authorization code: ```text theme={"system"} https://yourplatform.com/hitpay/callback?code=AUTHORIZATION_CODE&state=RANDOM_STRING ``` Verify that `state` matches the value you sent, then move on to the token exchange. Authorization codes are short-lived and single-use. If the merchant denies access, the redirect includes an error instead: ```text theme={"system"} https://yourplatform.com/hitpay/callback?error=access_denied&state=RANDOM_STRING ``` ## Step 3: Exchange the code for tokens From your server, exchange the authorization code for an access token: ```bash theme={"system"} curl -X POST "https://api.hit-pay.com/v1/open/oauth/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=authorization_code" \ -d "client_id=CLIENT_ID" \ -d "client_secret=CLIENT_SECRET" \ -d "redirect_uri=https://yourplatform.com/hitpay/callback" \ -d "code=AUTHORIZATION_CODE" ``` ```json Response theme={"system"} { "token_type": "Bearer", "expires_in": 31536000, "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIs...", "refresh_token": "def50200641f136a0811..." } ``` Store both tokens securely against the merchant's record in your database. Access tokens are long-lived (one year); use the refresh token to obtain a new access token before it expires: ```bash theme={"system"} curl -X POST "https://api.hit-pay.com/v1/open/oauth/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=refresh_token" \ -d "client_id=CLIENT_ID" \ -d "client_secret=CLIENT_SECRET" \ -d "refresh_token=REFRESH_TOKEN" ``` > [!NOTE] > > The token endpoint is rate-limited to 90 requests per minute. ## Step 4: Call the API on the merchant's behalf Authenticate API calls by sending the access token as a Bearer token. The main endpoint you'll use is the [Payment Request API](/apis/overview) — create a payment request for the connected merchant, then redirect your customer to the returned checkout `url`: ```bash theme={"system"} curl -X POST "https://api.hit-pay.com/v1/payment-requests" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "amount=25.00" \ -d "currency=SGD" \ -d "email=customer@example.com" \ -d "purpose=Order 123" \ -d "redirect_url=https://yourplatform.com/order/123/complete" ``` ```json Response theme={"system"} { "id": "974ee233-bc3e-4aac-a212-15af0d155133", "email": "customer@example.com", "amount": "25.00", "currency": "SGD", "status": "pending", "purpose": "Order 123", "url": "https://securecheckout.hit-pay.com/payment-request/@acme-coffee/974ee233-bc3e-4aac-a212-15af0d155133/checkout", "redirect_url": "https://yourplatform.com/order/123/complete", "allow_repeated_payments": false, "created_at": "2026-07-07T13:09:42", "updated_at": "2026-07-07T13:09:42" } ``` The request and response shapes are identical to the standard [Payment Request API](/apis/overview) — the only difference is authentication: the Bearer token replaces the `X-BUSINESS-API-KEY` header, and the payment is created on the connected merchant's account. The following APIs accept OAuth access tokens: * **Payments** (`payments:*` scopes): payment requests, charges, refunds, subscription plans, and recurring billing * **Commerce** (`commerce:*` scopes): products, product categories, orders, and invoices * **Customers** (`customer:*` scopes): customers * **Business info**: `GET /v1/info`, available with any scope Each operation requires the matching scope from its family: for example, `GET /v1/charges` requires `payments:read` and `DELETE /v1/products/{id}` requires `commerce:delete`. Endpoint paths, parameters, and response shapes are documented in the [API reference](/apis/overview). > [!TIP] > > `GET /v1/info` returns the connected business's profile (name, country, currency, and whether payments are enabled). Call it right after the token exchange to confirm the connection and store which business the token belongs to. ## Getting notified of payments Pass a `webhook` URL when creating each payment request — HitPay will notify that URL when the payment completes, regardless of the merchant's own webhook configuration: ```bash theme={"system"} curl -X POST "https://api.hit-pay.com/v1/payment-requests" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "amount=25.00" \ -d "currency=SGD" \ -d "webhook=https://yourplatform.com/hitpay/webhook" ``` See [Webhooks](/apis/guide/events) for payload structure and signature validation. If your account is also [platform-enabled](/platforms/overview#add-on-platform-enablement) and you pass `X-PLATFORM-KEY`, charge events for your merchants' payments are additionally delivered to the webhook endpoints registered on your platform account — see [Unified webhooks](/apis/guide/platform-apis#unified-webhooks). ## Disconnecting Merchants can revoke your app at any time from **Developers → Connected Apps** in their HitPay Dashboard. Revocation immediately invalidates all access and refresh tokens for that merchant. There is no disconnect notification, so treat a `401 Unauthorized` response as the merchant having revoked access: mark the account as disconnected in your system and prompt the merchant to reconnect if needed. Also note that regenerating your client secret or deleting your app invalidates the tokens of **all** connected merchants. ## Testing in sandbox The full flow works in the [sandbox environment](/apis/guide/sandbox) with a separate sandbox app: 1. Create a [sandbox account](https://dashboard.sandbox.hit-pay.com/register) and build your app under **Developers → App Builder**. 2. Create a second sandbox account to play the role of the merchant connecting to your platform. 3. Use the sandbox hosts throughout: `https://dashboard.sandbox.hit-pay.com/oauth/authorize` for authorization and `https://api.sandbox.hit-pay.com/v1/open/oauth/token` for tokens. ## FAQs > **How is this different from a direct API key integration?** > > A [direct API key integration](/platforms/overview#option-1-direct-api-key-integration) requires each merchant to generate and hand you their API key, which grants full account access. OAuth replaces the manual key exchange with a one-click authorization flow, gives merchants scoped (rather than full) access control, and lets them revoke your access without rotating their own keys. Either way, commissions and unified webhooks come from the separate [Platform Key](/apis/guide/platform-apis), which works with both. > **Can one merchant connect multiple businesses?** > > Yes. Each authorization connects exactly one business (the merchant picks which during the flow). To connect another business, send the merchant through the authorization flow again and store the resulting tokens separately. > **What happens if I request a scope my app hasn't been granted?** > > The authorization request is rejected. Only request scopes that have been approved for your app — you can see your app's granted scopes in its detail panel under Developers → App Builder. > **Do access tokens expire?** > > Yes, after one year. Use the refresh token to obtain a new access token. If both have expired or been revoked, send the merchant through the authorization flow again. # Overview Source: https://docs.hitpayapp.com/platforms/overview How SaaS platforms, marketplaces, and aggregators can offer HitPay payments to the businesses they serve ## Overview Platforms that serve other businesses - CRMs, booking systems, marketplaces, agency tools, and vertical SaaS products - often need to offer payment acceptance to their customers without holding a payment institution licence themselves. HitPay's **Platforms** model is designed for this, commonly referred to as a **master–sub-merchant** or **aggregator** model: * **You (the platform)** integrate HitPay once and create payments on behalf of your business customers. * **Your sub-merchants** (your business customers) each hold their own HitPay account, complete their own verification, and receive payouts directly to their own bank account. * **HitPay** holds the relevant payment institution licences (e.g. MAS in Singapore, BNM in Malaysia, BSP in the Philippines), performs KYB/KYC review, and processes the underlying payments. Whichever integration path you choose below, every sub-merchant needs their own verified HitPay account: they [sign up](https://dashboard.hit-pay.com), complete [Business Verification](/setup/business-verification), and remain subject to HitPay's standard [business restrictions](/onboarding/business-restrictions). Payouts follow HitPay's standard [payout schedule](/getting-started/payouts) and go directly to each sub-merchant's own bank account - funds are not pooled through the platform. ## Ways to integrate There are two ways for your platform to get access to a sub-merchant's account, plus an add-on that works with either. ### Option 1: Direct API key integration The simplest approach: the sub-merchant generates their **Merchant API key** in their dashboard under **Developers → API Keys** and enters it into your platform's UI. You store the key and call the HitPay API on their behalf using the `X-BUSINESS-API-KEY` header, exactly as documented in the [API Reference](/apis/overview). This requires no platform setup at all - but it comes with real risk: * The API key grants **full access** to the sub-merchant's account, far more than most platform integrations need. * You are storing a live, non-expiring secret for someone else's business. * If the sub-merchant also uses that key for their own integration, rotating it on either side silently breaks the other. > [!WARNING] > > Not recommended when the sub-merchant has (or may build) their own HitPay API integration. Use OAuth instead. ### Option 2: OAuth - "Connect your HitPay account" The structured alternative to collecting API keys. You build an OAuth app once, add a **Connect your HitPay account** button to your platform, and sub-merchants authorize it in a couple of clicks. Your platform receives its own access tokens, scoped to just the permissions you requested, and sub-merchants can revoke access from their dashboard at any time - no secrets change hands. See [Connect Merchant Accounts (OAuth)](/platforms/oauth) for the full integration guide. > [!NOTE] > > OAuth apps are currently in **beta**. Tokens currently cover payments (payment requests, charges, refunds, subscription plans, and recurring billing), commerce (products, product categories, orders, and invoices), and customers. Other APIs — for example webhooks, virtual accounts, static QR, and terminals — still require a merchant API key. See [OAuth scopes](/platforms/oauth#scopes). ### Add-on: Platform enablement Independent of how you access sub-merchant accounts, you can have your own HitPay account enabled as a **Platform account** (contact **[support@hit-pay.com](mailto:support@hit-pay.com)**). This gives you a **Platform Key** (dashboard: **Settings → Platform**) which you pass as an `X-PLATFORM-KEY` header alongside either a merchant API key or an OAuth token. It unlocks two things: 1. **Commissions** - earn a share of every payment you create for your sub-merchants, either as a platform-wide percentage Commission Rate or a fixed `platform_commission_amount` per transaction. 2. **Unified webhooks** - charge events for all your sub-merchants' payments are delivered to webhook endpoints registered on **your** platform account, so you monitor one webhook instead of one per sub-merchant. See [Platform Key](/apis/guide/platform-apis) for setup and API details. ## Choosing a path | | Direct API key | OAuth | | - | - | - | | Sub-merchant onboarding | Copies API key from their dashboard into your UI | Clicks **Connect your HitPay account** and approves | | Access granted | Full account access | Only the scopes you request | | Secret handling | You store their live API key | You store tokens issued to your app | | Revocation | Sub-merchant rotates their key (breaks their own integrations too) | Sub-merchant revokes your app from their dashboard | | API coverage | Entire HitPay API | Payments, commerce, and customers (see [OAuth scopes](/platforms/oauth#scopes)) | | Commissions & unified webhooks | ✓ with `X-PLATFORM-KEY` | ✓ with `X-PLATFORM-KEY` | > [!NOTE] > > This page reflects the model as it exists **today**. HitPay's Platforms program continues to evolve, and partner needs vary by market and merchant profile - where a use case goes beyond what's described here, our Sales & Partnerships Team at **[sales@hit-pay.com](mailto:sales@hit-pay.com)** can advise on the best path forward. ## FAQ > **Do sub-merchants need their own payment institution licence?** > > No. This is a core benefit of onboarding as a HitPay sub-merchant - HitPay is the licensed, regulated entity, and sub-merchants operate under HitPay's compliance umbrella once verified. > **Where do payouts go - to the platform or to the sub-merchant?** > > Directly to each sub-merchant's own bank account, following HitPay's standard [payout schedule](/getting-started/payouts). Funds are not pooled through the platform. > **Can our platform create the HitPay account and complete verification for our sub-merchants, since we already collect their documents?** > > Today, each sub-merchant signs up and completes [Business Verification](/setup/business-verification) directly with HitPay - this keeps KYB ownership clearly with HitPay and gives the sub-merchant direct visibility into their own account from day one. Many platforms streamline this by referring merchants straight into HitPay's sign-up flow so the handoff feels seamless. If your program has specific onboarding requirements - including using documents you've already collected - our Sales & Partnerships Team at **[sales@hit-pay.com](mailto:sales@hit-pay.com)** can work with you to find the best approach for your markets and merchant profile. > **Is there an API for submitting a sub-merchant's KYC/KYB documents to HitPay?** > > Not yet as a standalone API - Business Verification is currently a dashboard flow completed by the sub-merchant. This is an area we're happy to discuss further with platform partners who have high onboarding volume, so reach out to our Sales & Partnerships Team at **[sales@hit-pay.com](mailto:sales@hit-pay.com)** to explore what's possible for your program. > **Can commissions be set per sub-merchant or per transaction?** > > Yes. A platform-wide percentage Commission Rate can be set, or overridden per transaction with `platform_commission_amount`. See [Platform Key](/apis/guide/platform-apis#set-a-commission-per-transaction). > **What if sub-merchants are outside Singapore, Malaysia, the Philippines, or Indonesia?** > > Card payments for merchants outside these markets are processed through Stripe Standard Connect, which the sub-merchant sets up directly with their own Stripe account. See [Standard Connect Integration](/connections/stripe/standard-connect). ## Get started Contact **[support@hit-pay.com](mailto:support@hit-pay.com)** to enable Platform access for your account. # EasyStore Source: https://docs.hitpayapp.com/plugins/easystore Integrate HitPay payment gateway into your EasyStore site ## Account Setup Before you begin integrating HitPay payments into your EasyStore site, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open Links and Payment Requests API and choose which payment methods show at checkout. ## Integration Guide 1. Click **Settings > Payments** in your EasyStore admin: ![EasyStore Admin](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Easystore-Admin.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=31d46a40349ceb8e9b4ef340491d2bae) 2. Activate HitPay payment gateway by clicking on this [link](https://admin.easystore.co/settings/gateway/hitpay) 3. Copy/Paste the API Keys and Salt Values from HitPay. You can find your API and Salt Keys by navigating to Payments > API Keys in the HitPay dashboard. ![API Keys](https://mintlify.s3.us-west-1.amazonaws.com/hitpay/images/api-keys.png) 4. Complete the HitPay Configuration settings by following the step by step guide found in the configuration page. ![EasyStore Configuration](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Easystore-Configuration.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=1a6996314bbaf8efe262a5f63bd17852) 5. Ensure your desired payment methods are checked on EasyStore dashboard by navigating to **Settings > Payments > HitPay**, select your desired payment methods and click **Save**. 6. Add your desired sub payment methods by selecting the "Add sub payment methods" option ![EasyStore Link](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/easy_sub_methods.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=57f0d0d724994b74aebac3b390f81d3c) 7. Enable/disable the payment methods for your EasyStore Checkout by updating your Links and Payment Requests API integration settings in the HitPay dashboard (**Integrations → Links and Payment Requests API**): ![EasyStore Link](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Easystore-Link.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=81c86b6b0c396a07bb25faec58332420) ![EasyStore Integration](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Easystore-Integration.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=631d21d1c3e50a8a80b6a01826b00c1b) > [!NOTE] > > The Payment Request APIs and Links options are the Sales Channels currently applicable for EasyStore, but kindly note that this settings will also affect your other Links and Payment Request APIs, like if for example you [generate a direct payment link](/payment-links/payment-links#creating-a-payment-link) from your dashboard or if also have a custom-built website that is integrated to Hitpay via [API integration](https://docs.hitpayapp.com/apis/guide/platform-apis). HitPay is now live on your EasyStore Site! 🎉 ## Refunds In Easystore, refunding transactions is a two-step process. You'll need to process the refund in the HitPay dashboard and manually update your Easystore order as refunded. > [!NOTE] > > **Important Note:** Successful refunds must meet the criteria of the payment method used. For more details, check out the [refund process documentation](https://docs.hitpayapp.com/payments/refund#refund-process). ### Processing Refunds in HitPay Follow these steps to process refunds using the HitPay dashboard: * Navigate to **Bank Payouts > Transactions.** * Click on the transaction you would like to refund. * Click on the **Refund** button. * Confirm the refund by clicking on the **Confirm** button and wait for the refund success message. > [!NOTE] > > Please Note: Initiating a refund from the HitPay dashboard will not automatically update your Easystore order. You must manually update the order status in Easystore as well. ### Easystore Refund Process In Easystore, refunds cannot be initiated from the dashboard. Instead, follow these steps to process refunds: * Process the refund in the HitPay dashboard as outlined above. * Manually mark the corresponding order as refunded in your Easystore dashboard. By following these steps, you can effectively manage refunds for your Easystore orders. ## FAQs > **Does HitPay send an email after the EasyStore order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through EasyStore. This is because EasyStore, by default, sends an email to your customer with the order details. To avoid sending duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. # Ecwid Source: https://docs.hitpayapp.com/plugins/ecwid Integrate HitPay payment gateway into your Ecwid store ## Account Setup Before you begin integrating HitPay payments into your Ecwid store, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open Ecwid and choose which payment methods show at checkout. ## Integration Guide Follow these steps to seamlessly integrate HitPay payments into your Ecwid store: 1. Click on this [link](https://my.ecwid.com/cp#apps:view=app\&name=custom-app-11573331-14) to add HitPay payment gateway to your Ecwid App > **[Install The Custom App](https://my.ecwid.com/cp#apps:view=app\&name=custom-app-11573331-14)** ![Ecwid Install](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Ecwid-Install.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=b573b34e2649ef5011369389970e4363) 2. Add the API Keys and Salt Values from HitPay in the fields below. You can find your API and Salt Keys by navigating to **Developers > API and Salt Keys** in the HitPay dashboard. ![Ecwid Api](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Ecwid-Api.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=526a375a491a944a6c36ce712386888f) > [!NOTE] > > Please note that sandbox testing is not currently available on Ecwid. 3. Click **Save** ![Ecwid Save](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Ecwid-Save.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=bea256401e258c46b230cc99d3476bd2) 4. Enable/disable the payment methods for your Ecwid Checkout by updating your Ecwid integration settings in the HitPay dashboard (**Integrations → Ecwid**): ![Ecwid Integration](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Ecwid-Integration.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=726b5d9f1523ba6428084444215e5428) HitPay is now live on your Ecwid Store! 🎉 ## FAQs > **Does HitPay send an email after the Ecwid order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through Ecwid. This is because Ecwid, by default, sends an email to your customer with the order details. To avoid sending duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. # GiveWP Source: https://docs.hitpayapp.com/plugins/givewp Integrate the HitPay payment gateway into your GiveWP forms ## Account Setup Before you begin integrating HitPay payments into your WordPress store, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open GiveWP and choose which payment methods show at checkout. ## Description The HitPay Payment Gateway for GiveWP allows merchants to accept donations through various payment methods including PayNow QR, Cards, Apple Pay, Google Pay, WeChatPay, AliPay, and GrabPay. This plugin interfaces with HitPay, a third-party payment gateway, to process these payments efficiently. Merchants must first create an account with HitPay and choose their desired payment options via the HitPay dashboard. API keys and Salt values must be retrieved from the HitPay Web Dashboard under Settings > Payment Gateway > API Keys. There are no monthly, setup, admin, or hidden service fees, as merchants pay only per transaction. ## Installation 1. Navigate to the 'Add New' in the plugins dashboard. 2. Navigate to the 'Upload' area. 3. Download the latest zip file from here: [https://github.com/hit-pay/givewp/tags](https://github.com/hit-pay/givewp/tags) 4. Select `hitpay-payment-gateway-for-givewp.zip` from your computer. 5. Click 'Install Now'. 6. Activate the plugin in the Plugin dashboard. ### Using FTP 1. Download `hitpay-payment-gateway-for-givewp.zip`. 2. Extract the directory to your computer. 3. Upload the directory to the `/wp-content/plugins/` directory. 4. Activate the plugin in the Plugin dashboard. ## Configuration **1. Access Donations Settings** Go to Donations settings. **2. Select Payment Gateways** Select the "Payment Gateways" tab. ![](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/givewp/644shots_so.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=f77fba27bb750a31b80e47d3a9c8d3ab) **3. Activate Payment Method** Activate the payment method (if inactive) in the Option-Based Form Editor by ticking the Enabled checkbox field. ![](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/givewp/912shots_so.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=c8f88df125a65337fe852d29a31554e1) **4. Set Display Name** Set the name you wish to show your users on Checkout (for example: "Creditcard or PayNow"). **5. Configure HitPay Gateway** Click the link 'HitPay Payment Gateway' under the tabs. Copy and paste the API keys and Salt values from the HitPay settings. **6. Save Changes** Click "Save Changes". **7. Select Payment Methods in HitPay** Navigate back to the HitPay dashboard, go to **Integrations** > **Available** tab > select **WooCommerce**, and choose your payment methods. ![](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/givewp/plugin_methods_wp.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=a8078a8fe141684a327f04240d038b57) ## Donation **1. Navigate to Donation Page** Direct donors to the donation page on your website. ![](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/givewp/741shots_so.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=61f3d68ff076330fec9cbf2b602118d8) **2. Select Donation Amount** Donors choose their donation amount and select their preferred payment method. ![](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/givewp/803shots_so.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=727bd25302218ad91a5d703ea63e1f9e) **3. Complete Payment** Donors complete their payment using their selected method. ![](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/givewp/681shots_so.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=44d72c3a0ff95417f2a23a6254f99073) ## Refunds **1. Log in to Admin Panel** Log in to your admin panel to manage donations. **2. Navigate to Donations** Navigate to Donations ⇒ Donations. **3. Edit Donation Details** Click the edit link to navigate to the Donation Payment Details page. **4. Process Refund** If the donation is paid via 'HitPay Payment Gateway', then the 'Refund via HitPay Payment Gateway' button will be displayed. Click this button to process the refund. **5. Confirm Refund** Confirm the refund details which will be added to the donation payment note. Note that only one refund is allowed per transaction. ## FAQs > **Does HitPay send an email after the WordPress order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through WordPress. This is because WordPress, by default, sends an email to your customer with the order details. To prevent duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. > **How do I send WordPress test store access to HitPay?** > > If you are unable to resolve the WordPress issues, you can request HitPay support to help with your debugging. But before that, make sure the following checks are completed: > > * Ensure that your credentials are correct, both the API Key and Salt. > > * Ensure that you are testing with an amount greater than \$1 (or equivalent). > > * Make sure the webhook in the HitPay dashboard shows "Success." > Please provide the following details to the HitPay team: > > 1. Debug logs from your WordPress store. > 2. Admin access to your WordPress test store (Since our team will be debugging, please avoid sending access to your live store). > 3. SFTP access to your test store. > You can send the details to [support@hit-pay.com](mailto:support@hit-pay.com) (Approximate debug time would be 3 to 5 business days). # Google Forms Source: https://docs.hitpayapp.com/plugins/google-forms Integrate HitPay payment gateway into your Google Forms > [!WARNING] > > This plugin is currently experiencing issues and is unavailable for new installations. Existing installations completed before January 1st, 2025 continue to function normally. ## Account Setup Before you begin integrating HitPay payments into your Google Forms, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open Google Forms and choose which payment methods show at checkout. ## Google Form Pre-requisites Through the HitPay plugin on Google Forms, you have the option of charging the customer a dynamic amount based on the responses submitted in the Google Form or a fixed amount per response: Example of a dynamic amount form is [here](https://docs.google.com/forms/d/e/1FAIpQLSdLq5pDqY4My87J1Q6PUvtZaCAQOX7OJc2eA7E5XxANzaG_iw/viewform?usp=sf_link). Example of a fixed amount form is [here](https://forms.gle/4mfiw9RPCtf7sjst8). In case of a dynamic amount form, please remember to include the \$ symbol before the amount as shown in the dynamic amount form above. We currently allow all types of currencies to be collected using Google Forms. ## Getting Setup 1. Install Plugin Go to [https://workspace.google.com/marketplace/app/hitpay/969836523186](https://workspace.google.com/marketplace/app/hitpay/969836523186) and install the plugin in your Google account. Click **Install** if you only want to install the plugin to your Google account: ![Step 1](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Google-Forms1.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=35dfc7b1d96aa1f4c747ab0c8e4cec6f) 2. Upon installing the plugin, navigate to your Google Forms page and click on the plugin logo as shown below: ![Step 2](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Google-Forms2.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=3776817c77f2757577be672a5610c13c) 3. Click **HitPay**: ![Step 3](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Google-Forms3.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=8a3bd70646a8444fadbbbfa8d7ebb8c0) 4. Click **Setup HitPay**: ![Step 4](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Google-Forms4.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=5a229d27ff2b4d40ae9a2359d4f27125) 5. Click on **Store Your API Key**: ![Step 5](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Google-Forms5.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=533c4d39d1cc41df4b96eb63aef50b0d) 6. Select one of the options below. A. If you select **Create HitPay Account**, you will be directed to the HitPay website for account creation: ![Step 6](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Google-Forms6.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=8562f05b2709905d7b54f495edc03b6b) B. If you click **I Have a HitPay Account**, you will be prompted to enter the API keys. To locate your API keys, navigate to **Payment Gateway > API Keys** on your HitPay Dashboard. 7. Copy/Paste the API keys and click Save: ![Step 7](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Google-Forms7.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=35b95e66f21247c91aa35557763b3528) 8. Under **Configure Form and Sheet**, select the appropriate options (Get amount from responses or Fixed amount) as applicable in the settings menu as shown below and **toggle from left to right** to enable HitPay for the Google Form. If you select Test Mode, ensure the API keys are taken from the HitPay Sandbox Environment. 9. Enable/disable the payment methods you want to use for the Google form by updating your Google Forms integration settings in the HitPay dashboard (**Integrations → Google Forms**): ![Step 8](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Google-Forms8.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=03d28b0d865ec80231c4b2fd834ff719) 10. Click **Configure Form and Sheet:** Upon clicking **Open Sheet**, you will be navigated to the Google Sheet linked to the Google form. All the responses from the form will be collected in this Google Sheet including details on the payment status. ![Step 9](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Google-Forms9.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=2a776691666880bb7fe26c588ab737de) ## How payment collection works Upon submission of form response, a payment link for the payable amount is sent to the respondent's email address after submission of the form: ![Step 10](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Google-Forms10.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=736cfb92aa5a872f5b3c25d67c7b5e43) Upon clicking the link, the customer will be directed to the HitPay checkout page to complete payment. After payment is completed, the customer will receive an automated email receipt sent from HitPay and you will also receive an email if the relevant [notification setting](/settings/notifications) is enabled in your HitPay dashboard. The status of the payment is updated in the Google Sheet linked to the Google form when the respondent completes the payment using HitPay payment link as shown below: ![Step 11](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Google-Forms11.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=9e1e0e4489b4fe37f98ccd483ea492bd) All successful payments are captured in the HitPay dashboard under **Sales and Reports > Transactions**. ## Things to note when creating a google form * Get amount from responses should be selected if it is a dynamic amount form and Fixed amount should be selected if it is a fixed amount form * Only use dropdown or multiple choice for payment options if Get amount from Responses is chosen to ensure that the plugin will work * Ensure to enter the correct currency symbol for your chosen currency # Magento Source: https://docs.hitpayapp.com/plugins/magento Integrate HitPay payment gateway into your Magento store ## Account Setup HitPay allows Magento 1 and 2 Store owners to accept local and international payments on their e-commerce website, providing seamless payment experience for your customers and an easy integration process for the developers. HitPay payment works by creating Payment Request and then the customers accepting the Payment Request. Before you begin integrating HitPay payments into your Magento online store, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open Magento and choose which payment methods show at checkout. ## Integration Guide Follow these steps to seamlessly integrate HitPay payments into your Magento store: ### Installation Visit [https://github.com/hit-pay/magento1-extension/releases](https://github.com/hit-pay/magento1-extension/releases) to install the Magento 1 HitPay plugin Visit [https://github.com/hit-pay/magento2-extension/releases](https://github.com/hit-pay/magento2-extension/releases) to install the Magento 2 HitPay plugin After following the installation guide on Github, ensure that you complete your Magento integration settings in the HitPay dashboard (**Integrations → Magento**) to complete the integration to your website: ![Magento](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Magento.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=3aa22c18339db31119bcd52ac0b35283) That’s it! You’re all set up with HitPay on Magento. 🎉 ## FAQs > **Does HitPay send an email after the Magento order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through Magento. This is because Magento, by default, sends an email to your customer with the order details. To prevent duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. > **How do I send Magento test store access to HitPay?** > > If you are unable to resolve the Magento issues, you can request HitPay support to help with your debugging. But before that, make sure the following checks are completed: > > * Ensure that your credentials are correct, both the API Key and Salt. > > * Ensure that you are testing with an amount greater than \$1 (or equivalent). > > * Make sure the webhook in the HitPay dashboard shows "Success." > Please provide the following details to the HitPay team: > > 1. Debug logs from your Magento store. > 2. Admin access to your Magento test store (Since our team will be debugging, please avoid sending access to your live store). > 3. SFTP access to your test store. > You can send the details to [support@hit-pay.com](mailto:support@hit-pay.com) (Approximate debug time would be 3 to 5 business days). # Odoo Source: https://docs.hitpayapp.com/plugins/odoo Integrate HitPay payment gateway into your Odoo Store and Point of Sale ## Account Setup Before you begin integrating HitPay payments into your Odoo Store or POS, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open Odoo and choose which payment methods show at checkout. *** ## Odoo eCommerce Integration ### Installation **- Odoo 18**: Click on this [LINK](https://apps.odoo.com/apps/modules/18.0/payment_hitpay/) to install HitPay on your Odoo Store.\ **- Odoo 17**: Click on this [LINK](https://apps.odoo.com/apps/modules/17.0/payment_hitpay/) to install HitPay on your Odoo Store.\ **- Odoo 16**: Click on this [LINK](https://apps.odoo.com/apps/modules/16.0/payment_hitpay/) to install HitPay on your Odoo Store.\ **- Odoo 15**: Click on this [LINK](https://apps.odoo.com/apps/modules/15.0/payment_hitpay/) to install HitPay on your Odoo Store.\ After following the installation guide on Odoo, ensure that you complete your Odoo integration settings in the HitPay dashboard (**Integrations → Odoo**) to complete the integration to your website: ![Odoo Integration](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Odoo.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=d651d323973a1fa5f78857d5a0e30c9e) *** ## Odoo POS Integration Integrate HitPay into your Odoo Point of Sale (POS) to accept in-person payments using a card reader. ### Supported Versions The HitPay POS plugin is supported on the following Odoo versions: * **Odoo POS 16** * **Odoo POS 18** * **Odoo POS 19** ### Installation The HitPay plugin for Odoo POS can be found at: [https://github.com/hit-pay/odoo-extension/tree/16.0/pos\_hitpay](https://github.com/hit-pay/odoo-extension/tree/16.0/pos_hitpay) Follow the installation instructions provided in the GitHub repository. ### Configuration in Odoo Admin After installing the plugin, follow these steps to configure HitPay in your Odoo admin: 1. Go to the "Point of Sale Admin" tab. 2. In the "Configuration" section, click on the "Payment Methods" menu. 3. Click the New button to add HitPay POS as a payment method. 4. Enter the following details: * Title for the Payment option * Set Payment Journal as Bank * Select "Use a Payment Terminal" as 'HitPay Payment Gateway' * Enter the HitPay Payment Gateway credentials * Enter the hitpay terminal ID from your HitPay dashboard 5. Navigate to the Settings page. 6. In the Point of Sale settings page, add 'HitPay Payment Gateway POS' to the available payment methods for POS Checkout. 7. Return to the "Point of Sale Admin" tab and click "New Session" to start using HitPay POS. ### Processing Refunds To process refunds using HitPay POS: 1. In the order view page, click the "Return Products" button. 2. Click the Payment Button. 3. In the popup, select "Hitpay Payment Gateway POS" as the refund payment method. 4. Click the 'Make Payment' button. 5. Enter the amount to refund (the amount should be negative). > [!NOTE] > > Ensure that you have the necessary permissions and have configured your HitPay account to process refunds before attempting this process. *** ## Support If you encounter any issues or have questions about the HitPay Odoo integration, please contact our support team. That's it! You're all set up with HitPay on Odoo. 🎉 # OpenCart Source: https://docs.hitpayapp.com/plugins/opencart Integrate HitPay payment gateway into your OpenCart store ## Overview Integrating your OpenCart site with HitPay allows you to accept payments via the HitPay Payment Gateway. The extension offers seamless integration allowing the customer to pay on your website without being redirected. This allows the extension to work across all browsers and ensures compatibility with the latest version of OpenCart. Currently, we support the following versions of OpenCart with separate extensions: OpenCart 3 OpenCart 2.x below 2.3 OpenCart 2.3 and above Other Open Cart Versions: [Extension Link](https://www.opencart.com/index.php?route=marketplace/extension/info\&extension_id=40691\&filter_license=0) (requires copying files into the store root folder) ## Account Setup Before you begin integrating HitPay payments into your OpenCart store, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open OpenCart and choose which payment methods show at checkout. ## Integration Guide Follow these steps to seamlessly integrate HitPay payments into your OpenCart store: 1. Install the Plugin Download the latest Source code zip file of the required version of the plugin: Download the latest release of the OpenCart 3 plugin from the link [here](https://github.com/hit-pay/opencart-extension/releases) Download the latest release of the OpenCart 2.x below 2.3 plugin from the link [here](https://drive.google.com/file/d/1WGQCP65B2_Uu3U4pLOlwsFxtECj3fIM0/view?usp=sharing) Download the latest release of the OpenCart 2.3 and above plugin from the link [here](https://drive.google.com/file/d/1qKD3QEUTTjQB8EmgJzhuTjPe7QD02Fos/view?usp=sharing) 2. Upload the extension file under Installer as shown below ![OpenCart Upload](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/OpenCart-Upload.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=c16d375a7ca0e1b446bf936fd68f14aa) 3. Navigate to Extensions, choose extensions type as Payment Gateway ![OpenCart Extensions](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/OpenCart-Extensions.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=152461565990cf6633f2907bff698692) 4. Click on the **Install** button (in green) next to HitPay: ![OpenCart HitPay](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/OpenCart-Hitpay.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=adbcd6181e23f134ed598383875c25eb) 5. Click on the **Edit** button 6. Configure the HitPay Settings in Open Cart and click on **Save** You can find your HitPay API Key and Salt Keys by navigating to **Payment Gateway > API** in the HitPay dashboard. ![OpenCart API](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/OpenCart-Api.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=d021f3b77476863dc60b18acbaad030b) 7. Enable/disable the payment methods for your OpenCart Checkout by updating your OpenCart integration settings in the HitPay dashboard (**Integrations → OpenCart**): ![OpenCart Integration](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/OpenCart-Integration.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=5d191f132526dad1c67e004fd2c1454f) That’s it! You’re all set up with HitPay on OpenCart. 🎉 ## FAQs > **Does HitPay send an email after the OpenCart order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through OpenCart. This is because OpenCart, by default, sends an email to your customer with the order details. To prevent duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. # Overview Source: https://docs.hitpayapp.com/plugins/overview HitPay payment gateway integrates with various e-commerce platforms, allowing you to easily accept low-cost and alternative payment methods on your existing store HitPay plugins connect your existing online store to local payment methods in Singapore, Malaysia and the Philippines, plus cards and cross-border wallets. All plugins support automatic payment status synchronization, refund handling, and multi-currency checkout. Supported platforms include Shopify, WooCommerce, Wix, Magento, PrestaShop, OpenCart, Ecwid, Odoo, EasyStore, Shoplazza, and more. Accounting integrations with Xero, QuickBooks, Zoho Books, and Bukku enable automatic payment reconciliation. For workflow automation, HitPay connects with Zapier and Make. > **[Shopify](/plugins/shopify)** > **[WooCommerce](/plugins/woocommerce)** > **[Wix](/plugins/wix)** > **[Xero](/plugins/xero)** > **[Prestashop](/plugins/prestashop)** > **[Bukku](/connections/bukku)** > **[Magento](/plugins/magento)** > **[OpenCart](/plugins/opencart)** > **[Ecwid](/plugins/ecwid)** > **[Google Forms](/plugins/google-forms)** > **[WHMCS](/plugins/whmcs)** > **[Odoo](/plugins/odoo)** > **[EasyStore](/plugins/easystore)** > **[Shopcada](/plugins/shopcada)** > **[GiveWP](/plugins/givewp)** > **[Sitegiant](https://support.sitegiant.com/knowledge-base/how-to-set-up-hitpay-payment-gateway/)** > **[Wordpress](/plugins/wordpress)** ### Point of Sale Plugins Integrate in-person payments with the following plugins: > **[WooCommerce POS Plugin](/plugins/pos/woocommerce)** > **[Odoo POS Plugin](/plugins/odoo#odoo-pos-integration)** ### Recurring Payments Plugins Integrate recurring payments with the following plugins: > **[WooCommerce Recurring Payments](/plugins/recurring/woocommerce)** ### Scheduling Plugins Integrate bookings with the following plugins: > **[Cal.com](/plugins/scheduling/cal)** ## FAQs > **My preferred e-commerce platform is not listed. Can I still integrate HitPay?** > > If your preferred e-commerce platform is not listed among our supported > payment plugins, you can still request integration. Simply visit the link > [feedback.hitpayapp.com](https://feedback.hitpayapp.com) to send an > integration request. We're continuously working to expand our compatibility > to better serve your needs. > **Do you offer API documentation for direct integration?** > > Yes, we provide comprehensive API documentation for those seeking direct API > integration. You can refer to our API documentation at > [https://docs.hitpayapp.com/apis](https://docs.hitpayapp.com/apis). This > guide will assist you in seamlessly integrating HitPay's features into your > application. # WooCommerce POS Plugin Source: https://docs.hitpayapp.com/plugins/pos/woocommerce Connect a card reader to your WooCommerce Point of Sale ## Overview Here's a step-by-step guide on how to install and enable the HitPay plugin on WooCommerce for accepting in-person payments using a card reader. > [!NOTE] > > If you are looking for payments, please refer to this [guide](/plugins/woocommerce). ## Ideal setup for this plugin * If you have an existing WooCommerce store and your customers wish to make in-person card payments. * If you are using a POS plugin for your WooCommerce and want to integrate a card reader. Works well with plugins like [wePOS](https://wordpress.org/plugins/wepos/) and [WooCommerce POS](https://wordpress.org/plugins/woocommerce-pos/). ### Requirements Before you can start using this plugin, ensure you have the following: 1. Create a HitPay Account. 2. Activate card payment methods. 3. Order and set up your card reader. ## Procedure **1. Install HitPay WooCommerce Plugin** Search for HitPay in the keyword search field and install the plugin. ![Search and Install Plugin](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/woocommerce/install.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=1fc414b3aa1e7a8856dbd8ab62718f87) **2. Configure Plugin Settings** Navigate to `WooCommerce > Settings > Payments > Manage` next to the HitPay payment method. !\[Configur![Manage](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/woocommerce/manage.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=221ad3e6454ff0468b167097ad2a72a2) **3. Enter API Keys** Copy your API keys from your HitPay dashboard and paste them in the respective fields. ![Keys](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/woocommerce/keys.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=495f0fb13d1ac0bb7f1badafd1ba9444) **4. Connect Card Reader** Link the card reader to your WooCommerce plugin by copying the terminal ID from your HitPay dashboard and pasting it into your WooCommerce plugin. Enable POS payments in your WooCommerce plugin settings. ![POS Payments](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/enable_pos_woocom.jpg?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=8a6a0ead349eccdfe8481bcd8e4c20c9) Copy the terminal ID under `Point of Sale > Terminals` from your hitpay dashboard. ![POS Payments](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/copy_terminal_id.jpg?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=3085501d84acc6818e18eca310ecb74a) Paste the terminal ID in the Terminal Reader ID section and click `Save Changes`. ![Save Changes](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/paste_terminal_id.jpg?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=1d48be203d8a0352ff083142b83bf6ac) **5. Use the Card Reader for Checkout** A new `Card Reader` option will now appear in the payments section of your checkout page. Select this option and click `Place Order` to complete the transaction. ![Checkout Option](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/checkout_card_reader.jpg?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=4f4fc1307c05215b64a6b692a25f6586) ![Cashier View](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/checkout_reader_loading.jpg?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=cd33b5eb5c38b59562c7201039d34b70) ![Transaction Complete](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/reader_success.jpg?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=cd4e37491ffbeeb534f6b59a1f97370a) Congratulations! Your setup is complete, and your WooCommerce store is now integrated with the card reader. Customers can enjoy a seamless checkout experience, and you can manage payments through your HitPay dashboard. ## FAQs > **When do I use the Cashier E-mail field?** > > The cashier's email is used to determine when to present the card reader option at the checkout: > > 1. If the cashier's email is entered, the card reader option is only shown if the logged-in user is the cashier. This will also help to avoid showing the card reader option to your online checkout store users. > 2. If you have more than 1 POS setup in your physical store, the cashier email can be used to map the reader with the POS. > **Does HitPay send an email after the WooCommerce order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through WooCommerce. This is because WooCommerce, by default, sends an email to your customer with the order details. To prevent duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. > **How do I send WooCommerce test store access to HitPay?** > > If you are unable to resolve the WooCommerce issues, you can request HitPay support to help with your debugging. But before that, make sure the following checks are completed: > > * Ensure that your credentials are correct, both the API Key and Salt. > > * Ensure that you are testing with an amount greater than \$1 (or equivalent). > > * Make sure the webhook in the HitPay dashboard shows "Success." > Please provide the following details to the HitPay team: > > 1. Debug logs from your WooCommerce store. > 2. Admin access to your WooCommerce test store (Since our team will be debugging, please avoid sending access to your live store). > 3. SFTP access to your test store. > You can send the details to [support@hit-pay.com](mailto:support@hit-pay.com) (Approximate debug time would be 3 to 5 business days). # PrestaShop Source: https://docs.hitpayapp.com/plugins/prestashop Integrate HitPay payment gateway into your PrestaShop store ## Account Setup Before you begin integrating HitPay payments into your PretaShop store, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open PrestaShop and choose which payment methods show at checkout. ## Integration Guide Follow these steps to seamlessly integrate HitPay payments into your PretaShop store: 1. Upload Module File Download the zip files below and follow the installation guide below: For Prestashop 1.7 versions - use the 1.1.7 plugin below: [Download Here](https://github.com/hit-pay/prestashop1.7-extension/releases) For Prestashop 1.8 versions - will be compatible with 9 version too - or 9 version can use 1.8 extension. [Download Here](https://github.com/hit-pay/prestashop1.8-extension/releases) For Prestashop 1.6 versions - use the 1.1.4 plugin below: [Download Here](https://github.com/hit-pay/prestashop1.6-extension/releases)\ 2. Log into your [PrestaShop account](https://addons.prestashop.com/en/) 3. Navigate to **Modules > Module Manager** and click **Upload a Module** ![Upload](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/PretaShop-Upload.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=959b38043177271920c669cfb9eb1d05) 4. Upload the source code zip file from your computer Please ensure the file is compressed or zipped before uploading ![File](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/PretaShop-File.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=6a44c09fb0bd66faab90ab4fcd8763aa) 5. Click Configure ![Configure](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/PretaShop-Configure.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=bd9572891527b2fe98c817c42d694178) You will now be redirected to the below page: ![PretaShop HitPay](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/PretaShop-HitPay.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=906f6444e10b4499ed9a046dabfee205) 6. Copy/Paste the API Keys and Salt Values from HitPay to PretaShop. You can find your API and Salt Keys by navigating to **Developers > API and Salt Keys** in the HitPay dashboard. 7. Paste the values in the Configure panel, enable Live mode and click **Save** ![Save](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/PretaShop-Save.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=055df4176ace6419ef5253ae1f2595dc) 8. Enable/disable the payment methods for your Prestashop Checkout by updating your PrestaShop integration settings in the HitPay dashboard (**Integrations → PrestaShop**) ![Integration](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/PretaShop-Integration.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=18233e76958797ce2a0c44325e8c164c) That’s it! You’re all set up with HitPay on PretaShop. 🎉 ## FAQs > **Does HitPay send an email after the PrestaShop order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through PrestaShop. This is because PrestaShop, by default, sends an email to your customer with the order details. To prevent duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. > **Payment is Completed, but User Is Stuck on the Loading Page in PrestaShop** > > If a user is stuck on the "We are retrieving your payment status, please wait..." page, it might be necessary to clear the JavaScript cache from your PrestaShop settings. You can refer to [this guide](https://bobcares.com/blog/clear-cache-in-prestashop/) for detailed instructions on how to clear the JS cache. # WooCommerce (Recurring) Source: https://docs.hitpayapp.com/plugins/recurring/woocommerce Integrate HitPay Recurring Payments into your WooCommerce store ## Overview **HitPay Recurring Payments** is a payment gateway plugin that extends [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/) allowing HitPay merchants to automatically accept recurring payments for subscription-based products. ## Subscriptions The plugin is integrated with [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/). This means you can create and manage products with automatic recurring payments. If you're not familiar with this feature, we recommend checking out the [store manager guide](https://woocommerce.com/document/subscriptions/store-manager-guide/). ## Installation To install HitPay Recurring Payments, ensure you have WordPress, WooCommerce, and [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/) installed and active on your site. ## Installation from GitHub 1. **Download the Plugin**: * Go to the [Releases page](https://github.com/hit-pay/woocommerce-recurring/releases) of the **HitPay Recurring Payments** on GitHub. * Download the latest version of the plugin as a ZIP file. 2. **Upload and Install via WordPress Admin**: * Navigate to your WordPress dashboard, then to **Plugins** > **Add New**. * Click the **Upload Plugin** button at the top. * Choose the downloaded ZIP file and click the **Install Now** button. * Once installed, you'll see a message indicating "Plugin installed successfully". After installation, you can proceed to activate and configure the plugin in your WooCommerce settings. ## Activating the Plugin Once installed, go to **Plugins**, find the **HitPay Recurring Payments** plugin, and click the **Activate** button. ## Setting Up the Plugin To configure the plugin: 1. Navigate to **Plugins**, find the **HitPay Recurring Payments** plugin, and click the **Settings** button. 2. Fill out the main fields in the settings form, including **Title**, **Description**, **API Key**, and **Salt**. 3. Click **Save Changes** once done. Copy and Paste the API Keys and Salt Values from the HitPay settings to WooCommerce. You may find your API and Salt Keys from HitPay dashboard > Payment Gateway > API. ## FAQs > **Does HitPay support all WooCommerce versions?** > > Yes, HitPay is continuously updated to ensure compatibility with the latest versions of WooCommerce. However, always refer to our release notes to ensure your WooCommerce version is supported. # Cal.com Plugin Source: https://docs.hitpayapp.com/plugins/scheduling/cal Integrate Cal.com with HitPay to manage bookings and accept payments. ## Overview Easily manage bookings for services like workshops, consultations, and fitness classes with Cal.com integration. Support both in-person and virtual appointments, sync with Google Calendar, and let customers book directly through a dedicated page. Payments are processed through HitPay, and you can embed the booking page in your online shop for a seamless experience. ### Setup Steps 1. **Create Your Cal.com Account** * Go to [cal.com](https://cal.com) and sign up for a free account. ![Create Account](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/cal/cal_create_account.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=ef4fc5d66d71a282cc6bbac45bbc4db3) 2. **Install HitPay in [cal.com](https://cal.com)** * Go to the [HitPay app on Cal.com](https://cal.com/apps/hitpay). * Click on **Install App** to connect HitPay with your Cal.com account. 3. **Retrieve Your API Key and Salt from HitPay** * Open your HitPay dashboard, navigate to **Payments**, and select **API Keys**. * Copy the **API Key** and **Salt** values, which will be used to authenticate your account in Cal.com. * **Important**: Keep these keys secure and do not share them publicly. ![APIs Keys](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/cal/api_keys.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=29c7ed5a196258331cb5918d62a27872) 4. **Enter Your API Key and Salt in [cal.com](https://cal.com)** * Return to [HitPay app on Cal.com](https://cal.com/apps/hitpay/setup). * Paste the **API Key** and **Salt** values you copied from HitPay. ![Account Information](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/cal/account_information.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=d4a162370dc364024f57afcd148d6b62) 5. **Optional - Sync with Google Calendar and Virtual Meeting Apps** * To sync with a calendar, connect your **Google Calendar** to automatically reflect your availability. * For virtual appointments, connect to **Google Meet** or other supported platforms for seamless virtual meetings. 6. **Set Up Your Event in [cal.com](https://cal.com)** * Go to **Event Types** and select **Create New Event**. * Enter event details such as the **Title**, **Duration**, and **Availability**. Configure any advanced settings as needed. 7. **Enable HitPay for Payments and Set Pricing** * Within your event setup, go to the **Apps** section and enable **HitPay** for payment processing. * Set a currency and price for the event, allowing customers to book and pay directly. 8. **Share or Embed Your Booking Page** * To share your booking page with customers: * Go to dashboard and click **Copy Public Page Link** to provide a link displaying all your booking options. * To embed the event on your online store: * Click the three dots next to the event, select **Inline Embed**, and copy the embed code. * In the HitPay dashboard, go to **Online Shop > Store Design > Sections > Embed Code** and paste the code to integrate booking directly into your online shop. ![Booking Online Store](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/cal/booking_online_store.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=65ca2fecff6dffd131941e3a19429932) #### Customer Booking Experience 1. **Booking a Session** * When customers visit the booking page, they can select their preferred date and time, fill in their details, and click **Pay to Book**. 2. **Payment Process** * After clicking **Pay to Book**, customers will be redirected to the HitPay checkout page to complete their payment. 3. **Booking and Payment Confirmation** * Upon successful booking and payment, customers will receive confirmation, and you will see the booking details in the **Booking Table** within [cal.com](https://cal.com). #### Viewing Bookings and Payments * **View Bookings**: All bookings will appear in the **Booking Table** within [cal.com](https://cal.com/bookings/upcoming). * **View Payments**: Payments can be tracked on your HitPay dashboard under **Transactions** or in your online shop under **Bookings**. ## FAQs > **Can I embed my booking page with HitPay payment integration using Cal.com?** > > Currently, the HitPay payment integration for embedded booking pages is only available on [cal.hitpayapp.com](https://cal.hitpayapp.com). To use this feature, please create your account on this site. > The HitPay payment embed functionality will soon be available on the main Cal.com platform. > **Can I customise the appearance of the booking page?** > > Basic customisation options are available directly on Cal.com. > **Can I manage bookings directly from HitPay?** > > No, booking management (e.g., rescheduling, cancellations) must be handled through Cal.com. Only payment details are accessible on the HitPay dashboard. > **How do I process a refund if a customer cancels their booking?** > > If a customer cancels their booking, you will need to manually process the refund. Go to your HitPay dashboard, navigate to **Transactions**, find the relevant transaction, and issue the refund from there. Refunds are not processed automatically for canceled bookings. # Shopcada Source: https://docs.hitpayapp.com/plugins/shopcada Integrate HitPay payment gateway into your Shopcada store ## Account Setup Shopcada users can easily enable HitPay's payment gateway in their online store to start accepting popular payment methods quickly. Before you begin integrating HitPay payments into your Shopcada store, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open Links and Payment Request API and choose which payment methods show at checkout. ## Integration Guide Once your HitPay account is ready, follow these steps to integrate the HitPay Payment Gateway with Shopcada: ### Step 1: Access Shopcada Admin Settings Navigate to your Shopcada Admin Settings and click on **Payment Methods** under Settings. ![Shopcada Settings](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Shopcada-Settings.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=36bfa858658adca08fad7353cd819bf3) ### Step 2: Configure HitPay Settings Click on **HitPay Settings**. ![Shopcada Hitpay](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Shopcada-Hitpay.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=e836400958b86412ee48b947a68ab958) ### Step 3: Provide API Keys and Salt Copy and paste the HitPay API keys and Salt values into the highlighted fields in Shopcada. You can find your HitPay API Key and Salt Keys by navigating to **Developers > API and Salt Keys** in the HitPay dashboard. Click **Save Configuration**. ![Shopcada API Key](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Shopcada-api-key.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=04bde45f7037bdeead7eedcbaff43c74) ### Step 4: Enable/Disable Payment Methods Configure your payment methods for Shopcada Checkout by updating your Links and Payment Request API integration settings in the HitPay dashboard (**Integrations → Links and Payment Request API**). > [!NOTE] > > Please note that these settings will also affect other Links and Payment Request APIs, such as direct [payment links generated](/payment-links/payment-links#creating-a-payment-link) from your dashboard or custom-built websites integrated with HitPay via [API Integration](https://docs.hitpayapp.com/apis/guide/platform-apis). ![Shopacada Link](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Easystore-Link.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=81c86b6b0c396a07bb25faec58332420) ![Shopcada Integration](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Easystore-Integration.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=631d21d1c3e50a8a80b6a01826b00c1b) ### Step 5: Start Accepting Payments Your HitPay settings are now configured, and you can begin accepting payments with HitPay through your Shopcada online store! 🎉 ## Refunds In Shopcada, refunding transactions is a two-step process. You'll need to process the refund in the HitPay dashboard and manually update your Shopcada order as refunded. > [!NOTE] > > **Important Note:** Successful refunds must meet the criteria of the payment method used. For more details, check out the [refund process documentation](https://docs.hitpayapp.com/payments/refund#refund-process). ### Processing Refunds in HitPay Follow these steps to process refunds using the HitPay dashboard: * Navigate to **Bank Payouts > Transactions.** * Click on the transaction you would like to refund. * Click on the **Refund** button. * Confirm the refund by clicking on the **Confirm** button and wait for the refund success message. > [!NOTE] > > Please Note: Initiating a refund from the HitPay dashboard will not automatically update your Shopcada order. You must manually update the order status in Shopcada as well. ### Shopcada Refund Process In Shopcada, refunds cannot be initiated from the dashboard. Instead, follow these steps to process refunds: * Process the refund in the HitPay dashboard as outlined above. * Manually mark the corresponding order as refunded in your Shopcada dashboard. By following these steps, you can effectively manage refunds for your Shopcada orders. ## FAQs > **Does HitPay send an email after the Shopcada order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through Shopcada. This is because Shopcada, by default, sends an email to your customer with the order details. To avoid sending duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. # Shopify Source: https://docs.hitpayapp.com/plugins/shopify Integrate hitpay payments app into your Shopify store ## Account Setup Before you begin integrating HitPay payments into your Shopify store, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open Shopify and choose which payment methods show at checkout. ## Integration Guide Follow these steps to seamlessly integrate HitPay payments into your Shopify store: 1. Install the HitPay App from the Shopify App Store by clicking on the following link: [https://apps.shopify.com/hitpay-payment-gateway](https://apps.shopify.com/hitpay-payment-gateway). 2. On the app page, click "Add App". ![Install App](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/shopify/shopify-install.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=7b1e80155d97fbc4f689be5086c7fa06) 3. You will be redirected to the HitPay dashboard. Enter your HitPay account details. 4. After entering your login details, click "Continue". ![Continue](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/shopify/shopify-continue.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=af00b608f9b293fcfb9c2d09a7f69272) 5. You will be redirected back to the Shopify admin. Click "Manage" in the HitPay App. ![Manage](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/shopify/shopify-manage.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=8c41f94028b90b1880a2cce7cb16f54e) 6. Customize the payment method logos and scroll down to "Activate App". Note that this step is for payment logos appearing on your Shopify Checkout Page. Only check the boxes for payment methods available for your account and matching those visible at the checkout page to avoid customer confusion. 7. Choose payment methods to display on your Shopify Checkout by updating Integration Settings on the HitPay dashboard > **Integrations** > **Available** tab > select **Shopify** and choose desired payment methods. 8. Once activated, the HitPay checkout option will appear on the customer checkout page. 9. You're done! Your HitPay integration is now live. > [!WARNING] > > Please note: There will be a 0.5% surcharge in the fees when payments are processed using this plugin, in addition to the existing pricing. ### Testing on Shopify If you want to test transactions using the HitPay plugin, follow these steps: ![Logos](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/shopify/shopify-test-mode.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=bfe27966cdf66d01831a131e57e4dc03) * Enable test mode by checking the box. * In test mode, sandbox-supported payment methods (PayNow, cards, ShopeePay, GrabPay, GrabPay PayLater, Atome) will be available for testing, and all transactions will be simulated. Alternatively, you can experience the checkout process at the [HitPay Shopify Test Store](https://lululaw.myshopify.com). ### Reconciling Orders between Shopify and HitPay * All HitPay transactions made through Shopify generate a unique payment ID. * The payment ID is visible in the HitPay transaction reports under Sales and Reports. * You can find this payment ID in the Shopify orders report under column BX. ### Refunds Refunds are fully integrated into the Shopify dashboard, so you can directly proceed to refund an order from the Shopify dashboard, and it will automatically refund the payment back to the customer. > [!NOTE] > > Refunds will only be successful if they meet the criteria of the payment method used. Click [Here](https://docs.hitpayapp.com/payments/refund#refund-process) for more details. > If the refund fails, please try to refund directly from the Hitpay dashboard under "Transactions > Select > Refund" to know the exact error. > [!WARNING] > > If you initiate a refund from the **Hitpay dashboard**, your Shopify order will **not** be marked as refunded. You need to manually update your order in Shopify. **Steps to Refund an Order in Shopify** 1. Log in to your Shopify Admin. 2. Navigate to "Orders" in the left-hand menu. 3. Select the order to refund. 4. Click the "Refund" button within the order details. 5. Specify refund details, including items and amount. 6. Choose the refund method (original payment or store credit). 7. Confirm and process the refund. 8. Notify the customer about the refund. 9. Check and ensure the order status is updated to "Refunded" or similar. 10. Monitor the refund status for completion. ## FAQs > **Does HitPay send an email after the Shopify order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through Shopify. This is because Shopify, by default, sends an email to your customer with the order details. To avoid sending duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. > **Is it possible to rename 'HitPay Payment Gateway' in the shopify checkout page?** > > No, you cannot edit the payment method title on your Shopify checkout page as it's a limitation imposed by Shopify. # Shopify POS Source: https://docs.hitpayapp.com/plugins/shopify-pos Take HitPay terminal payments inside Shopify POS > [!NOTE] > > The HitPay Terminal app for Shopify POS is in beta. If something doesn't work as expected, contact [support@hit-pay.com](mailto:support@hit-pay.com). The **HitPay Terminal** app for Shopify POS sends each sale from Shopify POS to your HitPay terminal. Your customer pays by card or a local payment method, and the Shopify order is marked paid and linked to its HitPay payment automatically. Watch how to set up the app and take a payment: [HitPay Terminal app for Shopify POS](https://www.youtube.com/embed/6NsuIBPEz00) ## Before you begin You need: * A HitPay account that is live and verified. If you don't have one yet, [create an account](/setup/account-creation). * A Shopify store that uses **Shopify POS**. * The same currency in Shopify and HitPay. Terminal payments are charged in your HitPay account's currency, so your Shopify store currency must match it. * A supported HitPay terminal: * WisePOS E * FlexiPOS (Stripe S700 or S710) * HitPay All-in-One Ingenico S1F2 * HitPay All-in-One Ingenico DX4000 * Verifone V660P (All-in-One) > [!TIP] > > Don't have a terminal yet? Order one from the [HitPay shop](https://hitpay.shop/hitpayterminal/). ## Set up the app **1. Register for the app** The HitPay Terminal app isn't listed in the Shopify App Store. To get it, fill in the [registration form](https://forms.gle/qUR1XpWujwbyC4t8A) with your store's `.myshopify.com` domain. You can find your `.myshopify.com` domain in Shopify admin under **Settings** > **Domains**. HitPay sends you the install link for your store only after you've submitted the form. **2. Install the app** Open the install link while you're logged in to your Shopify store as the owner, or as a staff member who can install apps. Review the permissions and click **Install**. **3. Copy your HitPay API key and salt** In your HitPay dashboard, go to **Developers** > **API Keys** and copy your **API key** and **salt**. **4. Connect HitPay** In Shopify admin, open the **HitPay Terminal** app. On the **Overview** page, paste your API key and salt and click **Connect HitPay**. > [!WARNING] > > Keep your API key and salt private. Paste them only into the app, and never share them by email or chat. **5. Put your terminal in In-Person Payment API mode** On the terminal, switch to **In-Person Payment API** mode. See [Displaying payments on the terminal](/apis/guide/in-person-payments/overview#displaying-payments-on-the-terminal) for the steps. **6. Map your terminals** In the app, open **Terminals** and click **Add a terminal**. Choose the Shopify POS location and the terminal it should use, then save. Repeat for each location. **7. Let your staff use the app** In Shopify admin, give your POS staff roles permission to use apps. Without it, the app tells the cashier to ask the store owner for access. ## Take a payment **1. Ring up the sale** In Shopify POS, add the items to the cart and tap **Checkout**. **2. Tap Mark unpaid** Choose **Mark unpaid**. In this app, **Mark unpaid** means "pay on the HitPay terminal". Shopify's label can't be changed. **3. Choose how the customer pays** The HitPay screen opens automatically with the order total. Tap **Card**, or a QR method such as PayNow, DuitNow, QR Ph or GCash. The terminal shows the amount, or the QR code to scan. **4. The customer pays** When the payment succeeds, the order is marked paid in Shopify automatically. The payment shows in your HitPay dashboard with the Shopify order number as its reference, so you can match every HitPay payment to its Shopify order. > [!NOTE] > > The payment methods offered on the terminal are the ones turned on for your HitPay account. Methods your account can't take aren't shown. ### If the customer doesn't pay If the customer changes their mind before paying, tap **Cancel order** on the HitPay screen, then tap it again to confirm. Shopify cancels the order and restocks the items. The customer isn't charged. You can only cancel an order this way while it's unpaid. Once a HitPay payment has succeeded, refund it instead. ## Refund a payment **1. Open the order** In Shopify POS, open the paid order. **2. Refund through HitPay** Tap **HitPay**, then **Refund**. The refund goes back to the customer through HitPay, and appears on the Shopify order and in your HitPay dashboard. ## Customers If you add a customer to the cart or the order **before** they pay, the customer is: * Added to your HitPay customers, with their name, email and phone. * Attached to the HitPay payment. * Sent HitPay's receipt by email, if they have an email address. If you add a customer **after** the payment, they're added to your HitPay customers, but not attached to that payment. > [!NOTE] > > To copy customers, approve the app's customer permissions when Shopify asks. Until then, payments still work, but customers aren't copied to HitPay. ## Optional settings ### Show HitPay as the payment method on orders By default, Shopify records terminal payments as **Other**. To show **HitPay – Card**, **HitPay – PayNow** and so on, add manual payment methods with these exact names in Shopify admin under **Settings** > **Payments** > **Manual payment methods**. This makes Shopify's payment reports easier to reconcile. ### Charge from the POS home screen You can also add the **HitPay Terminal** tile to your Shopify POS home screen. It lets you send the cart total to the terminal before you check out. Most stores only need **Mark unpaid**. ## Troubleshooting > **The terminal doesn't light up** > > Check that the terminal is on, connected to the internet, and in **In-Person Payment API** mode. Then check that it's mapped to the POS location you're using under **Terminals** in the app. > **"Currencies don't match"** > > Your Shopify store currency must match your HitPay account currency. Terminal payments can only be charged in your HitPay account's currency. > **"HitPay rejected the API key"** > > Copy your API key and salt again from **Developers** > **API Keys** in the HitPay dashboard, and paste both into the app's **Overview** page. > **The cashier sees "Ask the store owner to give your staff role permission to use apps"** > > In Shopify admin, give that staff member's POS role permission to use apps. Need help? Contact [support@hit-pay.com](mailto:support@hit-pay.com). # Shoplazza Source: https://docs.hitpayapp.com/plugins/shoplazza Integrate HitPay payment gateway into your Shoplazza store ## Account Setup Before you begin integrating HitPay payments into your Shoplazza store, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open Shoplazza and choose which payment methods show at checkout. ## Integration Guide Follow these steps to seamlessly integrate HitPay payments into your Shoplazza store: 1. Login to your Shoplazza dashboard 2. Navigate to **Settings > Payments** in the Shoplazza Admin Dashboard 3. Click on **Add payment provider** 4. Switch to the **Search by payment provider** tab 5. Search for "HitPay" in the search bar 6. Click **Activate** next to HitPay Payment App ![](https://mintcdn.com/hitpay/4kdNGDgO14T2atKk/images/shoplazza/add-payment-provider.png?fit=max\&auto=format\&n=4kdNGDgO14T2atKk\&q=85\&s=58212cb43e3b638be83d3976af8c6f56) 7. Enter your API Keys and Salt Values under Account Information and click **Connect**. You can get API keys from **Developers > API and Salt Keys** in your HitPay dashboard. You're done! Your HitPay integration is now live. > [!WARNING] > > Please note: There will be a 0.2% surcharge in the fees when payments are processed using this plugin, in addition to the existing pricing. ## Selecting Payment Methods Enable/disable the payment methods for your Shoplazza Checkout by updating your Integration Settings for Shoplazza. Login to the HitPay dashboard and select the methods under **Integrations > Shoplazza Payments App**. ### Reconciling Orders between Shoplazza and HitPay Navigate to **Finances > Payments** in the Shoplazza Dashboard and download the transactions report. You will find the HitPay payment reference ID which you can match with the Plugin Reference column in the Transactions Report downloaded from **Sales and Reports > Transactions** in the HitPay Dashboard. ### Refunds Refunds are fully integrated into the Shoplazza dashboard, so you can directly proceed to refund an order from the Shoplazza dashboard, and it will automatically refund the payment back to the customer. > [!NOTE] > > Refunds will only be successful if they meet the criteria of the payment method used. Click [Here](https://docs.hitpayapp.com/payments/refund#refund-process) for more details. > If the refund fails, please try to refund directly from the HitPay dashboard under "Transactions > Select > Refund" to know the exact error. > [!WARNING] > > If you initiate a refund from the **HitPay dashboard**, your Shoplazza order will **not** be refunded. You need to manually update your order in Shoplazza. **Steps to Refund an Order in Shoplazza** 1. Log in to your Shoplazza Admin. 2. Navigate to "Orders" in the dashboard. 3. Select the order you wish to refund. 4. Click the "Refund" button within the order details. 5. Specify refund details, including items and amount. 6. Choose the refund method. 7. Check and ensure the order status is updated to "Refunded" or similar. 8. Monitor the refund status for completion. ## FAQs > **Does HitPay send an email after the Shoplazza order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through Shoplazza. This is because Shoplazza, by default, sends an email to your customer with the order details. To avoid sending duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. > **Can I update the payment logos on my Shoplazza checkout page?** > > This depends on the customization options available in Shoplazza. Please check with Shoplazza support for specific customization capabilities. # WHMCS Source: https://docs.hitpayapp.com/plugins/whmcs Integrate HitPay payment gateway into your WHMCS store ## Account Setup Before you begin integrating HitPay payments into your WHMCS store, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open WHMCS and choose which payment methods show at checkout. ## Installation [https://github.com/hit-pay/WHCMS-extension](https://github.com/hit-pay/WHCMS-extension) After following the installation guide on Github, ensure that you complete your WHMCS integration settings in the HitPay dashboard (**Integrations → WHMCS**) to complete the integration to your website: ![WHMCS Integration](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/plugins/plugins_whcms.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=a937baf7663898268636b94f9b703a06) That’s it! You’re all set up with HitPay on WHMCS. 🎉 ## FAQs > **Does HitPay send an email after the WHMCS order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through WHMCS. This is because WHMCS, by default, sends an email to your customer with the order details. To prevent duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. # Wix Source: https://docs.hitpayapp.com/plugins/wix Integrate HitPay payment gateway into your Wix store ## Account Setup Before you begin integrating HitPay payments into your Wix store, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open Wix and choose which payment methods show at checkout. ## Integration Guide Follow these steps to seamlessly integrate HitPay payments into your Wix store: 1. Login to your Wix dashboard 2. Navigate to **Settings > Accept Payments** in the Wix Admin Dashboard: ![Settings Wix](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/wix/settings.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=11d67c79b3994d8a0ef466648025dc5f) 3. Scroll down and click **See More Payment Options** ![More](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/wix/settings-more.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=544e2bc583728efec90e86ac7da4500c) 4. Click **Connect** next to HitPay ![Continue](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/wix/hitpay-connect.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=7d95b408f029e1883280335ef86b316e) 5. Enter API Keys and Salt Values under Account Information and click on Connect. You may get API keys from **Developers > API and Salt Keys.** ![Wix Keys](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/wix/hitpay-keys.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=02561c003cf22d3b529e34ae388042b7) You're done! Your HitPay integration is now live. > [!WARNING] > > Please note: There will be a 0.2% surcharge in the fees when payments are processed using this plugin, in addition to the existing pricing. ## Selecting Payment Methods Enable/disable the payment methods for your Wix Checkout by updating your Integration Settings for Wix. Login to the hitpay dashboard and select the methods under **Integrations > Wix Payments App** ![Wix Keys](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/wix/wix-integrations.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=cfab5d3c9852eb0c8c120c9495ef79a6) ### Reconciling Orders between Wix and HitPay Navigate to **Finances > Payments** in the Wix Dashboard and click on the download CSV button. Upon downloading the CSV, you will find the HitPay payment reference ID under the column Provider Payment ID. You can match the above ID with Plugin Reference column which can be located from the downloaded Transactions Report by going to **Sales and Reports > Transactions** in the HitPay Dashboard. ![Wix Keys](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/wix/wix-recon.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=06fe37d7a69267475bd8ae23b7ff8499) ### Refunds Refunds are fully integrated into the Wix dashboard, so you can directly proceed to refund an order from the Wix dashboard, and it will automatically refund the payment back to the customer. > [!NOTE] > > Refunds will only be successful if they meet the criteria of the payment method used. Click [Here](https://docs.hitpayapp.com/payments/refund#refund-process) for more details. > If the refund fails, please try to refund directly from the Hitpay dashboard under "Transactions > Select > Refund" to know the exact error. > [!WARNING] > > If you initiate a refund from the **Hitpay dashboard**, your Wix order will **not** be refunded. You need to manually update your order in Wix. **Steps to Refund an Order in Wix** 1. Log in to your Wix Admin. 2. Navigate to "Orders" in the dashboard. 3. Select the order you wish to refund. 4. Click the "Refund" button within the order details. 5. Specify refund details, including items and amount. 6. Choose the refund method (original payment or store credit). 7. Check and ensure the order status is updated to "Refunded" or similar. 8. Monitor the refund status for completion. ## FAQs > **Does HitPay send an email after the Wix order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through Wix. This is because Wix, by default, sends an email to your customer with the order details. To avoid sending duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. > **Can I update the payment logos on my Wix checkout page?** > > No, you cannot update the payment logo on your Wix checkout page as it's a limitation imposed by Wix. # WooCommerce Source: https://docs.hitpayapp.com/plugins/woocommerce Integrate HitPay payment gateway into your WooCommerce store ## Account Setup Before you begin integrating HitPay payments into your WooCommerce store, you need to set up your HitPay account and ensure some prerequisites are met: 1. If you haven't already, create an account on [HitPay](/setup/account_creation). 2. Ensure that you have the necessary payment methods [activated](/payments/payments#activate-payment-methods) in your HitPay account. 3. In your HitPay dashboard, go to **Integrations**, open WooCommerce and choose which payment methods show at checkout. ![HitPay WooCommerce Plugin Integration Settings](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/woocommerce/plugin-woo-com.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=24de51175482d6a632b2a42180c8fc1d) ## Integration Guide > [!TIP] > > You can view the checkout experience at the HitPay Test Store hosted on WooCommerce [here](https://rqz.yeu.mybluehost.me). **1. Install HitPay WooCommerce Plugin** Search for **HitPay** in the plugin search field from your WordPress admin dashboard and install the plugin. ![Search and Install Plugin](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/woocommerce/install.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=1fc414b3aa1e7a8856dbd8ab62718f87) If you'd prefer to manually upload the plugin, you can download the zip from [GitHub Releases](https://github.com/hit-pay/woocommerce/releases/latest). **2. Activate the Plugin** Once installed, click on **Activate Plugin**. > [!NOTE] > > Enable auto-updates for the plugin to ensure you always have the latest version. **3. Open HitPay Settings** Go to **WooCommerce > Settings > Payments** and click **Manage** next to HitPay. ![WooCommerce Payment Settings](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/woocommerce/settings.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=9673cb6cdb4e57579192b1230951cf6a) ![Manage HitPay Settings](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/woocommerce/manage.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=221ad3e6454ff0468b167097ad2a72a2) **4. Copy Your API Keys and Salt** You can find your API credentials in the HitPay dashboard under **Developers > API and Salt Keys**. ![HitPay API Keys Page](https://mintlify.s3.us-west-1.amazonaws.com/hitpay/images/api-keys.png) Copy both the **API Key** and **Salt** and paste them into the appropriate fields in your WooCommerce plugin settings. > [!NOTE] > > Enable Live Mode only if you are using production API keys and Salt.\ > If you're testing, uncheck Live Mode and use the sandbox credentials from [HitPay Sandbox dashboard](https://dashboard.sandbox.hit-pay.com). ![WooCommerce HitPay Key Settings](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/woocommerce/keys.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=495f0fb13d1ac0bb7f1badafd1ba9444) **5. Test the Connection** Click **Test Connection** to verify that your credentials are correct.\ If successful, you'll see a confirmation. If it fails, click **View Details** to understand the issue. ![Test Connection WooCommerce](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/woocommerce/test-woo-commerce.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=7213b1c9eb3c21912abd3466cf538a05) **6. Save Settings** Once the test passes, click **Save Changes** to apply your configuration. That's it! You're all set up with HitPay on WooCommerce. 🎉 ### Refunds Refunds are fully integrated into the WooCommerce dashboard, so you can directly proceed to refund an order from the WooCommerce dashboard, and it will automatically refund the payment back to the customer. > [!NOTE] > > Refunds will only be successful if they meet the criteria of the payment method used. Click [Here](https://docs.hitpayapp.com/payments/refund#refund-process) for more details. > If the refund fails, please try to refund directly from the Hitpay dashboard under "Transactions > Select > Refund" to know the exact error. > [!WARNING] > > If you initiate a refund from the **Hitpay dashboard**, your WooCommerce order will **not** be refunded. You need to manually update your order in WooCommerce. **Steps to refund from WooCommerce Admin Dashboard:** 1. Log in to the Admin panel. 2. Navigate to WooCommerce by clicking on "WooCommerce" in the menu. 3. Select "Orders" from the WooCommerce menu. 4. Find the order you want to process a refund for and click on the "View" icon or the row associated with that order. This action will take you to the Admin Order Details page. 5. Scroll down on the Admin Order Details page to locate the "Refund" button. It should be displayed on the page. 6. If the order was paid using the 'HitPay Payment Gateway,' WooCommerce will, by default, display a button that says 'Refund xx via HitPay Payment Gateway' on the screen. 7. If the payment gateway accepts the refund request, the refund details will be automatically added to the order's history. 8. Please note that only one refund is allowed per transaction. ## FAQs > **Does HitPay send an email after the WooCommerce order is confirmed** > > No, HitPay does not send an email confirmation to your customer if the payment is made through WooCommerce. This is because WooCommerce, by default, sends an email to your customer with the order details. To prevent duplicate emails, HitPay does not send an additional email to your customers. As a merchant, you will receive a payment alert email. > **How do I send WooCommerce test store access to HitPay?** > > If you are unable to resolve the WooCommerce issues, you can request HitPay support to help with your debugging. But before that, make sure the following checks are completed: > > * Ensure that your credentials are correct, both the API Key and Salt. > > * Ensure that you are testing with an amount greater than \$1 (or equivalent). > > * Make sure the webhook in the HitPay dashboard shows "Success." > Please provide the following details to the HitPay team: > > 1. Debug logs from your WooCommerce store. > 2. Admin access to your WooCommerce test store (Since our team will be debugging, please avoid sending access to your live store). > 3. SFTP access to your test store. > You can send the details to [support@hit-pay.com](mailto:support@hit-pay.com) (Approximate debug time would be 3 to 5 business days). > **How can I support multiple currencies using HitPay and WooCommerce?** > > To support multiple currencies, you can use a WooCommerce plugin such as the [Currency Switcher for WooCommerce](https://wordpress.org/plugins/currency-switcher-woocommerce/). This plugin allows customers to switch between currencies on your store. Once the currency is selected, the HitPay checkout page will automatically display the relevant payment methods for that currency. # WordPress Source: https://docs.hitpayapp.com/plugins/wordpress HitPay Payment Gateway Plugin allows HitPay merchants to accept PayNow QR, Cards, Apple Pay, Google Pay, WeChatPay, AliPay and GrabPay Payments.,This plugin would communicate with 3rd party HitPay payment gateway(https://www.hitpayapp.com/) in order to process the payments.,Merchant must create an account with HitPay payment gateway(https://www.hitpayapp.com/).,Pay only per transaction. No monthly, setup, admin or any hidden service fees. ## Account Setup Before you begin integrating HitPay Payment Gateway Plugin into your your Wordpress site, you need to set up your HitPay account and ensure some prerequisites are met: 1. Merchant once created an account with [HitPay payment gateway](https://www.hitpayapp.com/), they can go to their HitPay dashboard and choose the payment options they would to avail for their site. 2. And merchant need to copy the API keys and Salt values from the HitPay Web Dashboard under Settings > Payment Gateway > API Keys 3. HitPay Payment Gateway for WordPress Info: * HitPay Tags: HitPay, payment gateway, woocommerce * QR code Requires at least: `4.0` Tested up to: `6.8` Stable tag: `4.1.9` * Requires PHP: `5.5` WC requires at least: `2.4` WC tested up to: `9.8.1` License: MIT ## Integration Guide **1. Installation** ## Uploading in WordPress Dashboard 1.Navigate to the 'Add New' in the plugins dashboard 2\. Navigate to the 'Upload' area 3\. Select hitpay-payment-gateway-for-wordpress.zip from your computer 4\. Click 'Install Now' 5\. Activate the plugin in the Plugin dashboard ## Using FTP 1. Download `hitpay-payment-gateway-for-wordpress.zip` 2. Extract the `hitpay-payment-gateway-for-wordpress` directory to your computer 3. Upload the `hitpay-payment-gateway-for-wordpress` directory to the `/wp-content/plugins/` directory 4. Activate the plugin in the Plugin dashboard **Updating:** Automatic updates should work like a charm; as always though, ensure you backup your site just in case. **2. Configuration** 1. Go to HitPay Payment Gateway => Settings 2. Active: Enable/Disable this payment option 3. Pay Button Text: If button text is not provided in the short code, this default button text will be used.(for example: "HitPay or Credit card or PayNow") 4. Live: Enable payments in live mode 5. Copy the API keys and Salt values from the HitPay Web Dashboard under `Settings > Payment Gateway > API Keys` 6. Currency: If currency is not provided in the short code, this default currency will be used. 7. Click "Save Changes" ![HitPay Payment Gateway Plugin Configuration](https://mintcdn.com/hitpay/oHF66ce96akmC0Fe/images/wordpress/1-plugin-settings.png?fit=max\&auto=format\&n=oHF66ce96akmC0Fe\&q=85\&s=f8ca5f0097207f7b166afcfed3257717) **3. Shortcode** Insert the shortcode anywhere on your page or post that you want the form to be displayed to the user. 1. **Basic**: For the below code, requires the user to enter amount and email to complete payment, default button text and currency will be used. \[hitpay-paynow-button] 2. **With button text**: For the below code, requires the user to enter amount and email to complete payment, provided button text and default currency will be used. \[hitpay-paynow-button]HitPay Cards\[/hitpay-paynow-button] 3. **With attributes**: email or `use_current_user_email` with value `"yes"`, amount. \[hitpay-paynow-button amount=100 email="[customer@email.com](mailto:customer@email.com)" ] or \[hitpay-paynow-button amount=100 use\_current\_user\_email="yes" ] 4. **With attributes email, amount and currency with button text**: \[hitpay-paynow-button amount=100 email="[customer@email.com](mailto:customer@email.com)" currency=EUR ]HitPay Cards\[/hitpay-paynow-button] ![Test WordPress Payment Page](https://mintcdn.com/hitpay/oHF66ce96akmC0Fe/images/wordpress/2-shortcode-usage.png?fit=max\&auto=format\&n=oHF66ce96akmC0Fe\&q=85\&s=0aa5fbf908e482c774ef4d1a6dee93d7) **4. Test WordPress Payment Page** 1. For HitPay Card ![The Form for Card Payment](https://mintcdn.com/hitpay/oHF66ce96akmC0Fe/images/wordpress/3-payment-form.png?fit=max\&auto=format\&n=oHF66ce96akmC0Fe\&q=85\&s=1df4cace861c3e9ad3496dfc5d726f36) 2. PayNow ![The Form for PayNow method](https://mintcdn.com/hitpay/oHF66ce96akmC0Fe/images/wordpress/4-payment-form.png?fit=max\&auto=format\&n=oHF66ce96akmC0Fe\&q=85\&s=148c62aff47e673f1b3740e42c3d2f52) That's it! You're all set up with HitPay Payment Gateway Plugin. 🎉 ### Manage Payment Transactions The user can manage the payment transactions from WordPress Admin. 1. Go to `HitPay Payment Gateway => Transactions` 2. Click view link to Transaction details 3. Admin can change the payment status ![Transactions List](https://mintcdn.com/hitpay/oHF66ce96akmC0Fe/images/wordpress/5-Transaction-List.png?fit=max\&auto=format\&n=oHF66ce96akmC0Fe\&q=85\&s=bc4406465da343fc780b7fb59f2e0c3a) ### Refund The user can refund the payment transactions from WordPress Admin. 1. Go to `HitPay Payment Gateway => Transactions` 2. Click view link to Transaction details 3. Enter the amount and click refund button ![Refund](https://mintcdn.com/hitpay/oHF66ce96akmC0Fe/images/wordpress/6-Transaction-Details.png?fit=max\&auto=format\&n=oHF66ce96akmC0Fe\&q=85\&s=2e6d7c77b1b1e9f7db6fb16496f7789c) > [!NOTE] > > Refunds will only be successful if they meet the criteria of the payment > method used. Click > [Here](https://docs.hitpayapp.com/payments/refund#refund-process) for more > details. If the refund fails, please try to refund directly from the HitPay > dashboard under "Transactions > Select > Refund" to know the exact error. ## FAQs > **Do I need an API key?** > > You can copy the API keys and Salt values from the HitPay Web Dashboard > under `Settings > Payment Gateway > API Keys`. # Xero Invoices Payment Source: https://docs.hitpayapp.com/plugins/xero Integrate HitPay payment gateway into your Xero Invoices ## Overview This section elaborates on how you can integrate HitPay payments into your Xero invoices. With this integration, your customers can pay your Xero invoices using HitPay payment methods like PayNow, Credit Card, etc. To get started, make sure you have the following: 1. Fully verified [HitPay](/setup/account_creation) account. 2. Make sure the payment methods you want to offer are [enabled](/payments/payments#activate-payment-methods) in your HitPay account. ## Integration Guide Follow these steps to seamlessly integrate HitPay payments into your Xero Invoice: 1. Log in to your **Xero Dashboard**, navigate to **Accounting > Chart of Accounts > Add Account**, and enable the option "Enable payments to this account". ![Enable Xero](https://mintcdn.com/hitpay/oHF66ce96akmC0Fe/images/xero/xero_enable.png?fit=max\&auto=format\&n=oHF66ce96akmC0Fe\&q=85\&s=df82837cd9c619091a0539f7cb2a0b45) 2. Log in to your [HitPay Dashboard](https://dashboard.hit-pay.com), go to **Others > Integrations**, and click the **Xero (Payment Gateway)** card under the **Payments** section. 3. Click the **Connect to Xero** button. This will navigate you to the Xero Login screen. Enter your Xero credentials, select your organisation, and continue. 4. After you authorise, you are returned to the HitPay dashboard with a **"Successfully authorized"** confirmation — your Xero connection is now active. 5. Next, set up the payment integration. Go to the **Integrations** page, switch to the **Available** tab, and select **Xero (Payment Gateway)**: ![Xero Integration Payment page](https://mintcdn.com/hitpay/oHF66ce96akmC0Fe/images/xero/xero_integration_payment.png?fit=max\&auto=format\&n=oHF66ce96akmC0Fe\&q=85\&s=35d87c596867f69e993f05abb0852468) * **Payment methods**: choose the payment methods you want to offer on your Xero invoices * Click **Create** That's it! Your Xero invoices can now be paid using HitPay payment methods 🎉 Your customers will see a payment button (e.g. "PayNow") on your Xero online invoices: ![Xero invoice with HitPay payment button](https://mintcdn.com/hitpay/oHF66ce96akmC0Fe/images/xero/xero_invoice.png?fit=max\&auto=format\&n=oHF66ce96akmC0Fe\&q=85\&s=895ea8e3d93e56fc04ca9ab749153d0e) > [!NOTE] > > You can customise the payment button label in your Xero sync settings (the **Xero PayNow button text** field). See [Xero Sync settings](/connections/xero#configuring-sync-settings). > [!WARNING] > > Please note: There will be a 0.2% surcharge in the fees when payments are processed using this plugin, in addition to the existing pricing. ## Feed Sales Data to Xero The same Xero connection can also feed your HitPay sales, fees, and refund data into Xero automatically once a day — including a **HitPay Clearing Account** (created when you first save your sync settings) and a daily settlement transfer to your bank account for easy reconciliation. See [Xero Sync](/connections/xero) for the full setup and configuration guide. > [!NOTE] > > Payments made on Xero invoices through this plugin are reconciled against the invoice itself, so the sales feed intentionally excludes them — no double counting. ## FAQs > **Does HitPay send an email after the Xero invoice is paid?** > > No — HitPay does not send an email confirmation to your customer when the payment is made through Xero. Xero handles invoice communication. # Advanced Printer Source: https://docs.hitpayapp.com/pos/advanced-printer Learn advanced printer configurations and settings ![Wifi Printer](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/wifi-printer.jpeg?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=aea917d4d418cf565b2ab865b8d6b6ce) HitPay Advanced printer works with the following HitPay POS set up : * HitPay app on iOS * HitPay app on Android * FlexiPOS standalone terminals It supports the following paper receipt dimensions: * Paper width: 80mm * Paper roll diameter: 80mm max ## How to connect your Advanced Receipt Printer? [YouTube video player](https://www.youtube.com/embed/D41eQAA9ZM8?si=BUaLCEzDeZCXCIuT) ### Part 1 : Connect your HitPay POS to a Wi-Fi network Here's how you can connect HitPay POS to Wi-Fi * For HitPay app on Android / iOS, ensure that your device is connected to shared wifi network. * For HitPay app in Standalone Terminal, go to Settings > Check Reader Settings > Enter PIN : 07139 > Select Network. > [!WARNING] > > The wi-fi printer CAN ONLY be connected to a 2.4 GHz network. Please ensure that the wi-fi you are currently connected to supports 2.4 GHz. > [!NOTE] > > If your network has both 2.4 GHz and 5 GHz Wi-Fi, connect to the 2.4 GHz network. ### Part 2 : Connect the HitPay Advanced Receipt Printer to the same Wi-Fi network 1. Download the "Print Genius" app from appstore / playstore to help configure Wi-Fi network of the printer > **[Download Print Genius on iOS](https://apps.apple.com/sg/app/printgenius/id1441618375)** > **[Download Print Genius on Android](https://play.google.com/store/apps/details?id=com.caysn.printgenius\&hl=en_US\&pli=1)** 1. Select Set Wifi (Via Bluetooth) 2. The app will discover the printers in the area. Please select the HitPay printer (CN811-UWB) 3. Enter the Wi-fi Name & Wi-fi password that is already used by the HitPay POS/Terinal & click "Set Wifi". 4. On click "Set success" click close. 5. After setting is successful, restart the printer by switching the power button. Please restart the printer so that printer can be connected to new wifi. 6. To check whether the printer is successfully connected to the new Wi-Fi, please generate a "Diagnostic Test" print. This can be done by double tapping the "Feed" button OR holding the "Feed" button while turning the printer on. If the printer is succesfully connected, you will be able to see the "\[Current WiFi]" section in the slip below the bluetooth section. Please refer to the image below : ![](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/wifi-printer-slip-check.jpg?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=14befc39c1e9538d2753bd95d8a14216) If the diagnostic / self-test page does not show IP address under \[Current WiFi], the printer has not been assigned an IP address and is not connected to the router. ### Part 3 : Connect your HitPay POS to the Advanced Receipt Printer (WifI) 1. Go to HitPay app on the POS / Terminal, Navigate to Settings > Hardware > Printer 2. Select "Add device" 3. Enter printer name and select " HitPay Advanced Receipt Printer". For the connection type, select "Wifi". 4. Click on "Discover Printer" and select the printer that is discovered within the same network. 5. Select how this printer is going to be used for : Customer receipts, Order tickets, or Both. 6. To test whether printer is connected successfully, you can click on "Test print". If printing is successful, click "Save". ### HitPay Advanced Receipt Printer Specs ![Wifi Printer Specs](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/wifi-printer-specs.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=eaed3aa4e57702a61c056b0c2d452daa) # Barcode Scanner Source: https://docs.hitpayapp.com/pos/barcode-scanner Learn how to set up and use barcode scanners in your POS system # Overview You can use barcode scanners with HitPay POS to quickly add items to cart. Ensure that your scanner is connected to HitPay POS and that the items have barcodes. \[!WARNING] For iOS devices, the HitPay app currently supports Socket Mobile scanners & In-app camera scanners. For Android devices, you can use the in-app barcode scanner via your phone's camera as an alternative. ![Barcode Scanner](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/barcode-scanner-simulate.jpg?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=0ffb450f1c6829ab73a2e3569d33bb7d) # Requirements To use the above hardware with your Hitpay POS app, you need to meet the following requirements: ## Using the HitPay app * HitPay POS app downloaded * A compatible iPad that is running iOS 16 or higher, an iPhone that is running iOS 16 or higher, or a compatible Android device that is running Android 10 or higher. * A supported external barcode scanner based on the list below (If you're not planning to use the the in-app camera barcode scanner) ### Supported External Barcode Scanners | Device | External Hardware? | Barcodes supported | | :-: | :-: | :-: | | Socket Mobile S700 | Yes | 1D barcodes | | Socket Mobile S720 | Yes | 1D & 2D barcodes | | Socket Mobile S730 | Yes | 1D barcodes | | Socket Mobile S740 | Yes | 1D & 2D barcodes | | In-app camera | No | 1D & 2D barcodes | ## Using the HitPay on the Web * HitPay dashboard opened on the Web browser * Any compatible external barcode scanner that is able to connect to your PC/Laptop # How to add barcodes to your products? [YouTube video player](https://www.youtube.com/embed/ukUkcRFA680?si=XF6c1Gr1ZoZZlRek) 1. Add product (Mobile app) * Go to products * Add product * Enter the barcode field (scan with camera / scan with scanner) 2. Add product (Web) * Go to Point of Sale > products * Add product * Enter the barcode field 3. Bulk Upload * Go to Point of Sale > Products > Bulk Create * Download the CSV template * Enter the barcode field in the CSV column # Setting up your Barcode Scanner on the Hitpay app ## Pair & Connect your Socket Mobile Scanner with HitPay POS [YouTube video player](https://www.youtube.com/embed/DjAmwpxILgU?si=Uc_52pw8ccIYNTT3) **Steps:** 1. Go to the settings on your iPad or iPhone (not the app settings) and make sure Bluetooth is turned on. 2. In HitPay POS, navigate to Settings > Hardware > Barcode Scanner. 3. Click on "Pair Barcode Scanner" 4. Turn on the barcode scanner by holding the power button until it beeps twice. 5. When you see "Turn on pairing mode", please hold the large scan buton of the scanner and scan the barcode displayed on the app. The scanner will beep three times to indicate pairing mode is activated. 6. Go to bluetooth settings, the Socket Mobile device should be discoverable. 7. Tap the barcode scanner "Socket ...." when it appears (this might take a few moment). 8. If the setup fails, unpair the scanner and try again. As long as the scanner remains paired with the iPad or iPhone, the scanner connects automatically whenever it's in range. ## How to Unpair the Barcode Scanner? Your barcode scanner will automatically try to connect to the last device it was paired with. To use it with a different Bluetooth device, you must first unpair it from the current device. **Steps:** 1. Turn on your barcode scanner. 2. Press and hold the scan button. Simultaenousely, press and hold the power button. When you hear three beeps, then release both buttons. The scanner will power off. 3. In HitPay POS, navigate to Settings > Hardware > Barcode Scanner. 4. Go to your device's settings (not the app settings). 5. Tap Bluetooth. 6. Under MY DEVICES, tap the ⓘ button next to the Socket barcode scanner. 7. Tap Forget This Device. 8. Confirm by tapping Forget Device. ### Check your POS setup Please check that your HitPay POS is set up correctly with the following troubleshooting steps : * Is the mobile device software up to date? Confirm that iOS and Android OS is updated. * Is the HitPay software up to date? Confirm that POS app doesn't have pending update to install. * Does the mobile device have Bluetooth switched on? The iOS and Android device needs to have Bluetooth active. ### Check your Scanner setup * Was the scanner paired with another device? The scanner can be paired with only one device at a time. Unpair the scanner and the other device, and then pair the scanner with the new device. * Is the scanner charged and in range of the device? Check that the scanner is fully charged and within range (100 meters or less). * You can download the socket mobile companion app from App Store / Play store. Check whether the socket mobile app is able to connect and pair to the device. ### Check your product's barcodes Confirm that your products' barcodes are set up correctly with the following troubleshooting steps: * Is the product visible in HitPay POS? If the product is hidden in HitPay POS or unpublished, the barcode scanner will not load the product. * Does the barcode number on the label match the product's barcode number in your HitPay dashboard? If there are extra zeros at the beginning or end of the number, then delete them and try again. > [!NOTE] > > If the troubleshooting steps don't work and you still have trouble with the Socket Mobile S700, then you can try resetting the scanner to its factory settings. ## How to Use HitPay In-app Camera Barcode Scanner [YouTube video player](https://www.youtube.com/embed/v1-bm3bpTxM?si=JBSmdTY8LTwQWZym) 1. Go to Home > Products 2. In search bar, click on the "Scanner" icon 3. Scanner will be displayed 4. Place barcode in front of camera 5. When scanned, it will add product to cart # Setting up your Barcode Scanner using the HitPay Web dashboard ![Barcode Scanner on Web POS](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/barcode-pos.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=4ee02ad5c79e8e5bd9515782eb952909) **Steps:** 1. Turn on your barcode scanner. 2. Pair your barcode scanner and connect it to your Personal Computer / Laptop. Follow the instructions given by the hardware provider. 3. You can test out the scanning function by opening a note app / word document app. Scanning a barcode should output the scanned result. 4. In HitPay Web Dashboard, navigate to Point of Sale. 5. The search bar will default to searching by Name. Switch on the search parameter to search by barcode instead. 6. Scan a barcode, the search function will output the scanned item and add a product to cart if a product is found. # Pairing your HitPay POS Max (Sunmi V3Mix) with an external Barcode Scanner **Steps:** 1. Connect your barcode scanner to your HitPay POS Max via USB / Bluetooth 2. Ensure that your barcode scanner is connected and able to submit a successful output. You can test this out by scanning a barcode on a Notes taking app. 3. Navigate to Point of Sale > Products. 4. Scan a barcode, the search function will output the scanned item and add a product to cart if a product is found. ## Supported Barcode Types **1D Barcode Types** * Code 128 * Code 39 * Code 39 Mod 43 * Code 93 * EAN-13 * EAN-8 * Interleaved 2 of 5 * ITF-14 * UPC-E **2D Barcode Types** * Aztec * Data Matrix * PDF417 ## Where to buy the Hardware? Unfortunately HitPay doesn't provide fulfillment for External Barcode Scanner hardware devices. However, you can purchase the barcode scanners from the following stores : * Singapore : [Kingly](https://www.kingly.sg/collections/vendors?q=Socket%20Mobile) ## FAQs > **What's the difference between camera barcode scanner vs hardware barcode scanner?** > > While camera barcode scanners are convenient and suitable for many basic scanning needs, hardware barcode scanners generally offer superior speed, accuracy, and durability, especially in demanding environments. The choice depends on your specific requirements, such as the volume of scanning, the environment in which the scanner will be used, and your budget. > **Which barcode scanner devices does HitPay app support and recommend?** > > HitPay currently only supports Socket Mobile devices. We recommend the following models : S700, S720, S740. > **Where can I buy Barcode Scanner hardware?** > > For HitPay merchants in Singapore, you can purchase it at [Kingly](https://www.kingly.sg/collections/vendors?q=Socket%20Mobile) > If you are not in Singapore or hesitant to purchase a barcode scanner device, you can still use our in-app camera barcode scanner. > **What is the distance limit for printing between my device & the Bluetooth scanner?** > > For optimal performance, it's advisable to maintain a communication distance of up to 10 meters between your device and the Bluetooth scanner. > **How can I generate barcodes from HitPay app?** > > Unfortunately currently HitPay does not support generation & printing of barcodes. # Bluetooth Printer Source: https://docs.hitpayapp.com/pos/bluetooth-printer Learn how to set up and use Bluetooth printers in your POS system ![Bluetooth Printer](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/bluetooth-printer.jpg?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=8968f19919022f6352f2f7280acc4ab3) HitPay Advanced printer works with the following HitPay POS set up : * HitPay app on iOS * HitPay app on Android It supports the following paper receipt dimensions: * Paper width: 58mm * Paper roll diameter: 40mm max > [!NOTE] > > Refer to the user manual provided in the printer box for instructions on setting up the printer, charging the printer, and loading paper into the printer. ### How to print a receipt using the HitPay app (iPhone/iOS) [YouTube video player](https://www.youtube.com/embed/Txcgafge-A0) [YouTube video player](https://www.youtube.com/embed/e1qFbIcN9vE?si=wdeQrrTTOHcBO7GF) ### How to print a receipt using the HitPay app (Android) [YouTube video player](https://www.youtube.com/embed/lYbMoJGRuN4) ### Troubleshooting Bluetooth Printer Connectivity If your printer is encountering connectivity issues, follow these steps to troubleshoot: 1. Ensure that the printer is disconnected from any other device. 2. For Android, ensure you follow the steps above and pair the printer from the Device Settings first before connecting from the HitPay app. 3. For iPhone, only connect directly from the HitPay app. 4. If the above steps fail, try restarting the printer by holding down the power button to turn it off and then on again. ### Bluetooth Printer Compatibility The Bluetooth printer can only be paired with HitPay App on an iOS or Android device. ## FAQs > **My printer is connected but not printing?** > > If your printer is connected but not printing, it could be due to a battery issue or the size of your business logo on receipts. > > **1. Check the Printer Battery:** > Newly purchased Bluetooth printers often come with a yellow tape covering the battery. To verify: > >
    >
  • Open the battery compartment of your printer.
  • >
  • Remove any yellow tape covering the battery.
  • >
  • Reinsert the battery securely and try printing again.
  • >
> > **2. Check Business Logo Settings:** > The size of your business logo might interfere with printing. To troubleshoot: > >
    >
  1. Open the HitPay app.
  2. >
  3. Navigate to **Settings > Receipt Customization**.
  4. >
  5. Toggle off the option that says **"Show company logo"**.
  6. >
  7. Close the HitPay app completely and reopen it.
  8. >
  9. Attempt to print again to see if the issue is resolved.
  10. >
> > If the issue persists after following these steps, consider restarting your printer or checking for firmware updates. > **How do we know if a Bluetooth printer is fully charged or charged?** > > You can check the status of your Bluetooth printer's battery by looking at the LED indicator, which provides the following information: > > 1. **Off**: The printer is turned off. > 2. **Green**: The printer has battery power but is not connected to the HitPay app. > 3. **Blue**: The printer has battery power and is connected to the HitPay app. > 4. **Red**: The printer has no battery, and a buzzer will beep to give a warning. > **Can I rename my printer?** > > Unfortunately, it is not possible to rename your printer due to current technical limitations related to the printer hardware. The printer's name cannot be controlled or modified. > **Can I use the printer with any other thermal printers?** > > While we do support most 58mm Bluetooth thermal printers, we strongly recommend using our own printer, which is available for purchase on our Online Store. We specifically test our software with this printer to ensure compatibility. Please be aware that our online store currently only ships within Singapore. > **What is the distance limit for printing between my device & the Bluetooth printer?** > > For optimal performance, it's advisable to maintain a communication distance of up to 10 meters between your device and the Bluetooth printer. # HitPay Borderless QR Source: https://docs.hitpayapp.com/pos/borderless-qr Accept local QR payments from international customers while receiving payouts in your home currency with automatic currency conversion. ![Physical store counter with an international customer paying using their phone](https://mintcdn.com/hitpay/G1FIWDTi2m1A-tFX/images/pos/borderless-qr-hero.png?fit=max\&auto=format\&n=G1FIWDTi2m1A-tFX\&q=85\&s=57c9520f3e93713682d9e57e66674e68) ## Charge in your home currency. Let customers pay in theirs. HitPay Borderless QR lets physical stores accept local payment methods from international customers, while you always receive payouts in your home currency with automatic currency conversion. > **[Get HitPay Borderless QR](https://www.hitpay.com/signup)** > > Start accepting cross-border payments today > **[See how it works](#how-it-works)** > > Learn the simple payment flow > **[API Integration](/apis/guide/embedded-qr-code-payments/borderless-qr)** > > Integrate Borderless QR via API *** ## Cross-Border Payment Challenges Physical stores often face limitations when serving international customers: * Most POS systems only support domestic payment methods * International credit cards incur high processing fees (3% - 3.5%) * Customers paying with foreign cards face additional FX fees (2% - 4%) * Manual currency conversion is error-prone and slows down checkout *** ## What HitPay Borderless QR Does HitPay Borderless QR allows merchants to accept local payment methods from international customers while receiving payouts in their home currency. **Key capabilities:** * Accept regional QR payment methods (PayNow, QR Ph, UPI, PromptPay, WeChat, VietQR) * Automatic real-time currency conversion * Customers pay in their local currency using familiar payment apps * Merchants receive payouts in their home currency Designed for physical stores serving international customers—ideal for retail, F\&B, and service businesses that regularly serve tourists and cross-border shoppers. No extra hardware or complex onboarding required. *** ## How It Works **1. Enter price in your home currency** Merchant enters the price in their home currency as usual **2. Select customer's payment method** Merchant selects the customer's country and preferred payment method **3. Automatic currency conversion** HitPay automatically converts the amount using real-time exchange rates **4. Customer pays, merchant gets paid** Customer pays in their local currency. Merchant receives payout in their home currency. *** ## How to Set Up **1. Create a HitPay account** [Sign up for HitPay](https://www.hitpay.com/signup) if you haven't already. **2. Verify your account** Complete the account verification process to enable payouts. **3. Enable cross-border payment methods** Go to Payment Methods in your HitPay dashboard and enable one or more cross-border payment methods (e.g., QR Ph, UPI, PromptPay). **4. Download the HitPay POS app** Get the app on [iOS](https://apps.apple.com/app/hitpay/id1153486894) or [Android](https://play.google.com/store/apps/details?id=com.hit_pay.hitpay). **5. Start accepting cross-border payments** Enabled cross-border payment methods will automatically appear in your HitPay POS app. *** ## Example: A Real-World Cross-Border Payment > [!NOTE] > > **Scenario:** A Singapore merchant charges SGD 100 to a Philippine tourist. > > 1. Merchant enters **SGD 100** in the HitPay POS app > 2. Customer selects **QR Ph** as their payment method > 3. HitPay displays the amount in **PHP** using real-time exchange rates > 4. Customer scans and pays using their Philippine e-wallet > 5. Merchant receives payout in **SGD** > > **No manual calculations. No currency risk. No confusion.** *** ## Save on Every Transaction HitPay Borderless QR offers significant savings compared to international card payments for both merchants and customers. | | HitPay Borderless QR | International Card Payments | | - | - | - | | **Customer FX fees** | 0% | 2% - 4% | | **Merchant processing fees** | 1.5% payment processing fee | 3% - 3.5% | > [!NOTE] > > **Everyone wins.** Customers avoid hidden FX fees while merchants cut processing costs in half. *** ## Supported Countries & Payment Methods | Country | Payment Method | Currency | Availability | | - | - | - | - | | Singapore | PayNow | SGD | Available to all merchants that enable PayNow cross-border method | | Malaysia | Touch 'n Go | MYR | Available to all merchants that enable Touch 'n Go cross-border method | | Philippines | QR Ph, GCash | PHP | Available to all merchants that enable QRPH cross-border method | | India | UPI | SGD | Available to all merchants that enable UPI cross-border method (UPI International) | | Thailand | PromptPay, TrueMoney | THB | Available to all merchants that enable Thailand cross-border method | | China | WeChat | SGD / MYR | Only available for Singapore & Malaysian merchants (WeChat International) | | Vietnam | VietQR, ZaloPay | VND | Available to all merchants that enable ZaloPay cross-border method | *** ## Frequently Asked Questions > **How is the exchange rate determined?** > > The exchange rate used for cross-border payments is based on the **mid-market exchange rate** at the time the transaction is processed. > > The mid-market exchange rate is the average of the buy and sell rates between two currencies and is commonly used as a benchmark in the foreign exchange market. > **What are the fees borne by the customer?** > > Customers are **not charged any additional fees** for cross-border payments. > > Unlike card payments, there are no foreign exchange (FX) fees passed on to customers. > **What are the fees borne by the merchant?** > > Merchants will be charged a 1.5% payment processing fee for any in-person cross-border QR payment method, plus FX fees (if applicable) based on the merchant’s country of registration / settlement currency. > **What is the payout period?** > > For cross-border payments processed via supported regional payment methods, payouts are credited to your HitPay Balance on a **T+1 calendar day** basis. > **Do I need additional hardware?** > > No. HitPay Borderless QR works with your existing HitPay POS app. No additional hardware or complex setup required. > **Can I use HitPay Borderless QR alongside my existing payment methods?** > > Yes. HitPay Borderless QR is an additional payment option that works alongside all your existing local payment methods. > **How do refunds work for cross-border payments?** > > When processing a refund, the customer receives the exact amount they originally paid in their local currency. The exchange rate from the original transaction is used—there is no recalculation based on current rates. # Cash Drawer Source: https://docs.hitpayapp.com/pos/cash-drawer Learn how to set up and use cash drawers in your POS system ## Overview The **Cash Drawer Integration** allows merchants using the HitPay POS app to connect and automatically trigger compatible cash drawers. This is ideal for retail stores, F\&B outlets, and any business that accepts cash and needs secure, seamless cash management. > 🛠️ **Supported Hardware:** > > * **HitPay POS App** on Android or iOS + HitPay Advanced Receipt Printer + RJ12 or RJ11 cable supported cash drawer > * \*\*HitPay POS Max (Sunmi V3 Mix) + RJ12 or RJ11 cable supported cash drawer *** ## How to Set Up Cash Drawer Integration ### Option 1: Standard HitPay POS App Setup (with Bluetooth Printer that can connect to Cash Drawer via RJ11/RJ12 Cable) | Requirement | Details | | - | - | | Android POS Device | Android tablet or phone running HitPay POS app | | HitPay Advanced Bluetooth Printer | Required to bridge connection to cash drawer | | Cash Drawer (RJ12 or RJ11) | Must be physically connected to the Bluetooth printer via RJ11 or RJ12 cable | #### Steps: 1. **Plug in the Cash Drawer** * Connect the **RJ12 cable** from your cash drawer to the back of the **HitPay Advanced Receipt Printer**. 2. **Power on all devices** * Ensure your POS device, printer, and cash drawer are powered on. 3. **Pair the Printer to Device** * Open your device Bluetooth settings and pair with the HitPay Advanced Receipt Printer via Bluetooth. *** ### Option 2: HitPay POS Max with Cradle | Requirement | Details | | - | - | | HitPay POS Max (Sunmi V3 Mix) | All-in-one Android POS terminal | | Sunmi V3 Mix Cradle (Dock) | Must be connected to power and charging the POS | | Cash Drawer (RJ12) | Must be connected to the cradle's RJ12 port | #### Steps: 1. **Dock the POS Max into the Cradle** * Insert the **HitPay POS Max** into the **Sunmi V3 Mix Cradle** and ensure it is firmly seated and **charging** (receiving power from the dock). 2. **Connect the Cash Drawer** * Use the **RJ12 cable** to connect your cash drawer to the **RJ12 port on the cradle**. ![HitPay cash drawer cable](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/cablecashdrawer.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=a0714636aaa2e2fd10356f3c3d22c5e5) * Ensure that the cash drawer key is positioned to "Automatic" so it can kick the cash drawer open via the Software. ![HitPay kick position ](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/positioncashdrawer.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=898a7ffbfb169d7dfc08d9bb46bb0334) 3. **Accept Cash Payment in POS App** * When completing a sale, tap **"Charge by Cash"** and confirm the payment.\ 👉 **Drawer automatically opens** *** ## When Does the Cash Drawer Open? The cash drawer will automatically trigger in the following scenarios: ### A) **Payment Acceptance via Cash** 1. Cashier selects **Cash** as the payment method on the POS. 2. Customer hands over the cash. 3. Cashier taps **"Received"** to confirm the payment.\ 👉 **Drawer automatically opens** *** ### B) **Refund of Cash Payment** 1. Go to **Transactions** in the HitPay POS app. 2. Select a transaction where the **payment method = Cash**. 3. Tap **Refund**. 4. A confirmation dialog appears — user taps **OK**.\ 👉 **Drawer automatically opens** *** ## FAQs > **What types of cash drawers are supported for HitPay POS ?** > > Only drawers with **RJ12** or **RJ11** connectors are supported. The drawer must be connected via the **HitPay Advanced Receipt Printer**. > **Can I connect the cash drawer without the HitPay printer?** > > he HitPay POS app does not directly support cash drawer control via the Android device. A **HitPay Advanced Bluetooth Printer** is required because it sends an **electric pulse** to trigger the drawer to open. > **Does this work on iOS?** > > Not yet. Cash drawer integration is currently available **only on Android** devices. # Customer Display Source: https://docs.hitpayapp.com/pos/customer-display Learn how to set up and use customer display features ## Overview The HitPay POS Customer Display Mode converts the HitPay app into a customer-facing display. This allows your customers to easily monitor and review items being added to their cart. ![HitPay point of sale app](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/customer_display.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=94a977ec76460b8060ec0441dfac4962) During checkout, the Customer Display device will show the following information: * Product's name, quantity, price * Customer details * Discounts * Surcharges * Taxes * Order subtotal & total The Customer Display device also enables end-customers to: * Select tips * Enter email/phone number details for receipt delivery * Scan payment QR codes ### Device Requirements | Platform | Device Requirements | | - | - | | iOS | iOS 16, iPhone 8 or later | | iPadOS | iPad models released in 2019 or later | | MacOS | MacBook or MacBook Air with Apple Silicon | | Android | Android 9 or above with 3GB or more RAM | ## Set Up Video [YouTube video player](https://www.loom.com/embed/c38ffec06064478c9bfbbbe07861c78d?sid=52943d27-e3a2-414d-9ff2-6a77eea268ff) ## Pairing ### Customer Display Device 1. Download the HitPay app on your dedicated customer-facing device. 2. Open the HitPay app to generate the pairing code. 1. If you are not logged in, click on the icon on the top-left of the home screen & select Customer Display Mode. 2. If you are already logged in, switch to "Customer Display" from the side menu > Mode. ### POS Device 1. Open the HitPay app on your dedicated Point of Sale device. Go to Settings > Hardware > Customer Display. 2. Scan the pairing code. Once the Customer Display app is paired with your main HitPay POS device, it remains paired. > [!NOTE] > > The Customer Display mode requires network connectivity. Ensure both devices are connected to a network source. ## Disconnecting ### Customer Display Device 1. Click on the "…" on the top navbar. 2. Click on Exit Customer Display mode. ### POS Device 1. Open the HitPay app on your dedicated Point of Sale device. Go to Settings > Hardware > Customer Display. 2. Click on the Customer Display device from the list. 3. Click on "Forget device". ## Usage When the HitPay Customer Display mode is paired with the HitPay POS app, it displays checkout information for any order processed using the paired HitPay POS device. ## Customizing the Customer Display Mode Customize the Customer Display mode from the HitPay POS app. Through the settings, you can add/update: * **Welcome message:** Add a welcome message for your customers. The default message is "Welcome to \[Business Name]". * **Profile image:** Display your company logo. If you've uploaded your logo in business settings, it will be displayed by default. * **Promotional banners:** Add promotional images to be displayed on the customer display mode when idle. > [!NOTE] > > Only jpg, jpeg, png images are allowed. For best preview, upload a square-sized image. ## Troubleshooting If you're experiencing connectivity problems between the HitPay POS app and the Customer Display app, then follow these steps: 1. Ensure both devices have a stable network connection. 2. Close and reopen the HitPay POS app. 3. Disconnect the Customer Display mode from the POS app and attempt re-pairing. 4. If the issue persists, contact HitPay support. ## FAQs > **Does HitPay provide hardware for my customer display?** > > Unfortunately we do not provide/sell any hardware devices. However, the app is compatible with both Android & iOS devices as listed above. > **How do I pin my Customer Display on my iOS device?** > > You can use [Guided Access](https://support.apple.com/en-sg/111795) which lets you limit your device to only display a single app so your customers do not accidentally quit the app. > **How do I unpin my Customer Display on my Android device?** > > To unpin a screen you can follow the steps[here](https://support.google.com/android/answer/9455138?hl=en) # Customers Source: https://docs.hitpayapp.com/pos/customers Learn how to manage customers in your POS system ## Overview Managing customers effectively is crucial for building lasting relationships with your business. HitPay POS provides comprehensive customer management features that allow you to add, view, search, edit, and manage customer information seamlessly. Customer data is automatically captured during checkout when customers provide their email addresses, making it easy to build and maintain your customer database. ## Adding a Customer You can add customers to your HitPay account in two ways: manually or automatically during checkout. ### Manual Addition **Web Dashboard** 1. Navigate to the **Customers** tab 2. Click the **+ Add Customer** button 3. Enter the customer details: * Customer name * Email address * Phone number (optional) * Additional notes (optional) 4. Click **Save** to add the customer **Mobile App** 1. Navigate to the **More** tab in the HitPay app 2. Click on **Customers** 3. Tap the **+** button in the top right corner 4. Enter the customer details: * Customer name * Email address * Phone number (optional) * Additional notes (optional) 5. Click **Save** to add the customer ### Automatic Addition Customers are automatically added to your customer list when they provide their email address during checkout. This happens when: * A customer enters their email on the checkout page to receive a receipt * A customer provides their email when completing a transaction > [!NOTE] > > Automatic customer creation helps you build your customer database without manual data entry, making it easier to track customer purchase history and preferences. ## Viewing a Customer **Web Dashboard** 1. Navigate to the **Customers** tab 2. Browse the customer list or use the search function to find a specific customer 3. Click on a customer's name to view their full profile The customer profile displays: * Customer name and contact information * Transaction history **Mobile App** 1. Navigate to the **More** tab 2. Click on **Customers** 3. Browse the customer list or use the search function to find a specific customer 4. Tap on a customer's name to view their full profile The customer profile displays: * Customer name and contact information * Transaction history ## Searching Customers Finding customers quickly is essential for efficient operations. **Web Dashboard** 1. Navigate to the **Customers** tab 2. Use the search bar at the top of the customers list 3. Enter the customer's name, email, or phone number 4. The list will filter automatically as you type **Mobile App** 1. Navigate to **More > Customers** 2. Use the search bar at the top of the customers list 3. Enter the customer's name, email, or phone number 4. The list will filter automatically as you type > [!NOTE] > > Search works across customer names, email addresses, and phone numbers, making it easy to find customers even with partial information. ## Adding Existing Customer to an Order When processing a transaction, you can associate it with an existing customer. **Web Dashboard** 1. Click on Point of Sale tab 2. Create a Quick Sale or add products to your cart 3. Click **Charge** or **Go to Cart** to proceed to checkout 4. On the checkout page, click on the customer field or **Add Customer** button 5. Search for and select the existing customer from the list 6. Complete the transaction as usual **Mobile App** To add an existing customer to an order from the Mobile App: 1. Create a Quick Sale or add products to your cart via Point of Sale 2. Click **Charge** or **Go to Cart** to proceed to checkout 3. On the checkout page, click on the customer field or **Add Customer** button 4. Search for and select the existing customer from the list 5. Complete the transaction as usual > [!NOTE] > > Associating orders with customers helps you track purchase history and build better customer relationships. This information is valuable for understanding customer preferences and purchase patterns. ## Viewing a Customer's Transactions **Web Dashboard** 1. Navigate to the **Customers** tab 2. Select the customer you want to view 3. Scroll to the **Transactions** section in the customer profile 4. Click on any transaction to view detailed information The transaction history shows: * Transaction date and time * Order total * Payment method used * Products purchased * Transaction status **Mobile App** 1. Navigate to **More > Customers** 2. Select the customer you want to view 3. Scroll to the **Transactions** section in the customer profile 4. Tap on any transaction to view detailed information The transaction history shows: * Transaction date and time * Order total * Payment method used * Products purchased * Transaction status > [!NOTE] > > You can also access customer transaction details from the main [Transactions](/pos/transactions) page by filtering or searching for specific customers. ## Editing a Customer **Web Dashboard** 1. Navigate to the **Customers** tab 2. Find and select the customer you want to edit 3. Click the **Edit** button 4. Update the customer details: * Name * Email address * Phone number * Additional notes 5. Click **Save** to apply the changes **Mobile App** 1. Navigate to **More > Customers** 2. Find and select the customer you want to edit 3. Click the **Edit** button (usually located in the top right corner) 4. Update the customer details: * Name * Email address * Phone number * Additional notes 5. Click **Save** to apply the changes > [!NOTE] > > Keeping customer information up to date ensures accurate records and helps maintain effective communication with your customers. ## Deleting Customers You can delete customers individually or in bulk, depending on your needs. ### Deleting a Single Customer **Web Dashboard** 1. Navigate to the **Customers** tab 2. Find and select the customer you want to delete 3. Click the **Delete** button 4. Confirm the deletion when prompted **Mobile App** 1. Navigate to **More > Customers** 2. Find and select the customer you want to delete 3. Click the **Delete** button or swipe left on the customer entry 4. Confirm the deletion when prompted ### Deleting Customers in Bulk **Web Dashboard** 1. Navigate to the **Customers** tab 2. Use the checkboxes to select multiple customers 3. Click the **Delete this customers** button 4. Confirm the bulk deletion when prompted **Mobile App** > [!NOTE] > > Bulk deletion is only available from the Web Dashboard. Please use the Web Dashboard to delete multiple customers at once. > [!WARNING] > > Deleting a customer will remove their information from your customer list, but transaction records associated with that customer will remain in your transaction history for reporting purposes. ## FAQs > **How can I send email campaigns to my customers?** > > HitPay does not currently support email campaigns directly within the platform. However, you can export your customer list and use third-party email marketing tools to send campaigns. To export customer data, navigate to the web dashboard and use the export functionality available in the Customers section. > **How can I migrate customers from another CRM system?** > > Currently, HitPay does not support bulk import of customers. To migrate customers from another CRM system, you will need to manually add each customer through the Web Dashboard or Mobile App. For large migrations or assistance with the process, contact HitPay support to discuss available options. > **Can I merge duplicate customer records?** > > Currently, HitPay does not have an automatic merge feature for duplicate customers. If you have duplicate customer records, you should manually review and delete the duplicates, ensuring you keep the record with the most complete information. We recommend regularly reviewing your customer list to maintain data quality. > **What information is required when adding a customer?** > > When adding a customer manually, only the customer name is required. However, we recommend adding an email address and phone number when available, as this information is useful for sending receipts, order updates, and maintaining customer communication. > **Can customers be assigned to specific locations?** > > Customer information is shared across all locations in your HitPay account. When a customer makes a purchase at any location, their transaction history is updated in the central customer database, allowing you to view their complete purchase history regardless of which location they visited. > **Can I export my customer list?** > > Yes, you can export your customer list from the Web Dashboard. Navigate to the **Customers** tab and use the export functionality to download your customer data. This exported data can be used with third-party tools for email marketing, analytics, or other business purposes. > **What happens to customer data when I delete a customer?** > > When you delete a customer, their information is removed from your customer list. However, transaction records associated with that customer will remain in your transaction history for reporting and accounting purposes. This ensures your financial records remain intact even after customer deletion. # Deep Linking Source: https://docs.hitpayapp.com/pos/deep-linking Learn how to use deep linking features in your POS system # Deep Linking Guide for HitPay ## Overview Deep linking allows users to open the HitPay app directly from other merchant-facing apps, facilitating seamless payment experiences. This guide provides an overview of deep linking, its use cases, implementation details, and frequently asked questions. ## Use Case Users of other merchant-facing apps need to manually open the HitPay app to initiate payments. Deep linking streamlines this process by allowing developers to integrate a direct link to the HitPay app. This enables users to initiate payments directly within HitPay without manually switching between apps. ## Deep Linking Implementation ### URL Scheme The URL scheme for opening the HitPay app is: `hitpay://quick_sale` ### Parameters to Include 1. **Amount**: The amount to be paid. 2. **Currency**: The currency in which the payment will be made. 3. **Description**: A description of the payment or order. 4. **Callback URL**: The URL to which the user should be redirected after the payment is completed. ### Example URL Here is an example of a URL scheme that other apps can use to open the HitPay app and initiate a payment: ``` hitpay://quick_sale?amount=100.00¤cy=SGD&description=Payment%20for%20order%201234&callback_url=https%3A%2F%2Fexample.com%2Fcallback ``` In this example: * `amount` is set to `100.00`. * `currency` is set to `SGD` (Singapore Dollar). * `description` is set to `Payment for order 1234`. * `callback_url` is set to `https://example.com/callback`. Developers can use this URL scheme to integrate HitPay into their apps, allowing users to seamlessly initiate payments without manually opening the HitPay app. ### Implementation Steps 1. **Quick Sale Integration**: The deep linking is implemented only for the Quick Sale feature. If the user is on another screen, the app will navigate back to the home screen and trigger the Quick Sale flow. 2. **Pre-fill Details**: The Quick Sale screen will be pre-filled with the amount, currency, and description provided in the URL parameters. 3. **Callback URL Handling**: The callback URL is stored in memory for one transaction. Once the payment is completed, the app will display the success screen, wait for 2 seconds, and then open the callback URL in an external browser. ## Limitations * **User Authentication**: This deep linking feature only works if the user is already logged in to the HitPay app. * **Quick Sale Only**: The deep linking functionality is currently applicable only to the Quick Sale feature. ## FAQs > **What if the user is not logged in to the HitPay app?** > > The deep linking feature will only work if the user is already logged in. If the user is not logged in, they will need to log in manually before the payment process can proceed. > **Can deep linking be used for other features besides Quick Sale?** > > Currently, the deep linking functionality is only implemented for the Quick Sale feature. > **What happens after the payment is completed?** > > After the payment is completed, the app will show the success screen. On click of "Done" HitPay will open the callback URL in an external browser. # Discounts Source: https://docs.hitpayapp.com/pos/discounts Learn how to apply discounts and promotions in your POS system ## Overview As a business owner, you may find it beneficial to offer discounts on your products or services. With HitPay POS, managing and applying discounts is made simple through our Discount feature. ## Creating a Discount Open the HitPay app and navigate to the **More** tab. Click on **Discounts** and then the "Create Discount" button to create a new discount. Enter the necessary discount details: * Discount Type (Percentage Discounts vs Fixed Amount Discounts) * Discount Amount * Discount Name Your newly created discounts will be displayed as a list on the Discounts page. ## Applying Discounts during Checkout While using the HitPay app in [Point of Sale mode](/pos/modes), either add a product to the cart or enter a quick sale amount. After clicking **Charge** or **Go to cart**, you'll be directed to the Cart page. Follow these steps to apply a discount: 1. Click on the **Add Discounts** button on the Cart page. 2. A list of existing discounts will appear; choose from the list or create a new one by clicking on the **Add a Discount** button. 3. To apply a discount, simply tap on it. Select the discount(s) you want to apply and click **Apply**. The applied discounts and their corresponding amounts will be visible on the Checkout page, contributing to the Total. To remove a discount, deselect it from the list and click **Apply**. > [!NOTE] > > * Percentage discounts can be applied to an entire cart order or to individual products within the cart. > * Fixed amount discounts can only be applied to an entire cart order. > * Discounts are applied before taxes by default. ### Applying Discounts to an Entire Cart Order From the Cart page, click on the **Add a Discount** button. Select a discount from the list and click **Apply**. You can confirm the discount amount from the cart page. The applied discounts will appear as a line item under the Discounts section. For quick sale orders, Percentage discounts are applied to the entire cart. For product orders, Percentage discounts are applied to all products. You can apply or remove discounts to individual products afterward. ### Applying Discounts to Individual Products From the Cart page, click on a specific product you'd like to apply a discount to. Choose a discount from the list of percentage discounts for that product by checking the checkbox. Click **Update Cart**. You can confirm whether a discount is applied to the product by looking at the product line item in the cart. A discounted product will have the **Discount** label next to its original price. ### Applying Multiple Discounts When applying multiple discounts to an entire cart, discounts will be stacked, compounding their effects. **Here's an example:** A discount of 10% is added to a $100 order. HitPay calculates the discount amount to be$10. The remaining discounted order total is $90. A second discount of 5% is added to the order. This will be applied to the discounted total of $90, resulting in the second discount amount to be $4.5 instead of $5. Hence, the final discounted order total will be \$85.5 When applying a combination of Fixed Amount and Percentage discounts, the Percentage Discounts will always be applied first and then followed by the Fixed Amount discounts. > [!NOTE] > > Do note that Fixed Amount discounts will only be applied at the Cart Order level, and cannot be applied to individual products. ## FAQs > **Can I view the discount amounts applied to my transactions on my reports?** > > Yes, on the web dashboard, click Bank Payouts > Transactions > Export Transactions. Make sure you check 'POS Order Details' field under Fields Required. # Download Source: https://docs.hitpayapp.com/pos/download Download HitPay POS app for your device ## Point of Sale App The HitPay Point of Sale (POS) App transforms your device into a versatile payment solution, allowing you to manage your sales and inventory. It is suitable for physical stores, participating in events, or selling online. ![HitPay point of sale app](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/hitpay-app-hero-updated.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=ca47988f74be2a14376bc321068ac051) ### Download the App You can download the HitPay Point of Sale (POS) App from the following app stores: > **[Download iOS App](https://apps.apple.com/app/hitpay/id1153486894)** > **[Download Android App](https://play.google.com/store/apps/details?id=com.hit_pay.hitpay)** ### Recommended Devices | Brand | Devices | | - | - | | Apple | iPhone X, iPhone 12, iPhone 13, iPhone 14, iPhone 15, iPad, iPad Pro, iPad Air, iPad Mini | | Google | Pixel 5, Pixel 6, Pixel 6 Pro, Pixel 7, Pixel 7 Pro, Pixel 8, Pixel 8 Pro, Pixel 3a, Pixel 3a XL, Pixel 4a, Pixel 5a, Pixel 6a, Pixel 7a, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 4, Pixel 4 XL | | Samsung | Galaxy Note 20, Galaxy S10, Galaxy S20, Galaxy S21, Galaxy S22, Galaxy S23, Galaxy S24, Galaxy A70, Galaxy A70s, Galaxy A71, Galaxy A72, Galaxy A73 | | Oppo | A16s, A54s, A73, A74, A94, A96 | | OnePlus | 6, 6T, 7, 7 Pro, 7T, 7T Pro, 8, 8 Pro, 8T, Nord, 9, 9 Pro, 9RT, 9R, 10 Pro, 10R, Nord CE, Nord 2, Nord CE 2, Nord N10, Nord N20, Nord N200 | > [!WARNING] > > Xiaomi devices can still run the HitPay app but are known to have issues with printing via Bluetooth. > [!NOTE] > > Android tablets work fine for payment acceptance but are not recommended for running the HitPay POS with product catalog as we don't support landscape view at the moment. ## App Functionality > [!NOTE] > > Some HitPay features are not available in the app and can only be accessed through the web dashboard. | Feature | App | Web Dashboard | | - | - | - | | Point of Sale | ✓ | ✓ | | HitPay Online Store | ✕ | ✓ | | Invoicing | ✓ | ✓ | | Payment Links | ✓ | ✓ | | Reporting | ✓ | ✓ | | Recurring Billing | ✕ | ✓ | > **Why am I seeing the error "We couldn't verify this app" when logging in on my Android device?** > > To comply with Google's security requirements, the HitPay app uses **Google Play Integrity protection**. This ensures that the app is installed from the official Google Play Store and is running on a device that passes Google's device integrity checks. > > To check whether your device meets the security requirements, you can download the [Play Integrity API checker app](https://play.google.com/store/apps/details?id=gr.nikolasspyr.integritycheck) available on Google Play Store. > > Unfortunately, **HitPay does not support devices that fail Google's Device Integrity API**. Please try using another device that meets the necessary security requirements. # Locations Source: https://docs.hitpayapp.com/pos/locations Learn how to manage multiple business locations in your POS system ## Overview HitPay's multi-location management feature allows you to streamline sales across different stores and effortlessly track payments within a unified platform. This guide provides step-by-step instructions on creating, assigning team members to, and utilizing specific locations within the HitPay app. With multi-location support, you can better manage your business's sales operations and gain valuable insights across various physical locations. ![HitPay point of sale app](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/pos_locations.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=31c33f2199aebb570fde348de4315449) ## Creating Locations on HitPay **Web Dashboard** To create new locations from your HitPay Web dashboard, navigate to **Settings > Locations** and click the **Add Location** button. Provide a unique name and accurate address for the location and click **Save** to finalize the location creation. Once a location is created, it will be automatically listed under active locations within the **Settings** section. **Mobile App** To create new locations from your HitPay mobile app, navigate to \*\*More > Locations \*\* and click the **Add Location** button. Provide a unique name and accurate address for the location and click **Save** to finalize the location creation. Once a location is created, it will be automatically under the list of locations. ## Assigning Team Members to a Location You can choose to assign team members to specific locations. This will help manage access efficiently and restrict access to locations these users are assigned to. **Web Dashboard** Log in to the HitPay Web dashboard and navigate to **Settings > Staff**: 1. Select an existing user to edit. 2. Choose the location(s) you wish to assign the user to. 3. Click **Save** to apply the changes. **Mobile App** Log in to the HitPay mobile app and navigate to **More > Users**: 1. Select an existing user to edit. 2. Choose the location(s) you wish to assign the user to. 3. Click **Save** to apply the changes. > [!NOTE] > > Owners and admins are assigned to all locations by default. ## Adding Location to Transactions Once locations are all set and users are assigned to these locations, you can further utilize these locations by tagging them to transactions via the HitPay App. Log in to the mobile app and access the side menu by clicking on the profile display image on the top left corner of the screen, you can see the currently active location below your name. Click the location menu and select the desired location for transactions. > [!NOTE] > > You can always change the active location any time from the side menu. ## Switching Between Locations (for Cashiers) Switching between locations is convenient and useful for users assigned to multiple locations: 1. Access the side menu from the top left corner of the app. 2. View your currently selected location below your name. 3. Click the location menu and select the desired location. ## Deactivating & Reactivating a Location You can deactivate or reactivate a location temporarily or permanently. **Web Dashboard** To deactivate a location, navigate to HitPay's web dashboard and go to **Settings > Locations**. Click on the location to deactivate or reactivate and click **Save** to confirm your actions. **Mobile App** To deactivate a location, go to HitPay app > More > Locations > tap on a location to view details. Click on the toggle to deactivate. ## Deleting a Location A location can be permanently deleted after it has been deactivated. **Web Dashboard** To delete a deactivated location, navigate to **Settings > Locations** on the HitPay Web dashboard, click on a deactivated location then click on **Delete Location** and confirm. **Mobile App** To delete a location, go to HitPay app > More > Locations > tap on a location to view details. Click on the "Delete Location" button and confirm. ## Assigning Products to Locations & Channels For businesses with diverse products, the ability to filter products based on location and channel is crucial. HitPay's feature allows you to precisely assign products to specific locations and channels, ensuring efficient product management and a seamless user experience. If you are also using HitPay to sell across multiple channels, you can precisely assign your products to be available only from specific channels. **Web Dashboard** To assign a product to specific locations or channels from the HitPay Web Dashboard: 1. Navigate to **Products > Products**. 2. Select the product you want to edit. 3. In the editing interface, navigate to the **Channels** and **Locations** sections. 4. Choose the desired channels and locations for the product. 5. Click **Save** to confirm your actions. Now your products will be available only in the selected locations and channels, providing targeted access to customers. **Mobile App** > [!NOTE] > > This feature is currently only available on the Web Dashboard ## FAQs > **Is there a maximum limit on the number of locations?** > > No, merchants are able to create as many different locations as they wish > **Can users view sales transaction of locations they are not assigned to?** > > It depends on the role of the user. Owner & Admin users are able to view transactions across all locations. Managers are only able to view transactions from their assigned location(s). Cashiers are only able to view transactions made under their own account. > > Learn more [here](/setup/user-management-roles#user-roles). > **Can users have different roles in different locations?** > > No, currently a user's role is defined on the business-level instead of the location-level. A user will share the same role across all locations. > **Why am I not able to view locations in the Web / App?** > > You might not be able to view Locations if you are a Cashier or Manager. Locations Management can only be accessed by Owner & Admin role users only. # Mall GTO Source: https://docs.hitpayapp.com/pos/mall-gto Learn about Mall GTO integration and features ## Overview Mall GTO Integration facilitates seamless transmission of daily sales data from merchants who are tenants in shopping malls to their mall providers. ![HitPay point of sale app](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/mall-gto.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=7ea5eaab73734e35cefdf9b8a089ab2c) ## What is a Mall GTO Sales Sync ? Tenants in shopping malls are required to follow the GTO Sales Data Sync process outlined in their tenancy agreements. Each day, they must submit their sales data to the mall or its designated agents for Gross Turnover (GTO) reporting. This submission must comply with automated standards and align with the file specifications provided by the mall. ## How does HitPay Mall GTO Integration help? HitPay Mall GTO Integration streamlines and simplifies the sales data reporting process for tenants in shopping malls. Here's how it helps: **1. Automated Sales Data Sync:** The integration ensures that your store's sales information is automatically synced with the mall's reporting system at scheduled intervals. This eliminates the need for manual data entry and reduces the risk of errors. **2. Minimized Third-Party Interactions:** HitPay's POS is directly integrated with the GTO system, reducing the need for third-party services and simplifying the overall process. This integration allows you to focus on running your business without worrying about the complexities of sales data reporting. **3. Compliance with Tenancy Agreements:** By accurately reporting sales data through the automated system, you remain compliant with your tenancy agreement. This helps you avoid penalties and potential fees associated with inaccurate or late submissions. ## Why Choose HitPay POS for GTO? **1. Cost Savings:** Enjoy the benefits of GTO integration with no additional fees or charges. **2. Streamlined Business Processes:** Reduce manual reporting efforts by consolidating all your sales data on one platform. **3. Quick Setup:** Get everything set up and running in less than 10 minutes. ## How to Set Up? * **Step 0 : Contact the mall provider to obtain your Unique Tenant ID** > [!NOTE] > > Unique Tenant ID differs for different malls. > > * It is called "Machine ID" for Capitaland malls. > * It is called "Client ID" for Far East Organisation malls. **Step 1 : Fill in the Integration Details** * Integration Name * Shopping Mall Provider (e.g. Capitaland) * HitPay Location (Location which you would like to send transmission data from) * Unique Tenant ID * Sync start time (SGT) **Step 2 : Verify with Mall Provider** \[!NOTE] Before completing the sync, the mall provider will normally require a test file to be sent so that they can ensure that all the data and fields meet the mall's reqiurement. Once approved, they will send SFTP / FTP Server credentials * Click on "Generate Test File" * Test file will be downloaded * You can use this test file and send it to the mall provider for verification **Step 3 : Fill up SFTP/FTP integration** * Hostname/IP * Port number * Username * Password * Directory Path **Step 4 : Start making transactions** After integration is complete, all transactions made under the designated location will be transmitted directly within the scheduled intervals. You can conveniently view the sync history and monitor data transmissions directly from the dashboard, giving you transparency and control over your sales data reporting. ## How to view and download auto-generated files? 1. Go to Point of Sale > Settings > Mall GTO 2. View sync history dashboard 3. You can go to specific date, integration, and location name by clicking on the filter/tabs. 4. Click on a Generated file to download and view the contents. 5. Go to file directory and open file ## Handling Non-Submission (Failed File Delivery) There may be cases where a GTO file is generated but not successfully delivered to the mall's SFTP server — for example, due to an SFTP connection issue or a temporary server outage on the mall's end. **How to resolve:** 1. Go to **HitPay Dashboard** > **Commerce** > **Mall Integration** 2. Under the integration history, locate the date with the failed transmission (it will show a **Failed** status) 3. Click **Resync** to re-attempt delivery of that file to the SFTP server > [!NOTE] > > You can filter by date and integration name to quickly find the failed entry. Once Resync is triggered, HitPay will re-send the previously generated file to the mall's SFTP server. ## Which malls are supported? > **CapitaLand Malls** > > * Aperia Mall > * Rochester Commons > * CapitaSky > * Kallang Wave Mall > * Bedok Mall > * Bugis Junction > * Bugis + > * Bukit Panjang Plaza > * Capita Spring > * Clarke Quay > * Funan > * Geneo Mall > * IMM > * ION Orchard > * ION Linkway > * Junction 8 > * Lot One > * Plaza Singapura > * Raffles City > * Sengkang Grand Mall > * Tampines Mall > * The Atrium @ Orchard > * Westgate > **Perrenial Holdings** > > * The Skywaters > * Golden Mile Singapore > * Capitol Singapore > * CHIJMES > * Caldecott Hill > * Forett at Bukit Timah > * Perennial Business City > * Chinatown Point > **Far East Organisation** > > * Clarke Quay Central > * Far East Square > * Greenwich V > * HillV2 > * Hougang 1 > * Icon Village > * Junction 10 > * Katong V > * Lucky Chinatown > * One Holland Village > * Orchard Central > * Pacific Plaza > * Mess Hall at Sentosa > * Parksuites > * Riverside Point > * SBF Center > * Siglap Centre > * Square 2 > * The Clift > * Weset Coast Plaza > * Woods Square > **Great World** > > * Great World City > **One Raffles Link** > > * CityLink Mall > **Frasers Property** > > * Causeway Point > * Century Square > * Eastpoint > * Hougang Mall > * Northpoint City > * Tampines 1 > * The Centre Point > * Tiong Bahru Plaza > * Waterway Point > * Whitesands > **Pontiac Group** > > * Millenia Walk ## FAQs > **What happens if daily reporting is not accurate?** > > If you spot any discrepancies in calculations please report to [support@hit-pay.com](mailto:support@hit-pay.com). We will investigate the issue. In any case there's a need to manually send / trigger transaction sync or file download for a specific date, our team is able to do so on an ad-hoc basis. > **Can I change frequency of reporting (e.g. Daily, Monthly, Month End)?** > > At the moment, HitPay only supports daily reporting. > **Syncing fails. How can I resolve this?** > > If sync fails, simply click "Resync" to re-initiate sync of that date. > **I have multiple stores. Can I register them under the same mall?** > > Merchant with multiple stores under the same mall can be registered with different locations in Integration details. > **My mall is not listed under the available shopping mall providers. What should I do?** > > At the moment, HitPay only supports Capitaland & Far East Organisations mall. Please drop a request by going to Point of Sale > Settings > Mall GTO integration > Set Up > Request here. HitPay will review your request and prioritise building integration to malls with high interest. ## Set Up Video [YouTube video player](https://www.loom.com/embed/e7de27e236824102b2c9a0221652920f?sid=8fcf230c-fd9d-4108-8fe8-d8b76a2d86be) # Modes Source: https://docs.hitpayapp.com/pos/modes Learn about different POS modes and how to switch between them ### Overview The HitPay App features modes tailored to meet your specific payment needs. Whether you're looking for a comprehensive checkout experience or a swift transaction, HitPay offers two modes: * Point of Sale Mode * Quick Sale Mode * Quick Collect Mode ![Modes](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/modes.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=b11b1d30dadcaa8cf61cbe6dab5b04ee) ### Point of Sale Mode When you need advanced sales management capabilities, **Point of Sale** mode is the perfect choice. From managing inventory to applying discounts, surcharges, and taxes, this mode offers a comprehensive checkout process. This mode is especially suitable for businesses that need to efficiently keep track of their inventory, add diverse products to their cart, and apply various discounts, surcharges, and taxes to sales transactions. It offers a comprehensive solution for retailers with complex product ranges, sales intricacies, and the need to manage order complexities. Through the "Products" tab, you gain access to inventory management capabilities, while the cart functionality enables compilation of multiple items in a single sale. Additionally, you can exercise fine control over surcharges, discounts, and taxes, ensuring accurate and tailored sales transactions. ### Quick Sale Mode For quicker transactions, **Quick Sale** mode is the solution. When speed and simplicity matter, this mode allows you to swiftly enter an amount and accept payments from your customers. The Quick Sale mode is designed for businesses that prioritize quick and seamless payment processing. Ideal for scenarios where detailed product management is unnecessary, this mode accelerates the checkout process by enabling direct entry of payment amounts. Well-suited for quick-service restaurants, pop-up events, and settings with high transaction volumes, this mode streamlines the payment experience, benefitting both you and customers. ### Quick Collect Mode Quick Collect mode is designed for self-serve payment collection, making it perfect for non-profits, charities, and fundraising events. Merchants can set up a donation kiosk, configure predefined donation amounts, and customize the branding and on-screen text. This mode is tailored for organizations that need a self-service way to collect in-person payments: * Non-Profit Organizations * Charitable Foundations * Community Service Organizations * Places of Worship (Churches, Mosques, etc.) * Fundraising Events (Charity galas, awareness campaigns) ### Mode Comparison Here's a side-by-side comparison of the key features in each mode: | | Point of Sale Mode | Quick Sale Mode | Quick Collect Mode | | - | - | - | - | | Use Case | Managing detailed sales | Used for speedy checkout | Self-serve payment collection | | Inventory Management | Available via the Products tab | Not available | Not available | | Enter Custom Amount | Available via the Keypad tab | Available | Available | | Cart | Available | Not available | Not available | | Surcharges & Discounts | Available | Not added to the sale | Not applicable | | Tax | Available | Not added to the sale | Not applicable | | Tips | Available | Available | Not applicable | ### Switching Between Modes Switching between modes is effortless: 1. Swipe right or click on your profile to access the side menu. 2. Tap the **mode** button located at the bottom of the side menu. 3. Select your preferred mode. The app also remembers your last selected mode, so you don't have to keep switching between modes. # Multi-Currency Products Source: https://docs.hitpayapp.com/pos/multi-currency-products Price your products in multiple currencies so overseas customers can pay in their local currency and payment methods. > [!WARNING] > > Multi-Currency Products is currently available for **Point of Sale only**. It is not supported on the Online Store. ![Multi-currency product pricing screens showing currency selection and price by currency setup on the HitPay mobile app](https://mintcdn.com/hitpay/FDe_1WKtgnvtfxsE/images/pos/multi-currency-products-hero.png?fit=max\&auto=format\&n=FDe_1WKtgnvtfxsE\&q=85\&s=f15f76aec05a01762e4fbc5d74fe29dd) ## Overview Multi-Currency Products lets you go beyond your local currency by pricing the same product in multiple currencies. Each currency gets its own defined price. For example, a single item can be priced at: * SGD 3 * MYR 9 * PHP 140 This is designed for merchants who sell to customers across different countries. Instead of relying on live exchange rate conversions, you decide exactly what a product costs in each currency. Overseas customers see a clear local price and can pay using their familiar local payment methods, while you always receive your payout in your home currency. ### Benefits at a glance * Sell to overseas customers without currency confusion * Customers pay in their local currency using local payment methods (PayNow, QR Ph, Touch 'n Go, and more) * You set the price — no surprises from exchange rate fluctuations * Works across popup events, cross-border markets, and multi-country operations > [!NOTE] > > If you haven't set a price for a particular currency, HitPay will fall back to automatic real-time conversion from your home currency. *** ## Use Case This feature is especially valuable for **popup merchants** selling at cross-border events. **Example:** A Malaysian merchant selling at a Singapore popup sets prices in both SGD and MYR. Filipino, Indonesian, and Thai customers can each pay in their own currency, while the merchant receives their payout in MYR. ![Web POS showing products with prices converted to the selected checkout currency](https://mintcdn.com/hitpay/FDe_1WKtgnvtfxsE/images/pos/multi-currency-products-web-pos.png?fit=max\&auto=format\&n=FDe_1WKtgnvtfxsE\&q=85\&s=6d2eb01b3490aa7d7e1810c3c8e4af51) **Key things to know:** * Multi-currency prices are **manually set** — they do not automatically update when exchange rates change. * If a price is set for a currency, that fixed amount is used at checkout. * If no price is set for a currency, HitPay falls back to automatic conversion. *** ## How to set multi-currency product prices **Web Dashboard** #### Individual Product 1. From the Web Dashboard, go to **Point of Sale > Products**. 2. Click on an existing product or create a new one. 3. Under the **Pricing** section, click **Add a price by currency**. 4. Select the currency and enter the price for that currency. 5. Repeat for each additional currency you want to support. 6. Click **Save** when done. #### Product with Variants 1. From the Web Dashboard, go to **Point of Sale > Products**. 2. Open a product that has variants (e.g., sizes or colors). 3. Select a specific variant. 4. Under the **Pricing** section for that variant, click **Add a price by currency**. 5. Enter the price for each currency you want to support. 6. Repeat for all variants as needed. 7. Click **Save** when done. > [!NOTE] > > Each variant can have its own set of currency prices independently. **Mobile App** #### Individual Product 1. Open the HitPay app and navigate to the **Products** tab. 2. Tap on an existing product or tap the **+** icon to create a new one. 3. Under the **Pricing** section, tap **Add a price by currency**. 4. Select the currency and enter the price. 5. Repeat for each additional currency. 6. Tap **Save** when done. #### Product with Variants 1. Open the HitPay app and navigate to the **Products** tab. 2. Tap on a product that has variants. 3. Tap on the variant you want to configure. 4. Under the **Pricing** section, tap **Add a price by currency**. 5. Enter the price for each currency you want to support. 6. Repeat for all variants as needed. 7. Tap **Save** when done. *** ## How to checkout with a multi-currency product First, set your checkout currency to the customer's currency. Product prices will then be displayed in that currency. **Web Dashboard** 1. Go to **Commerce > Web POS**. 2. Select the checkout currency and change it to the customer's currency. 3. Navigate to **Products** — prices will be shown in the selected currency. 4. Add the product(s) to the cart and proceed to checkout as usual. **Mobile App** 1. Go to **More > Checkout Currency** and select the customer's currency. 2. Return to the **Home** screen and tap **Products** — prices will be displayed in the selected currency. 3. Add the product(s) to the cart and proceed to checkout as usual. ### How the displayed price is determined When a checkout currency is selected, HitPay resolves the product price in the following order: 1. **Manual price** — if you've set a price for that currency on the product, that amount is used. 2. **Store-configured exchange rate** — if no manual price is set, HitPay applies the exchange rate configured in your store settings. See [Multi-Currency](https://docs.hitpayapp.com/store/multi-currency) for more details. 3. **Live market exchange rate** — if no store rate is configured, HitPay falls back to the mid-market exchange rate, which is refreshed every 6 hours. *** ## FAQs > **Can I bulk import multi-currency prices?** > > Bulk import of multi-currency prices is **not supported yet**. You will need to set currency-specific prices individually on each product or variant through the Web Dashboard or mobile app. > **Do multi-currency prices update automatically when exchange rates change?** > > No. Once you set a price for a specific currency, it stays fixed until you manually update it. If you haven't set a price for a currency, HitPay will use automatic real-time conversion at checkout. > **Which currencies can I add prices for?** > > You can add prices for any currency that is supported by HitPay Borderless QR in your market. Refer to the [Borderless QR supported countries and payment methods](/pos/borderless-qr#supported-countries--payment-methods) table for the full list. > **What happens if I don't set a price for a customer's currency?** > > HitPay will automatically convert your home currency price to the customer's currency using real-time exchange rates — the same as standard Borderless QR behavior. > **Does this work for products with variants?** > > Yes. You can set multi-currency prices at the variant level, so each size, color, or configuration can have its own currency-specific price. # Order Form Customisation Source: https://docs.hitpayapp.com/pos/order-form-customisation-pos Learn how to customize order forms in your POS system ## Overview The order confirmation gives POS users a flexible form that can be filled up before completing the purchase. HitPay allows you to customize this page to suit your business needs, enabling you to add extra questions, adjust phone number and remarks options, and create a tailored experience for your customers. ![Order Form Customisation](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/order-form-pos.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=2712e6d6453e0b19a531ed2d19518ad2) > [!WARNING] > > Order form customisation can currently only be configured from web HitPay dashboard ## Enabling the order form to be displayed at POS checkout * Navigate to your POS app > More > Orders > Settings. * Ensure that "Enable order form on POS" toggle is on. ## How to set up the order form ### Accessing Order Customisation settings From the Web : * Log in to your HitPay Web Dashboard. * Navigate to **Online Shop > Store Settings**. From the App : * Log in to HitPay app * Navigate to More > Orders > Settings ### Adding Questions To add extra questions to the order confirmation page, click on Add additional field in the Order Form Customization section. A pop-up window will appear, prompting you to enter a **Question Title** and select a **Question Type** from the available options: * **Text:** Customers can provide short text-based answers. * **Long Text:** Customers can provide longer text-based answers. * **Dropdown:** Customers can select an option from a predefined list. * **Radio:** Customers can choose a single option from a predefined list. * **Checkbox:** Customers can select multiple options from a predefined list. ![Step 3](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Order-Form-3.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=1f565a4a5121682392d9a0ca205aa924) Depending on the selected question type, you can define options, choices, or text fields accordingly. After configuring the question, you can choose whether the question should be Mandatory or not. Click **Add Field** to include the new question on the order confirmation page. ### Review and Testing Once you have made the necessary changes and additions, click **Save Changes** to save your customizations. To observe how your customized order confirmation form looks, go to your Storefront and visit the Order Confirmation page. ## Adding the order form at checkout * If shipping / pickup enabled, order form displayed on click of "Next" * If sihping /pickup not enabled, order form button will be displayed * click on order form, the order form will dynamically display list of questions and options based on your settings * After completing the order, you will be able to view the order information in the Order details ![Order Form Details](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/order-details-pos.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=6118abe354bd5c8489b223c1fd1aed0e) # Orders Source: https://docs.hitpayapp.com/pos/orders-pos Learn how to manage orders in your POS system ## Overview The Orders on Mobile feature enhances the HitPay POS app by allowing merchants to view and manage orders from both the Online Store and POS in one unified place. This helps omnichannel retailers streamline order fulfillment processes and improve operational efficiency. ![Orders](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/orders-pos.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=97bb8aec26853440b3527671d98f33d9) ## Fulfilling Orders After customers place orders in your POS or Online store, you'll receive order confirmation notifications via email and push notifications on the HitPay mobile app. To efficiently fulfill orders and mark them as completed, follow these steps: * Navigate to Orders: Access the Orders page by going to **More > Orders** from the HitPay app. * View Pending Orders: On the Orders page, select any order that is *"Pending"* * Filter and Sort: If you have multiple pending orders, use the filters at the top right corner to sort orders by various criteria such as order ID, customer email, products, order date, total amount, fulfillment status, and payment status. * Viewing Order Details: Click on an order to view its detailed information, including the products ordered, customer details, and order total. * Mark Order as Shipped/Picked Up: In the order details view, click the **Mark As Shipped** or **Mark as Picked Up** button based on the fulfillment status. * Update Order Status: A dialog box will appear where you can enter shipping tracking details. Select "Mark as Shipped" or "Delivered" and submit the information. This step is crucial for accurate order tracking and customer communication. > [!NOTE] > > **Tip:** Utilize this function not only for order fulfillment but also to provide order status updates to customers before shipping. Be cautious not to select "Mark as Shipped/Delivered" for status updates. * Order Fulfilled: Once you complete the above steps, the order will be marked as fulfilled or completed. * Customer Notification: An email notification will be sent to your customer, informing them that their order has been fulfilled. ## More Actions When dealing with orders in your HitPay Online Store, you have the option to perform various actions beyond the essential order fulfillment process. These additional actions can be accessed through the **More Actions** dropdown menu, providing you with extra functionalities to enhance your order management capabilities. To access these options, follow these steps: * **Print Order:** Generate a printable version of the order for your records or for further processing. * **Resend Order Confirmation:** Resend the order confirmation email to the customer, providing them with a duplicate confirmation for their reference. * **Cancel Order:** Cancel the order if necessary, ensuring proper communication with the customer about the cancellation. * **Issue Refund:** Initiate the refund process for the order, if applicable. # Getting Started Source: https://docs.hitpayapp.com/pos/overview Learn how to get started with HitPay's Point-of-Sale solution for in-person payments and business management. HitPay Point-of-Sale (POS) is a complete in-person payment solution available across 14 countries including Singapore, Malaysia, Philippines, Indonesia, Thailand, Australia, New Zealand, Hong Kong, UK, US, Canada, Europe, South Korea, and Japan. The POS app supports card terminals (chip, tap, swipe, and wallet payments), QR code payments (PayNow, DuitNow, GrabPay), and Tap to Pay on iPhone and Android. HitPay POS is available on iOS, Android, and Web Dashboard, and includes built-in inventory management, order tracking, receipts, discounts, taxes, tips, and sales reporting. HitPay POS brings together three core components: * **Card Terminals**: Accept chip, swipe, tap, and wallet-based card payments using smart terminals. * **QR Code Payments**: Let customers scan a QR code to pay instantly via mobile wallets or online methods. * **POS App**: A mobile application for checkout, inventory management, transaction tracking, and reporting. Whether you're running a retail store, operating a pop-up, or providing services on the go, HitPay POS offers the flexibility and tools you need. ## Getting Started ![HitPay POS App](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/hitpay-app-hero-updated.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=ca47988f74be2a14376bc321068ac051) The HitPay POS software is available on three platforms: * **iOS** (iPhone & iPad) * **Android** * **Web Dashboard** > **[Download HitPay POS App](https://download.hitpay.link/)** > > Download the mobile app for iOS and Android devices to get started with HitPay POS. > **Software Compatibility** > > | Platform | Device Requirements | > | - | - | > | iOS | iOS 16, iPhone 8 or later | > | iPadOS | iPad models released in 2019 or later | > | MacOS | MacBook or MacBook Air with Apple Silicon | > | Android | Android 9 or above with 3GB or more RAM | > **Availability** > > | Category | Details | > | - | - | > | App Marketplace | Apple App Store, Google Play Store | > | Countries | SG, MY, PH, ID, TH, AU, NZ, EUROPE, UK, US, CA, HK, KR, JP | ## Card Readers To accept **card payments**, you'll need to purchase a dedicated card terminal that works with the HitPay POS app. These terminals connect via Bluetooth or Wi-Fi and support major card networks and wallets. Each supported country has its own process for acquiring a HitPay terminal: | Country | How to Buy | | - | - | | 🇸🇬 Singapore | [Buy from HitPay Shop](https://hitpay.shop/hitpayterminal/) | | 🇲🇾 Malaysia | [Buy from HitPay Shop](https://hitpay.shop/hitpayterminalmy) | | 🇵🇭 Philippines | [Buy from HitPay Shop](https://hitpay.shop/hitpayterminalph) | | 🇭🇰 Hong Kong | [Buy from HitPay Shop](https://hitpay.shop/hitpay-hk) | | 🇦🇺 Australia | Order via HitPay Dashboard | | 🇳🇿 New Zealand | Order via HitPay Dashboard | > **[View All Card Readers](/pos/readers/overview)** > > Click here to learn more about our full range of supported card readers and their specifications. ## What You Can Do with HitPay POS * Accept a wide range of payment methods: card terminals, QR codes, and tap-to-pay * Manage orders, products, and inventory * Print receipts and generate sales reports * Apply discounts, taxes, surcharges, and tips * Customize your checkout experience with kiosk mode, customer display, and more # POS Payment Methods Source: https://docs.hitpayapp.com/pos/payment-methods The HitPay app offers a versatile range of payment methods, including credit cards, mobile wallets, and contactless payments ensuring flexibility and convenience for your customers. Let customers pay with their preferred payment methods ![Payment Methods](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/pos_payment_methods.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=3747f2f644b93f36a0a884c94f298d30) ## Available Payment Methods ### Card Readers / Terminals HitPay Terminals support Visa, Mastercard, and American Express cards. In addition, mobile wallets such as Apple Pay, Google Pay, Samsung Pay, and Fitbit Pay are also supported on HitPay Terminal. To learn more, please refer to our Readers [here](/pos/readers/overview). ### Tap to Pay If you don't have a HitPay Terminal, you can accept contactless card payments directly on your phone with [Tap to Pay](/pos/readers/tap-to-pay). > [!NOTE] > > Manual card entry (Key in Card Details) is no longer available in the HitPay app. This change applies to all countries and helps reduce fraud and chargeback risk. ### Scan-to-Pay QR Code If you click on Scan to Pay, we will generate a QR code that will open a payment link checkout page. Customers can scan the Scan-To-Pay QR code using their cameras and open the checkout page from their phones. ### Embedded QR Code Based Payments Our app provides a way to generate a QR code for localised digital payment solutions | Payment Method | Code | | :- | :- | | PayNow | paynow\_online | | ShopeePay | shopee\_pay | | QRIS | doku\_qris (Indonesia merchants) | | WeChatPay | wechat\_pay | | PromptPay | opn\_prompt\_pay | | TrueMoney | opn\_true\_money\_qr | | GrabPay | grabpay\_direct | | GrabPay PayLater | grabpay\_paylater | | UPI | upi\_qr | | Gcash | gcash\_qr | | QRPH | qrph\_netbank | | Touch 'n Go | touch\_n\_go | | Atome | atome | | VietQR | vietqr\_zalopay *Coming Soon* | | ZaloPay | zalopay *Coming Soon* | | ShopBack | *Coming Soon* | ### Cash To keep your payment records in one place, you can use HitPay POS to record cash transactions. There is no fee to accept cash payments. We don't process and charge any funds, HitPay simply just records the payment method of the transaction. ### Alternative Payment Methods (Coming Soon) If you accept payment outside of the payment methods we offer, you can choose to set up an alternative payment method. However, this feature is still currently unavailable. ## Payment Method Settings ### Default Payment Method If you are only using HitPay app to accept 1 type of payment method, you can set a "Default Payment Method" in the app's settings. By doing so, the payment method selection will be skipped and the default payment method will be auto selected at checkout. **Set Default Payment Method from Settings** * Go to Settings > Checkout Settings * Click on Default Payment Method * Select your preferred payment method as default * On the next checkout, this payment method will be applied by default **Set Default Payment Method from Checkout Flow** * Click "Charge" at the checkout page * Check "Use payment method as default" * Click on the payment method you would like to use as default * On the next checkout, this payment method will be applied by default ![Default Payment Method](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/pos_default_payment_method.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=489417f5f1d29e009a1e04bc1af929da) # Printer Configurations Source: https://docs.hitpayapp.com/pos/printer-configurations Learn about printer configuration options and settings ## Multi-Device Printing You can connect multiple printers to HitPay POS. To do so, you can simply : 1. Go to Printer > Connect Printer 2. Create a printer and name it (e.g Printer A), select the respective printer model and click "Test printer connection". 3. Once succesfully printed a test print, click Save 4. Go back to the printer list and add a new printer by following step 1 When you create a new transaction and click print, the HitPay POS will automatically print two receipts from both printers given that both printers are connected & online. ## Using HitPay POS for Kitchen Printers ![Order Ticket](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/order-ticket.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=02aabc0325da41cd40ee4792ec61af96) Cafes and restaurants can use order tickets to inform the cooking staff what to prepare for an order. In order to do so you will need to set a printer to print "Order Tickets". 1. Go to Printer > Connect Printer 2. Create a printer and name it (e.g Printer A), select the respective printer model and click "Test printer connection". 3. Under "What is this printer for", you can select "Order Ticket" 4. Click save 5. Whenever a new order is printed, the printer will print the order ticket format and leave out the payment related details # Product Customisation Source: https://docs.hitpayapp.com/pos/product-customisation Learn how to customize products in your POS system ## Overview You can now capture specific customer preferences and requirements for your products with HitPay's product customisation feature. This allows you to add tailored questions and options to your products, enabling a more personalised shopping experience for your customers. This guide will show you how to set up and manage product customisations effectively. ## Product Variants vs Product Customisations ### Product Variants * **Definition:** Different versions of a product with distinct attributes and unique SKUs. * **Usage:** Use this when variations affect the SKU, price, or inventory. * **Example:** A t-shirt available in different sizes (S, M, L) and colors (red, blue, green). ### Product Customisations * **Definition:** Add-ons or personalised options that enhance the base product without changing its core identity or SKU. * **Usage:** Use this for options or inputs like custom engravings, specific instructions, or additional toppings that don't create a separate SKU but may influence the price. * **Example:** Custom engraving on a watch, extra toppings on a pizza, or instructions for a juice. ## How to Set Up Product Customisations ### Adding Product Customisations 1. Go to **Point of Sale > Products > All Products** and select a product to add or edit. 2. Scroll to the **Product Customisation** section below the product variants. 3. Click **Add New** to create a new option or select an existing one. ### Adding a New Customisation Option 1. Fill out the fields in the popup: * **Title:** Enter the customisation title (e.g., "Extra Toppings"). * **Option Type:** Choose the input type (Checkbox, Radio Button, Dropdown). * **Option Values:** Enter values and prices if applicable (e.g., Apple, Orange, Carrot). * **Required Checkbox:** Specify if the option is required or optional. * **Selection Limits:** Set min/max selections (applicable to Checkbox and if the option is required). 2. Click **Save Changes** to add the customisation option. 3. The option will appear in the options list, where you can edit or remove it as needed. ### Managing Customisations * Navigate to **POS > Products > Customisation** to view all customisation options. * You can: * **Edit:** Update fields with changes affecting all associated products. * **Duplicate:** Create a copy of an existing option. * **Delete:** Remove the option entirely. ## Customer Experience ### Selecting Customisations 1. Your customers navigate to the product detail page. 2. Customers complete all required fields and add the product to their cart. Validation ensures all requirements are met. ### Checkout and Order Details 1. Customisations are displayed below the product name in the cart and checkout pages. 2. Customers receive an order confirmation email with all selected options. # Products & Categories Source: https://docs.hitpayapp.com/pos/products-categories Explore the different aspects of managing products and categories on HitPay's Point of Sale system. ## Overview This section covers various aspects of managing products and categories on HitPay's Point of Sale platform. Whether you're adding individual products, organizing them into categories, importing products in bulk, or facilitating quick checkouts, we've got you covered with easy-to-follow instructions. ![Products](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/pos_products.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=b4dac10b07c0781a1eaacd4b69503ac4) ## Adding Products Adding products on HitPay is a straightforward process that allows you to sell your products across multiple channels such as your online store, invoices, and point of sale. You have the option to add products one by one or by using the bulk upload option to streamline the process. This way, you can have your products ready for sale in no time. This guide will walk you through the step-by-step process of adding products on Hitpay's App. > [!NOTE] > > Before proceeding, confirm your HitPay App is in Point of Sale mode. You can learn more about changing modes by clicking [here](/pos/modes#switching-between-modes) You can add products individually on the HitPay App or choose to bulk upload by using HitPay's Web Dashboard. ### Adding Individual Products From the HitPay App, navigate to **Products** tab, click on the **+** icon on the top right corner of the screen and select **Add a Product** to access the Add Product page. You have the option to add: * Product images * Multiple product categories to enhance customer navigation * Product variants such as size or colour * Inventory status to add an order limit for a product and create urgency Complete the required product fields and click the **Save** button on the top right corner of the screen when done. ## "Open Amount" Products Besides adding products with fixed prices, you can also add "open amount" products which allows you to set custom prices at the point of checkout. This feature is ideal for businesses that offer custom goods or services, accept donations, or require flexible pricing. In contrast to the **Quick Sale** mode, Open Amount Products provide the flexibility of setting custom amounts **while still benefiting from inventory management and product reporting**. ### Ideal Use Cases The Open Amount Products feature is especially useful for, but not limited to : * **Donation and charity sectors**: Collect flexible donation amounts effortlessly and create each donation purpose as a open amount products. * **Custom goods and services**: Tailor pricing for one-of-a-kind items or services as open amount products. * **Custom cakes**: Charge based on size, design, or specifications. * **Repair services**: Set prices depending on repair complexity. * **Personalized gift shops**: Provide dynamic pricing for unique, custom gifts. ### How to use "Open Amount" products 1. **Navigate to Products**: Go to the Products & Categories section within your POS system. 2. **Create a Product**: * Add a new product. * Under pricing, enable the **"Open Amount "** toggle. 3. **Save and Exit**: Complete the product setup. 4. **Set the Price During Checkout**: * Select the Open Amount Product at the point of sale. * Enter the desired price for the product. 5. **Complete the Sale**: Process the payment as usual. ## Categories You can also create product categories in HitPay. Click [here](/store/categories) to learn more about product categories. To add new product categories in the HitPay App, navigate to **Products** tab, click on the **+** icon on the top right corner of the screen and select **Add a Category** to access the Add Category page. You can specify a name and description for the category and also assign products. Once done click the **Save** button on the top right corner of the screen. **Adding Multiple Products to a Category** This can be done by navigating to the **Products** Tab on the HitPay App and swiping left to access the "Categories Page". From the categories page, select the category you'd like to add products to and click the **Edit** button on the top right corner of the screen and then you can click on the **Assign Products** button to assign products to the category. Click **Save** when done. ## Inventory Management To manage added products, navigate to the **Products** tab on the HitPay App and click on the product you'd like to edit. Make the needed changes and click the **Save** button on the top right corner of the screen when done. ### Managing Inventory in Multiple Locations HitPay allows you to create multiple locations under one account. You can easily manage your products' inventory by location from the web dashboard. **Assigning Products to Specific Locations** * From the Web Dashboard, go to Point of Sale > Products * Create a new product or edit an existing product * Under the locations selector, you will see the "Availability" section. Select the locations in which the product is avaliable in * Products will only be visible in locations which are assigned **Assigning Inventory in Specific Locations** * To manage inventory, ensure that the "Inventory" toggle is enabled * Set whether you would like to track inventory in the location or not. * If tracking is enabled, you can input the quantity of the inventory and the quantity for low stock alert. * The quantity will be deducted automatically whenever a successful order is made. * If you have multiple locations, you can set different quantities in each location. ## Checkout Using Products You can can use the Product POS checkout function to charge for products that have been uploaded to HitPay. 1. From the POS Home screen, select Products tab on the top of the screen. If you have products added on to your HitPay account, you will see a list of products under the "All" section. 2. Add a Product to your Cart by clicking the **+** icon. If the product has several variants, choose a variant then click Add to Cart. 3. You can review the items you have added to the cart by clicking on the **Go to Cart** button below the screen. This will bring you to the checkout page. Here, you can add customer details, discounts, surcharges and taxes to your sale. 4. Click the Charge button and select your preferred payment method to complete the transaction. 5. After payment has been completed, you will be prompted with an option to email, print, or text SMS receipt to your customer. ## FAQs > **Can I import my products from Shopify or Woo Commerce?** > > Yes, you can import your products from shopify or woo commerce. Refer to [this](plugins/overview) section for more details > **When I checkout the cart with payment link as the payment method, is my inventory on hold?** > > No, Your inventory is not on hold. Hitpay will only update the inventory of the order once the payment link is completed. # Quick Collect Kiosk Source: https://docs.hitpayapp.com/pos/quick-collect-kiosk Learn how to use Quick Collect Kiosk mode for self-service payments ## Overview The Quick Collect Kiosk Mode allows merchants to convert their HitPay POS device or tablet into a self-service payment terminal. This is ideal for charities, fundraising events, and community organizations, enabling donors to contribute seamlessly. ![HitPay point of sale app](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/donation-kiosk-thumbnail.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=e294f686c441b5424bda4fde99a613d9) ## Value Proposition * **No Monthly Fees or Setup Costs:** Start accepting donations without worrying about recurring charges or upfront expenses. * **Integrated Payments Processing :** Seamlessly accept a variety of payment methods, ensuring a smooth donation process for all contributors. * **Customisable Options:** Tailor the experience for your donors by setting predefined donation amounts and also customising your logo & brand. * **Donor Information Collection :** Gather customisable details effortlessly for future engagement or record-keeping. * **Centralised Transaction Reports :** Monitor and manage transactions across multiple kiosks from a single platform, streamlining your operations. ## How to set up the donation kiosk? ### DIY Setup (Devie/Tablet running HitPay app with HitPay Terminal) | | | | - | - | | **What is this** | Make your own wall-mounted, countertop, or handheld donation kiosk. Simply pair your device with your preferred HitPay terminal. | | **Devices needed** | iOS / Android Device & HitPay Terminal | **Setup** : * If you haven't purchased a HitPay terminal, please purchase from the Hitpay terminal store. Learn more [here](/readers/overview#purchasing-a-terminal) * Prepare an a supported tablet and download the HitPay app. Click [here](/download) to see details. * Log in to your HitPay account on the app. * Navigate to Settings > Quick Collect Kiosk and configure your settings * Enter the Quick Collect mode by clicking the side menu > Mode > Quick Collect ### HitPay Terminal with HitPay App Installed | | | | - | - | | **What is this** | The end-to-end donation process is hosted through the HitPay card terminal. Ideal for handheld and countertop points of donation. | | **Devices needed** | HitPay All-in-One card terminal / FlexiPOS | **Setup** : * If you haven't purchased a HitPay Terminal, please purchase from the Hitpay terminal store. Learn more [here](/readers/overview#purchasing-a-terminal) * Log in to your HitPay account on the app. * Navigate to Settings > Quick Collect Kiosk and configure your settings * Enter the Quick Collect mode by clicking the side menu > Mode > Quick Collect ## How to customise the display? You can customize the Quick Collect Kiosk display via the HitPay POS app. Customization Options include : * **Identifier** (This will be displayed in the "remark" column of your transaction details) * **Business Photo** * **Welcome Message** - A short message to greet donors (e.g., "Donate to ABC Charity"). * **Thank You Message** – A message displayed after a successful donation (e.g., "Thank you for your support!"). ## How to change the preset amounts ? 1. Open the HitPay POS app. 2. Go to Settings > Hardware > Quick Collect Kiosk. 3. Tap "Amount Settings". 4. Choose up to 4 preset donation amounts (e.g., $10, $20, $50, $100). 5. Toggle "Allow Custom Amount" if you want donors to enter their own amount. 6. Tap Save to apply the changes. If custom amount is enabled, donors will see a "Custom" button to enter a specific amount. ## How can I collect customer information / additional information ? **How to Enable Customer Information Collection** 1. Open the HitPay POS app. 2. Go to Settings > Hardware > Quick Collect Kiosk. 3. Tap "Checkout Settings". 4. Enable: Collect customer information. 5. Tap Save to apply the changes. **How to Enable Additional Order Information Collection** 1. Open the HitPay POS app. 2. Go to Settings > Hardware > Quick Collect Kiosk. 3. Tap "Checkout Settings". 4. Enable: Collect additional information. 5. Tap Save to apply the changes. ## How will the Quick Collect mode work for end-customers? **Select a Donation Amount** * Donors choose a preset amount (e.g., $10, $20, $50, $100). * If custom amount is enabled, they can enter any amount manually. **Choose a Payment Method** * If a default payment method is set, the donation will proceed directly to payment. * If not, donors will see a list of available payment methods (excluding Cash, Scan to Pay, Payment Links, and Card). **Complete Payment** * The donor completes the payment using the selected method. * Once successful, the Thank You Message is displayed. **Receipt & Redirection** * Donors can scan the QR "Receipt" to receive a digital receipt. * If no action is taken, the screen will automatically return to the donation page after 1 minute 30 seconds. ## FAQs > **What hardware do I need to set up my Donation Kiosk?** > > For the most seamless payment experience, we recommend the HitPay All-In-One terminal or FlexiPOS — an out-of-the-box donation kiosk and payment terminal. > > If you already own a HitPay app-compatible device, you can opt for our DIY setup instead. Simply pair your device with any of our HitPay card terminals. > HitPay POS Software is adaptable and suitable for various industries, including retail, hospitality, food service, healthcare, online ordering, and more. > **How long does it take to set up?** > > After creating a HitPay account, as well as ordering and receiving the required hardware, setting up the Donation Kiosk typically takes 10 minutes. No coding or technical expertise is required. > **Can I use multiple kiosks and track them together?** > > Absolutely. You can manage all your kiosks on the HitPay dashboard or mobile app. > **What are the fees involved with the Donation Kiosk?** > > Setting up the unmanned Donation Kiosk will require a one-time purchase for your preferred card terminal. > Our Donation Kiosk POS software has no setup, recurring, or subscription fees. > ou only pay per transaction for completed donations. Click here to see pricing in your market. # Quick Sale Source: https://docs.hitpayapp.com/pos/quick-sale Learn how to use Quick Sale mode for fast transactions without product setup ![HitPay point of sale app](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/pos_quick_sale.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=4676c346e0b47d40c505f62d79e9b331) ## Accepting a Payment You can either checkout using Quick Sale mode or Point of Sale [modes](/pos/modes#switching-between-modes). * **Launch the HitPay App** Begin by launching the HitPay app on your device. On the home page, input the transaction amount. To proceed, tap the **Charge** button. This action will present you with various payment methods available for use. > [!NOTE] > > You can also include an invoice number, remarks, or any necessary description under the **Add Description** field. * **Choosing Payment Method** From the list of the available payment methods, select the one that suits your customer's preference or the desired transaction mode and follow the subsequent prompts and guidelines as required. * **Completing Payment** Once the payment process has been completed successfully, you will be prompted with an option to email or text SMS receipt to your customer and you can also choose to print a physical receipt using HitPay's Bluetooth receipt printer. ## Card Readers To accept payment using Card Readers, make sure you've already completed the steps to [connect a reader](/pos/readers/overview) to the HitPay App. * **Launch the HitPay App** Begin by opening the HitPay app on your device. On the home page, enter the transaction amount and tap the **Charge** button to continue. > [!NOTE] > > You can also add an invoice number, remarks, or any description under the **Add Description** field. * **Choose Payment Method** A list of the available payment methods would be shown; select **Card Terminal** as the payment method and follow the prompts. * **Completing Payment** You should be prompted to either tap or insert the customer's card into the terminal. After tapping or inserting the card, wait for the payment success message to appear in the HitPay App. > [!NOTE] > > You can choose to send a receipt by email or print a physical receipt using HitPay's Bluetooth receipt printer ## Accepting Card Payments You can accept card payments in person using a [HitPay Terminal](/pos/readers/overview) or [Tap to Pay](/pos/readers/tap-to-pay) on your phone. Customers can also pay by card on their own device using [Scan to Pay](#scan-to-pay). > [!NOTE] > > Manual card entry (Key in Card Details) is no longer available in the HitPay app. This change applies to all countries and helps reduce fraud and chargeback risk. ## PayNow QR You also have the option of processing payments via PayNow QR. You generate a QR code that can be scanned by your customer to complete a payment. HitPay collects payments on your behalf for any PayNow QR transactions. Upon collecting the funds from the customers, HitPay will payout to you according to your [payout schedule](/bank-payouts/bank-payouts). Hence upon scanning the PayNow QR in the HitPay checkout page, the customer would see the beneficiary as HitPay Payment Solutions Pte Ltd. * **Launch the HitPay App** Begin by opening the HitPay app on your device. On the home page, enter the transaction amount and tap the **Charge** button to continue. > [!NOTE] > > You can also add an invoice number, remarks, or any description under the **Add Description** field. * **Choose Payment Method** A list of the available payment methods would be shown; select **PayNow** as the payment method. * **Completing Payment** A QR code would be generated. Your customer can now scan the code on their smartphone to proceed to checkout and complete the payment. Once the payment has been completed successfully, a payment success message would be displayed in the HitPay App. > [!NOTE] > > You can choose to send a receipt of the transaction to the customer via email or text ## Scan to Pay Scan to Pay is a convenient payment method that allows you to send the payment checkout experience to the customer's phone. It also lets you offer various online payment methods at your POS (e.g., BNPL, ApplePay, etc.). > [!NOTE] > > Customers must use the camera or a QR code scanner to scan. Please do not use the banking app directly. * Enter the amount and click on **Charge** * Select "Scan to Pay" * Display the generated QR code to your customer * Customer should scan the QR code using their camera * Wait for payment confirmation on your POS app * Payment completed > [!NOTE] > > Scan to Pay involves converting a payment link into a QR code. ## Cash Transaction The Cash Payment Method is a very straightforward process for logging in-person cash payments into HitPay. On the HitPay App home page, enter the transaction amount and tap the **Charge** button to continue. > [!NOTE] > > You can also add an invoice number, remarks, or any description under the **Add Description** field. A list of the available payment methods would be shown; select **Cash** as the payment method and click on **Complete Payment** once you have received cash payment from the customer. You should get a payment success message to confirm the transaction has been successfully recorded. > [!NOTE] > > You can choose to send a receipt by email or print a physical receipt using HitPay's Bluetooth receipt printer ## Keypad Calculator > [!NOTE] > > The keypad calculator is available on Android only. The HitPay Android app includes a built-in calculator on the POS keypad, so you can add up amounts on the spot without switching apps. A calculator button sits next to the **0** key on the keypad: * **Single tap** — toggles between `+` (addition) and `−` (subtraction) * **Long press** — opens an operation picker with `+`, `−`, `×`, and `÷` As you type, the calculation history appears below the main amount (e.g., `1+2.50`). Once the calculation is complete, the result becomes the starting value for the next operation. ## FAQ > **How can I change the currency for Quick Sale transactions?** > > To modify the currency for quick sale transactions, navigate to your app's Settings and select **Quick Sale Currency.** > > Please be aware that a non-home currency (currency other than the default currency) is not compatible with **Terminal** payments. To charge in a foreign currency, use [Scan to Pay](#scan-to-pay). > **How can I reverse a cash transaction in the HitPay dashboard?** > > **Web Dashboard** > > ### Follow these steps to reverse a cash transaction using HitPay Dashboard: > > 1. Navigate to **Bank Payouts > Transactions** > > 2. Click on the transaction that you would like to reverse > > 3. Click on the **Void** button > > 4. Click on the **Confirm** button and wait for the refund success message > > > [!NOTE] > > > > If you want to fully reverse the transaction, leave the refund amount field **empty** or enter the specific refund amount if you want to partially reverse some funds from the transaction. > > **POS App** > > ### Follow these steps to reverse a cash transaction using HitPay POS Mobile App: > > 1. Navigate to **Transactions** tab > 2. Click on the transaction that you would like to reverse > 3. Click on the **Void** button > 4. Input the amount you'd like to reverse then click on the **Confirm** button and wait for the refund success message > **What are the payment methods supported by HitPay Card Readers?** > > HitPay Terminals support Visa, Mastercard, and American Express cards. In addition, mobile wallets such as Apple Pay, Google Pay, Samsung Pay, and Fitbit Pay are also supported on HitPay Terminal. > > The Sunmi V2s terminal has the capabilities to generate PayNow QR code, or a Scan-to-Pay QR code which customers can scan using their own mobile devices to be redirected to a checkout page, wherein all other payment methods available for the your HitPay account will be available for use. > **Which apps support PayNow QR payments?** > > PayNow provides a peer-to-peer funds transfer service available to retail customers of ten participating banks and four participating Non-Bank Financial Institutions (NFIs) in Singapore – Bank of China, CIMB Bank Berhad, Citibank Singapore Limited, DBS Bank/POSB, HSBC, Industrial and Commercial Bank of China Limited, Maybank, OCBC Bank, Standard Chartered Bank, UOB, GrabPay, LiquidPay, Singtel Dash and Xfers. > > PayNow QR Scan and Pay is supported by the following apps: > > 1. DBS/POSB Digibank > > 2. UOB Mighty > > 3. OCBC PayAnyone > > 4. DBS PayLah! > > 5. Google Pay Singapore > > 6. Citibank Singapore Limited > > 7. SC Mobile Singapore > > 8. HSBC Singapore > > 9. MayBank2u SG > > 10. Industrial and Commercial Bank of China Limited > > 11. Bank of China > > 12. CIMB Bank Berhad, Standard Chartered Bank > > 13. GrabPay > > 14. LiquidPay > > 15. Singtel Dash > > 16. Xfers # DX4000 (All-in-One) Source: https://docs.hitpayapp.com/pos/readers/all-in-one-dx4000 Instructions on how to set up and use the All-in-One terminal with HitPay. > [!NOTE] > > DX4000 (All-in-One) Terminal is only available in Philippines. ## Overview The HitPay DX4000 (All-in-One) is a portable, standalone, all-in-one POS terminal with: * Built-in card payments (insert or tap contactless card) * Integrated receipt printing * Wi-Fi/Mobile Hotspot connectivity support ![All-in-One DX4000](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/all-in-one-dx4000.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=988e5e53d99ac97ad4df69ffff39e96d) ## Steps to get your All-in-One Terminal 1. [Sign up](https://dashboard.hit-pay.com/businesses) for a HitPay account. 2. Complete your KYC and get approved. 3. Purchase [the terminal](https://hitpay.shop/hitpayterminalph). 4. We will enable **Cards (Terminal users only)** payment method for you. [Contact Sales](https://hitpayapp.com/contact-us) if it is not enabled. 5. In your HitPay Dashboard: **Payment Methods > Select "Turn On" for "Cards (Terminal users only).** 6. Complete the onboarding form for **Cards (Terminal users only)**. 7. Once your onboarding is successful, your terminal will be shipped to you — you’re ready to go! Questions? Email us at [support@hit-pay.com](mailto:support@hit-pay.com) ## Video Demo How to setup and and accept payments with your HitPay All-in-One Terminal: [YouTube video player](https://www.youtube.com/embed/meRGY8DL4G8?si=GyDV-wiqbwrqaa8S) ## Steps to Set Up 1. Use the provided cable to charge. 2. Power on the device (left-side button). 3. Click on the red banner “Oops you are not connected..” to open the WiFi settings popup. 4. To access the WiFi settings, enter password: **350000**. Then select a stable and secure WiFi network to connect. 5. Public WiFi is not supported due to security reasons. If you see a 504 error during payment, try using Mobile Hotspot or purchase a SIM Card for reliable connection. See [FAQs](https://docs.hitpayapp.com/pos/readers/all-in-one-dx4000#connectivity-%26-setup). 6. Open HitPay App > Log in > Type a charge amount on the keypad > Select "Charge" > You should see "Card Terminal" as **Connected** 7. You're good to go! > [!WARNING] > > > > Please **do not use the Cybersource App** as any transactions that go through it > will **not** be recorded in HitPay. ## Steps to Accept a Payment To accept payment, follow these steps below : 1. Complete the setup steps above. 2. Open the HitPay app and log in. 3. Enter the amount and tap Charge. (Optional) Add invoice number, remarks, or description. 4. Choose Card Terminal as the payment method. 5. Tap or insert the customer’s card. Wait for payment success notification. 6. Choose to print receipts, or not. 7. Wait for success confirmation on the HitPay App. > [!WARNING] > > > > Please wait for both success transaction screens (Steps 5. and 7.) to confirm payment. If you encounter any issue, please take a picture and share it to our [support@hit-pay.com](mailto:support@hit-pay.com) team for investigation. > > ## Specifications | Feature | Description | | :- | :- | | Processor | Quad-core ARM Cortex A53, 1.3GHz with a dedicated security processor | | Memory | 8GB Flash and 1GB RAM (expandable via MicroSD card slot) | | Display | 5-inch color touchscreen with 854 x 480 resolution | | Card Readers | Magnetic stripe reader (ISO 1/2/3), smart card reader (EMV L1 & ISO7816), NFC/contactless reader (EMV Contactless L1 3.1 compliant) | | Connectivity | Wi-Fi, Bluetooth 4.2, optional 4G, 3G, and GPRS | | Printer | Integrated thermal printer with 40mm diameter | | Battery | 2200mAh Li-ion battery (15.8Wh) – portable version | | Security | PCI PTS v6 certified | | Operating System | Android 10 | ## FAQs ### Connectivity & Setup 1. **What if my device has connection issues?**\ Click on the red banner “Oops you are not connected..” to open the WiFi settings popup. To access the WiFi settings, enter password: **350000**. Then select a stable and secure WiFi network to connect. Alternatively, go to **Settings > Check Reader Settings > Change WiFi Settings** and select a stable, secure WiFi network to continue using the terminal. 2. **Do I need a SIM card to use the terminal?**\ No, if you have a stable and strong WiFi connection. A SIM card is useful in locations without good WiFi coverage. 3. **Does it come with its own SIM/data plan, or do I need to provide one?**\ You will need to provide your own SIM card and data plan. 4. **How can I connect my SIM card? Does it work on Smart and Globe? Prepaid or Postpaid?**\ Insert your SIM card into the slot, then configure it under **Settings > Network**. The terminal works with both Smart and Globe networks, prepaid or postpaid. 5. **How do I change the receipt header (store name, business address, contact info)?**\ You will need to contact our Support Team (**[support@hit-pay.com](mailto:support@hit-pay.com)**) to make the change and we will tell you the follow-up steps. 6. **Why am I getting a 504 error when I accept a payment?**\ The terminal can only connect to a secure WiFi network. This means public WiFi in shopping malls or outdoor areas might not work. We recommend you connect it to your Mobile Hotspot or purchase a SIM card for reliable connectivity. For more information on troubleshooting your WiFi connection, please refer to [https://docs.hitpayapp.com/pos/readers/wisepose#reader-is-unable-to-connect](https://docs.hitpayapp.com/pos/readers/wisepose#reader-is-unable-to-connect). *** ### Payments & Card Acceptance 7. **Which card brands are accepted?**\ Visa and Mastercard are accepted. 8. **Does it work with GCash Mastercard, GrabPay Card, or other prepaid cards?**\ Yes, as long as the prepaid card is powered by Visa, Mastercard, or other supported networks. 9. **Can it accept foreign cards?**\ Yes, the terminal can process international cards from supported networks. Please note that international cards follow a separate fee of 4%, instead of the usual domestic card fee of 3%. 10. **Does it support tap to pay and swipe card?**\ Yes, it supports contactless (tap), chip insert, and magnetic stripe swipe transactions. 11. **Can I void a payment?**\ No. Due to partner limitations, you cannot void payments. You can issue refunds after 2 days of the charge being confirmed. Refunds are credited back to your customer’s account within 3–5 working days, depending on their card issuer. 12. **How do I process refunds on the dashboard?**\ Go to **HitPay Dashboard > Transactions**, select the transaction, then click **Refund** and confirm the action. 13. **Where can I monitor my payouts for transactions made via the terminal?**\ Go to **HitPay Account > Bank Payouts > HitPay Balance** to see your payouts. 14. **Can HitPay terminals generate physical & digital receipts for all payment methods, for example GCash, QR Ph, or only for card transactions?**\ Physical receipts can be generated for card transactions. Digital receipts can be issued for all payments (e.g. GCash, QR Ph) via email or SMS. *** ### Hardware & Usage 15. **What happens if the terminal breaks? Is there a replacement policy?**\ You may contact HitPay Support (**[support@hit-pay.com](mailto:support@hit-pay.com)**). If the damage is covered under warranty, a replacement unit will be provided. 16. **Is there a warranty? How long?**\ Yes, the terminal comes with a standard **1-year warranty** against manufacturing defects. Accessories, including the **battery and charger, are covered for 6 months only**. 17. **Is the thermal paper free? What size does it use?**\ The terminal comes with an initial roll for free. It uses standard 58mm width x 40mm diameter thermal paper rolls, which you can purchase from most office supply or e-commerce stores. 18. **How long is the battery life?**\ The terminal can last up to 8–10 hours on a full charge, depending on usage. 19. **Can it charge via power bank?**\ Yes, you can use a power bank with a compatible USB-C cable to charge the terminal. 20. **Can I have multiple terminals under one account?**\ Yes, you can register multiple terminals under the same HitPay account. 21. **Can I integrate the HitPay Terminal with my existing point-of-sale (POS) system?**\ This is not yet available, but is in development. We will update you once this is possible — stay tuned! *** ### Pricing, Receipts & Policies 22. **I need an official receipt for the terminal I purchased. Where should I request it?**\ Please contact **[support@hitpayapp.com](mailto:support@hitpayapp.com)** with your purchase details. 23. **Is there a monthly subscription fee for the terminal?**\ No, there is no monthly subscription fee. Only a one-off cost of 10,500 PHP is required. There are also no hidden platform fees. 24. **Is there a sales quota?**\ No, there is no sales quota to maintain. 25. **Where can I purchase more receipt rolls?**\ You should be able to purchase thermal receipt paper (40mm diameter) at most eCommerce marketplaces. 26. **Do I need to replace the ink in the terminal?**\ No, the Ingenico DX4000 series terminals do not use ink cartridges. These terminals use **thermal receipt paper rolls** instead. Thermal paper is a **heat-sensitive material** that turns black (or sometimes blue) when exposed to heat from the terminal’s print head. * No ink, toner, or ribbon is required. * You only need to replace the thermal paper roll when it runs out. Please contact us [support@hit-pay.com](mailto:support@hit-pay.com) if you have any questions. # S1F2 (All-in-One) Source: https://docs.hitpayapp.com/pos/readers/all-in-one-s1f2 Instructions on how to set up and use the All-in-One terminal with HitPay. > [!NOTE] > > All-in-One Terminal is available in Singapore, HongKong. ## Overview The HitPay S1F2 is a portable, all-in-one POS terminal with: * Built-in card payments * Integrated receipt printing * Wi-Fi and cellular connectivity support ![All-in-One S1F2](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/all-in-one-s1f2.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=4853ed587877adeaaef39d7a59b02ffa) ## Steps to get your All-in-One Terminal 1. [Sign up](https://dashboard.hit-pay.com/businesses) for a HitPay account 2. Complete your KYC and get approved. 3. [Contact Sales](https://hitpayapp.com/contact-us) to enable **Cards (by Adyen)** 4. In your HitPay Dashboard: **Settings > Payment Methods > Select "Turn On" for "Cards (by Adyen)"** 5. Complete onboarding for **Cards (by Adyen).** 6. Purchase [the terminal](https://hitpay.shop/hitpayterminal/product/hitpay-all-in-one-supports-cellular-and-wifi) 7. Your terminal will be shipped to you — you’re ready to go! Questions? Email us at [support@hit-pay.com](mailto:support@hit-pay.com) ## Steps to Set Up 1. Insert the battery. Use the provided cable to charge via the port with the lightning symbol. 2. Power on the device (left-side button). 3. On the Homepage: **Settings > Network > Enter passcode 0000 > Wi-Fi > Connect** 4. Leave the terminal on and connected for \~1 hour. The HitPay app will auto-install. 5. Once installed: **Open HitPay App > Log in > Settings > Check Reader Connection > Select "Adyen POS" > Select terminal based on your Serial Number** If the app doesn’t install: Go to Settings > Apps > Enter passcode 0000 to trigger the download. > [!WARNING] > > Please note that you have to use the cable provided in box to charge. [YouTube video player](https://www.youtube.com/embed/MCrrHaDhCiA?si=lPnB-tC-o9n1YuVi) ## Steps to Accept a Payment [YouTube video player](https://www.youtube.com/embed/RJrAtq9FpBM?si=knjjld1UWbf2O9vo) To accept payment, follow these steps below : \*\*Standalone Mode \*\* 1. Complete the setup steps above. 2. Open the HitPay app and log in. 3. Enter the amount and tap Charge. (Optional) Add invoice number, remarks, or description. 4. Choose Card Terminal as the payment method. 5. Tap, swipe or insert the customer’s card. Wait for success confirmation. ## Set Up your Printer Settings (Auto/Manual) 1. Open HitPay app. 2. Go to Settings > Printer. 3. Click on the Printer Settings (Gear Icon) on the top right of the page. 4. Choose to enable/disable the automatic receipt printing by turning on/off the toggle. 5. If you selected **Automatic**, select the number of receipts to be printed. If you are printing more than 1 receipt, you can set the time delay between each prints. If you selected **Manual**, tap "Print" after each transaction. 6. Once you’ve configured your preferences, click on the “Save” button to apply the changes. Customize your receipts under **Settings > Receipt Customization.** > [!WARNING] > > Receipt size has a paper roll diameter of 40mm, and a paper width of 57/58mm. ## Specifications | Feature | Description | | :- | :- | | Device dimensions | 200 mm L x 78 mm W × 56 mm H / 7.9" L x 3.1" W x 2.2" H | | User interface | 5.5" Touch display | | Paper roll diameter | 40mm | | Paper width | 57/58mm | | Weight | 495G / 1.09lbs | | Battery | 5840mAh (21.3Wh), replaceable | | Processor | Quad-core, 1.3 GHz, ARM Cortex-A7 32-bit RISC processor | | Memory | 16GB flash & 2GB RAM | ## Troubleshooting Wi-Fi Connection ### Reader is unable to connect To check connectivity, go to the Device homepage, then select "Settings", choose "Network", enter passcode "0000", choose "Wifi" and connect to your Wi-Fi network. * Make sure the Wi-Fi network is connected and has internet access. * The signal strength is good. ## FAQs 1. What do I do if I get the error "Could not process the payment. Please check the connection." > Make sure terminal is connected to WiFi (preferably, since there's connection issue)/Hotspot using a mobile device instead of using the cellular. Go to Settings > Configuration > Update. Passcode is "0000". Please contact us [support@hit-pay.com](mailto:support@hit-pay.com) if you have any questions. # Verifone V660P (All-in-One) Source: https://docs.hitpayapp.com/pos/readers/all-in-one-v660p Instructions on how to set up and use the Verifone V660P All-in-One terminal with HitPay. > [!NOTE] > > All-in-One Terminal is available in Singapore, HongKong. ## Overview The Verifone V660P is a portable, all-in-one POS terminal with: * Built-in card payments * Integrated receipt printing * Wi-Fi and cellular connectivity support ![Verifone V660P](https://mintcdn.com/hitpay/Ia9KKCuOa1PdHQ1K/images/pos/all-in-one-v660p.png?fit=max\&auto=format\&n=Ia9KKCuOa1PdHQ1K\&q=85\&s=3151c4177556121057c0ff38686cf711) ## Steps to get your All-in-One Terminal 1. [Sign up](https://dashboard.hit-pay.com/businesses) for a HitPay account 2. Complete your KYC and get approved. 3. [Contact Sales](https://hitpayapp.com/contact-us) to enable card payments. 4. In your HitPay Dashboard: **Settings > Payment Methods > Select "Turn On" for Cards** 5. Complete card payment onboarding. 6. Purchase [the terminal](https://hitpay.shop/hitpayterminal/product/hitpay-all-in-one-supports-cellular-and-wifi) 7. Your terminal will be shipped to you — you're ready to go! Questions? Email us at [support@hit-pay.com](mailto:support@hit-pay.com) ## Steps to Set Up 1. Plug the provided cable into the port with the lightning bolt symbol to power the reader. Press the Power button to switch on the device. 2. After switching on for the first time, you will be prompted to connect to a Wi-Fi network. Connect to your Wi-Fi network. \[!WARNING] Your Wi-Fi network **MUST USE** WPA-Personal or WPA2-Personal encryption and be password protected. The Verifone V660P **DOES NOT SUPPORT** non-password-protected networks, enterprise networks, or IPV6 networks. 3. A pairing code (e.g., Tang-Peace-Man) should appear on the terminal upon startup. 4. Connect the reader to your account. Open the HitPay dashboard and navigate to **Point of Sales > Terminal > Register Terminal**. Insert the code under the Registration Label and connect. ## Steps to Accept a Payment To accept payment, follow these steps below: **Standalone Mode** 1. Complete the setup steps above. 2. Open the HitPay app and log in. 3. Enter the amount and tap Charge. (Optional) Add invoice number, remarks, or description. 4. Choose Card Terminal as the payment method. 5. Tap, swipe or insert the customer's card. Wait for success confirmation. ## Set Up your Printer Settings (Auto/Manual) 1. Open HitPay app. 2. Go to Settings > Printer. 3. Click on the Printer Settings (Gear Icon) on the top right of the page. 4. Choose to enable/disable the automatic receipt printing by turning on/off the toggle. 5. If you selected **Automatic**, select the number of receipts to be printed. If you are printing more than 1 receipt, you can set the time delay between each prints. If you selected **Manual**, tap "Print" after each transaction. 6. Once you've configured your preferences, click on the "Save" button to apply the changes. Customize your receipts under **Settings > Receipt Customization.** > [!WARNING] > > Receipt size has a paper roll diameter of 40mm, and a paper width of 57/58mm. ## Specifications | Feature | Description | | :- | :- | | User interface | 5.5" 720 x 1440 HD capacitive multi-touch display | | Paper roll diameter | 40mm | | Paper width | 57/58mm | | Battery | 2500mAh, replaceable, USB-C charging | | Processor | Quad-core, 2.0 GHz, ARM Cortex-A53 | | Memory | 2GB RAM | | Connectivity | 4G LTE (CAT 4), dual-band Wi-Fi (2.4 GHz + 5 GHz) | | Security | PCI PTS 7.x | ## Expected sounds during payment The following table describes sounds that occur during successful and failed payments on the Verifone V660P reader. | | Tap | Chip | Swipe | | :- | :- | :- | :- | | Success | 1 long beep | 1 long beep | 1 long beep | | Failure | 2 short beeps | 2 short beeps | 2 short beeps | ## Connectivity **Wi-Fi** ### Connecting via Wi-Fi To connect to Wi-Fi or switch networks, open Settings using one of the following paths, then select **Network > Wi-Fi** and connect to your network: * **If logged into the HitPay app:** Go to **More > Check Reader Settings**, then enter the admin passcode `07139`. * **If not in the HitPay app:** Press the **⋯** button at the top right, then select **Settings**. > [!WARNING] > > Your Wi-Fi network **MUST USE** WPA-Personal or WPA2-Personal encryption and be password protected. The Verifone V660P **DOES NOT SUPPORT** non-password-protected networks, enterprise networks, or IPV6 networks. ### Troubleshooting Wi-Fi Connection #### Reader is unable to connect To check connectivity, open Settings using the paths above, then select **Network > Wi-Fi** and verify the connection. * Make sure the Wi-Fi network is connected and has internet access. * The signal strength is good. * The Wi-Fi network is a WPA/WPA2/WPA3-Personal or WPA2/WPA3 EAP-PEAP Enterprise encryption. * The Wi-Fi network is password protected. * The device has an IP address assigned. #### How to identify your Wi-Fi network's security type **Windows 10** * Find the Wi-Fi connection icon in the taskbar and click on it. * Click Properties underneath your current Wi-Fi connection. * Scroll down and look for the Wi-Fi details under Properties. * Under that, look for Security Type, which shows your Wi-Fi protocol. **MacOS** * Hold down the Option key. * Click on the Wi-Fi icon in the toolbar. * This will show your network details, including your Wi-Fi security type. **Android** * On your Android phone, go into Settings. * Open the Wi-Fi category. * Select the router you are connected to and view its details. * This will show what Wi-Fi security type your connection is. * The path to this screen may differ depending on your device. **iPhone** * Unfortunately, there is no way within iOS to check your Wi-Fi security. If you want to check your Wi-Fi's security strength, you can either use a computer or log into the router through the phone. Each router may be different, so you may need to refer to the documentation that came with the device. Alternatively, if your internet service provider set up the router, you could contact them for assistance. #### How do I change my Wi-Fi security encryption? > [!NOTE] > > The steps to configure Wi-Fi security encryption might vary depending on your specific router model and provider. Please refer to your router's manual or the support resources provided by your internet service provider (ISP) for detailed and accurate instructions tailored to your device. **1. Log into your router console** * Using the browser of your choice, log into the admin console of your home router. The most common method is to enter `http://192.168.1.1` or `http://10.0.0.1/` into the browser address bar and press Enter. **2. Navigate to the Wireless Security section** **3. Select Encryption Option** * Select WPA/WPA2/WPA3-Personal or WPA2/WPA3 EAP-PEAP Enterprise encryption. **4. Set Your Network Password** * Create a strong network password. **5. Save Changes & Reboot** * Upon saving, reconnect all your wireless devices. * Select your new WiFi SSID and enter the new WiFi password. #### How do I check the IP address of my Verifone V660P Terminal? * Ensure your Verifone V660P device is powered on and connected to the Wi-Fi network. * Open Settings using the paths above, then go to **Network > Wi-Fi**. * Your device should display the connected network and the assigned IP address. **Ethernet** ### Connecting via Ethernet Ethernet connectivity requires the use of an optional dock, which provides wired Ethernet connectivity and keeps your terminal fully charged. You can purchase the dock separately through the [HitPay online store](https://hitpay.shop/hitpayterminal) or contact [support@hit-pay.com](mailto:support@hit-pay.com). To set up the dock: * Connect the Ethernet cable from your dock to your router. * Connect the dock to power using the included charging cable, plugged into any USB-A power adapter (not included). Minimum power requirement: 5V-2A (10W). * When both cables are connected, insert the terminal into the dock. To confirm that the terminal is properly docked, verify the terminal is charging and the Ethernet icon is visible in the status bar. ## FAQs 1. What do I do if I get the error "Could not process the payment. Please check the connection." > Make sure terminal is connected to WiFi (preferably, since there's connection issue)/Hotspot using a mobile device instead of using the cellular. Go to Settings > Configuration > Update. Passcode is "07139". Please contact us [support@hit-pay.com](mailto:support@hit-pay.com) if you have any questions. # Overview Source: https://docs.hitpayapp.com/pos/readers/archive Explore the different type of terminals and how to connect them to your HitPay POS App ## Card Readers View setup guides, FAQs, troubleshooting instructions. > **[BBPOS WisePad 3](/pos/readers/wisepad3)** > > Compact mobile bluetooth reader that requires pairing with the HitPay app. > > ![WisePad 3](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/wisepad3.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=53c960acbb667ba7d3e0cfdd103e59b0) > **[HitPay M2](/pos/readers/m2)** > > Compact mobile bluetooth reader that requires pairing with the HitPay app. > > ![M2 Reader](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/m2.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=e88a4e9fb0e1e24f4fd047f2d45190b7) > **[Tap to Pay on Android](/pos/readers/tap-to-pay)** > > Accept contactless transactions using a compatible Android devices (only available in select countries). > **[Tap to Pay on iPhone](/pos/readers/tap-to-pay)** > > Accept contactless transactions using a compatible iOS device (only available in select countries). > **[WisePOS E](/pos/readers/wisepose)** > > Smart reader that can be set up as a standalone or paired to HitPay app / your custom POS app. > > ![WisePOS E](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/wisepos-e.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=a8d81aa53f7fb21dc3a3e5f8a55b8e79) > **[FlexiPOS](/pos/readers/flexipos)** > > Smart reader that can be set up as a standalone or paired to HitPay app / your custom POS app. > > ![FlexiPOS](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/flexipos.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=9e3f9702fb8a69c4c97872847d45f72c) > **[HitPay POS Lite](/pos/readers/sunmiv2s)** > > Standalone terminal with an in-built printer, supports WiFi and cellular connection. Available in Singapore. > > ![Sunmi V2S](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/sunmi-v2s.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=9a747b563a4eeb45040007df75832091) > **[HitPay All-in-One S1F2](/pos/readers/all-in-one-s1f2)** > > Standalone terminal with an in-built printer, supports WiFi and cellular connection. > > ![All-in-One S1F2](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/all-in-one-dx4000.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=988e5e53d99ac97ad4df69ffff39e96d) > **[HitPay POS Max](/pos/readers/pos-max-v3mix)** > > Standalone POS System with an in-built printer and in-built barcode scanner, supports WiFi and cellular connection. Available in Singapore. > > ![HitPay POS Max](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/posmaxsunmiv3mix.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=6b574c913da6e8a6e267f991008c88d7) > **[HitPay Mini](/pos/readers/pos-max-v3mix)** > > Compact mobile Wi-Fi reader that requires pairing with the HitPay app. > > ![Mini AMS1](https://mintcdn.com/hitpay/ipOqIEc1iMm1WF_A/images/pos/mini-ams1.png?fit=max\&auto=format\&n=ipOqIEc1iMm1WF_A\&q=85\&s=8988b445371d2875540f1a16fc94216c) > **[HitPay All-in-One DX4000 (PH 🇵🇭)](/pos/readers/pos-max-v3mix)** > > Standalone terminal with an in-built printer, supports WiFi and SIM card. > > ![All-in-One S1F2](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/all-in-one-dx4000.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=988e5e53d99ac97ad4df69ffff39e96d) ## QR Readers > **[HitPay Soundbox](/static-qrs/soundbox)** > > The Soundbox is a secure QR payment terminal with voice confirmation, making in-store payments fast, clear, and reliable. ## Availability | Country | FlexiPOS | BBPOS WisePad 3 | HitPay M2 | All-in-One (S1F2) | Tap to Pay on Android | Tap to Pay on iPhone | HitPay POS Max | All-in-One (DX4000) | | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | | Australia | ✓ | ✓ | ✕ | ✕ | ✓ | ✓ | ✕ | ✕ | | Canada | ✓ | ✓ | ✕ | ✕ | ✓ | ✓ | ✕ | ✕ | | Malaysia | ✓ | ✓ | ✕ | ✕ | ✓ | ✓ | ✕ | ✕ | | New Zealand | ✓ | ✓ | ✕ | ✕ | ✓ | ✓ | ✕ | ✕ | | Singapore | ✓ | ✓ | ✕ | ✓ | ✓ | ✕ | ✓ | ✕ | | United Kingdom | ✓ | ✓ | ✕ | ✕ | ✓ | ✓ | ✕ | ✕ | | United States | ✓ | ✓ | ✓ | ✕ | ✓ | ✓ | ✕ | ✕ | | Philippines | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ | ## Recommended Setup Configurations These configurations are designed to help you decide on the best options to maximize the effectiveness of HitPay's POS and payment systems. ### HitPay POS Max for Retail & F\&B use cases ![](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/posmaxsunmiv3mix.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=6b574c913da6e8a6e267f991008c88d7) | | | | - | - | | **Setup** | HitPay POS Max | | **Use Case** | Ideal for retail countertops where full features of the POS app are needed. | | **Pros** | All essential POS components —POS app, terminal, printer, barcode scanner—bundled into one powerful device | | | Cellular network & wi-fi network supported, ensuring reliable and continuous connectivity | | | Enjoy landscape mode and a wider screen resolution - designed to streamline the checkout process and enhance customer interaction. | ### iPad + WisePAD 3 for Retail Countertops ![](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/ipad_bt.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=e468dd6081886d6cfccf0c842abfd92d) | | | | - | - | | **Setup** | WisePAD 3 connected to an iPad. | | **Use Case** | Ideal for retail countertops where full features of the POS app are needed. | | **Pros** | Full-featured POS application enhances user experience and functionality. | | | Independence from Wi-Fi through the use of a 5G-enabled iPad, ensuring continuous connectivity. | | **Limitations** | Bluetooth connectivity may drop, particularly if the app is idle for extended periods. | ### Mobile App + WisePAD 3 for Mobility ![](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/mobile_bt.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=2473103a3422bc3b11fa519ef54c495b) | | | | - | - | | **Setup** | Mobile app on iOS or Android device connected to WisePAD 3. | | **Use Case** | Best for mobility use cases like pop-up stores or roaming sales staff. | | **Pros** | Portable and easy to carry, enabling sales staff to bring the checkout process directly to the customer. | | | Allows staff to use their own devices (BYOD), reducing the need for dedicated hardware. | | **Limitations** | Bluetooth connectivity may drop, particularly if the app is idle for extended periods. | ### All-in-One for Comprehensiveness ![](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/all-in-one-s1f2.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=4853ed587877adeaaef39d7a59b02ffa) | | | | - | - | | **Setup** | Use All-in-One as a standalone device with in-built HitPay application on the terminal | | **Use Case** | Best for businesses who want a comprehensive solution with mobility and features. | | **Pros** | All-in-one - Card reading & processing, in-built printer, cellular support when Wifi is unstable | | | Dedicated device that operates independently without the need for pairing with an app, simplifying the setup and use | | **Limitations** | - | ### Tap to Pay for In-Person Payments ![](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/tap_to_pay.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=075f1cc2731f85322c35211061eaa893) | | | | - | - | | **Setup** | Mobile device with NFC capability used for contactless payments. | | **Use Case** | Ideal for merchants needing mobility and simplicity in transaction settings, not suited for fixed countertop setups. | | **Pros** | Highly mobile and flexible, enabling payments to be taken anywhere. | | | Portable and easy to carry, enabling sales staff to bring the checkout process directly to the customer. | | **Limitations** | Limited to contactless payments, excluding swipe, dip, or insert methods. | | | May require reconnection each time the app is closed and reopened. | | | Compatibility issues with devices not supporting NFC or specific contactless payment protocols. For full compatibility refer to this [link](/pos/readers/tap-to-pay#tap-to-pay). | ### FlexiPOS Standalone ![](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/flexipos.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=9e3f9702fb8a69c4c97872847d45f72c) | | | | - | - | | **Setup** | FlexiPOS used independently as a card reader. | | **Use Case** | Ideal for businesses using HitPay purely for card reading purposes, without the need for additional POS software integrations. | | **Pros** | Dedicated device that operates independently without the need for pairing with an app, simplifying the setup and use. | | | Provides a stable connection, ensuring reliable card reading and processing. | | | Able to connect to HitPay Wi-fi Printers | | **Limitations** | Requires a stable Wi-Fi connection to process transactions. | | | Lacks support for HitPay Bluetooth Printers. | ## Purchasing a Terminal Merchants based in Singapore & Malaysia can conveniently order a terminal directly from the HitPay Online Store which will be fulfilled directly by our HitPay team. Merchants in other countries can order from the dashboard. The terminals ordered from the HitPay dashboard will be fulfilled by our payment provider, Stripe. | Country | Where to purchase? | | :-: | :-: | | Australia | Hitpay Dashboard | | Canada | Hitpay Dashboard | | Malaysia | [MY Terminal Store](https://hitpay.shop/hitpayterminalmy/) | | New Zealand | Hitpay Dashboard | | Singapore | [SG Terminal Store](https://hitpay.shop/hitpayterminal/) | | United Kingdom | Hitpay Dashboard | | United States | Hitpay Dashboard | > [!NOTE] > > To access Terminal Orders on HitPay Dashboard you can go to Point of Sale > Terminal > Shop Terminals ### Important Information Regarding Terminal Orders and Usage 1. **Terminals will only work with verified HitPay account with activated Card payment method** * Please ensure your HitPay business account is fully set up before placing a terminal order. The HitPay team also strongly recommends using your registered email address when placing a terminal order as we conduct account check for each order. Failure to use your registered email address may result to longer fulfillment time for your order. 2. **Terminal orders, once shipped, are nonrefundable** * Terminal orders are nonrefundable once shipped. Refunds are not offered for change of mind, including if you no longer need the terminal or no longer wish to use HitPay. * HitPay Merchants must ensure that all account requirements are met before placing an order. Refund requests due to account issues, unfortunately, cannot be entertained. * Faulty terminals covered under warranty will be repaired or exchanged, not refunded. ## FAQs > **I am unable to connect my Bluetooth terminal to my device. What should I do to troubleshoot?** > > Follow this following steps to troubleshoot (Only applicable to WisePad 3 and M2 terminals) > > * Ensure that your account is fully verified and you have enabled Card payments > * Ensure the Terminal battery is at least 50% charged > * Ensure the Terminal is not connected to any other device > * Go to your Bluetooth settings, search for your terminal serial number and click "Forget Device". > * If problem still persists, restart your your app by closing it and opening it again OR deleting and re-installing your app. > **How can I order a HitPay terminal from the dashboard?** > > You can Order a HitPay terminal from the dashboard by navigating to **Point of Sale > Terminals**. > **What are the payment methods supported by HitPay Terminal?** > > HitPay Terminals support Visa, Mastercard, and American Express cards. In addition, mobile wallets such as Apple Pay, Google Pay, Samsung Pay, and Fitbit Pay are also supported on HitPay Terminal. > **What currencies can I charge in using HitPay Terminal?** > > The terminal is only able to accept payments in your default home currency. This means that if for example you are a Singapore-registered merchant, the terminal will only work in SGD just as how only MYR will work for Malaysia-registered merchants. > > If you wish to charge in a foreign currency, use [Scan to Pay](/pos/quick-sale#scan-to-pay) in the HitPay app. Your customer scans the QR code and pays on their own device. # HitPay Cards Migration Guide Source: https://docs.hitpayapp.com/pos/readers/cards-migration-guide Step-by-step guide to migrate from "Cards (by Adyen)" to the new “Cards” Payment Method by Stripe. [← Back to Announcements](/announcements) ### Overview HitPay will be discontinuing support for **Cards (by Adyen)** payment method and **HitPay All-in-One S1F2 / Mini AMS1** terminals. This change will be effective from **28 November 2025.** If you are currently using one of the above terminals, **exchanges will be available from 21 Nov '25**. Please contact our Operations Team at [support@hit-pay.com](mailto:support@hit-pay.com) to arrange a free exchange to the new [ All-in-One Sunmi V3 terminal](/pos/readers/sunmi-v2s-v3), which provides the same features and functions. During the Migration, * You can continue to accept online card payments and use your existing terminals as usual. * There will be **no disruption to your transactions or payouts**. * You will continue receiving payouts as normal. To ensure your business continues to accept payments smoothly, please follow the steps below. *** ### What You Need to Do Before 28 November 2025 1. **Activate the new “Cards” payment method:** * Log in to your **HitPay Dashboard**. * Go to **Payment Methods** → Turn On **Cards**. * Submit your business details accurately to complete the onboarding. ![Onboarding Migration](https://mintcdn.com/hitpay/jW6BeY8kZzmlSlWf/images/onboarding_action.png?fit=max\&auto=format\&n=jW6BeY8kZzmlSlWf\&q=85\&s=7e986b64c51a8f9b71dbb226a7dde9f8) ![Complete Stripe Onboarding](https://mintcdn.com/hitpay/F7BFMgAD0ajUKG8E/images/stripe_fill_in_onboarding.png?fit=max\&auto=format\&n=F7BFMgAD0ajUKG8E\&q=85\&s=7eb72a9a08805b2a6105df903acec7b5) ![Successful Migration](https://mintcdn.com/hitpay/9rRD2TIn_v8tRfeg/images/successful_migration.png?fit=max\&auto=format\&n=9rRD2TIn_v8tRfeg\&q=85\&s=5505ec04dce96f52d698fe7a2a2395ed) 2. **Optional:** Download your payout records for **Cards (by Adyen)** if you want to keep a copy for your records. * These records will **no longer be available after 28 November 2025**. ![Download Breakdown](https://mintcdn.com/hitpay/e_M0gOteWvfjBrlG/images/download_adyen_balance_breakdown.png?fit=max\&auto=format\&n=e_M0gOteWvfjBrlG\&q=85\&s=03d53486d7c1fd13324c163d9c03f57e) *** ### After 28 November 2025 * HitPay will **turn off the “Cards (by Adyen)”** payment method. * All future card payments (online and terminal) will be processed under the new **“Cards”** payment method. * You can view and track all future payouts under **Card Balance** in your HitPay Dashboard. * Your new **All-in-One Sunmi V3 terminal** will continue to work seamlessly for card transactions. *** ### Need Help? If you have any questions or need assistance, feel free to reach out to our support team at [support@hit-pay.com](mailto:support@hit-pay.com). # S700 (FlexiPOS) Source: https://docs.hitpayapp.com/pos/readers/flexipos Instructions on how to set up and use the FlexiPOS terminal with HitPay. > [!NOTE] > > FlexiPOS E is only available in [select regions](https://docs.hitpayapp.com/pos/readers/overview#availablility) ## Overview The FlexiPOS terminal is designed for secure card transactions. You can use it as a standalone mode by default, with the HitPay app embedded. Alternatively you can request a conversion to "Pair with Desktop" mode if you plan to use it as just a terminal reader. ![FlexiPOS](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/flexipos.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=9e3f9702fb8a69c4c97872847d45f72c) ## Steps to Set Up 1. Plug the provided cable into the port with the lightning bolt symbol to power the reader. Press the Power button to switch on the device. 2. After switching on for the first time, you will be prompted to connect to a Wi-Fi network. Connect to your Wi-Fi network. \[!WARNING] Your Wi-Fi network **MUST USE** WPA-Personal or WPA2-Personal encryption and be password protected. The FlexiPOS **DOES NOT SUPPORT** non-password-protected networks, enterprise networks, or IPV6 networks. 3. Generate a pairing code (e.g., Tang-Peace-Man) from the settings page on the terminal. 4. Connect the reader to your account. Open the HitPay dashboard and navigate to **Point of Sales > Terminal > Register Terminal**. Insert the code under the Registration Label and connect. > [!NOTE] > > If you want to use the FlexiPOS to pair with the HitPay app or your custom web app; send a WhatsApp message to [+65 9864 4718](https://wa.me/6598644718) or write to [support@hit-pay.com](mailto:support@hit-pay.com) to request for a terminal conversion from the Standalone mode to mode. ## Accessing Settings \*\*Standalone Mode \*\* 1. Log in to HitPay app 2. Go to Settings > Check Reader Settings 3. Enter the admin PIN 07139. 4. From here, you can update your WiFi settings or generate a pairing code for device registration. 5. Battery status is displayed at the top right of this screen. To close the settings menu, click the back arrow in the top left corner. **Reader Mode** 1. Swipe right from the left edge of the reader screen to reveal a Settings button. 2. Tap the Settings button and enter the admin PIN 07139. 3. From here, you can update your WiFi settings or generate a pairing code for device registration. 4. Battery status is displayed at the top right of this screen. To close the settings menu, click the back arrow in the top left corner. ## Connecting Reader via Wi-Fi To connect to WiFi or switch networks, go to settings, then select WiFi settings to choose the network and connect. Attempting to join a new network disconnects the reader from any existing wireless connection. > [!WARNING] > > Your Wi-Fi network **MUST USE** WPA-Personal or WPA2-Personal encryption and be password protected. The FlexiPOS **DOES NOT SUPPORT** non-password-protected networks, enterprise networks, or IPV6 networks. ## Troubleshooting Wi-Fi Connection ### Reader is unable to connect To check connectivity, go to settings, then select WiFi settings. This displays all available WiFi networks. To see more details about the connection, tap on the connected network name. * Make sure the Wi-Fi network is connected and has internet access. * The signal strength is good. * The Wi-Fi network is a WPA/WPA2/WPA3-Personal or WPA2/WPA3 EAP-PEAP Enterprise encryption. * The Wi-Fi network is password protected * The device has an IP address assigned. ### How to identify your Wi-Fi network's security type : **Windows 10** * Find the Wi-Fi connection icon in the taskbar and click on it * Then click Properties underneath your current Wi-Fi connection * Scroll down and look for the Wi-Fi details under Properties * Under that, look for Security Type, which shows your Wi-Fi protocol **MacOS** * Hold down the Option key * Click on the Wi-Fi icon in the toolbar * This will show your network details, including your Wi-Fi security type **Android** * On your Android phone, go into Settings * Open the Wi-Fi category * Select the router you are connected to and view its details * This will show what Wi-Fi security type your connection is * The path to this screen may differ depending on your device **iPhone** * Unfortunately, there is no way within iOS to check your Wi-Fi security. If you want to check your Wi-Fi's security strength, you can either use a computer or log into the router through the phone. Each router may be different, so you may need to refer to the documentation that came with the device. Alternatively, if your internet service provider set up the router, you could contact them for assistance. ### How do I change my Wi-Fi security encryption? > [!NOTE] > > The steps to configure Wi-Fi security encryption might vary depending on your specific router model and provider. Please refer to your router's manual or the support resources provided by your internet service provider (ISP) for detailed and accurate instructions tailored to your device. **1. Log into your router console** * Using the browser of your choice, log into the admin console of your home router. * The exact method for doing this may vary depending on your router manufacturer. * You can refer to your Router Manual for more details. * However, the most common method is to enter [http://192.168.1.1](http://192.168.1.1) into the browser address bar and press ENTER; [http://10.0.0.1/](http://10.0.0.1/) is another common router IP address. **2. Navigate to the Wireless Security section** **3. Select Encryption Option** * Select WPA/WPA2/WPA3-Personal or WPA2/WPA3 EAP-PEAP Enterprise encryption **4. Set Your Network Password** * Create a strong network password **5. Save Changes & Reboot** * Upon saving, reconnect all your wireless devices * Select your new WiFi SSID and enter the new WiFi password. ### How do I check the IP address of my FlexiPOS Terminal? * Ensure your FlexiPOS device is powered on and connected to the Wi-Fi network. * Navigate to Settings either by swiping from left to right (Pair with Desktop mode) or from Settings > Check Reader Settings (Standalone mode) * Go to 'Network Settings' and select "Network" > "Wi-Fi" * Your device should display the connected network and the assigned IP address. ## Connecting Reader via Ethernet Ethernet connectivity requires the use of an optional dock, which provides wired Ethernet connectivity and keeps your smart reader fully charged using the included charging cable. You can purchase the dock separately through the [HitPay online store](https://hitpay.shop/hitpayterminal) (Singapore-based businesses) or the **HitPay dashboard > Point of Sale > Terminal** (Non-Singapore based businesses). The Ethernet Dock features a 10/100 Ethernet port and rubber feet for stable countertop use. To set up the dock: * Connect the Ethernet cable from your dock to your router. * Connect the dock to power. It has a minimum power requirement of 5V-2A (10W) and includes a charging cable, which you can plug into any USB-A power adapter (not included). * When both cables are connected, insert the reader into the dock. To confirm that the reader is properly docked, verify the reader is charging and the Ethernet icon is visible in the status bar. ## Steps to Accept a Payment To accept payment, follow these steps below : **Reader Mode** 1. Ensure that you have HitPay app running on a separate device, either iOS / Android or Web Browser. 2. Go to Point of Sale 3. Connect the FlexiPOS 4. Create a charge and select "Card Terminal" from the list of payment methods. 5. You should be prompted to either tap or insert the customer's card into the terminal. After tapping or inserting the card, wait for the payment success message to appear in the HitPay App. \*\*Standalone Mode \*\* 1. Make sure you've already completed the above steps to set up the FlexiPOS terminal. 2. Launch the HitPay App by opening it on your device. On the home page, enter the transaction amount and tap the Charge button to continue. 3. You can also add an invoice number, remarks, or any description under the Add Description field. 4. Choose the payment method from the list of available options. Select "Card Terminal" as the payment method and follow the prompts. 5. You should be prompted to either tap or insert the customer's card into the terminal. After tapping or inserting the card, wait for the payment success message to appear in the HitPay App. ## FAQs > **What is the process for converting FlexiPOS to Pair with Desktop mode?** > > To convert the FlexiPOS terminal to "reader" / "pair with desktop" mode, send a WhatsApp message to [+65 9864 4718](https://wa.me/6598644718) or write to [support@hit-pay.com](mailto:support@hit-pay.com) to request the conversion. Follow the provided instructions for the conversion process. > **Can I use FlexiPOS as both a card reader and a standalone terminal?** > > Yes, you can use FlexiPOS in both "reader" / "pair with desktop" mode and "standalone" terminal mode. To switch between modes, follow the provided instructions for conversion. > **Can I connect a Bluetooth printer to my FlexiPOS terminal?** > > No, you cannot connect a Bluetooth printer to the FlexiPOS E terminal. > **How long does the battery last on a FlexiPOS E full charge?** > > On a full charge, the FlexiPOS reader lasts about about `8 hours` (approximately 600 transactions). # M2 Reader Source: https://docs.hitpayapp.com/pos/readers/m2 Instructions on how to connect and use the M2 Reader with HitPay. > [!NOTE] > > M2 Reader is only available in the US ## Overview The M2 Reader is compatible with iOS, MacOS, and Android devices. It is designed for secure card transactions and offers enhanced security features. ![M2 Reader](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/m2.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=e88a4e9fb0e1e24f4fd047f2d45190b7) ## Steps to Connect 1. Download the HitPay app on your mobile device and sign in to your HitPay account. 2. Turn on your M2 Reader. 3. Ensure that Bluetooth and location services are enabled on your mobile app. 4. Open the HitPay App. 5. Navigate to the **Settings** tab > **Terminal** and select **"M2"**. 6. Choose your terminal based on the serial number. 7. Click **Pair** and wait for the automatic update to complete. ## Steps to Accept a Payment To accept payment using the M2 Reader, follow these steps: 1. Make sure you’ve already completed the above steps to connect the M2 Reader. 2. Launch the HitPay App by opening it on your device. On the home page, enter the transaction amount and tap the Charge button to continue. 3. You can also add an invoice number, remarks, or any description under the Add Description field. 4. Choose the payment method from the list of available options. Select "Card Terminal" as the payment method and follow the prompts. 5. You should be prompted to either tap or insert the customer’s card into the terminal. After tapping or inserting the card, wait for the payment success message to appear in the HitPay App. ## FAQs > **Can I import my products from Shopify or WooCommerce?** > > Yes, you can import your products from Shopify or WooCommerce. Refer to [this](plugins/overview) section for more details. > **When I checkout the cart with payment link as the payment method, is my inventory on hold?** > > No, your inventory is not on hold. HitPay will only update the inventory of the order once the payment link is completed. > **How long does the battery last on a M2 full charge?** > > On a full charge, the M2 reader lasts about 1 day (approximately 600 transactions). # Mini (AMS1) Source: https://docs.hitpayapp.com/pos/readers/mini-ams1 Instructions on how to set up and use the HitPay Mini terminal with HitPay. > [!NOTE] > > HitPay Mini (AMS1) Terminal is only available in Singapore and Hong Kong. ## Overview **HitPay Mini (AMS1)** is a lightweight, ultra-portable card payments terminal designed for ultimate mobility. It is used either as a standalone terminal, or by pairing with our HitPay Mobile App (iOS/Android) or Web POS. It supports: * Tap, Insert, Swipe card payments (PayWave and EMV) * QR code payments * Wi-Fi and built-in cellular (eSIM) * All-day battery life ![Mini AMS1](https://mintcdn.com/hitpay/ipOqIEc1iMm1WF_A/images/pos/mini-ams1.png?fit=max\&auto=format\&n=ipOqIEc1iMm1WF_A\&q=85\&s=8988b445371d2875540f1a16fc94216c) ## Features * **Portability:** Lightweight and compact for on-the-go payments. * **Connectivity:** Seamless Wi-Fi and always-on eSIM cellular included. * **Long Battery Life:** Optimized for food stalls, pop-ups, and outdoor events. * **Void Transactions:** Cancel payments on the same day before 23:59 if enabled (see below). > [!NOTE] > > Void transactions are enabled upon request. Please contact > \[[support@hit-pay.com](mailto:support@hit-pay.com)]\(mailto:[support@hit-pay.com](mailto:support@hit-pay.com)) to activate this > feature for your account. ## How to Get Your HitPay Mini 1. [Sign up](https://dashboard.hit-pay.com/businesses) for a HitPay account. 2. Complete your KYC and get approved. 3. Purchase **HitPay Mini** at [HitPay Terminal Store](https://hitpay.shop/hitpayterminal/). 4. [Contact Compliance](mailto:compliance@hit-pay.com) if **Cards (by Adyen)** payment method is not enabled for you. 5. Your HitPay Mini will be shipped to your registered address. Questions? Email us at [support@hit-pay.com](mailto:support@hit-pay.com). ## Setting Up and Accepting Payments on Your HitPay Mini \*\*Standalone Mode \*\* [YouTube video player](https://www.youtube.com/embed/qK6S5Pe_ksQ?si=je2j3byi2XDbR8Tr) 1. **Unbox your device.** Includes: terminal, free eSIM (pre-installed), USB-C charging cable, and power adapter. 2. **Charge device** fully using the supplied cable and adapter. 3. **Power on** by pressing the side power button. 4. **Connect to Internet:** * **Wi-Fi:** Go to device Settings > Key in passcode "0000" > Wi-Fi > Connect to a network. * **Cellular:** eSIM is activated out-of-the-box. 5. **Connect your Terminal to your HitPay account:** * Login to your HitPay account. * Click on the "Profile" icon on the top left. * Select "Setup Terminal". * Choose the correct terminal. You can find your Serial Number (SN) at the back of your terminal. * Connect the terminal. 6. **Start accepting payments:** * Enter sale amount (Optional: Add invoice/ref. or remarks.). * Choose "Card Terminal" as payment method. * HitPay Mini will light up. Follow prompts. The customer can tap, insert or swipe their card. * Wait for payment confirmation on the HitPay Mini and your HitPay app. * You have successfully received your payment! **Pair with Mobile App (Android/iOS)** [YouTube video player](https://www.youtube.com/embed/4-Rqv6BPliA?si=Dv-cMw6ouk4p6pGR) 1. **Unbox your device.** Includes: terminal, free eSIM (pre-installed), USB-C charging cable, and power adapter. 2. **Charge device** fully using the supplied cable and adapter. 3. **Power on** by pressing the side power button. 4. **Connect to Internet:** * **Wi-Fi:** Go to device Settings > Key in passcode "0000" > Wi-Fi > Connect to a network. * **Cellular:** eSIM is activated out-of-the-box. 5. **Pair with HitPay App:** * Download **HitPay App** (iOS/Android) on your phone or tablet. * Open app and login with your HitPay account. * Go to **Settings > Terminals > Select "Adyen POS"**. * Choose your device by serial number (found on the back of your Mini). * Device is ready to use. 6. **Accepting Payments:** * Enter sale amount (Optional: Add invoice/ref. or remarks.). * Choose "Card Terminal" as payment method. * HitPay Mini will light up. Follow prompts. The customer can tap, insert or swipe their card. * Wait for payment confirmation on the HitPay Mini and your HitPay Mobile app. * You have successfully received your payment! > [!WARNING] > > Only use the supplied cable and adapter for charging. Damage from third-party > accessories is not covered under warranty. ## Printing Receipts * HitPay Mini does not include a built-in printer. * To print receipts: * Pair your HitPay mobile app with a compatible HitPay Bluetooth or Wi-Fi Printer. Please note that pairing is not available directly from the HitPay App on your HitPay Mini device. * After transaction, select “Print” in the HitPay app. * Follow on-screen steps to print via Bluetooth. For more details, refer to ["How to Print Receipts on HitPay POS"](https://docs.hitpayapp.com/pos/receipt-printer) ## Device Specifications | Feature | Description | | - | - | | Dimensions | 133 mm L × 70 mm W × 14 mm H | | Weight | 165g (terminal), 250g (with accessories/bundled box) | | Display | 2.8" Color touchscreen, 320 x 240 resolution | | Printer | Not included (supports HitPay Bluetooth printers) | | Battery | 2100 mAh, user-replaceable | | Connectivity | Wi-Fi (2.4/5 GHz), Cellular eSIM (pre-installed), Bluetooth 5.0/BLE | | Card Support | NFC/contactless, EMV chip, Magnetic stripe | | Payment Methods | Chip, Swipe, Tap, QR (via HitPay app) | | Certifications | PCI PTS 5.x SRED, EMV, MasterCard, Visa, Amex, Discover, JCB, UnionPay | | Charging | USB-C | | Operating System | Android-based, pairs via iOS/Android app | ## FAQs 1. **Who is HitPay Mini for?**\ Food stalls, pop-ups, mobile businesses, and merchants looking for portable, always-connected POS. Handy and can fit into your pockets. 2. **How do I void a payment?**\ Use the HitPay app to void payment before 23:59 on the same day to avoid transaction charges. > [!NOTE] > > Void feature must be enabled for your account. Contact [support@hit-pay.com](mailto:support@hit-pay.com) > for access. 3. **Can I use the Mini without a phone?**\ Yes. HitPay Mini can be used as a standalone card terminal or paired with the HitPay mobile app (iOS/Android). 4. **Can I print receipts?**\ Yes, if you connect via the HitPay Mobile App. Please follow our [Printing Receipts Guide](https://docs.hitpayapp.com/pos/receipt-printer) for compatible printers and instructions. 5. **What if my device has connection issues?**\ Check Wi-Fi or ensure eSIM has coverage. ## Need Help? Email our support team: [support@hit-pay.com](mailto:support@hit-pay.com) # Overview Source: https://docs.hitpayapp.com/pos/readers/overview Explore the different type of terminals and how to connect them to your HitPay POS App ## Card Readers View setup guides, FAQs, troubleshooting instructions. > **[Tap to Pay on Android](/pos/readers/tap-to-pay)** > > Accept contactless transactions with a compatible Android device.\ > Available: **SG, MY, AU, NZ, CA**\ > Processor: Stripe > **[Tap to Pay on iPhone](/pos/readers/tap-to-pay-iphone)** > > Accept contactless transactions with a compatible iOS device.\ > Available: **SG, MY**\ > Processor: Stripe > **[WisePad 3](/pos/readers/wisepad3)** > > Compact mobile bluetooth reader that requires pairing with the HitPay app. > > ![WisePad 3](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/wisepad3.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=53c960acbb667ba7d3e0cfdd103e59b0) > > Available: **SG, MY, AU, NZ, CA**\ > Processor: Stripe > **[WisePOS E](/pos/readers/wisepose)** > > Smart reader that can be set up as a standalone or paired to HitPay app / your custom POS app. > > ![WisePOS E](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/wisepos-e.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=a8d81aa53f7fb21dc3a3e5f8a55b8e79) > > Available: **SG, MY, AU, NZ, CA**\ > Processor: Stripe > **[S700 (FlexiPOS)](/pos/readers/flexipos)** > > Smart reader that can be set up as a standalone or paired to HitPay app / your custom POS app. > > ![FlexiPOS](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/flexipos.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=9e3f9702fb8a69c4c97872847d45f72c) > > Available: **SG, MY, AU, NZ, CA**\ > Processor: Stripe > **[S1F2 (All-in-One)](/pos/readers/all-in-one-s1f2)** > > Standalone terminal with an in-built printer, supports WiFi and cellular connection. > > ![All-in-One S1F2](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/all-in-one-s1f2.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=4853ed587877adeaaef39d7a59b02ffa) > > Available: **SG**\ > Processor: Adyen > **[Verifone V660P (All-in-One)](/pos/readers/all-in-one-v660p)** > > Portable standalone terminal with an in-built printer, supports WiFi and cellular connection. > > ![Verifone V660P](https://mintcdn.com/hitpay/Ia9KKCuOa1PdHQ1K/images/pos/all-in-one-v660p.png?fit=max\&auto=format\&n=Ia9KKCuOa1PdHQ1K\&q=85\&s=3151c4177556121057c0ff38686cf711) > > Available: **SG, HK** > **[Sunmi V3 (All-in-One)](/pos/readers/sunmi-v3)** > > Standalone terminal with an in-built printer, supports WiFi and cellular connection. > > ![Sunmi V3](https://mintcdn.com/hitpay/PmXByZo0OdaFaQII/images/readers/sunmi-v3.png?fit=max\&auto=format\&n=PmXByZo0OdaFaQII\&q=85\&s=fb63eebf7dbb21550d2c17ed0d7111ad) > > Available: **SG, MY**\ > Processor: Stripe > **[Sunmi V3 Mix (POS Max)](/pos/readers/pos-max-v3mix)** > > Standalone POS System with an in-built printer and in-built barcode scanner, supports WiFi and cellular connection. Available in Singapore. > > ![HitPay POS Max](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/posmaxsunmiv3mix.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=6b574c913da6e8a6e267f991008c88d7) > > Available: **SG**\ > Processor: Stripe > **[DX4000 (All-in-One)](/pos/readers/all-in-one-dx4000)** > > Standalone terminal with an in-built printer, supports WiFi and SIM card. > > ![All-in-One S1F2](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/all-in-one-dx4000.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=988e5e53d99ac97ad4df69ffff39e96d) > > Available: **PH**\ > Processor: Ingenico, Cybersource ## QR Readers > **[HitPay Soundbox](/static-qrs/soundbox)** > > The Soundbox is a secure QR payment terminal with voice confirmation, making in-store payments fast, clear, and reliable.\ > Available: **SG, MY, PH** ## Recommended Setup Configurations These configurations are designed to help you decide on the best options to maximize the effectiveness of HitPay's POS and payment systems. ### HitPay POS Max for Retail & F\&B use cases ![](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/posmaxsunmiv3mix.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=6b574c913da6e8a6e267f991008c88d7) | | | | - | - | | **Setup** | HitPay POS Max | | **Use Case** | Ideal for retail countertops where full features of the POS app are needed. | | **Pros** | All essential POS components —POS app, terminal, printer, barcode scanner—bundled into one powerful device | | | Cellular network & wi-fi network supported, ensuring reliable and continuous connectivity | | | Enjoy landscape mode and a wider screen resolution - designed to streamline the checkout process and enhance customer interaction. | ### iPad + WisePAD 3 for Retail Countertops ![](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/ipad_bt.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=e468dd6081886d6cfccf0c842abfd92d) | | | | - | - | | **Setup** | WisePAD 3 connected to an iPad. | | **Use Case** | Ideal for retail countertops where full features of the POS app are needed. | | **Pros** | Full-featured POS application enhances user experience and functionality. | | | Independence from Wi-Fi through the use of a 5G-enabled iPad, ensuring continuous connectivity. | | **Limitations** | Bluetooth connectivity may drop, particularly if the app is idle for extended periods. | ### Mobile App + WisePAD 3 for Mobility ![](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/mobile_bt.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=2473103a3422bc3b11fa519ef54c495b) | | | | - | - | | **Setup** | Mobile app on iOS or Android device connected to WisePAD 3. | | **Use Case** | Best for mobility use cases like pop-up stores or roaming sales staff. | | **Pros** | Portable and easy to carry, enabling sales staff to bring the checkout process directly to the customer. | | | Allows staff to use their own devices (BYOD), reducing the need for dedicated hardware. | | **Limitations** | Bluetooth connectivity may drop, particularly if the app is idle for extended periods. | ### Tap to Pay for In-Person Payments ![](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/tap_to_pay.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=075f1cc2731f85322c35211061eaa893) | | | | - | - | | **Setup** | Mobile device with NFC capability used for contactless payments. | | **Use Case** | Ideal for merchants needing mobility and simplicity in transaction settings, not suited for fixed countertop setups. | | **Pros** | Highly mobile and flexible, enabling payments to be taken anywhere. | | | Portable and easy to carry, enabling sales staff to bring the checkout process directly to the customer. | | **Limitations** | Limited to contactless payments, excluding swipe, dip, or insert methods. | | | May require reconnection each time the app is closed and reopened. | | | Compatibility issues with devices not supporting NFC or specific contactless payment protocols. For full compatibility refer to this [link](/pos/readers/tap-to-pay#tap-to-pay). | ### FlexiPOS Standalone ![](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/flexipos.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=9e3f9702fb8a69c4c97872847d45f72c) | | | | - | - | | **Setup** | FlexiPOS used independently as a card reader. | | **Use Case** | Ideal for businesses using HitPay purely for card reading purposes, without the need for additional POS software integrations. | | **Pros** | Dedicated device that operates independently without the need for pairing with an app, simplifying the setup and use. | | | Provides a stable connection, ensuring reliable card reading and processing. | | | Able to connect to HitPay Wi-fi Printers | | **Limitations** | Requires a stable Wi-Fi connection to process transactions. | | | Lacks support for HitPay Bluetooth Printers. | ## Purchasing a Terminal Merchants based in Singapore & Malaysia can conveniently order a terminal directly from the HitPay Online Store which will be fulfilled directly by our HitPay team. Merchants in other countries can order from the dashboard. The terminals ordered from the HitPay dashboard will be fulfilled by our payment provider, Stripe. | Country | Where to purchase? | | :-: | :-: | | Australia | Hitpay Dashboard | | Canada | Hitpay Dashboard | | Malaysia | [MY Terminal Store](https://hitpay.shop/hitpayterminalmy/) | | New Zealand | Hitpay Dashboard | | Singapore | [SG Terminal Store](https://hitpay.shop/hitpayterminal/) | | United Kingdom | Hitpay Dashboard | | United States | Hitpay Dashboard | > [!NOTE] > > To access Terminal Orders on HitPay Dashboard you can go to Point of Sale > Terminal > Shop Terminals ### Important Information Regarding Terminal Orders and Usage 1. **Terminals will only work with verified HitPay account with activated Card payment method** * Please ensure your HitPay business account is fully set up before placing a terminal order. The HitPay team also strongly recommends using your registered email address when placing a terminal order as we conduct account check for each order. Failure to use your registered email address may result to longer fulfillment time for your order. 2. **Terminal orders, once shipped, are nonrefundable** * Terminal orders are nonrefundable once shipped. Refunds are not offered for change of mind, including if you no longer need the terminal or no longer wish to use HitPay. * HitPay Merchants must ensure that all account requirements are met before placing an order. Refund requests due to account issues, unfortunately, cannot be entertained. * Faulty terminals covered under warranty will be repaired or exchanged, not refunded. ## FAQs > **I am unable to connect my Bluetooth terminal to my device. What should I do to troubleshoot?** > > Follow this following steps to troubleshoot (Only applicable to WisePad 3 and M2 terminals) > > * Ensure that your account is fully verified and you have enabled Card payments > * Ensure the Terminal battery is at least 50% charged > * Ensure the Terminal is not connected to any other device > * Go to your Bluetooth settings, search for your terminal serial number and click "Forget Device". > * If problem still persists, restart your your app by closing it and opening it again OR deleting and re-installing your app. > **How can I order a HitPay terminal from the dashboard?** > > You can Order a HitPay terminal from the dashboard by navigating to **Point of Sale > Terminals**. > **What are the payment methods supported by HitPay Terminal?** > > HitPay Terminals support Visa, Mastercard, and American Express cards. In addition, mobile wallets such as Apple Pay, Google Pay, Samsung Pay, and Fitbit Pay are also supported on HitPay Terminal. > **What currencies can I charge in using HitPay Terminal?** > > The terminal is only able to accept payments in your default home currency. This means that if for example you are a Singapore-registered merchant, the terminal will only work in SGD just as how only MYR will work for Malaysia-registered merchants. > > If you wish to charge in a foreign currency, use [Scan to Pay](/pos/quick-sale#scan-to-pay) in the HitPay app. Your customer scans the QR code and pays on their own device. # Sunmi V3 Mix (POS Max) Source: https://docs.hitpayapp.com/pos/readers/pos-max-v3mix Instructions on how to set up and use the HitPay POS Max. ## Overview The HitPay POS Max All-in-One Card Terminal is a comprehensive point-of-sale solution designed for businesses seeking mobility and a feature-rich solution. This standalone terminal offers integrated card payments, in-built printing capabilities, and cellular connectivity. ![HitPay POS Max](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/posmaxsunmiv3mix.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=6b574c913da6e8a6e267f991008c88d7) ## Steps to purchase your HitPay POS Max 1. Create a [HitPay account](https://dashboard.hit-pay.com/businesses) 2. Successfully complete KYC and onboard onto HitPay 3. Reach out to our Sales Team via our [Contact Sales form](https://hitpayapp.com/contact-us) 4. Purchase your All-in-One terminal on [HitPay's Terminal Store](https://hitpay.shop/hitpayterminal/product/hitpay-all-in-one-supports-cellular-and-wifi) ## Steps to set up HitPay POS Max printer [YouTube video player](https://www.youtube.com/embed/UIcgFfukPs0?si=wT-VInR02BelLPxf\&start=2) > [!NOTE] > > HitPay POS Max works with 58mm x 40mm printer rolls by default. However you can also use a 80mm x 40 mm thermal printer rolls. 1. Open the printer cartridge & insert the printing roll paper in the correct direction. 2. Please confirm which printer roll specification you are inserting to the terminal. If you are using 80mm x 40mm, you need to update the settings by going to Settings > SunmiPrinter > Paper Spec : 80mm > OK. 3. To test the printer, open the HitPay app. Go to Settings > Printer > SunMi. Tap on "Test Print Connection". ## Steps to set up HitPay POS Card Terminal [YouTube video player](https://www.youtube.com/embed/UIcgFfukPs0?si=wT-VInR02BelLPxf\&start=103) 1. Go to settings > Terminal 2. If a popup is displayed to request location permission, click allow. 3. The terminal will initiate connection, please wait until this is completed. 4. When the terminal shows "Connected", tap on "Done". ## Steps to set up HitPay POS Max barcode scanner [YouTube video player](https://www.youtube.com/embed/UIcgFfukPs0?si=Lz1byzii5k6GiZFr\&start=53) 1. Go to Settings > System > "Scanner Setting" > "App Settings" 2. Enable the Virtual floating button 3. Under the Basic Settings Please set : * Scan setting => "Short press to scan continuously" with the default interval time of 500(ms) * Output method setting : "No direct output" 4. Test by pressing the virtual floating button, it should turn on the infrared barcode reader 5. Upload products on to HitPay & start scanning products to add to cart ## Steps to connect the HitPay POS Max to an external Barcode Scanner device? **Steps:** 1. Connect your barcode scanner to your HitPay POS Max via USB / Bluetooth 2. Ensure that your barcode scanner is connected and able to submit a successful output. You can test this out by scanning a barcode on a Notes taking app. 3. Navigate to Point of Sale > Products. 4. Scan a barcode, the search function will output the scanned item and add a product to cart if a product is found. ## Supported Barcode Types **1D Barcode Types** * Code 128 * Code 39 * Code 39 Mod 43 * Code 93 * EAN-13 * EAN-8 * Interleaved 2 of 5 * ITF-14 * UPC-E **2D Barcode Types** * Aztec * Data Matrix * PDF417 ## Steps to insert SIM card The HitPay POS Max features dual Nano SIM card slots for cellular connectivity, allowing you to process payments even when Wi-Fi is unavailable. 1. **Locate the SIM card slot**: The SIM card slot is typically located on the side or back of the device. You may need to remove the battery cover to access it. 2. **Power off the device**: Before inserting the SIM card, ensure the device is powered off to prevent any potential damage. 3. **Insert the Nano SIM card**: * Hold the Nano SIM card with the gold contacts facing down * Align the SIM card with the slot, ensuring the notched corner matches the slot orientation * Gently push the SIM card into the slot until it clicks into place * If inserting a second SIM card, repeat the process for the second slot **If the SIM card doesn't insert easily or gets stuck:** * Locate the release mechanism: To the left of the SIM card slot, you'll find a small metallic pin or button * Press down the release pin: Push down the circular pin/button (follow the arrow direction) to unlock the SIM card slot * Insert the SIM card as described above * Release the pin/button to lock the SIM card in place ![SIM Card Insertion](https://mintcdn.com/hitpay/KknOrhM2Por5AjaN/images/pos/pos-max-sim-card-insertion.png?fit=max\&auto=format\&n=KknOrhM2Por5AjaN\&q=85\&s=11c025300a998c9db94b1ff2b02ab2fb) 4\. **Replace the battery and cover**: If you removed the battery, reinsert it and replace the cover. 5\. **Power on the device**: Turn on the HitPay POS Max. 6\. **Verify connectivity**: * Go to Settings > Network & Internet > Mobile network * Check that the SIM card is detected and shows signal strength * Ensure mobile data is enabled if you plan to use cellular connectivity > [!NOTE] > > The HitPay POS Max supports dual Nano SIM cards, allowing you to use two different carriers for redundancy or to have separate data plans. You can configure which SIM card to use for data in the device settings. > [!WARNING] > > Always power off the device before inserting or removing SIM cards to prevent damage to the card or device. Handle the SIM card carefully and avoid touching the gold contacts. ## Specifications | Feature | Description | | :- | :- | | Device dimensions | 246 mm L x 231 mm W × 73 mm H | | User interface | 10.1" HD display | | Paper roll size | 58mm\*40mm or 80mm x 40mm | | Weight | 710g | | Battery | Removable Lithium battery 7.2V/2600mAh | | Processor | Qualcomm hexa-core 2.4/1.9GHz | | Memory | 4GB RAM + 32GB ROM | | NFC Reader | Type A\&B card, Mifare card, FeLica card, ISO/IEC 14443 and ISO15693 compliant | | SIM Card Slot | Dual Nano SIM card slot | | Android OS Version | Android 13 | ## FAQs Please contact us [support@hit-pay.com](mailto:support@hit-pay.com) if you have any questions. # HitPay Soundbox Source: https://docs.hitpayapp.com/pos/readers/soundbox Set up the HitPay Soundbox, a QR payment device that announces each payment received out loud. ![Soundbox](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/Received-Notif-Soundbox.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=7cb65c228b28413fd13ff0b1ec388713) > [!NOTE] > > The HitPay Soundbox is currently only available in Singapore & Phillipines ## Overview The Soundbox is an advanced QR payment terminal designed to offer a secure and seamless in-store payment experience. It features real-time voice confirmations that announce the amount received, giving both merchants and customers added confidence and clarity with every transaction. ## Value Proposition > **Instant Alerts** > > Receive real-time audio and on-screen notifications for every payment, so you never miss a transaction > **Hassle-Free & Hands-Free** > > No more juggling multiple screens or devices - just listen and focus on serving your customers > **Prevent Fraud** > > Protect your business from fake payment screen scams with instant, reliable audio notifications. ## How to Set Up the HitPay Soundbox ### Step 1: Set Up the Network Configuration Choose between 4G or WiFi connectivity for your Soundbox: > **4G** > > * Long press the "M" key for 2 seconds to enter the "Configure the Network" mode > > * In this mode, press "-" to set to "GPRS Network Mode" (please insert the SIM card to use) > > * Locate the SIM card slot on the side of the Soundbox as shown. > > * Open up the slot cover to insert the Standard SIM card into Soundbox and close the slot cover. > > * Insert a Standard size SIM card to allow for internet connectivity > > * When inserting the micro SIM card, make sure that the main screen of the Soundbox and the micro SIM card chip are facing you for the correct orientation of insertion as shown > > * After the setting is complete, restart the speaker and the network mode setting is successful > **WiFi** > > **Android** > > 1. Install [MFApLink](https://play.google.com/store/apps/details?id=com.morefun.aplinkdemo\&hl=en_SG) from Google Play Store, and accept all the permission requirements of this APK > > 2. Long press the "M" key for 2 seconds to enter the "Configure Network Mode" > > ![Pairing Soundbox with HitPay app](https://mintcdn.com/hitpay/zQrZL5OLu-oCBbM1/images/readers/soundbox/soundbox-net-config.png?fit=max\&auto=format\&n=zQrZL5OLu-oCBbM1\&q=85\&s=d3977fc33c7937c693fa8e66e5a75c9b) > > 3. In this mode, press "+" to set to "WIFI Network Mode" and enter WIFI configuration > 4. Connect your mobile phone to the WiFi network you want to configure (only supports 2.4GHz, does not support 5GHz) > 5. Open the MFApLink app, click "CONNECT" button > > ![Pairing Soundbox with HitPay app](https://mintcdn.com/hitpay/zQrZL5OLu-oCBbM1/images/readers/soundbox/android-step1.png?fit=max\&auto=format\&n=zQrZL5OLu-oCBbM1\&q=85\&s=a424dc7f28caf76a2ddb565306ba7294) > > 6. Input the correct password of the connected WiFi for configuration and make sure it is connected to the same WiFi as your phone > 7. Click "CONNECT" button to continue > 8. In "Search device list", find the corresponding AP name (the AP name is usually device sn or Default device) > > ![Pairing Soundbox with HitPay app](https://mintcdn.com/hitpay/zQrZL5OLu-oCBbM1/images/readers/soundbox/android-step2.png?fit=max\&auto=format\&n=zQrZL5OLu-oCBbM1\&q=85\&s=69495c7cd6894afeea673391c0c34427) > > 9. Select corresponding AP name and click "CONFIRM" button > 10. Click Connect in the pop-up prompt box > 11. When APK prompts "AP link success!", it indicates that the WiFi configuration is complete > > ![Pairing Soundbox with HitPay app](https://mintcdn.com/hitpay/zQrZL5OLu-oCBbM1/images/readers/soundbox/android-step3.png?fit=max\&auto=format\&n=zQrZL5OLu-oCBbM1\&q=85\&s=ec88818ae6613fbfac6c6fcd16aedc33) > > 12. Wait for the device to restart and confirm the WiFi network status > > [Soundbox WiFi Setup - Android](https://www.youtube.com/embed/UoL8pHicMNk) > > **iOS** > > 1. Download [MFAPLink](https://apps.apple.com/us/app/mfaplink/id1645497573) from the Apple App Store to your iPhone > 2. Long press the "M" key for 2 seconds to enter the "Configure Network Mode" > 3. In this mode, press "+" to set to "WIFI Network Mode" and enter WIFI configuration > 4. Make sure your iPhone is connected to a strong WiFi signal > 5. Open the MFAPLink app - you can see two modes showing on the screen > > ![Pairing Soundbox with HitPay app](https://mintcdn.com/hitpay/zQrZL5OLu-oCBbM1/images/readers/soundbox/ios-step1.png?fit=max\&auto=format\&n=zQrZL5OLu-oCBbM1\&q=85\&s=0eb6534ac7da475f35ca8388d21cfa6b) > > **Default AP Mode:** > > * Allow MFAPLink to use your location > > * Input the WiFi and password your iPhone is connecting to, and click connect > > * Click Join when prompted > > ![Pairing Soundbox with HitPay app](https://mintcdn.com/hitpay/zQrZL5OLu-oCBbM1/images/readers/soundbox/ios-step2.png?fit=max\&auto=format\&n=zQrZL5OLu-oCBbM1\&q=85\&s=24fd6f3c0db68031f267781da5e1de1e) > > * When the app shows the success status, it means the WiFi connection is successful > > * The device will say "configure successfully" and reboot > > ![Pairing Soundbox with HitPay app](https://mintcdn.com/hitpay/zQrZL5OLu-oCBbM1/images/readers/soundbox/ios-step3.png?fit=max\&auto=format\&n=zQrZL5OLu-oCBbM1\&q=85\&s=80400faca3c839a30efd4318cb4b55ff) > > * Then you can check the network status > > **Scanning Mode:** > > * Make sure the machine enters WIFI configuration > > * Make sure your iPhone is connected to a strong WiFi signal > > * Choose Scanning Mode, and scan the bar code of the label on the back of the machine > > ![Pairing Soundbox with HitPay app](https://mintcdn.com/hitpay/zQrZL5OLu-oCBbM1/images/readers/soundbox/ios-scanningmode.png?fit=max\&auto=format\&n=zQrZL5OLu-oCBbM1\&q=85\&s=7388274c7a82f9ef82254562d66bfb97) > > * Enter the WiFi and password your iPhone is connecting to, click connect > > * When the app shows success status, it means the WiFi connection is successful > > * The device will say "configure successfully" and reboot > > * Then you can check the network status ### Step 2: Pair the Soundbox to your HitPay Account * Locate the power button at the back of the Soundbox * Press and hold the power button for 3 seconds until the screen lights up * If network connection is configured properly, the Soundbox Device will announce "Connect Successfully" & display a pairing QR code * Open the HitPay app > QR Soundbox > Add Device * Scan the pairing QR code until it announces "The Soundbox device is successfully registered to your HitPay account" * After successfully pairing, the Soundbox will promptly display the "Display Name" along with the payment method QR code, indicating that the Soundbox is now ready for immediate use. ## How to Use the HitPay Soundbox **Accepting payments with the HitPay Soundbox** * Customers can simply scan the QR code shown on the Soundbox’s main screen to pay using any supported banking app. * Once a payment is completed, the Soundbox will announce the received amount aloud and display it briefly (for 3 seconds) on both the front and rear screens. * The smaller digits on the left side of the back digital screen represent a transaction counter, which will reset every time the Soundbox is powered off. * The larger digit on the right side will display the amount received. **Checking your transactions on the HitPay Soundbox** * You can view transactions received from the Soundbox by logging in to your HitPay App > Transactions / web Dashboard > Transactions **Charging the HitPay Soundbox** * Locate the USB-C port at the side of the Soundbox and plug in the charging cable in to charge. ## Payment Methods Supported The Soundbox accepts payments via QR code scan. The supported payment methods are the same as [HitPay Static QRs](/static-qrs/static-qr): | Payment Method | Market | | - | - | | PayNow | Singapore | | QRPH | Philippines | ## FAQs > **What payment methods are supported on the Soundbox?** > > The Soundbox device supports payment methods supported under the [HitPay Static QRs](/static-qrs/static-qr). Hence, it only supports PayNow (Singapore) & QRPH (Philippines) at the moment. > **What is the battery time limit?** > > Battery time limit depends on the usage of the soundbox & the volume of transactions it receive > > For example : > > * Volume level 1, push amount:9.9 every 10 seconds, 4200 transactions, 12 hours > * Volume level 9, push amount:9.9 every 10 seconds, 2800 transactions, 8 hours > * Volume level 11, push amount:9.9 every 10 seconds, 1800 transactions, 5 hours > > If no transactions are received and the Soundbox remains idle, it can last up to 5-8 days. > **Does the business receive a notification when a payment is made?** > > Yes, when a payment is made, you will receive incoming notifications as well. You can verify incoming transactions fromm the HitPay dashboard or Mobile app. # Sunmi V2S/V3 (POS Lite/All-in-One) Source: https://docs.hitpayapp.com/pos/readers/sunmi-v2s-v3 Instructions on how to set up and use the Sunmi V2S/V3. ## Overview The Sunmi V2S (HitPay POS Lite) and Sunmi V3 (HitPay All-in-One) is a comprehensive point-of-sale solution designed for businesses seeking mobility and a feature-rich solution. This standalone terminal offers integrated card payments, in-built printing capabilities, and cellular connectivity. ![Sunmi V2S](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/sunmi-v2s.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=9a747b563a4eeb45040007df75832091) ## Steps to set up Sunmi V2S/V3 1. Turn on the Sunmi device by pressing the power key on the right-hand side. 2. Once the device is switched on, you have the option of inserting a sim card or connecting to a wifi network. 3. Once the wifi network is enabled and the device is ready for use, sign into Google PlayStore. \[!NOTE] You may use your own gmail account so you get updates or create a generic gmail account and sign in 4. Launch the Sunmi App Store or Google Play Store and search for the HitPay Google Play App (Blue logo) \[!NOTE] [App Download Link](https://play.google.com/store/apps/details?id=com.hit_pay.hitpay\&hl=en_SG\&gl=US\&pli=1) 5. Once the app is downloaded, log into the HitPay app using your HitPay credentials. 6. Ensure bluetooth and location settings are turned on in the terminal 7. Upon login, please wait for the app to automatically connect to the card reader function. Once this is completed, you will notice a connected status on the home page of the HitPay app. 8. You can now start accepting payments using the Quick Sale or Products function from the home page. 9. Select Tap to Pay or Card Terminal as the payment option for card reader payments Refer to this [video](https://youtube.com/shorts/inJoBe7BiJw?si=OHCpi4G2Dg8VHJ72) > [!NOTE] > > HitPay POS Max works with 58mm x 40mm printer rolls by default. However you can also use a 80mm x 40 mm thermal printer rolls. 1. Open the printer cartridge & insert the printing roll paper in the correct direction. 2. Please confirm which printer roll specification you are inserting to the terminal. If you are using 80mm x 40mm, you need to update the settings by going to Settings > SunmiPrinter > Paper Spec : 80mm > OK. 3. To test the printer, open the HitPay app. Go to Settings > Printer > SunMi. Tap on "Test Print Connection". ## Steps to set up HitPay POS Card Terminal 1. Go to Settings > Terminal 2. If a popup is displayed to request location permission, click allow. 3. The terminal will initiate connection, please wait until this is completed. 4. When the terminal shows "Connected", tap on "Done". > [!WARNING] > > Ensure your Sunmi device is on auto-update. This means that your tablet always has the newest software and bug fixes ## Troubleshooting Tips > **I can't move the flap to fit my printer paper in** > > Lightly pull up the flap and push it all the way to the left > **How do I customize my receipts?** > > Head to Settings > Edit Business Details and Receipt Customization > **My app is frozen** > > Do quit the app by closing all apps, look for HitPay App, and open it up again > **How do I know if the transaction is successful?** > > Tap and hold the credit card until you see a green tick on the terminal and the option to print. > **My terminal is trying to reconnect** > > Allow it to reconnect for about 5-10 seconds. If it is still reconnecting after 30 seconds: go to Settings > Terminal > click on Terminal number and Done > **What printer paper size should I buy?** > > * Paper width: 58mm > * Paper roll diameter: 40mm max > You can find it online on Shopee or at Popular bookstores # Sunmi V3 (All-in-One) Source: https://docs.hitpayapp.com/pos/readers/sunmi-v3 Instructions on how to set up and use the Sunmi V3 terminal. ## Overview **Sunmi V3 (HitPay All-in-One)** is a comprehensive point-of-sale solution designed for businesses seeking mobility and a feature-rich solution. This standalone terminal offers integrated card payments, in-built printing capabilities, and cellular connectivity. ![Sunmi V3](https://mintcdn.com/hitpay/PmXByZo0OdaFaQII/images/readers/sunmi-v3.png?fit=max\&auto=format\&n=PmXByZo0OdaFaQII\&q=85\&s=fb63eebf7dbb21550d2c17ed0d7111ad) ## Steps to set up Sunmi V3 1. Power on the Sunmi V3 using the side power key. 2. Insert a SIM card or connect to a Wi-Fi network. 3. Sign in to the **Google Play Store**.\ \[!NOTE] You may use your business Gmail account or a shared account for easier management. 4. In the Sunmi App Store or Play Store, search for the **HitPay App (blue logo)**.\ \[!NOTE] [App Download Link](https://play.google.com/store/apps/details?id=com.hit_pay.hitpay\&hl=en_SG\&gl=US\&pli=1) 5. Log in using your HitPay credentials. 6. Enable Bluetooth and Location. 7. Wait for automatic pairing — the HitPay app will show **Connected** once successful. 8. You can now accept payments through **Quick Sale** or **Products**, choosing **Tap to Pay** or **Card Terminal** when processing cards. Refer to this [setup video](https://www.youtube.com/shorts/WM_x_8muCOQ). > [!NOTE] > > Sunmi V3 uses **58 mm × 40 mm** printer rolls ## Setting up HitPay POS Card Terminal 1. Go to **Settings > Terminal**. 2. Allow location permissions. 3. Wait for the terminal to connect. 4. When you see **Connected**, tap **Done**. > [!WARNING] > > Keep your Sunmi V3 on auto-update to ensure optimal performance and latest fixes. ## Connecting the HitPay POS Card Terminal to Internet > **Connect via Wi-Fi** > > 1. Go to **Settings > Network & Internet** (or **Connection**). > 2. Select **Wi-Fi** and toggle it on. > 3. Choose your preferred network from the list. > 4. Enter the Wi-Fi password if prompted. > 5. Once connected, return to the HitPay app. > **Connect via SIM Card** > > SIM cards should be nano sized. You can test the SIM card with your mobile phone first to make sure it is working before inserting it into the terminal. > > If your SIM card does not auto connect to Cellular data (e.g. SIMBA), please follow the following steps to connect: > > 1. Go to **Settings > Network & Internet** (or **Connection**). > 2. Go to **Mobile Data**, select your SIM. > 3. Select **Access Point Names (APN)**. > 4. Tap the menu (three dots) and choose **New APN** or tap **(+) Add New APN**. > 5. In the **Name** field, type "TPG". > 6. In the **APN** field, type "TPG". > 7. Leave other fields blank unless you are instructed otherwise. > 8. If prompted, enter `default,mms,supl` in the **APN type** field. > 9. Click the three dots on the top right, and **Save** the new APN. ## Troubleshooting Tips > **My printer flap won't close properly** > > Gently pull it up and push it fully left before closing. > **How do I personalize receipts?** > > Go to **Settings > Edit Business Details > Receipt Customization**. > **The app is frozen** > > Close all apps and reopen HitPay. > **How do I know a payment went through?** > > Wait for the green tick and print prompt after card tap. > **Terminal keeps reconnecting** > > Wait 5–10 seconds. If it continues > 30 seconds, go to **Settings > Terminal**, select your terminal number, then tap **Done**. > **What printer rolls are compatible?** > > * Width : 58 mm > * Diameter : 40 mm max\ > Available online (Shopee, Lazada, Popular bookstores, etc.) # Tap to Pay on Android Source: https://docs.hitpayapp.com/pos/readers/tap-to-pay Accept contactless transactions using supported NFC-powered mobile devices with Tap To Pay payments powered by HitPay. ## Tap to Pay Tap To Pay payments powered by HitPay allows you to accept contactless transactions using supported NFC-powered mobile devices. ### Android Device Compatibility Tap To Pay payments require Android mobile devices that meet the following criteria, otherwise reader discovery or the connection will fail: * Contains a functioning NFC antenna and chipset. * Is not rooted, and the device bootloader is locked and unchanged. * Is running Android 11 or above. * Uses Google Mobile Services and has the Google Play Store app installed * Has stable connection to the internet Below is a list of supported devices: > **Google** > > * Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 4, Pixel 4 XL > * Pixel 5, Pixel 6, Pixel 6 Pro, Pixel 7, Pixel 7 Pro, Pixel 8, Pixel 8 Pro > * Pixel 3a, Pixel 3a XL, Pixel 4a, Pixel 5a, Pixel 6a, Pixel 7a > **Samsung** > > * Galaxy A12, Galaxy A13, Galaxy A14 > * Galaxy A21, Galaxy A21s, Galaxy A22, Galaxy A23, Galaxy A24 > * Galaxy A32, Galaxy A33, Galaxy A34 > * Galaxy A41, Galaxy A42 > * Galaxy A51, Galaxy A52, Galaxy A53, Galaxy A54 > * Galaxy A70, Galaxy A70s, Galaxy A71, Galaxy A72, Galaxy A73 > * Galaxy S10, Galaxy S20, Galaxy S21, Galaxy S22, Galaxy S23, Galaxy S24 > * Galaxy Note10, Galaxy Note20 > * Galaxy Tab Active3, Tab Active4 Pro > **Oppo** > > * A16s, A54s, A73, A74, A94, A96 > * Reno5, Reno6, Reno7 > * Find X3, Find X5, Find X6, Find X7 > **OnePlus** > > * 6, 6T, 7, 7 Pro, 7T, 7T Pro > * 8, 8 Pro, 8T, Nord, 9, 9 Pro, 9RT, 9R > * 10 Pro, 10R > * Nord CE, Nord 2, Nord CE 2, Nord N10, Nord N20, Nord N200 > **Xiaomi** > > * Mi 10T, Mi Note 10 > * Redmi 9, Redmi 9T, Redmi 10, Redmi 11T > * Redmi Note 9, Redmi Note 10, Redmi Note 11, Redmi Note 12 > * Poco X4, Poco X5, Poco X6 ### Tap to Pay Availability by Country Tap to pay is only available in the following countries: | Country | Android | | - | - | | Austria | ✓ | | Australia | ✓ | | Belgium | ✓ | | Canada | ✓ | | Czech Republic | ✓ | | Denmark | ✓ | | Finland | ✓ | | France | ✓ | | Germany | ✓ | | Ireland | ✓ | | Italy | ✓ | | Luxembourg | ✓ | | Malaysia | ✓ | | New Zealand | ✓ | | Norway | ✓ | | Portugal | ✓ | | Singapore | ✓ | | Spain | ✓ | | Sweden | ✓ | | Switzerland | ✓ | | Netherlands | ✓ | | United Kingdom | ✓ | | United States | ✓ | ## Steps to Set Up To set up Tap To Pay, follow these steps: 1. Ensure you have a supported Android device with the necessary specifications or an iPhone running iOS 15.5 or later. 2. Download and install the HitPay app from your device's app store. 3. Launch the HitPay app and log in to your HitPay account. 4. Ensure that NFC is enabled on your Android device if applicable. 5. Follow the on-screen instructions to complete the setup process. 6. Once set up is complete, you can start accepting contactless payments with Tap To Pay. ## Steps to Accept a Payment To accept a payment with Tap To Pay, follow these steps: 1. Open the HitPay app on your device. 2. Enter the transaction amount on the app's home screen. 3. Choose "Tap to Pay" as the payment method. 4. Wait for the customer to tap their contactless payment card or device on your device's NFC area. 5. The payment will be processed, and a confirmation will be displayed on the app. 6. The transaction is complete, and you can provide a receipt to the customer if needed. # Tap to Pay on iPhone Source: https://docs.hitpayapp.com/pos/readers/tap-to-pay-iphone Accept contactless transactions using supported NFC-powered mobile devices with Tap To Pay payments powered by HitPay. ![Tap to Pay on iPhone](https://mintcdn.com/hitpay/n5S-cGDWwgdU7n_f/images/readers/tap-to-pay-iphone.png?fit=max\&auto=format\&n=n5S-cGDWwgdU7n_f\&q=85\&s=4020daa928ea63cd96d733d10e1ee0fc) ## What is Tap to Pay on iPhone? Tap To Pay payments powered by HitPay allows you to accept contactless transactions using supported NFC-powered mobile devices. For more information, visit [Apple's Tap to Pay on iPhone page](https://www.apple.com/sg/business/tap-to-pay-on-iphone/) and the [Apple Business Connect Tap to Pay on iPhone FAQ](https://support.apple.com/en-sg/guide/apple-business-connect/abcb71e19fc3/web). ### iOS Device Compatibility * iPhone XS or later * Running iOS 18 or later * Downloaded HitPay app version 4.8.1 or later Tap to Pay requires an iPhone XS or later running a one-year or later iOS version. Apple's Business Register documentation lists supported iOS versions. Advise your users to update to the latest iOS version for the best performance. > [!WARNING] > > Tap to Pay won't work on beta releases of iOS. > [!CAUTION] > > Tap to Pay on iPhone does not work on iPad. This feature is only available on iPhone devices. ### Tap to Pay Availability by Country Tap to pay is only available in the following countries: | Country | | | - | - | | Singapore | ✓ | | Australia | ✓ | | Malaysia | ✓ | | New Zealand | ✓ | | United Kingdom | ✓ | | United States | ✓ | *** ## Steps to Set Up [Tap to Pay on iPhone Setup](https://www.youtube.com/embed/b2_h1fDtGVE) [Tap to Pay on iPhone Video](https://drive.google.com/file/d/1y1_8GSIJGS6zhhEVKeJMLQxzwKeadf6D/preview) To set up Tap To Pay on iPhone, follow these steps: 1. Ensure you have an iPhone XS or later running iOS 18 or later. 2. Download and install the HitPay app from the App Store. 3. Launch the HitPay app and log in to your HitPay account. 4. Enable Tap to Pay on iPhone in the HitPay app settings. 5. Verify the correct Apple ID is shown. If not, select Use a Different Apple ID. 6. Tap Agree & Continue to turn on Tap to Pay on iPhone. 7. Follow the on-screen instructions to complete the setup process. 8. Once set up is complete, you can start accepting contactless payments with Tap To Pay on iPhone. ## Steps to Accept a Payment [Tap to Pay on iPhone - Accept Payment](https://www.youtube.com/embed/WFuxKHHxMMs) > [!WARNING] > > Once connected to Tap to Pay, you cannot simultaneously connect to another reader. You need to disconnect Tap to Pay first before connecting to another reader. To accept a payment with Tap To Pay on iPhone, follow these steps: 1. Open the HitPay app on your iPhone. 2. Enter the transaction amount on the app's home screen. 3. Choose "Tap to Pay" as the payment method. 4. Present your iPhone to your customer with the contactless payment icon displayed. 5. The customer holds their card horizontally or places their payment device directly over the contactless payment icon. 6. The payment will be processed, and a confirmation will be displayed on the app. 7. The transaction is complete, and you can provide a receipt to the customer if needed. *** ## Cardholder verification limits and fallback Some contactless card transactions above certain amounts might require additional cardholder verification methods (CVM) such as PIN entry. Tap to Pay on iPhone supports PIN entry for devices running iOS 16.4 or later. Tap to Pay on iPhone supports PIN entry in most cases—but not all—because PIN rules depend on card type, bank issuer, and regional regulations. ### Why Transactions May Require PIN Card issuers set their own rules for contactless payments. Depending on the region or bank : * High-value transactions may require extra verification. * Strong Customer Authentication (SCA) may force certain cards to be inserted into a terminal. * Some cards only support offline PIN, which requires chip insertion. ### PIN Entry Cases **✅ Online PIN Required (Supported by Tap to Pay on iPhone)** * Contactless transactions above certain amounts might require PIN verification, depending on issuer requirements. * The customer can enter their PIN directly on the iPhone screen when prompted. > **PIN Verification Thresholds by Country** > > The following amounts might trigger online PIN verification on the phone: > > * **Australia**: 100 to 200 AUD depending on the card scheme > * **Canada**: 250 CAD > * **Japan**: 15,000 JPY > * **Malaysia**: 250 MYR > * **New Zealand**: 200 NZD > * **Singapore**: SGD 200 > * **United Kingdom**: 100 GBP **❌ Offline PIN (Not Supported by Tap to Pay on iPhone)** * Tap to Pay on iPhone will not work with offline PIN cards. * Offline PIN cards require physical contact (card insertion) which isn't supported with Tap to Pay. > [!WARNING] > > **Fallback Options** > > In these scenarios, we recommend asking the customer to try a different card or collecting payment in a different way. For example: > > * Using a Terminal card reader such as [WisePad 3](/pos/readers/wisepad3) or [FlexiPOS](/pos/readers/flexipos) > * Sending a [Payment Link](/payment-links/payment-links) *** ## FAQs > **Which devices work with Tap to Pay on iPhone?** > > Tap to Pay on iPhone requires iPhone XS or later. Make sure your device meets these requirements before setting up. > **Which operating systems can I use Tap to Pay on iPhone with?** > > Tap to Pay on iPhone works best with the latest version of iOS. To update to the latest version of iOS on your iPhone, go to Settings > General > Software Update. Then tap Download and Install. > **Which payment types can I accept?** > > With Tap to Pay on iPhone, you can accept all types of in-person, contactless payments right on your iPhone — from physical debit and credit cards to Apple Pay and other digital wallets, including Android. Some contactless cards may not be accepted by your payment app. Transaction limits may apply. > **How do I accept payments?** > > Accepting payments with Tap to Pay on iPhone is easy. First, enable Tap to Pay on iPhone in the HitPay app. Then open the HitPay app, enter the purchase amount, and present your iPhone to your customer. Customers can hold their card horizontally or place their payment device directly over the contactless payment icon. They can pay with a physical debit or credit card, Apple Pay, or other digital wallets, including Android. > **Is Tap to Pay on iPhone secure?** > > Yes. Tap to Pay on iPhone is designed with privacy and security built in: > > * Apple doesn't store card numbers or PINs on Apple servers. > * Encrypted card numbers are temporarily stored on iPhone only for transactions made in Store and Forward mode. > * Designed to block camera and screen captures during transactions. > > To ensure you have the latest iOS security and privacy protections, update your iPhone to the latest version of iOS. > **Do I need additional hardware or terminals?** > > No. There's no need to invest in or manage card readers and terminals. All you need is your iPhone and the HitPay app to accept contactless payments. > **Where can I get more information?** > > For more details about using Tap to Pay on iPhone, integrating it with your business, and troubleshooting, visit the [Apple Business Connect Tap to Pay on iPhone FAQ](https://support.apple.com/en-sg/guide/apple-business-connect/abcb71e19fc3/web) page. # WisePad 3 Source: https://docs.hitpayapp.com/pos/readers/wisepad3 Instructions on how to connect and use the WisePad 3 with HitPay. > [!NOTE] > > WisePad 3 is only available in [select regions](https://docs.hitpayapp.com/pos/readers/overview#availablility) ## Overview The WisePad 3 is a versatile card reader compatible with iOS and Android devices. It is designed for secure card transactions and offers enhanced security features. ![WisePad 3](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/wisepad3.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=53c960acbb667ba7d3e0cfdd103e59b0) ## Steps to Connect 1. Download the HitPay app on your mobile device and sign in to your HitPay account. 2. Turn on your WisePad 3 terminal. 3. Ensure that Bluetooth and location services are enabled on your mobile app. 4. Open the HitPay App. 5. Navigate to the **Settings** tab > **Terminal** and select **"WisePad 3"**. 6. Choose your terminal based on the serial number. 7. Click **Pair** and wait for the automatic update to complete. ## Steps to Accept a Payment To accept payment using the WisePad 3, follow these steps: 1. Make sure you’ve already completed the above steps to connect the WisePad 3. 2. Launch the HitPay App by opening it on your device. On the home page, enter the transaction amount and tap the Charge button to continue. 3. You can also add an invoice number, remarks, or any description under the Add Description field. 4. Choose the payment method from the list of available options. Select "Card Terminal" as the payment method and follow the prompts. 5. You should be prompted to either tap or insert the customer’s card into the terminal. After tapping or inserting the card, wait for the payment success message to appear in the HitPay App. ## Troubleshooting WisePad 3 > **My terminal isn’t appearing in the discovery list** > > * Ensure your WisePad 3 card reader is charged to more than 50% battery level. > * The POS won’t be able to discover the reader if it is too far away. Ensure that the reader is in close proximity to the POS. > * If the reader is still connected to another POS, it won’t be discoverable on any other devices. Unpair the terminal from the original POS device by going to Settings > Terminal > Forget Terminal. > **The WisePad 3 card terminal won't pair with my HitPay POS app, or gets disconnected** > > **If your WisePad 3 card reader won't pair with your POS device, follow these troubleshooting steps to resolve the issue:** > > * Ensure your device has a strong and stable internet connection. HitPay POS requires either Wi-Fi or cellular data to process payments. > * Ensure Bluetooth is enabled on your HitPay POS device. > * Ensure Location Services is enabled in your device and is set to “**Always”** or ”**Only when using the app”** > * Ensure the HitPay POS app has Bluetooth permissions in your device settings. > * Ensure your WisePad 3 card reader is charged to more than 50% battery level. The device may have pairing issues when the battery is below 50%, even when plugged in. > * Ensure the WisePad 3 card reader is connected to another device. If so, unpair it before attempting to pair with your device. > > **If the above doesn’t work please follow the following steps :** > > * Power off the WisePad 3 terminal and turn it back on before restarting the pairing process. > * Quit the HitPay app and reopen it. > * Log out of the HitPay app then quit the app and re-login. > * Uninstall and reinstall the HitPay app. > * Go to your device Bluetooth settings > search for the Terminal serial number > Click “Forget Device” > **My terminal is showing 'System Tampered'** > > If your WisePad 3 card reader displays a Tamper Detected screen error, then the reader can no longer be used, and you'll need to replace it. > **My terminal is frozen** > > * If your terminal is stuck on a payment screen, press the red "Cancel" button on the terminal's keypad. > * If that doesn't work, insert a paper clip into the pinhole beside the charging port. This will trigger a reset process and prompt you to confirm the factory reset. Please restart the pairing process afterwards. > > ![WisePad 3 reset](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/factory-reset-wisepad3.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=892a601b6aee04001bcdb30d4d5990d5) ## FAQs > **How long does the initial firmware update take?** > > The firmware update may take up to 10-15 minutes to complete during the initial connection. Subsequent updates may occur for security purposes. > **What do I do if I encounter connection issues?** > > If you face connection issues, ensure that Bluetooth and location services are enabled on your device. Please follow the troubleshootign steps above. If the issue persists, contact HitPay support for assistance. > **How long does the battery last on a Wisepad3 full charge?** > > On a full charge, the Wisepad3 lasts about 1 day (approximately 600 transactions). > **How do I factory reset WisePad 3?** > > To reset your WisePad 3 reader, simply insert a paper clip into the pinhole next to the reader's charging port. This will initiate the reset process and you will be prompted to confirm the factory reset. > > ![WisePad 3 reset](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/factory-reset-wisepad3.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=892a601b6aee04001bcdb30d4d5990d5) # WisePOS E Source: https://docs.hitpayapp.com/pos/readers/wisepose Instructions on how to set up and use the WisePOS E terminal with HitPay. > [!NOTE] > > WisePOS E is only available in [select regions](https://docs.hitpayapp.com/pos/readers/overview#availablility) ## Overview The WisePOS E terminal is designed for secure card transactions. You can use it as a standalone mode by default, with the HitPay app embedded. Alternatively you can request a conversion to "Pair with Desktop" mode if you plan to use it as just a terminal reader. ![WisePOS E](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/wisepos-e.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=a8d81aa53f7fb21dc3a3e5f8a55b8e79) ## Steps to Set Up 1. When you receive the device, insert the battery and plug the provided cable into the port with the lightning bolt symbol to power the reader. Press the Power button to switch on the device. 2. After switching on for the first time, you will be prompted to connect to a Wi-Fi network. Connect to your Wi-Fi network. \[!WARNING] Your Wi-Fi network **MUST USE** WPA-Personal or WPA2-Personal encryption and be password protected. The WisePOS E **DOES NOT SUPPORT** non-password-protected networks, enterprise networks, or IPV6 networks. 3. Generate a pairing code (e.g., Tang-Peace-Man) from the settings page on the terminal. 4. Connect the reader to your account. Open the HitPay dashboard and navigate to **Point of Sales > Terminal > Register Terminal**. Insert the code under the Registration Label and connect. > [!NOTE] > > If you want to use the WisePOS E to pair with the HitPay app or your custom web app; send a WhatsApp message to [+65 9864 4718](https://wa.me/6598644718) or write to [support@hit-pay.com](mailto:support@hit-pay.com) to request for a terminal conversion from the Standalone mode to mode. ## Accessing Settings \*\*Standalone Mode \*\* 1. Log in to HitPay app 2. Go to Settings > Check Reader Settings 3. Enter the admin PIN 07139. 4. From here, you can update your WiFi settings or generate a pairing code for device registration. 5. Battery status is displayed at the top right of this screen. To close the settings menu, click the back arrow in the top left corner. **Reader Mode** 1. Swipe right from the left edge of the reader screen to reveal a Settings button. 2. Tap the Settings button and enter the admin PIN 07139. 3. From here, you can update your WiFi settings or generate a pairing code for device registration. 4. Battery status is displayed at the top right of this screen. To close the settings menu, click the back arrow in the top left corner. ## Connecting Reader via Wi-Fi To connect to WiFi or switch networks, go to settings, then select WiFi settings to choose the network and connect. Attempting to join a new network disconnects the reader from any existing wireless connection. > [!WARNING] > > Your Wi-Fi network **MUST USE** WPA-Personal or WPA2-Personal encryption and be password protected. The WisePOS E **DOES NOT SUPPORT** non-password-protected networks, enterprise networks, or IPV6 networks. ## Troubleshooting Wi-Fi Connection ### Reader is unable to connect To check connectivity, go to settings, then select WiFi settings. This displays all available WiFi networks. To see more details about the connection, tap on the connected network name. * Make sure the Wi-Fi network is connected and has internet access. * The signal strength is good. * The Wi-Fi network is a WPA/WPA2/WPA3-Personal or WPA2/WPA3 EAP-PEAP Enterprise encryption. * The Wi-Fi network is password protected * The device has an IP address assigned. ### How to identify your Wi-Fi network's security type : **Windows 10** * Find the Wi-Fi connection icon in the taskbar and click on it * Then click Properties underneath your current Wi-Fi connection * Scroll down and look for the Wi-Fi details under Properties * Under that, look for Security Type, which shows your Wi-Fi protocol **MacOS** * Hold down the Option key * Click on the Wi-Fi icon in the toolbar * This will show your network details, including your Wi-Fi security type **Android** * On your Android phone, go into Settings * Open the Wi-Fi category * Select the router you are connected to and view its details * This will show what Wi-Fi security type your connection is * The path to this screen may differ depending on your device **iPhone** * Unfortunately, there is no way within iOS to check your Wi-Fi security. If you want to check your Wi-Fi's security strength, you can either use a computer or log into the router through the phone. Each router may be different, so you may need to refer to the documentation that came with the device. Alternatively, if your internet service provider set up the router, you could contact them for assistance. ### How do I change my Wi-Fi security encryption? > [!NOTE] > > The steps to configure Wi-Fi security encryption might vary depending on your specific router model and provider. Please refer to your router's manual or the support resources provided by your internet service provider (ISP) for detailed and accurate instructions tailored to your device. **1. Log into your router console** * Using the browser of your choice, log into the admin console of your home router. * The exact method for doing this may vary depending on your router manufacturer. * You can refer to your Router Manual for more details. * However, the most common method is to enter [http://192.168.1.1](http://192.168.1.1) into the browser address bar and press ENTER; [http://10.0.0.1/](http://10.0.0.1/) is another common router IP address. **2. Navigate to the Wireless Security section** **3. Select Encryption Option** * Select WPA/WPA2/WPA3-Personal or WPA2/WPA3 EAP-PEAP Enterprise encryption **4. Set Your Network Password** * Create a strong network password **5. Save Changes & Reboot** * Upon saving, reconnect all your wireless devices * Select your new WiFi SSID and enter the new WiFi password. ### How do I check the IP address of my WisePOS E Terminal? * Ensure your WisePOS E terminal is powered on and connected to the Wi-Fi network. * Navigate to Settings either by swiping from left to right (Pair with Desktop mode) or from Settings > Check Reader Settings (Standalone mode) * Go to 'Network Settings' and select "Network" > "Wi-Fi" * Your device should display the connected network and the assigned IP address. ## Connecting Reader via Ethernet Ethernet connectivity requires the use of an optional dock, which provides wired Ethernet connectivity and keeps your smart reader fully charged using the included charging cable. You can purchase the dock separately through the [HitPay online store](https://hitpay.shop/hitpayterminal) (Singapore-based businesses) or the **HitPay dashboard > Point of Sale > Terminal** (Non-Singapore based businesses). The Ethernet Dock features a 10/100 Ethernet port and rubber feet for stable countertop use. To set up the dock: * Connect the Ethernet cable from your dock to your router. * Connect the dock to power. It has a minimum power requirement of 5V-2A (10W) and includes a charging cable, which you can plug into any USB-A power adapter (not included). * When both cables are connected, insert the reader into the dock. To confirm that the reader is properly docked, verify the reader is charging and the Ethernet icon is visible in the status bar. ## Steps to Accept a Payment To accept payment, follow these steps below : **Reader Mode** 1. Ensure that you have HitPay app running on a separate device, either iOS / Android or Web Browser. 2. Go to Point of Sale 3. Connect the WisePOS E 4. Create a charge and select "Card Terminal" from the list of payment methods. 5. You should be prompted to either tap or insert the customer's card into the terminal. After tapping or inserting the card, wait for the payment success message to appear in the HitPay App. \*\*Standalone Mode \*\* 1. Make sure you've already completed the above steps to set up the WisePOS E terminal. 2. Launch the HitPay App by opening it on your device. On the home page, enter the transaction amount and tap the Charge button to continue. 3. You can also add an invoice number, remarks, or any description under the Add Description field. 4. Choose the payment method from the list of available options. Select "Card Terminal" as the payment method and follow the prompts. 5. You should be prompted to either tap or insert the customer's card into the terminal. After tapping or inserting the card, wait for the payment success message to appear in the HitPay App. ## Converting your WisePOS E to a Reader + Customer Display Setup ![Customer Display on WisePOS E](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/readers/CustomerDisplayS700.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=edcb9ba94d8f9153dad6745ff7333990) 1. Ensure that your WisePOS E is in Standalone mode 2. In the homepage, click on your profile icon on the top left of the screen 3. In the mode selection, select "Customer Display" mode, it will generate a pairing QR code. 4. Open the HitPay app from another device and go to Settings > Hardware > Customer Display. Use that device to scan the QR displayed on the WisePOS E. 5. Your WisePOS E will be converted to a Customer Display which dynamically displays items added onto the cart on your main POS device. ## FAQs > **What is the process for converting WisePOS E to Pair with Desktop mode?** > > To convert the WisePOS E terminal to "reader" / "pair with desktop" mode, send a WhatsApp message to [+65 9864 4718](https://wa.me/6598644718) or write to [support@hit-pay.com](mailto:support@hit-pay.com) to request the conversion. Follow the provided instructions for the conversion process. > **Can I use WisePOS E as both a card reader and a standalone terminal?** > > Yes, you can use WisePOS E in both "reader" / "pair with desktop" mode and "standalone" terminal mode. To switch between modes, follow the provided instructions for conversion. > **Can I connect a Bluetooth printer to my WisePOS E terminal?** > > No, you cannot connect a Bluetooth printer to the WisePOS E E terminal. > **How long does the battery last on a WisePOS E E full charge?** > > On a full charge, the WisePOS E reader lasts about about `8 hours` (approximately 600 transactions). # Receipt Printer Source: https://docs.hitpayapp.com/pos/receipt-printer Learn how to set up and configure receipt printers ## Types of Printers supported > **[HitPay Bluetooth Receipt Printer](/pos/readers/wisepad3)** > > Portable & affordable 58mm-roll Bluetooth-only printer. > **[HitPay Advanced Receipt Printer](/pos/readers/m2)** > > Advanced 80mm-roll printer with auto-cutting capabilities that supports Bluetooth, Wi-Fi & USB connection. > **Star Micronics Bluetooth Receipt Printers** > > Industry leading smart printers that supports multi connectivity depending on the printer model. ## Availability | Device/OS | Model Number | iPhone/iPad (iOS) | Android | HitPay Standalone Terminal | Availability | | :-: | :-: | :-: | :-: | :-: | :-: | | HitPay Bluetooth Printes | - | ✓ | ✓ | ✕ | [Singapore](https://hitpay.shop/hitpayterminal/product/hitpay-bluetooth-printer-with-1-free-paper-roll-01H5MV4PZSAF6JM8Y8QTAY8DEF), [Indonesia](https://tokopedia.link/eedRdwRZtLb) | | HitPay Advanced Printers | - | ✓ | ✓ | ✓ | [Singapore](https://hitpay.shop/hitpayterminal/product/hitpay-bluetooth-printer-with-1-free-paper-roll-01H5MV4PZSAF6JM8Y8QTAY8DEF) | | Star Micronics Bluetooth Receipt Printers | TSP-650II | ✓ | ✕ | ✕ | [Singapore](https://www.kingly.sg/products/star-tsp654ii?srsltid=AfmBOoprB8rFry4xm-e12RRZbswVw02CpSrJxnjeLHac3pU-9I8SVYMY) | ## FAQs > **Can I connect the POS app with any other thermal printers outside of this list?** > > We strongly recommend using the printers from the "Availability" table above, which is available for purchase on our Online Store, recommended seller. We specifically test our software with this printer to ensure compatibility. > **I am based in a country not listed in the table above, where can I purchase a printer?** > > If your country is not listed, we recommend reaching out to your HitPay account executive for guidance. You may consider purchasing a 58mm Bluetooth thermal printer, as our app generally supports most ESC/POS-compatible thermal Bluetooth printers. However, please note that some printer models may not perform optimally, as they haven't been fully tested with our system. # Receipts Source: https://docs.hitpayapp.com/pos/receipts Learn how to manage and print receipts in your POS system ## Overview When your customers make a purchase from your business, providing them with a receipt is essential for accounting, refunds, and ensuring a seamless customer experience. After completing a transaction, you will be able to see a payment success screen. Below the prompt; **"How would you like to receive your receipts?"**, you can choose the any of the methods available. HitPay supports multiple types of receipts to cater to various customer preferences: 1. Print Receipts 2. Email Receipts 3. SMS Receipts 4. WhatsApp Receipts 5. QR Receipts 6. Image Receipts (iOS only) > [!NOTE] > > Receipts are generated after the completion of a payment. Additionally, you can access and generate receipts from the transaction history. ## Sending Receipts After completing a successful transaction, follow these steps to provide a receipt to your customer: **Print Receipts** * Connect your app to a [HitPay Bluetooth printer](#bluetooth-printer). * Click on "Print" **Send Receipts by Email** * Click on "Email" * Enter your customer's email and click send. * The customer's email will be added as a customer in the HitPay system. **Send Receipts by SMS** * Click on "Text" * Enter your customer's mobile phone number and click send. > [!NOTE] > > You can also access or resend a receipt from the transactions tab by selecting a specific transaction and clicking on **Share receipt**. ## Email Receipts Email receipts offer a convenient way to share transaction details with customers. You can customize the content and appearance of email receipts through the HitPay Web Dashboard. This allows you to include essential business information, special messages, and branding. **How to Customize Email Receipts via HitPay Web Dashboard** Navigate to **Settings > Email Templates**. On the top header, toggle to select the type of email you want to edit. This can be Payment Receipt, Order Confirmation, or Recurring Invoice. Fill in details with your preferred text. You can edit the email subject, title, subtitle and footer. For recurring invoice, you can also edit the action button text and color. The transaction details cannot be edited as that is automated from the customer's purchase. Include variables to automate information: Variables fill in data automatically. This can help you save time and prevent errors (e.g. typos when filling in information). To use a variable, simply copy and paste the variable into your email text. You can find the available variables at the bottom of the page. > **Variables** > > ``` > {{business_name}} > {{charge_id}} > {{business_email}} > {{charge_date}} > {{business_phone}} > {{business_address}} > {{location_name}} > {{location_address}} > ``` Click **Save Changes** when done. You can click **Send test email** to see how your email will look. If you would like to go back to the default email by HitPay, simply click Revert to default followed by Save changes. ## Text Receipts Text receipts are currently available for numbers in Singapore, Australia, New Zealand, Philipines and USA. Your customer will receive an SMS containing a link from receipt.hit-pay.com/uniquecode. When the link is opened, your customer will see the breakdown of their order. If a customer doesn't receive a text message receipt, one or more of the following may have occurred: * The customer doesn't have a valid text messaging plan. * The customer's phone carrier has blocked the text. * The customer's phone number is outside of HitPay's supported region. When this happens, you can send the receipt to a valid email address instead. ## WhatsApp Receipts Merchants can now send receipt links directly via their WhatsApp account, offering a quick and convenient way to share transaction details with customers. * Each successful charge generates a unique receipt URL, which can be shared with customers instantly for their records. * By clicking the "Send via WhatsApp" button, the merchant will be redirected to their WhatsApp app. This will open a deep-linked chat with the customer, containing a prefilled message that includes the charge amount and unique receipt URL. > [!WARNING] > > Please note that to send receipts via Whatsapp, Whatsapp app needs to be installed in the device and logged in ## QR Receipts HitPay offers the option to display a **QR code** of the unique receipt URL directly on the **payment success page**. Customers can scan the QR code using their smartphones to instantly view and save their receipt, providing a convenient and contactless receipt-sharing option. ## Image Receipt (iOS only) HitPay offers the convenience of sharing receipts as images. This feature enables you to share receipt images via platforms like AirDrop, without requiring customers to share personal information. ## Print Receipts Printed receipts provide tangible proof of purchase. These receipts can be printed by using [HitPay's Bluetooth Printer](/pos/receipt-printer). For printed receipts, you can customize the information via your HitPay app. **Customizing Printed Receipts** By default, printed receipts display: * Business logo * Business display name * Business address & phone number * Cashier display name * "Powered by HitPay" footer You can customize your printed receipts by navigating to the **Settings** tab and clicking on **Receipt Customization**. # Shipping & Pickup Source: https://docs.hitpayapp.com/pos/shipping-pickup-pos Learn how to manage shipping and pickup options in your POS system ## Overview You can set up shipping and pickup options on your HitPay Point of Sale. ![Shipping & Pickup](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Shipping-Pickup.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=0ae4a18a87bcaca7151d85a26cd0f353) ## Why configure shipping or pick-up on POS? Configuring shipping and pickup on your POS app is useful for merchants who offer flexible order fulfillment options directly from their physical store. Here's some use cases : ### Purchase In-Store, Deliver Later A customer visits your physical store to make a purchase but prefers to have the product delivered to their home or another location. With the shipping configuration set up on the POS, the cashier can process the sale in person and mark the order for delivery. This option provides a seamless experience for customers who may be purchasing larger or heavier items that they cannot take with them immediately. For example, a furniture store can sell items in-store and arrange delivery directly through their POS system to complete the transaction. ### Preorders A customer calls or contacts your business to place an order for an item that requires preparation or restocking. Instead of taking payment over the phone, your team can create a payment link in the POS and send it to the customer via SMS or email. Once the customer completes the payment using the link, the POS records the order, and it can be tagged for pickup or shipping at a later date when the item is ready. ## Limitations for HitPay POS > [!NOTE] > > Shipping and Pick Up settings can currently only be configured from web dashboard. Some advanced settings is not be available for POS * Shipping methods with specific Countries and Regions are not supported. These shipping methods will be treated as available for all countries / regions. * Shipping methods with calculation & rate is currently not supported. These shipping methods will not be displayed on the POS. ## Before you begin ### Configure Shipping Settings on Web Dashboard To configure shipping settings for your HitPay online store, follow these steps: **Step 1: Navigate to Shipping & Pickup:** * Access the shipping settings by going to your HitPay Web Dashboard and navigating to **Online Shop > Shipping & Pickup**. **Step 2: Enable Shipping and Add a Shipping Method:** * Click on the "Shipping Method" toggle button to activate shipping options for your online store. * Click on the **Add Shipping Method** button to define a new shipping method. **Step 3: Fill Out Details and Create Shipping Method:** When adding a shipping method, you'll need to fill out the following sections: #### a. Method Name * Provide a clear and descriptive name for the shipping method to help identify it easily (e.g., "Standard Shipping" or "Express Delivery"). * The method name will be displayed to customers during the checkout process. #### b. Applicable Countries and Regions * Select the countries and specific regions within those countries where this shipping method will be available. #### c. Calculation & Rate * Choose how the shipping costs will be calculated: * **Flat Fee**: A fixed rate applied to all orders regardless of weight or quantity. * **Fee Per Unit**: A rate applied based on the number of units ordered. * **Weight-Based**: A rate calculated based on the total weight of the order. For this option, you must ensure that each product in your store has a weight assigned, as the system uses these weights to determine shipping costs. For more information, refer to the [Shipping or Pickup Required section](/store/products#shipping-or-pickup-required). * After selecting the calculation method, input the relevant rates and ranges to be applied. #### d. Description * Optionally, add a description for this shipping method to provide additional context or information to customers (e.g., "Delivered within 3-5 business days"). * The description will be displayed to customers during the checkout process. **Step 4 (Optional): Enable Delivery Date and Time Slots:** * Enhance the customer experience by offering the option for customers to choose their preferred delivery date and time. This can be particularly useful for businesses offering time-sensitive products or services. * After enabling this feature, customers will be able to select their preferred delivery date and time slot during the checkout process. Once you've filled out the required details, click on the **Create Shipping Method** button to save your settings. After configuring your shipping settings and saving your changes, the newly added shipping methods will be available during the checkout process. Customers will first select their country and enter their address details. Only countries with available shipping methods will be displayed at checkout. Once the address is entered, customers will see the available shipping options based on their entered address. ### Set Up Pickup Locations for Your Store 1. Navigate to **Online Shop > Shipping & Pickup > Pickup**. 2. Click on the **"Activate Pickup Method"** checkbox to activate pickups for your store. 3. Click on **+ Pickup Location**. 4. Enter the pickup name and select a location from the dropdown menu labeled **"Locations"** which lists all available locations from **Online Store > Locations**. * If the desired location is not listed, you can add a new location directly from this dropdown menu by clicking on 'Add New'. 5. Repeat steps 3 and 4 to add multiple pickup locations. 6. To manage existing pickup locations, navigate to the **Pickup Locations** tab. * **Active/Inactive Locations:** Active locations will appear as an option on the checkout page, and inactive locations will not. ### Setting Time Slots For Pick-Ups & Shipping Methods **Shipping** 1. When you're in the "**Add/Edit Shipping Method**" page, click on the **"Delivery date and time slots"** toggle to enable time slots for the shipping method. 2. Select the day(s) allocated for shipping. 3. Set a time slot for the selected days. > [!NOTE] > > **(Optional)** Specify the number of slots available; once all slots are filled, customers can't choose that time slot. 4. Click **Save/Create Shipping Method** to save your changes. **Pickups** 1. While in the main Shipping settings page, click on the "Enable Time Slots for Pick-Up" toggle to enable time slots. 2. Select the day(s) allocated for pick-ups. 3. Set a time slot for the selected day. > [!NOTE] > > **(Optional)** Specify the number of slots available; once all slots are filled, customers can't choose that time slot. 4. Click **Save Pickup Method** to save your changes. ## Calendar Settings for Pick-Up or Shipping Methods After enabling time slots, you can configure advance calendar settings for the pickup or shipping mode. These settings include advance days, cutoff time, maximum days, and blackout dates: 1. **Advance Days:** The Advance Day setting allows you to specify the number of days required for order preparation before shipping or pickup. This ensures that you have enough time to fulfill the orders. To configure advance days: * Enable the "Advance Day" option. * In the field provided, enter the number of days required for order preparation. > [!NOTE] > > The current day is day 1. If orders are fulfilled immediately, leave advance settings disabled. 2. **Cutoff Time:** The cutoff time option is available only when the Advance Day setting is enabled. It allows you to set the latest time of day by which customers can place their orders for shipping or pickup. To configure cutoff time: * Enable the "Cutoff Time" option * Enter the desired time in the provided field 3. **Maximum Days:** The Maximum Days setting specifies the time frame in which customers can place their orders. Dates beyond this specified time frame will not be available for selection during the checkout process. To configure maximum days: * Enable the "Maximum Days" option * In the "Days" field, enter the maximum number of days within which customers can place their orders. > [!NOTE] > > This restricts the available dates for pickup during checkout. 4. **Blackout Dates:** The Blackout Dates setting allows you to specify dates when the shipping or pickup option will be unavailable, such as holidays or non-working days. To configure blackout dates: * Enable the "Blackout Dates" option * In the "Blackout Dates" section, enter the start and end dates of the blackout period * Click on the **+** button to specify additional blackout periods if needed * To remove a blackout date, click on the "Delete" icon next to the respective date Your configured settings will be displayed on the checkout page of your online store. # Star Bluetooth Printer Source: https://docs.hitpayapp.com/pos/star-bluetooth-printer Learn how to set up and use Star Bluetooth printers ![Star Micronics Bluetooth Printer](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/star-bluetooth-printer.jpg?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=17cdbff2f390d56b7bdb2b508db8e4d2) Star Micronics Bluetooth printer works with the following HitPay POS set up : * HitPay app on iOS It supports the following paper receipt dimensions: * Paper width: 80mm * Paper roll diameter: 80mm max > [!NOTE] > > Refer to the user manual provided in the printer box for instructions on setting up the printer, charging the printer, and loading paper into the printer. ## How to connect your Star TSP650 Bluetooth Printer? [YouTube video player](https://www.youtube.com/embed/_fTFUJMdTB0?si=wyXBE2kGx-ELLfYS) ### Step 1 : Connect printer to iPad / iPhone 1. Do a self-test (Hold feed button while turning power on) 2. Check the BD Name & Auto Connection setting 3. To pair the printer, with iPad, hold down pair button for 5 seconds or until the green light flashes once. It will flash consistently and you will have 60 seconds to pair the printer with the iPad. 4. Go to Settings > Bluetooth > search for "Star Micronics". Once appears click to connect 5. The Auto Connect feature of the printer will allow printer to reconnect with the last printer it was connected to in the event the iPad leaves range, iPad turned off or Printer turned off. 6. To enable / disable Auto Connect feature, hold down the "RST" button at the back of the printer for a few seconds. Printer will reset itself and print out a confirmation page of the new setting. ### Step 2 : Connect printer within the HitPay app 1. Go to Settings > Printer > Connect Printer 2. Select Printer Model > Star Printer 3. Select Connection Type = "Bluetooth" 4. Discover Printers 5. Once discovered select the printer and select the printer model (e.g : TSP 650T) 6. Click on "Test Printer Connection" 7. Save ## FAQs > **How do I troubleshoot my Star Micronics printer?** > > Please check that you have these basic requirements: > > * Your HitPay POS app is up to date. > * Your device's operating system is up to date. > * Your device has Bluetooth activated. > * Check that printer paper is correctly installed and that the status indicator light is a solid blue color. > * Unpair your device and receipt printer. > * Return your receipt printer to its factory settings. > * Pair your device with the receipt printer. > * Restart the printer. > * Open the device's Settings. > * Tap the Bluetooth menu option and confirm that the Star Micronics printer displays as Not connected. > * Tap the printer to connect to it. > * When the printer displays as Connected, restart it again. When the printer turns on, it should display briefly as Not connected, and then as Connected. > * If the printer doesn't connect automatically when you restart it for the second time, then activate auto-connect. > * Test the printer by printing a test receipt. > * If you still have trouble using the receipt printer after trying these steps, then contact Shopify Support. > **What is the distance limit for printing between my device & the Bluetooth printer?** > > For optimal performance, it's advisable to maintain a communication distance of up to 10 meters between your device and the Bluetooth printer. # Surcharge Source: https://docs.hitpayapp.com/pos/surcharge Learn how to apply surcharges for payment processing fees ## Overview As a business owner, you might need to incorporate additional fees, such as service fees or administrative charges, into your products or services. With HitPay POS, managing these extra fees becomes effortless through our Surcharge feature. ## Creating a Surcharge Open the HitPay app and navigate to the **More** tab and click on **Surcharges**. Click the **+** button to create a new surcharge. Enter the required surcharge details: * Name * Surcharge rate * Choose whether the surcharge should be applied to checkout by default Your newly created surcharges will be displayed as a list on the Surcharges page. ## Applying a Surcharge at Checkout While using the HitPay app in [Point of Sale](/pos/modes) mode, create a charge. After clicking **Charge** or **Go to Cart**, you'll be directed to the Cart page. If you've set a default surcharge, it will automatically be added to the total amount on the cart page. If there are no surcharges set to be applied by default, you can click the **More actions** button to reveal a dropdown menu and select **Add Surcharge**. If you've previously created surcharges, you'll see a list of available surcharge. Otherwise, you'll be prompted to create a new tax. > [!NOTE] > > Swipe left on an existing surcharge to edit its details. To apply a surcharge, simply tap on it. Select the surcharge(s) you want to apply and click Apply. The applied surcharge and corresponding amount will be visible on the Checkout page, contributing to the Total. To remove a surcharge, deselect it from the list and click Apply. **Automatically Adding a Surcharge to Checkout** When creating a surcharge, ensure that the "Apply at checkout by default" toggle is turned on. In the list of surcharges, a checkmark will indicate which surcharge is applied to Checkout by default. This surcharge will be automatically added to the checkout page when you charge your next payment. ## Surcharge Calculations Surcharge calculations are based on the product or quick sale total. For example: **For Products:** * Product A = \$60.00 * Product B = \$40.00 * Product Total = \$100.00 * Surcharge 10% = \$10.00 **For Quick Sale:** * Quick Sale Total = \$100.00 * Surcharge 10% = \$10.00 **How will discounts affect surcharge fees?** A percentage surcharge calculates the surcharge amount based on the PRE-DISCOUNT total amount. Calculate the surcharge on the pre-discount check total: $10.00 * 10% = $1.00 Add the service charge of #1.00 to the check total: $10.00 + $1.00 = \$11.00 Deduct the $2.00 discount from the adjusted check total: $11.00 - $2.00 = **$9.00\*\* ## FAQs > **Can I view the surcharge amounts applied to my transactions on my reports?** > > Yes, on the web dashboard, click Bank Payouts > Transactions > Export Transactions. Make sure you check 'POS Order Details' field under Fields Required. # Taxes Source: https://docs.hitpayapp.com/pos/taxes Learn how to configure and apply taxes in your POS system ## Overview Managing taxes is an essential part of your business operations. With HitPay POS, you can effortlessly create and manage tax rates directly from the mobile app. HitPay's fees are calculated from the total transaction amount, including taxes and [tips](/pos/tips). ## Creating a Tax Open the HitPay app and navigate to the **More** tab. Click on **Taxes** to access the tax settings page. Here, you can create a new tax by clicking the **+** button. Enter the necessary tax details: * Tax name * Tax rate * Specify whether the tax is inclusive or exclusive of the total amount or product pricing. Your newly created tax rates will be listed under the tax settings page. ## Applying an Automatic Default Tax at Checkout Under the tax settings page, you'll find a **Choose Tax Default** button. By default, it's set to None. Click the right-hand arrow to choose a Tax Default. You'll see a list of tax options. Select a tax that should be automatically applied at checkout. ## Applying a Tax at Checkout While using the HitPay app in [Point of Sale](/pos/modes) mode, create a Quick Sale or Products charge. After clicking **Charge** or **Go to Cart**, you'll be taken to the Cart page. > [!NOTE] > > If you've set a default tax, it will be automatically added to the total amount at Checkout. If none of the available taxes are set to be applied to checkout by default, you can click the **More actions** button to reveal a dropdown menu and select **Add Tax**. If you've previously created taxes, you'll see a list of available taxes. Otherwise, you'll be prompted to create a new tax. You can swipe left on an existing tax to edit its details. To apply a tax, select a tax option and click **Apply**. > [!NOTE] > > Only one tax can be applied to each order ## Tax-Inclusive vs Tax-Exclusive Tax The choice between Tax-Inclusive and Tax-Exclusive Tax impacts how taxes are calculated in relation to the final transaction amount. **Tax-Exclusive Tax** A Tax-Exclusive Tax is added to the Total Amount at the point of the final transaction. Example: You may charge #100 for a service and add a 7% GST tax. Adding a Tax-Exclusive GST tax adds an additional #7 at the point of purchase. The Total Amount becomes #107.00. **Tax-Inclusive Tax** A Tax-Inclusive Tax is already included in the price of purchase. Example: You may charge #100 for a service with 7% GST included as a Tax-Inclusive Tax. The Total Amount remains #100. Understanding the difference between these tax types helps you make informed decisions when configuring your tax rates in the HitPay app. ## FAQs > **Can I view the tax amounts applied to my transactions on my reports?** > > Yes, on the web dashboard, navigate to **Transactions > Export Transactions**. Make sure you check 'POS Order Details' field under Fields Required. > > * **Tax Applied** = Name of tax that is applied > * **Tax Calculated** = Nominal amount of tax applied based on tax % and transaction amount > * **Tax Amount** = Amount of tax added to the sum. Inclusive tax will result in 0. # Tips Source: https://docs.hitpayapp.com/pos/tips Learn how to accept and manage tips in your POS system ## Overview As a business owner, allowing customers to leave tips can enhance customer satisfaction and show appreciation for your service. HitPay POS provides you with the capability to enable and collect tips seamlessly, providing customers with the flexibility to express their gratitude. ## Enabling Tips Enabling tips is a straightforward process that can be configured to suit your preferences. Here's how you can enable tips for sales on HitPay POS: * Open the HitPay app and go to the **More** tab and click on **Taxes** to access the tax settings page. * Toggle on the Enable Tips option. This will ensure that the Tipping page is displayed during customer checkout. * Enter preset tip percentages in the Tip Option fields. You can set up to three different values. > [!NOTE] > > (Optional) If you want to allow custom tip amounts, disable the Custom Tip Amount option. Click **Save** to apply the changes. ## Collecting a Tip When Tips are enabled, customers can conveniently leave tips during the checkout process: While using the HitPay app in Point of Sale [mode](/pos/modes), create a Quick Sale or Products charge. After clicking **Charge** or **Go to Cart**, you'll be directed to the Cart page where you can proceed to checkout. Select your preferred payment method and proceed to the Order Confirmation Page. If you've enabled tips, your customers will see the Tip Selection page and if a Custom Tip Amount is enabled, customers will have the option to enter a custom tip along with preset tip percentages. If Custom Tip Amount is disabled, only preset tip percentages will be displayed. After making the tip selection, customers will be guided to the Payment Acceptance page to complete the transaction. # Transactions & Reports Source: https://docs.hitpayapp.com/pos/transactions Learn more about the Transaction History and Reports for Your POS App ## Overview The HitPay App provides you with the ability to monitor and analyze your business transactions. The transactions page presents crucial information about payment details at a glance, this view offers detailed insights into individual transactions, aiding in effective tracking of order specifics. This guide takes you on an comprehensive journey through the Transactions & Reports features. ## Viewing Transactions Exploring payment transactions processed through the HitPay App is simple and intuitive. To view your transactions, navigate to the **Transactions** tab, where a list of recent transactions are displayed. ![Products](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/pos_transactions.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=eff6461c3ef295914fdf10c22edfede9) ### Viewing Transaction Details Dive deeper into transaction details by clicking on any transaction in the list. Gain access to specific information such as: * Payment method used * Transaction fees, taxes, and additional charges * Transaction description * Order details, including the list of purchased products * Refund details (if applicable) * Customer information (if applicable) * [Location](/pos/locations) of the transaction (if applicable) * [Cashier](/setup/user-management-roles#user-roles) associated with the transaction (if applicable) ### Receipts & Refunds **Receipts:** Easily share receipts by clicking the **Share Receipt** button on the transaction details page. For more information about receipts, click [here](/pos/receipts). **Refunds:** You can also process [refunds](/payments/refund) effortlessly from the transaction details page by clicking the **Refund** button. ## Reports HitPay's reporting feature allows you to gain insights into your business's performance. You can view various types of reports to track sales, analyze payment methods, and delve into product-specific data. Reports can help you evaluate your business strategies effectively. To view your sales reports by navigating to the **More** tab and clicking on **Reports** (You can also click the icon on the top right corner of the screen from the **Transactions** tab). ![Products](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/pos_reports.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=9054352a6ba2717a3baf33a9b08dea22) ### Types of Reports | Report Type | Description | Accessibility | | | :-: | :-: | :-: | - | | Transactions List | Displays a list of transactions processed within a specific time period. Accessible via the **Transactions** Tab. | Can be acccessed by navigating to the **Transactions** tab | | | Sales Summary | Offers an overview of sales within a specific time frame, including gross sales, refunds, net sales, fees, and net collected. | Accessible by navigating to the **More** tab and clicking on **Reports**. | | | Sales by Payment Methods | Summarizes the number of payments, gross sales, net collected, and associated fees based on various payment methods transacted via HitPay. | Accessible by navigating to the **More** tab and clicking on **Reports**. | | | Sales by Products Summary | Provides an aggregated summary of total sales for each product. | Accessible by navigating to the **More** tab and clicking on **Reports**. | | | Sales by Products Detailed | Offers a detailed breakdown of products sold and the quantity sold in each order. | You can access this information under the transaction details by selecting the transaction from the **Transactions** tab. | | ### Setting Report Filters You can filter reports by date, location and users. Cashiers will only be able to view their own transactions and cannot view other user's transactions. ### Print Your Daily Reports Any reports that you see on the reports page can be printed if you have a [printer connected](/pos/receipts). If you need to print your daily summary, you can update the filter and select the date as "Today." Then, click on the *Export Icon* at the top right and select "Print." ## iOS Widgets HitPay offers convenient ways to stay updated and informed about your business activities using widgets on iOS. ![Products](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/pos_ios_widget.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=5d3a2a325063d397ab1d370adc05d485) **Installing the HitPay Widget** 1. From the Home Screen, touch and hold a widget or an empty area until the apps jiggle. 2. Tap the **+** button in the upper-left corner. 3. Select the HitPay widget and choose the widget type you'd like to add. HitPay offers both small and medium widget views. 4. Tap **Add Widget** and then tap **Done**. **Customizing the HitPay Widget** 1. Long-press on the HitPay widget from your home screen. 2. Click on "Edit Widget." 3. Select your desired filters and adjust the following fields: * Business * Date Range * Data (choose 2 for small widget, choose 4 for medium widget) * Gross Sales * Number of Sales * Refunds * Net Sales * HitPay Fees * Net Collected ## FAQs > **Does the reports feature display transactions made outside of the POS app?** > > Yes the reports feature includes all transactions made from your HitPay account regardless of channel. > **What are the charges for refunds and chargebacks?** > > **Refunds** > > Below are the charges and processing time associated with refunds: > > ![Refund Fees](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Refund-FAQ.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=52a5dff8049626cfc10dda46dbb80afb) > > Refund function is currently not yet available for UPay Payment Method for Philippines-based merchants and for some payment methods for Indonesia-based merchants. > > **Chargebacks** > > Chargeback fee + full original transaction amount will be reversed from the merchant balance: > > ![Chargeback Fees](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Chargeback-FAQ.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=9c5c6a50bc44c2f53701fb4425574784) > > European Union includes Austria, Belgium, Finland, France, Germany, Luxembourg, Netherlands, Portugal, Ireland, Italy, and Spain. > > All card payments are processed using 3DS technology which by default protects all HitPay merchants from chargeback and shifts the liability of the payment to the bank. However in the event that the issuing bank submits a chargeback, the above fees will be applicable. > > As HitPay is the merchant on record and is taking risk on behalf of the merchant, in the event of a chargeback, HitPay will deduct the chargeback fees and full transaction amount immediately from the merchant's Stripe balance. > > Payments that have been successfully authenticated using 3D Secure are covered by a liability shift. Should a 3D Secure payment be disputed as fraudulent by the cardholder, the liability shifts from you to the card issuer i.e the bank. > > If a customer disputes a payment for any other reason (for example, product not received) then the standard dispute process applies. > > > [!NOTE] > > > > Policies are subject to change without further notice. # Order Analytics Source: https://docs.hitpayapp.com/reporting/order-analytics View order analytics and performance metrics # Payment Reports Source: https://docs.hitpayapp.com/reporting/payments Monitor sales, transactions, and payment method performance with the reports in the HitPay dashboard. ## Overview The HitPay dashboard provides you with the ability to monitor and analyze your transactions and gain insights into your business's performance. This guide takes you on an comprehensive journey through the Sales & Reports features on HitPay. ![Reports](https://mintcdn.com/hitpay/v7KuLHsxaSTGqgHq/images/reporting/payments.png?fit=max\&auto=format\&n=v7KuLHsxaSTGqgHq\&q=85\&s=3c8e941ef405bb6126aca97aee33e6e5) You can access your sales reports by navigating to **Bank Payouts > Reports** on your HitPay Dashboard. ### Types of Reports | Report Type | Description | Accessibility | | | :-: | :-: | :-: | - | | Transactions List | Displays a list of transactions processed within a specific time period. Accessible via the **Transactions** Tab. | Can be accessed by navigating to the **Transactions** tab | | | Sales Summary | Offers an overview of sales within a specific time frame, including gross sales, refunds, net sales, fees, and net collected. | Accessible by navigating to the **More** tab and clicking on **Reports**. | | | Sales by Payment Methods | Summarizes the number of payments, gross sales, net collected, and associated fees based on various payment methods transacted via HitPay. | Accessible by navigating to the **More** tab and clicking on **Reports**. | | | Sales by Products Summary | Provides an aggregated summary of total sales for each product. | Accessible by navigating to the **More** tab and clicking on **Reports**. | | | Sales by Products Detailed | Offers a detailed breakdown of products sold and the quantity sold in each order. | You can access this information under the transaction details by selecting the transaction from the **Transactions** tab. | | ### Setting Report Filters Before you can export your sales reports, you need to set a filter based on the "Sales Channel" and you also need to specify a **Date From**(Start Date) & **Date To**(End Date) > [!NOTE] > > Cashiers will only be able to view their own transactions and cannot view other user's transactions. ## FAQs > **Does the reports feature display transactions made outside of the POS app?** > > Yes the reports feature includes all transactions made from your HitPay account regardless of channel. > **What are the charges for refunds and chargebacks?** > > **Refunds** > > Below are the charges and processing time associated with refunds: > > ![Refund Fees](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Refund-FAQ.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=52a5dff8049626cfc10dda46dbb80afb) > > Refund function is currently not yet available for UPay Payment Method for Philippines-based merchants and for some payment methods for Indonesia-based merchants. > > **Chargebacks** > > Chargeback fee + full original transaction amount will be reversed from the merchant balance: > > ![Chargeback Fees](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Chargeback-FAQ.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=9c5c6a50bc44c2f53701fb4425574784) > > European Union includes Austria, Belgium, Finland, France, Germany, Luxembourg, Netherlands, Portugal, Ireland, Italy, and Spain. > > All card payments are processed using 3DS technology which by default protects all HitPay merchants from chargeback and shifts the liability of the payment to the bank. However in the event that the issuing bank submits a chargeback, the above fees will be applicable. > > As HitPay is the merchant on record and is taking risk on behalf of the merchant, in the event of a chargeback, HitPay will deduct the chargeback fees and full transaction amount immediately from the merchant's Stripe balance. > > Payments that have been successfully authenticated using 3D Secure are covered by a liability shift. Should a 3D Secure payment be disputed as fraudulent by the cardholder, the liability shifts from you to the card issuer i.e the bank. > > If a customer disputes a payment for any other reason (for example, product not received) then the standard dispute process applies. > > > [!NOTE] > > > > Policies are subject to change without further notice. ## Fee Breakdown You can now view a detailed breakdown of all fees applied to a transaction directly from the charge details page. To access the fee breakdown: 1. Navigate to **Payments > Transactions** on your HitPay Dashboard. 2. Select any transaction to open its charge details. 3. Click the **"Fees breakdown"** link next to the HitPay fee amount. A panel will open showing each fee component applied to that transaction: * **Payment method fees** — The fixed fee and percentage fee charged for the payment method used (e.g. PayNow, cards, e-wallets). * **Plugin fees** — Any additional fees from integrations such as Shopify or other online store software. * **Currency conversion fees** — For cross-currency transactions, the FX conversion fee is listed separately. * **Total fees** — The sum of all fee components for the transaction. # Security Source: https://docs.hitpayapp.com/security Overview of HitPay's security practices and compliance measures. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/hitpay_security.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=9a23401f4903d34da067015d06106312) ## Overview At HitPay, security isn't just a checkbox—it's a core principle we uphold in everything we do. Our team includes ex-cybersecurity professionals with experience in highly regulated industries, such as banking, ensuring that robust security measures are embedded into every layer of our technology stack. We continuously improve our security posture through proactive assessments, rigorous testing, and a commitment to industry best practices. ## Data Security * **AES Encryption:** All databases and client communications use AES encryption. * **Encryption at Rest:** Sensitive data is encrypted when stored in our systems. * **Encryption in Transit:** Data traveling to PlanetScale databases is protected using TLS, and all communications to the HitPay API and Dashboard are served exclusively over HTTPS (TLS 1.3). ## Compliance & Testing * **PCI-DSS Compliant:** We maintain PCI-DSS compliance. A copy of our PCI certificate is available upon request (under NDA) via [https://trust.hit-pay.com/](https://trust.hit-pay.com/). * **SOC 2:** We are currently undergoing SOC 2 compliance to further validate our security, availability, and confidentiality controls. * **External Penetration Testing:** We regularly engage independent security experts to conduct external penetration tests. These assessments are performed at a higher standard than the minimum requirements set by regulators, ensuring that our systems remain resilient against evolving threats. Our promise is to safeguard your data, keep your transactions secure, and build trust through transparency and adherence to strict security standards. For additional questions or documentation requests, please reach out to us at [security@hit-pay.com](mailto:security@hit-pay.com). ## Regulatory Licenses & Compliance HitPay operates under regulatory oversight in multiple jurisdictions: | Country | Regulatory Body | Status | | - | - | - | | Singapore | Monetary Authority of Singapore (MAS) | Licensed Major Payment Institution | | Australia | AUSTRAC | Registered | | Philippines | Bangko Sentral ng Pilipinas (BSP) | Registered | | Malaysia | Bank Negara Malaysia (BNM) | Registered | | United States | FinCEN | Registered MSB | HitPay maintains **PCI-DSS Level 1 compliance** for secure card data handling across all markets. A copy of the PCI certificate is available upon request via [trust.hit-pay.com](https://trust.hit-pay.com/). All payment data is processed in compliance with local data protection regulations including Singapore's PDPA, Malaysia's PDPA, Philippines' Data Privacy Act, and Australia's Privacy Act. ## Account Security & Shared Responsibility At HitPay, securing account access is a shared responsibility between us and our SME partners. We enforce strict controls to ensure that only authorized personnel can access sensitive information: * **Role-Based Access Controls:** Each team member is assigned specific permissions aligned with their role, reducing the risk of misuse. * **Two-Factor Authentication (2FA):** 2FA is available for implementation and is highly recommended to add an extra layer of protection even if a password is compromised. See [Passkeys](/setup/2fa#passkeys). * **Password Sharing:** We highly recommend not sharing your account passwords with your staff. Instead, each individual should use their own credentials to maintain accountability. By following these guidelines, we work together to maintain a secure and reliable access environment. # Audit Logs Source: https://docs.hitpayapp.com/security/audit-logs Review business-level and user-level audit logs of important account activity in HitPay. ## Overview The Audit Logs feature in HitPay provides business owners and administrators with detailed records of critical system activities. This improves transparency, accountability, and security by capturing actions at both the business level and the user level. ## Business-Level Audit Logs Business audit logs can be found in the **Settings** section under **Audit Logs**. ![Business Audit Logs](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Business-Audit-Logs.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=fbaccfd3518a9567e87ec41a6ab78943) | **Event Type** | **Description** | | - | - | | Bank account updates | Logs any changes made to linked bank accounts. | | Staff invitations & deletions | Tracks when staff members are added or removed. | | Business detail changes | Records updates to registered business information. | | Account verification modifications | Captures updates to business verification status. | | Role modification attempts | Logs all attempts to change staff roles (successful or failed) for security. | | Staff location assignment changes | Logs when a staff member's assigned location(s) are added, removed, or changed. | ## User-Level Audit Logs User audit logs can be found in the **Security** section under **Audit Logs**. ![Account Logs](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Account-Logs.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=861f90da0d35f09d499cf022c175a864) | **Event Type** | **Description** | | - | - | | 2FA changes | Tracks when users enable or disable two-factor authentication. | | Password changes | Records when users update their account password. | | Passkey changes | Records when users add or remove a passkey. | # Business Details Source: https://docs.hitpayapp.com/settings/business-details View and update your business information, check your merchant category, and link a referring partner. ## Overview Go to **Settings → Business Details** (under the **Account** group) to view and update your core business information. This page is available to business owners, admins, and managers. The page is split into four tabs: * **Basic information**: business name, display name, website, merchant category, and statement description * **Registered address**: your registered business address * **Contact information**: business contact details * **Tax Details**: tax registration information ## Basic Information The Basic information tab shows the following fields: | Field | Editable | Notes | | - | - | - | | Business logo | Yes | Shown on your checkout and customer-facing pages. | | Business Name | Yes | Your registered business name. | | Business ID | No | Your unique HitPay business identifier. | | Display name | Yes | The name shown to your customers. | | Currency | No | The account currency is fixed for the business and cannot be changed. | | Website | Yes | Your business website URL. You can update or clear it at any time. | | Merchant category | No | Your MCC and category description. See below. | | Statement description | Yes | The descriptor that appears on your customers' card statements. | Only fields you change are submitted when you save. ## Merchant category (MCC) Your merchant category is displayed in the Basic Information section. The field shows: * The **category description**, for example "Family Clothing Stores" * Your **4-digit MCC** (Merchant Category Code), displayed as a badge, for example `5651` The MCC is the industry classification card networks use for your business. It is assigned during [account verification](/setup/business-verification) based on the nature of your business, and it affects how card schemes categorise your transactions. The field is read-only. If your business activities have changed and you believe your merchant category is incorrect, contact support at [support@hit-pay.com](mailto:support@hit-pay.com) to request a change. ## Link a partner If a [HitPay Reseller Partner](/partner/overview) referred you to HitPay but you signed up without their referral link, you can link them yourself from this page. Below the Basic information fields you will see: "Were you referred to HitPay by a partner?" To link a partner: 1. Click **Link a partner**. 2. Enter the partner's **referral code** (a 10-character code, for example `WEBS4X2ABC`). Ask your partner for their code if you do not have it. Lowercase letters, spaces, and dashes are tolerated. 3. Review the partner's name and website on the confirmation step, then click **Link partner**. Once linked, the section shows the partner's name and the date they were linked, for example "Referred by Acme Web Studio · linked on 18 Aug 2026". Things to know before linking: * **Linking does not change your fees.** The partner earns a commission from HitPay for the referral; nothing is charged to you. * **The partner does not see your private account information.** They only see basic business metadata, such as your business name, and the commission they are entitled to. * **One partner per business.** If your business is already linked to a partner, you cannot link another one. * **Linking is permanent from the dashboard.** To change or remove a linked partner, contact support. * Each partner link is recorded in your [audit logs](/security/audit-logs). If the code is not recognised, check it with your partner and try again. Codes only work for approved HitPay partners. ## Delete business The **Danger zone** section at the bottom of the page lets the business owner permanently delete the business. Once deleted, a business cannot be recovered. See [Account Setup](/setup/account-creation) for details. ## FAQs > **How do I change my merchant category?** > > The merchant category cannot be changed from the dashboard. Contact support at [support@hit-pay.com](mailto:support@hit-pay.com) with details of your current business activities and our team will review the change. > **Does linking a partner cost me anything?** > > No. Partner commissions are paid by HitPay. Your transaction fees do not change when you link a partner. > **I linked the wrong partner. How do I remove it?** > > Partner links cannot be removed from the dashboard. Contact support at [support@hit-pay.com](mailto:support@hit-pay.com) to change or remove a linked partner. # Notifications Source: https://docs.hitpayapp.com/settings/notifications Stay informed about your transactions by configuring notification settings in HitPay ## Overview HitPay provides flexible notification options to keep you updated on important activities related to your transactions. You can choose to receive notifications through the HitPay mobile app on iOS or Android, or opt for email notifications. ## Configuring Notification Settings Navigate to **Settings > Notifications** on your HitPay Dashboard. Here, you can enable or disable notification settings based on your preferences. These settings are categorized as follows: ![Notification Settings](https://mintcdn.com/hitpay/v7KuLHsxaSTGqgHq/images/settings/notifications.png?fit=max\&auto=format\&n=v7KuLHsxaSTGqgHq\&q=85\&s=c7aca26d14685bf408936a2a605e226e) By selecting the relevant checkboxes, you can tailor your notifications to match your needs. Here's a rundown of each setting: **Daily Collection:** Notifications related to daily collections, including payouts, can be received through email, push notifications, and payout emails. **New Order:** Get notified of new orders through email and push notifications. **Pending Order:** Receive an email notification for pending orders. **Incoming Payment:** Stay informed about incoming payments via email and push notifications. **Customer Receipt:** Get an email notification when customers receive their payment receipts. Choose the notification settings that suit your workflow and communication preferences. Click **Update** to save your changes. Whether you prefer mobile app notifications or email updates, HitPay ensures you're informed about the activities that matter most to you. # Two-Factor Authentication Source: https://docs.hitpayapp.com/setup/2fa Learn how to set up and manage two-factor authentication for your HitPay account ## Overview Secure your HitPay account by enabling 2FA to provide an additional layer of security when logging in. Follow these steps to set up 2FA: **1. Access Security Settings** Click on Security from the top-right portion of the menu as shown below. ![Security Menu](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/security-menu.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=156bb9f9f8db0e5be043e25dc51f1cf3) **2. Enable 2FA** Click on "Set up two-factor authentication". **3. Install Authenticator App** You will need to use any authenticator app such as Google Authenticator or Microsoft Authenticator available from the Apple App Store or Google Play Store. Follow the on-screen guide to proceed. **4. Scan QR Code** Scan the Barcode generated using your chosen Authenticator App and click Continue. **5. Verify Setup** Enter the code from your Authenticator App and Click Verify. ![2FA Successfully Enabled](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/2fa-enabled.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=61aae72b18eec2dfd9e411671f0d960a) > [!NOTE] > > 2FA is now activated! You will be prompted to enter a 2FA code from your authenticator app every time you log in to HitPay with your password, on the web and on mobile. ## Passkeys A passkey acts as 2FA, so there is no OTP — faster sign-in. Use your fingerprint, face, or screen lock on the **web dashboard**. > [!NOTE] > > Passkeys on iOS and Android are not yet available. ![Passkeys on the HitPay Security page](https://mintcdn.com/hitpay/aZKVfcvB0qNFtZ3J/images/setup/passkeys.png?fit=max\&auto=format\&n=aZKVfcvB0qNFtZ3J\&q=85\&s=7c85b767bf66d91b7818d1b08beac65f) 1. Click **Security** in the top-right menu, then **Add passkey**. 2. Confirm with your password, or a 6-digit email code if you do not have a password. 3. On [dashboard.hit-pay.com/login](https://dashboard.hit-pay.com/login), click **Log in with a passkey**. You can add up to 10 Passkeys. Password login still asks for an authenticator code. ## How to reset 2FA ### Account owners Sign in to the web dashboard with your email and password. On the authenticator prompt, click **Lost access to your authenticator?** HitPay asks for a selfie check. After you submit, HitPay reviews the request within 1 business day. ### Non-owners You cannot complete the selfie reset. Clicking **Lost access to your authenticator?** shows **Ask your account owner to reset your 2FA**. If you belong to one business, it also shows the owner's masked email. The owner, or an admin whose role is above yours, resets it from **Settings → Staff**: open the person's menu, click **Reset 2FA**, and confirm with their authenticator or SMS code (not email 2FA). They cannot reset someone at the same role or above, or someone who owns another HitPay business. # Account Setup Source: https://docs.hitpayapp.com/setup/account-creation Create your HitPay account and start accepting payments in minutes ## Overview Welcome to the Account Creation process for HitPay! In this guide, we'll walk you through the steps to create your HitPay account, enabling you to seamlessly manage your business transactions and payments. Whether you're new to HitPay or looking to set up a test account, we've got you covered. * **Sign Up**: To begin your journey with HitPay, please visit our [Sign Up Page](https://dashboard.hit-pay.com/register) and get started on unlocking a world of streamlined payment solutions. > [!TIP] > > **Sandbox Environment**: If you want to explore the APIs without creating a > full account, create a [Sandbox account](/apis/guide/sandbox). ![HitPay Account Setup](https://mintcdn.com/hitpay/Z8ArJK-qR4ObObIB/images/account-setup.png?fit=max\&auto=format\&n=Z8ArJK-qR4ObObIB\&q=85\&s=6a76f0e189a36732dcb5fdc9b19e719f) To create an account, follow these steps: HitPay supports the following countries: * Singapore * Malaysia * Philippines * Thailand * Indonesia * Hong Kong * New Zealand * Australia > [!NOTE] > > Other countries' signups are now on waitlist. For more information, please > contact the support team. **1. Create account** Complete account creation by selecting your country and registering. This choice is permanent once confirmed. Visit our [Sign Up Page](https://dashboard.hit-pay.com/register) to get started. **2. Account verification** Verify your business and identity so you can start receiving payments. Click **Start verification** on the setup checklist, then provide business details, complete owner verification (including selfie and liveness checks where required), and submit your application for approval. **3. Bank account** Connect the bank account where your payouts will be settled. Use **Connect bank** when this step becomes available after verification progresses as required. **4. Payment methods** Choose which payment methods you want to enable for your customers. Select **Begin setup** to configure the options that fit your business. ## Account Security > **[Shared Responsibility](/security)** > > Learn about the shared responsibility model for account security and best > practices for maintaining secure access. > **[Two-Factor Authentication](/setup/2fa)** > > Set up two-factor authentication to add an extra layer of security to your > HitPay account. > **[Passkeys](/setup/2fa#passkeys)** > > Sign in to the web dashboard with a passkey. ## FAQs > **Unable to Complete Owner Verification?** > > If you encounter difficulties during the owner verification process, please ensure that you're following the guidelines provided in the verification instructions. Make sure the selfie is clear and that you're in a well-lit environment. If issues persist, reach out to our dedicated support team for prompt assistance. > **I do not have a website, what do I enter?** > > If your business does not have a website, please use your social media links. > **Can I change my account type (Business/Individual) after signing up?** > > No, you cannot change your account type once the verification process has been completed based on your selected account type. If your verification is still pending, you can contact our support team to request a change. > **How can I delete my HitPay account?** > > Only the business owner can delete a business. To delete your HitPay account: > > 1. Go to [Settings → Business Details](/settings/business-details) > 2. Scroll down to the **Danger Zone** section > 3. Click **Delete Business** > > ![Delete Business in Danger Zone](https://mintcdn.com/hitpay/4KBQP6FEJCtu7uyw/images/delete-business.png?fit=max\&auto=format\&n=4KBQP6FEJCtu7uyw\&q=85\&s=772c9b09c5c6451215db705a66a6b156) > **How can I change my email address?** > > To change your email address: > > 1. Click on your account avatar in the top right corner > 2. Select **Account** from the dropdown menu > 3. Click on **Change Email** to update your email address > > ![Account Dropdown Menu](https://mintcdn.com/hitpay/4KBQP6FEJCtu7uyw/images/account-dropdown.png?fit=max\&auto=format\&n=4KBQP6FEJCtu7uyw\&q=85\&s=6713a73dd958bca3e1f59394a245d8b3) For any additional questions or concerns, our support team ([support@hit-pay.com](mailto:support@hit-pay.com)) is always available to provide assistance and ensure your account creation process is as smooth as possible. # Business Verification Source: https://docs.hitpayapp.com/setup/business-verification In this section we will explore the Business Verification Form and detail the various verification statuses you might encounter. ## Overview Business verification is a crucial step in setting up your HitPay account. This process helps us ensure the security and legitimacy of all businesses using our platform. ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/compliance_hero.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=7b9c23c4815062265252b5e1b0d95062) ## Why is Business Verification Required? Business verification is a fundamental aspect of maintaining a trusted and secure payment environment. By verifying the authenticity and legitimacy of businesses, we ensure a safer experience for all parties involved in the transactions. It helps prevent fraudulent activities, maintain compliance with regulatory standards, and builds a stronger foundation for long-term business relationships. ## Business Verification Form ![](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/account_verification.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=8dedf3316fe8abf328b53ae09f9748c1) The Business Verification Form is a comprehensive document that collects essential details about your business. This information is crucial for our team to assess and verify the legitimacy of your business operations. The form covers various aspects, such as business structure, contact information, and purpose, ensuring that we have a comprehensive understanding of your business. ## Verification Status Throughout the verification process, you may encounter different statuses, each indicating a specific stage of review. Here's an overview of the verification statuses and their details: | Status | Details | | - | - | | Pending | Your documents are being reviewed by our team. | | RFI (Request for Information) | Our team has identified issues with your submitted documents and requires additional information. Please check your email for instructions. | | Approved | Congratulations! Your verification has been successfully completed. | ## Payment Enabled Upon successful completion of the verification process, your payment acceptance capabilities will be enabled. You can start accepting payments without delay, providing a seamless experience to your customers. ## Payout Enabled Once the verification process is successfully completed, and no further documents are required, your payouts will also be enabled. This allows you to efficiently manage your business finances and ensures a hassle-free payout process. We understand the importance of timely verification, and our team is dedicated to assisting you throughout the process. If you have any questions or require support, feel free to reach out to us. We're here to make your verification experience as smooth as possible. ## Country-Specific Document Requirements The documents required for business verification vary depending on your country of operation. Below you'll find detailed requirements for each supported country to help you prepare the necessary documentation for a smooth verification process. > **[🇸🇬 Singapore](/onboarding/requirements-sg)** > **[🇲🇾 Malaysia](/onboarding/requirements-my)** > **[🇵🇭 Philippines](/onboarding/requirements-ph)** > **[🇮🇩 Indonesia](/onboarding/requirements-id)** > **[🇹🇭 Thailand](/onboarding/requirements-th)** > **[🇭🇰 Hong Kong](/onboarding/requirements-hk)** > **[🇦🇺 Australia](/onboarding/requirements-au)** > **[🇳🇿 New Zealand](/onboarding/requirements-nz)** # Inviting Users Source: https://docs.hitpayapp.com/setup/user-management The User Management feature in HitPay allows you to efficiently control access and permissions for your team members within your HitPay account. This provides you with the tools to seamlessly invite new users, designate their roles, and customize their interactions with the system. ## Overview **Web Dashboard** HitPay provides a comprehensive user management system accessible directly from the HitPay dashboard under **Settings > Staff**. ![User Management](https://mintcdn.com/hitpay/wvTVMuCzuA2cFErG/images/User-Management.png?fit=max\&auto=format\&n=wvTVMuCzuA2cFErG\&q=85\&s=10afe21aa559117eb0406d8ea2c5ca03) **Mobile App** You can also access the user management system from the HitPay app. * Log in to the HitPay mobile app on iOS or Android and go to the **More** tab. * Click on **Users** ![User Management](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/User-Management-POS.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=90fee8ff3a0fe2766a4a9927cd640341) ### Inviting Team Members You have the ability to invite members of your team to access your HitPay account. New users can be invited via email, and it's essential to assign a specific role and location to each new user. Before designating a role to a team member, familiarize yourself with the list of actions each role is permitted or restricted from performing. For more details, refer to the [list of permissions](#user-roles) associated with each role. ### Users Locations > [!NOTE] > > Admins have access to all locations. If you are using point of sale, you can assign users to specific locations. You can learn more about locations [here](/pos/locations). ### Accepting an Invitation Upon being invited to access HitPay as an Admin, Manager, or Cashier, the user will receive an email. By clicking "View Invitation," the invited user will be directed to create a user account. The invitee can then click the "Accept" button to start accessing HitPay. ## Transferring Ownership A HitPay business has a single **Owner**. Transferring ownership hands the Owner role to an existing team member with the **Admin** role, and changes your own role to Admin. Only the current Owner can do this, and it isn't available for partner accounts. > [!WARNING] > > This is a role-change feature, not a compliance feature. It does **not** update your business's shareholder structure or verification (KYB) details. To change those, email [support@hitpay.com](mailto:support@hitpay.com). **1. Open Settings > Staff** From the HitPay dashboard, go to **Settings > Staff**. **2. Start the transfer** On the Admin you want to promote, open the **⋯** menu (or their user details page) and select **Transfer Ownership**. The recipient must be an active Admin — not a pending invite, Manager, or Cashier. **3. Verify it's you** Enter your account password. If you have two-factor authentication (2FA) enabled, you'll also be asked for a verification code. Confirm to complete the transfer. # Cashier Role Restrictions Source: https://docs.hitpayapp.com/setup/user-management-cashier Learn how to configure and manage cashier role restrictions in HitPay to control access permissions for your team members, including refund capabilities and transaction viewing rights. ## Overview The **Cashier** role is the most restricted permission level in HitPay's user management system. As a business owner or admin, you can customize cashier permissions to protect sensitive data while allowing essential operational functions. ### Key Restriction Areas Cashier permissions can be controlled in two main areas: 1. **Refund Operations** - Control whether cashiers can process refunds 2. **Transaction & Report Access** - Limit visibility of transaction data and reports *** ## Refund Restrictions ![User Management](https://mintcdn.com/hitpay/wvTVMuCzuA2cFErG/images/User-Management.png?fit=max\&auto=format\&n=wvTVMuCzuA2cFErG\&q=85\&s=10afe21aa559117eb0406d8ea2c5ca03) ### Restricting Refund Access By default, cashiers have the ability to process refunds. However, you can restrict this capability to protect your business from unauthorized refunds. #### How to Enable Refund Restrictions 1. Navigate to **Settings** → **Staff** 2. Click the **Settings icon** next to the cashier's name 3. Select **Role Restrictions** 4. Enable **"Restrict refund"** #### What Happens When Restricted When refund restrictions are enabled: * Cashiers will receive an **"Unauthorized"** error when attempting to process refunds * The refund option will be hidden or disabled in their interface * Only users with higher permission levels (Admin/Owner) can process refunds ### Business PIN Override System ![User Management](https://mintcdn.com/hitpay/wvTVMuCzuA2cFErG/images/User-Management.png?fit=max\&auto=format\&n=wvTVMuCzuA2cFErG\&q=85\&s=10afe21aa559117eb0406d8ea2c5ca03) For businesses that need cashiers to process refunds occasionally while maintaining security, HitPay offers a Business PIN override system. #### Setting Up Business PIN 1. **Admin/Owner Setup:** * Go to **Settings** → **Staff** → **Role Restrictions** * Create a **4-digit Business PIN code** * Enable the PIN requirement for restricted operations 2. **PIN Usage:** * When a restricted cashier attempts a refund, they'll be prompted to enter the 4-digit PIN * Upon successful PIN entry, the refund operation will be authorized * The PIN is shared among all staff members for restricted operations #### Security Benefits * **Controlled Access:** Only authorized personnel with the PIN can override restrictions * **Audit Trail:** All PIN-authorized actions are logged for security monitoring * **Flexible Control:** PIN can be changed or disabled at any time by admins *** ## Transaction & Report Access Restrictions ### Limiting Transaction Visibility You can control how much transaction data cashiers can view and access. #### Restriction Options 1. **Full Restriction:** * Cashiers have **no access** to transaction data * Cannot view daily collection totals * Cannot export transaction reports * Cannot access transaction history 2. **Limited Access:** * Cashiers can view only the **last few transactions** * Limited to recent activity only * Cannot access historical data or reports #### How to Configure 1. Navigate to **Settings** → **Staff** 2. Click the **Settings icon** next to the cashier's name 3. Select **Role Restrictions** 4. Choose your preferred transaction access level: * **"No Access"** - Complete restriction * **"Limited Access"** - Recent transactions only ### What Cashiers Cannot Access When Restricted * Daily collection summaries * Transaction export functionality * Historical transaction reports * Financial analytics and insights * Customer transaction history # Roles & Permissions Source: https://docs.hitpayapp.com/setup/user-management-roles Learn about the different user roles in HitPay and the permissions each role grants. This guide outlines what Owners, Admins, Managers, and Cashiers can access and manage within your HitPay account. ## User Roles ### Modifying User Permissions After a team member accepts their invitation, you maintain the flexibility to modify their role as necessary. You can access the option to adjust a team member's role from your account's user management settings. Click the edit icon next to their user account to make the desired changes. ### Owner * Full access to the entire dashboard * Full control of products, discounts, taxes, surcharges, tips * Has access to invite new users * Has access to remove any user, including Admins * Can assign multiple Admins per business * Can access all reports and receives relevant notifications * Can access Sales and Reports across all locations and users * Can initiate a refund for any transaction ### Admin * Full access to dashboard * Full control of products, discounts, taxes, surcharges, tips * Has access to invite new users with Manager and Cashier roles * Cannot remove other Admins * Has access to all reports and receives relevant notifications * Can access Sales and Reports across all locations and users * Can initiate a refund for any transaction ### Manager * Has "View Only" access to bank account details * Full control of products & discounts only * Has "View Only" access to API keys * Managers will be able to access transactions that are not assigned to any location (e.g API transactions, Plugin transactions) * If assigned to a location, managers can only access transactions and export reports from their designated location * Can initiate a refund for transactions that do not have a location OR transactions under their designated location only ### Cashier * Limited to accepting payments using: * Point of Sale * Recurring billing * Invoicing * Can access Sales and Reports but is restricted to viewing transactions conducted under their personal account only * Refund is restricted by default, Owners or Admins can configure whether to allow/disallow cashiers to perform a refund # Web Dashboard Source: https://docs.hitpayapp.com/setup/web-dashboard A quick guide to the HitPay Web Dashboard for efficient back office management, including payments, sales, and e-commerce. ## Overview The Web Dashboard is an essential tool for managing the back office processes of your HitPay account. It's designed to streamline the complexities of day-to-day operations, providing a central hub for transaction management, sales analysis, and e-commerce activities. You can log in to the dashboard at [dashboard.hit-pay.com/login](https://dashboard.hit-pay.com/login) with your email and password, Google, or a [passkey](/setup/2fa#passkeys). ![HitPay Dashboard](https://mintcdn.com/hitpay/lFdg5hl_mcwYRTEb/images/dashboard.png?fit=max\&auto=format\&n=lFdg5hl_mcwYRTEb\&q=85\&s=e6fed8b533865499232108a5ef53e7e0) ## Sections of the Web Dashboard The dashboard encompasses three main sections, each tailored to support different areas of your business: * **Payments**: This segment is dedicated to the oversight and control of financial transactions, offering a real-time view of your cash flow and payment processes. * **Point of Sale (POS)**: Customized for the retail setting, the POS section offers tools for transaction management and analysis, ensuring smooth operational flow at physical sales points. * **Online Store**: Focused on e-commerce businesses, this section provides functionalities for order management, customer service, and online sales tracking, driving digital business success. ## Side Menu The side menu is context-sensitive, updating its navigation options to align with the section selected from the main menu. This feature facilitates quick access to the tools and settings most relevant to the user's current tasks. ![Header and Side menu](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/side_header.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=5525b718b3c5b602bcaf0521f8397395) ## Top-Right Section In the top-right corner of the Web Dashboard, you have access to several key functionalities: * **Account Details**: You can view and edit their account information, ensuring that their account details are always up-to-date. * **Feedback**: This option allows you to communicate your experiences directly, providing valuable insights to improve the dashboard. * **Change Log**: Here, all updates and new features are documented, keeping you informed about the latest enhancements. * **User Guides**: Access to a collection of helpful documentation and guides designed to assist users in navigating and utilizing the dashboard effectively. # HitPay Soundbox Source: https://docs.hitpayapp.com/static-qrs/soundbox Set up the HitPay Soundbox, a QR payment device that announces each payment received out loud. ![Soundbox](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/Received-Notif-Soundbox.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=7cb65c228b28413fd13ff0b1ec388713) > [!NOTE] > > The HitPay Soundbox is currently only available in Singapore & Phillipines ## Overview The Soundbox is an advanced QR payment terminal designed to offer a secure and seamless in-store payment experience. It features real-time voice confirmations that announce the amount received, giving both merchants and customers added confidence and clarity with every transaction. ## Value Proposition > **Instant Alerts** > > Receive real-time audio and on-screen notifications for every payment, so you never miss a transaction > **Hassle-Free & Hands-Free** > > No more juggling multiple screens or devices - just listen and focus on serving your customers > **Prevent Fraud** > > Protect your business from fake payment screen scams with instant, reliable audio notifications. ## How to Set Up the HitPay Soundbox ### Step 1: Set Up the Network Configuration Choose between 4G or WiFi connectivity for your Soundbox: > **4G** > > * Long press the "M" key for 2 seconds to enter the "Configure the Network" mode > * In this mode, press "-" to set to "GPRS Network Mode" (please insert the SIM card to use) > * Locate the SIM card slot on the side of the Soundbox as shown. > * Open up the slot cover to insert the Standard SIM card into Soundbox and close the slot cover. > * Insert a Standard size SIM card to allow for internet connectivity > * When inserting the micro SIM card, make sure that the main screen of the Soundbox and the micro SIM card chip are facing you for the correct orientation of insertion as shown > > ![Soundbox SIM card slot](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/pos/Received-Notif-Soundbox.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=7cb65c228b28413fd13ff0b1ec388713) > > * After the setting is complete, restart the speaker and the network mode setting is successful > **WiFi** > > **Android** > > 1. Install [MFApLink](https://play.google.com/store/apps/details?id=com.morefun.aplinkdemo\&hl=en_SG) from Google Play Store, and accept all the permission requirements of this APK > 2. Long press the "M" key for 2 seconds to enter the "Configure Network Mode" > 3. In this mode, press "+" to set to "WIFI Network Mode" and enter WIFI configuration > 4. Connect your mobile phone to the WiFi network you want to configure (only supports 2.4GHz, does not support 5GHz) > 5. Open the MFApLink app, click "CONNECT" button > 6. Input the correct password of the connected WiFi for configuration and make sure it is connected to the same WiFi as your phone > 7. Click "CONNECT" button to continue > 8. In "Search device list", find the corresponding AP name (the AP name is usually device sn or Default device) > 9. Select corresponding AP name and click "CONFIRM" button > 10. Click Connect in the pop-up prompt box > 11. When APK prompts "AP link success!", it indicates that the WiFi configuration is complete > 12. Wait for the device to restart and confirm the WiFi network status > > [Soundbox WiFi Setup - Android](https://www.youtube.com/embed/UoL8pHicMNk) > > **iOS** > > 1. Download [MFAPLink](https://apps.apple.com/us/app/mfaplink/id1645497573) from the Apple App Store to your iPhone > 2. Long press the "M" key for 2 seconds to enter the "Configure Network Mode" > 3. In this mode, press "+" to set to "WIFI Network Mode" and enter WIFI configuration > 4. Make sure your iPhone is connected to a strong WiFi signal > 5. Open the MFAPLink app - you can see two modes showing on the screen > > **Default AP Mode:** > > * Allow MFAPLink to use your location > * Input the WiFi and password your iPhone is connecting to, and click connect > * Click Join when prompted > * When the app shows the success status, it means the WiFi connection is successful > * The device will say "configure successfully" and reboot > * Then you can check the network status > > **Scanning Mode:** > > * Make sure the machine enters WIFI configuration > * Make sure your iPhone is connected to a strong WiFi signal > * Choose Scanning Mode, and scan the bar code of the label on the back of the machine > * Enter the WiFi and password your iPhone is connecting to, click connect > * When the app shows success status, it means the WiFi connection is successful > * The device will say "configure successfully" and reboot > * Then you can check the network status ### Step 2: Pair the Soundbox to your HitPay Account * Locate the power button at the back of the Soundbox * Press and hold the power button for 3 seconds until the screen lights up * If network connection is configured properly, the Soundbox Device will announce "Connect Successfully" & display a pairing QR code * Open the HitPay app > QR Soundbox > Add Device * Scan the pairing QR code until it announces "The Soundbox device is successfully registered to your HitPay account" ![Pairing Soundbox with HitPay app](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/soundboxonmobile.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=3308085d66f16acac9423eee3f3cd7ad) * After successfully pairing, the Soundbox will promptly display the "Display Name" along with the payment method QR code, indicating that the Soundbox is now ready for immediate use. ## How to Use the HitPay Soundbox **Accepting payments with the HitPay Soundbox** * Customers can simply scan the QR code shown on the Soundbox’s main screen to pay using any supported banking app. * Once a payment is completed, the Soundbox will announce the received amount aloud and display it briefly (for 3 seconds) on both the front and rear screens. * The smaller digits on the left side of the back digital screen represent a transaction counter, which will reset every time the Soundbox is powered off. * The larger digit on the right side will display the amount received. **Checking your transactions on the HitPay Soundbox** * You can view transactions received from the Soundbox by logging in to your HitPay App > Transactions / web Dashboard > Transactions **Charging the HitPay Soundbox** * Locate the USB-C port at the side of the Soundbox and plug in the charging cable in to charge. ## FAQs > **What payment methods are supported on the Soundbox?** > > The Soundbox device supports payment method supported under the [HitPay Static QRs](/static-qrs/static-qr). Hence, it only supports PayNow (Singapore) & QRPH (Phillipines) at the moment. > **What is the battery time limit?** > > Battery time limit depends on the usage of the soundbox & the volume of transactions it receive > > For example : > > * Volume level 1, push amount:9.9 every 10 seconds, 4200 transactions, 12 hours > * Volume level 9, push amount:9.9 every 10 seconds, 2800 transactions, 8 hours > * Volume level 11, push amount:9.9 every 10 seconds, 1800 transactions, 5 hours > > If no transactions are received and the Soundbox remains idle, it can last up to 5-8 days. > **Does the business receive a notification when a payment is made?** > > Yes, when a payment is made, you will receive incoming notifications as well. You can verify incoming transactions fromm the HitPay dashboard or Mobile app. # In-App Sound Notification Source: https://docs.hitpayapp.com/static-qrs/soundbox-mobile Turn your phone into a Digital Soundbox that produces in-app voice or sound notifications ![Soundbox](https://mintcdn.com/hitpay/Xc8eVgaY1nmZMXnF/images/pos/soundboxonmobile.png?fit=max\&auto=format\&n=Xc8eVgaY1nmZMXnF\&q=85\&s=3308085d66f16acac9423eee3f3cd7ad) > [!NOTE] > > This feature is designed to be paired with [HitPay Static QRs](/static-qrs/static-qr) ## Overview Using printed QR codes can make it hard to know when a customer has paid. This opens the door to fraud, confusion, and missed transactions. With HitPay's In-App Audio Alerts, your phone announces every payment instantly — no extra device required. Just print your QR or use the free standee we provide, and let your phone do the talking. ## Value Proposition > **Instant Alerts** > > Receive real-time audio and on-screen notifications for every payment, so you never miss a transaction > **No Additional Devices Needed** > > You can just download the HitPay app on your mobile phone, no additional hardware needed! > **Prevent Fraud** > > Protect your business from fake payment screen scams with instant, reliable audio notifications. ## How to enable audio alerts on the mobile app 1. Download the HitPay app from the Play Store or App Store. 2. Log in and open the Transactions page. 3. Tap "Settings." 4. Select "Enable Audio Alerts." 5. Set the alert duration and preview the sound. 6. When a payment arrives, your phone announces the amount and shows a notification. 7. Stay on the Transactions page to keep receiving real-time alerts. # Static QRs Source: https://docs.hitpayapp.com/static-qrs/static-qr Accept QR code payments at a counter or stall with a printable static QR, without a POS or terminal. ## Overview HitPay's Static QR feature enables businesses to accept QR code payments without the need for additional hardware like POS systems or terminals. This solution is particularly beneficial for small and micro businesses, donation drives, and businesses with multiple locations. ![Payment Link](https://mintcdn.com/hitpay/MhRNiXk5E8-JnsDb/images/payments/staticqr.png?fit=max\&auto=format\&n=MhRNiXk5E8-JnsDb\&q=85\&s=69a08c54afcc9c732d9c19b00b487b48) ## Value Proposition > **Multiple QR Codes** > > Create separate static QR codes for different locations or purposes to track sales effectively. > **Real-Time Notifications** > > Receive instant payment alerts via email and mobile push notifications. > **No Hardware Required** > > Simply print and display the QR code; no additional devices are necessary. > **Supports Popular Payment Methods** > > Compatible with popular payment methods such as PayNow and QRPH. ## How it works **Generate a Static QR Code** * Log in to your HitPay account. * Navigate to the Static QR section. * Create a new QR code, specifying details like location or purpose. * Download and print the QR code for display. **Customer Payment Process** * Customer can scan their QR code using their supported banking apps * Customer will manually enter the amount and click "Pay" **Notification of Successful Payment** * Upon successful payment, a confirmation is sent to the business. > [!WARNING] > > Static QR codes do not integrate with HitPay POS inventory. ## Reconciling Static QR Payments To effectively reconcile payments received through Static QR codes, follow these steps: **1. Access Transaction Details / Export Transaction CSV** **2. Identify relevant transactions** * In the transaction list, locate the "Remarks" column. Here, you'll find the name associated with each Static QR code. * Additionally, the Reference Number column will display the unique identifier for each Static QR. ## Managing Static QR on Mobile You can view and manage all your Static QR codes directly from the HitPay mobile app — no desktop login required. **To access Static QR on mobile:** 1. Open the HitPay app 2. Tap **More** in the bottom navigation 3. Select **No Code Tools** 4. Tap **Static QR** From here you can browse all your QR codes in one place and tap any QR to see its full payment history — useful for end-of-day reconciliation and per-location checks. The app also plays an audio alert the moment a payment is confirmed, so you never miss a transaction while serving customers. > [!NOTE] > > Learn more about [In-App Sound Notification](/static-qrs/soundbox-mobile) ## Integrating Static QR to your custom app/software ### Displaying Static QR in your Software 1. Upon creation of Static QR, you can access the details page 2. Click on "Share" 3. Click on "Copy", this will copy the QR-code value of the Static QR 4. Use the string to generate a QR code image on your software ### Handling payment notifications with webhooks To receive real-time notifications of successful payments, configure webhooks in your HitPay account. 1. Navigate to Settings > API Keys > Event Webhook 2. Click on Add Webhook 3. Enter your webhook URL where you want to receive payment notifications. 4. Select the events you want to subscribe to (For successful transactions, subscribe to charge.created). 5. Save the webhook configuration. ### Webhook Payload Example When a payment is made via Static QR, you will receive a `charge.created` webhook with the following payload structure: ```json charge.created (Static QR) theme={"system"} { "id": "a0a09487-46cc-4eaa-b681-0e3446215a4c", "business_id": "8ba72f77-6a56-4317-8c73-c9d82e81df05", "channel": "point_of_sale", "customer_id": null, "status": "succeeded", "customer": null, "currency": "sgd", "amount": 0.5, "refunded_amount": 0, "refunded_at": null, "fixed_fee": 0.1, "discount_fee": 0, "discount_fee_rate": 0, "failed_reason": null, "order": null, "order_id": null, "remark": "Static QR for soundbox (My Soundbox) (DICNSQRPWTC07RYDHF2L)", "payment_intents": [], "payment_request_id": null, "payment_request": null, "all_inclusive_fee": 0.1, "home_currency": "sgd", "payment_provider": { "code": "dbs_sg", "account_id": "DBSSSGSGXXX@0200088298", "charge": { "type": "inward_credit_notification", "id": "25121911374999252139", "method": "paynow_online", "transfer_type": "wallet", "details": null, "logo": "/icons/payment-methods-2/paynow.png" } }, "created_at": "2025-12-19T11:37:51+08:00", "updated_at": "2025-12-19T11:37:51+08:00", "closed_at": "2025-12-19T11:37:51+08:00", "location_id": null, "location": null, "business_user_id": null, "business_user_display": null, "terminal_id": null, "static_qr": { "id": "9face84a-1323-4b67-b4b3-fe9866ebe3fe", "reference": "DICNSQRPWTC07RYDHF2L" } } ``` #### Key Fields for Static QR Payments | Field | Description | | - | - | | `id` | Unique identifier for the charge/transaction | | `status` | Payment status (`succeeded` for successful payments) | | `currency` | Currency of the payment (e.g., `sgd`) | | `amount` | Amount paid by the customer | | `remark` | Contains the Static QR name and reference code | | `static_qr.id` | Unique identifier of the Static QR | | `static_qr.reference` | Reference code of the Static QR (useful for reconciliation) | | `payment_provider.charge.method` | Payment method used (e.g., `paynow_online`) | | `created_at` | Timestamp when the payment was created | > [!TIP] > > Use the `static_qr.reference` field to match incoming payments to specific Static QR codes in your system. ### Test the integration 1. Create a transaction 2. Validate webhook reception. Ensure your system correctly receives and processes webhook notifications. > [!NOTE] > > For more information regarding Event Webhooks Integration, please check our API docs page [here](/apis/guide/events). ### Matching the Payment to Static QR 1. Match payments to the corresponding static QR codes using the `remark` fields. ## Payment Methods Supported | Payment Method | Market | | - | - | | PayNow | Singapore | | UPI | Singapore | | QRPH | Philippines | ## FAQs > **How is Static QR different from Dynamic QR?** > > * **Static QR:** The Hint amount is entered manually by the customer. > > * **Dynamic QR:** The system generates the amount automatically (e.g., from a POS or online invoice). > **Does the business receive a notification when a payment is made?** > > The business must check the transaction list in the HitPay dashboard or Mobile app > **Can cashiers view Static QR transactions?** > > No, cashiers cannot view Static QR payments. Cashiers can only see transactions that are assigned to them. Static QR payments are not tied to individual cashier accounts, so they will not appear in a cashier's transaction view. > > To view Static QR transactions, users need to have a **Manager** or **Admin** role. If a cashier needs to view Static QR payments, they must switch to a Manager or Admin role. > **Can managers view Static QR transactions?** > > Yes, managers and admins can view all Static QR payments. Unlike cashiers, managers and admins have access to all transactions, including those made via Static QR codes, regardless of which staff member was logged in during the transaction. > **How are Static QR codes created via API priced?** > > If you are using the Static QR APIs to generate QR codes, payments received through these QR codes will be considered as online payments when it comes to pricing. # Analytics Source: https://docs.hitpayapp.com/store/analytics Integrating Google Analytics and Meta Pixel ## Overview Integrating Google Analytics and Meta Pixel into your online shop provides powerful tools to track key metrics and user behavior. This guide will help you set up both services to gather valuable data for making informed decisions to grow your business. ## Setting Up Google Analytics Follow these steps to add Google Analytics to your online shop: ### Step 1: Sign Up for Google Analytics * Visit [Google Analytics](https://analytics.google.com/analytics/web/provision/#/provision) and click **Start Measuring**. * Follow the instructions to create your account, leading you to the dashboard. ### Step 2: Obtain Your Measurement ID * In the dashboard, click **Admin**, select your account and property. * Navigate to **Data Streams**, choose **Web**, and input your store’s URL and name. * After creating the stream, copy your Measurement ID. ### Step 3: Add Measurement ID to HitPay * Access your HitPay dashboard and go to **Online Store > Settings > Store settings > Analytics**. * Enable Google Analytics and paste the Measurement ID. * Save changes to integrate. ### Step 4: Verify Integration * Return to Google Analytics and click on **Home**. * Refresh after a few minutes to check if your store appears in the tracking. ## Setting Up Meta Pixel Improve data collection with Meta Pixel using these steps: ### Step 1: Get Your Meta Pixel ID * Sign into [Facebook Business Account](https://business.facebook.com/), go to **Business Settings**, then **Data Sources > Pixels**. * Click **Add**, enter your store URL, select **Continue Managing My Business**, and copy the Pixel ID displayed. ### Step 2: Integrate Meta Pixel ID into HitPay * In HitPay dashboard, navigate to **Online Store > Settings > Store settings > Analytics**. * Activate Meta Pixel and insert the Pixel ID. * Save changes to enable tracking. ### Step 3: Test Your Meta Pixel * Visit your store, add an item to the cart, and check Pixel activity in Facebook Business Manager under **Pixels**. # Button Label Settings Source: https://docs.hitpayapp.com/store/buttons-label Customizing Storefront Button Labels in the Online Store ## Overview You can customize the text shown on key buttons across your online store. This allows you to better match your store's tone, branding, or specific use cases like donations or pay-what-you-want products. Navigate to **Online Store > Settings > Store Settings > Button Labels** in your dashboard to get started. ![Button Labels](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Button-Labels.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=2026fda0fbd45bfe66d04d855e25b502) ## Customizable Button Labels You’ll find separate sections for different product types: ### Fixed Price Products * **Add to Cart** – Default: "Add to Cart" * **Buy Now** – Default: "Buy Now" ### Open Amount Products * **Add to Cart** – Customize based on your product purpose (e.g. "Donate", "Contribute", "Support Now") * **Buy Now** – Useful for single-click checkout scenarios * **Prompt Label Before Amount** – Default: "I want to pay"\ (Shown above the amount entry field before checkout) You can change any of the above labels by typing your preferred text into the corresponding field. A preview of the updated button text will be shown. ## Where Custom Labels Appear Custom button labels will automatically appear across your storefront wherever applicable: * Product detail pages * One-page checkout These changes will apply based on product type (Fixed Price or Open Amount), so your store experience remains consistent and clear to customers. ## Example Use Cases * A non-profit store may change buttons to **"Donate Now"**, **"Contribute"**, or **"Make a Gift"** * A service provider using open amount pricing might use **"Pay What You Want"** or **"Custom Amount"** * An event ticket page could use **"Reserve Spot"** or **"Get Tickets"** # Categories Source: https://docs.hitpayapp.com/store/categories Managing product categories in your online store ## Overview HitPay allows you to create product categories in your HitPay Online Store. Organizing your products into categories helps customers navigate your store more effectively. For instance, if your store offers smartphones, you can categorize them into meaningful groups such as 'Android' and 'iOS.' Furthermore, within the 'Android' category, you can create subcategories like 'Samsung,' 'OnePlus,' and 'Google Pixel,' providing a structured and user-friendly way for customers to find their desired products. ![Product Categories](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Categories.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=ced9c327451f78fc1c835f8a29f0c04f) ## Managing Product Categories To manage your product categories: * Go to your HitPay Web Dashboard. * Navigate to **Products > Product Categories** ### Adding a New Category When you create a new category, customers visiting your online store will see the new category displayed on the homepage amongst all other categories, making it simpler for them to browse and choose products that fall under the designated category. 1. On the Product Categories page, click the **Add Category** button. 2. Provide a name and description(optional) for the category. 3. Click **Save Changes** when done. ### Assign Products to a Category 1. On the Product Categories Page, click on the category you'd like to add products to. 2. Click **Add Product** and click **Save** when done. After assigning products to a category, customers will find those products displayed under the relevant category on your online store, making the shopping experience seamless and more organized. **Adjusting Product Order:** * Click and hold on a product, then drag it to the desired position within the category. * Release the mouse button to drop the product into its new position. > [!NOTE] > > You can rearrange products within specific categories and in the All Products view to fine-tune the display order across your entire product inventory. Rearranging the order of products within a category or in the All Products view lets you prioritize how products are displayed to customers. This allows you to display popular or featured products first. ### Rearranging Categories Rearranging categories changes the order in which categories appear on your online store. This can help you emphasize certain categories, promote seasonal items, or adjust the layout to match changing customer preferences. To rearrange categories: 1. Click the three vertical dots next to a category. 2. Click and hold on the product, then drag it to your preferred position. Your changes are automatically saved. # Custom Domain Source: https://docs.hitpayapp.com/store/custom-domain Connect your own domain name to the HitPay Online Store # HitPay Online Store Custom Domain Guide Connecting your own custom domain to your online store is a crucial step in establishing a strong brand identity and creating a more professional online presence. This guide will walk you through the process of connecting your custom domain to your HitPay Online Store. Before you begin, ensure that you have already purchased a custom domain from a domain registrar service of your choice. Please note that the steps outlined below may vary slightly depending on the domain registrar service you use. ## Steps to Setup **1. Log in to your HitPay Online Store admin panel** Access your HitPay dashboard using your credentials. **2. Navigate to Online Shop > Domain** Find the domain settings in your admin panel. **3. Enter your custom domain** Input your domain name in the provided field. **4. Modify DNS Records** Log in to your domain registrar account and access the DNS settings. You have two options for configuring your DNS records: ### Option 1: A and AAAA Records (Recommended) Create the following DNS records: ``` # For root domain (example.com) Type: A Name: @ or leave empty Value: 137.66.35.46 Type: AAAA Name: @ or leave empty Value: 2a09:8280:1::47:3e49:0 # For subdomain (shop.example.com) Type: A Name: shop Value: 137.66.35.46 Type: AAAA Name: shop Value: 2a09:8280:1::47:3e49:0 ``` ### Option 2: CNAME Record Alternatively, you can use a CNAME record: ``` # For subdomain only (shop.example.com) Type: CNAME Name: shop Value: hitpay-store.fly.dev ``` Note: CNAME records cannot be used for root domains (example.com). **5. Wait for DNS Propagation** DNS changes may take up to 48 hours to propagate across the internet. During this time, your custom domain may not be immediately accessible. ## Congratulations! You have successfully connected your custom domain to your HitPay Online Store. Your online store will soon be accessible via your custom domain, providing a more professional and branded experience for your customers. If you encounter any issues or have questions during this process, don't hesitate to reach out to HitPay customer support for assistance. They are here to help you make the most of your online store and custom domain integration. Thank you for choosing HitPay Online Store for your e-commerce needs! ## FAQs > **Can I use only my subdomain like `shop.mydomain.com` for the store and keep my existing website intact?** > > Yes, you can use a subdomain like `shop.mydomain.com` exclusively for your HitPay store while keeping your existing website intact. To do this, follow these steps: > > 1. Log in to your domain registrar account (e.g., GoDaddy, Namecheap, etc.). > 2. Find the option to manage your DNS settings. > 3. Add the required DNS records: > * Option 1 (Recommended): Add A and AAAA records > ``` > Type: A > Name: shop > Value: 137.66.35.46 > > Type: AAAA > Name: shop > Value: 2a09:8280:1::47:3e49:0 > ``` > * Option 2: Add CNAME record > ``` > Type: CNAME > Name: shop > Value: hitpay-store.fly.dev > ``` > 4. Save your DNS changes. > By creating a CNAME record, you're directing traffic from your subdomain to your HitPay store, ensuring that it functions as a separate online store while leaving your main website unaffected. Customers can access your store by entering `shop.mydomain.com`, and your existing website remains intact. > Keep in mind that DNS changes may take some time to propagate across the internet, so it may not be immediately accessible. Please be patient during this process. # Discounts & Coupons Source: https://docs.hitpayapp.com/store/discounts-coupons Set up automatic discounts and coupon codes for your HitPay online store. ## Overview HitPay's online store provides various options for offering discounts and coupons to your customers. These promotions can enhance the shopping experience and boost sales. In this section, we'll cover how to set up automatic discounts, add shipping discounts, and create store coupons. ![Discounts](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Discounts.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=202d49c13b960fa00019d821246d1846) ## Automatic Discounts Automatic discounts allow you to provide discounts to customers based on their total order/cart value. Follow these steps to set up automatic discounts: Navigate to **Online Shop > Discount** and click on **Add Discount**. Fill out the following discount details: * **Minimum Purchase Amount:** The threshold amount that triggers the discount. * **Discount Name:** The name displayed on the checkout page. * **Discount Type:** Choose between percentage (%) or fixed amount (\$). * **Discount Value:** Enter the percentage or fixed amount of the discount. * **Products or Categories:** Specify the products or categories the discount applies to. * **Show as Promo Banner:** Choose whether to display the discount as a promotional banner. After entering the discount information, click **Save Changes**. The automatic discount is now active and will be automatically applied during the checkout. ## Shipping Discounts Based on Order Value You can offer shipping discounts based on the total order value to incentivize larger purchases. Here's how to set up shipping discounts: Navigate to **Online Shop > Shipping & Pickup** and click **Add Shipping Discount**. Configure the discount settings: * **Discount Type:** Choose between percentage (%) or fixed amount (\$). * **Discount Value:** Enter the percentage or fixed amount for the discount. * **Show as Promo Banner:** Decide whether to show the discount as a promotional banner. Click **Save Changes** to activate the shipping discount rule. > [!NOTE] > > Note that only one shipping discount rule can be active at a time, and it will apply to all shipping methods. The shipping discount will be automatically applied to the shipping amount during checkout. If enabled, the promo banner will appear on your online store. ## Store Coupons Store coupons provide customers with discounts in either a percentage (%) or fixed amount (\$). Coupons can be activated by customers using a unique code. Here's how to create store coupons: Navigate to **Online Shop > Coupons** and click **Add Coupon**. Fill out the coupon details: * **Coupon Name:** Give a name to the coupon. * **Coupon Code:** The unique code used on the checkout page. * **Coupon Type:** Choose between percentage (%) or fixed amount (\$). * **Coupon Value:** Enter the value of the coupon discount. * **Products or Categories:** Specify where the coupon can be applied. * **Usage Limit:** Set the number of times the coupon can be used. * **Show as Promo Banner:** Decide whether to display the coupon as a promotional banner. Click **Save Changes** after entering the coupon information. The store coupon is now available for customers to use during checkout. # Multi-Currency Source: https://docs.hitpayapp.com/store/multi-currency Enable multiple currencies in your online store to offer a localized shopping experience. ## Overview The Multi-Currency Converter lets you display product prices in different currencies so customers can shop in the currency they are most familiar with. This improves the shopping experience and helps increase conversions from international buyers. Navigate to **Online Store > Settings > Store Settings > Multi-Currency Converter** to configure your currency options. ![Multi Currency](https://mintcdn.com/hitpay/IrpmKadfeIsz4Z5y/images/Multi-Currency-Converter.png?fit=max\&auto=format\&n=IrpmKadfeIsz4Z5y\&q=85\&s=a650b4a25584d28eb39e22e29bec5538) ## Supported Currencies You can choose which currencies will be available to customers in your store. * Your home currency is always included and cannot be removed. * Additional currencies can be selected from a dropdown list. * Each currency appears in a table with the following settings: ### Exchange Rate Mode * **Automatic**\ HitPay automatically fetches FX rates from partnered providers, and the dashboard displays the last updated timestamp. * **Manual (Fixed Rate)**\ You enter your own exchange rate for full pricing control. ### Price Adjustment You may apply an optional percentage-based markup on top of the selected exchange rate.\ Useful for handling fees or FX fluctuations.\ Works with both automatic and manual rates. ## Default Currency This is the currency shown when a customer first visits your store. You can either: * Select a default currency from your supported list, or * Enable **Default currency based on customer’s location** If the customer's country matches one of your supported currencies, the storefront will automatically switch to that currency.\ If not, the default currency will be used. ## Customer Storefront Experience ![Multi Currency](https://mintcdn.com/hitpay/0mJffGwSt0xM1d0j/images/Storefront-Multi-Currency.png?fit=max\&auto=format\&n=0mJffGwSt0xM1d0j\&q=85\&s=4a310500bfece485fd3e057e80b50172) ### Automatic Currency Detection When enabled, the system detects the customer's location and automatically displays prices in their local currency (if supported). ### Manual Currency Selection Customers can switch currencies manually using the currency dropdown in your store’s header. ### Browsing Products Product prices and discounts appear in the selected or auto-detected currency, including any adjustments or markups set by the merchant. ### Add to Cart and Checkout Prices remain consistent throughout the entire purchase flow.\ Cart and checkout totals are shown in the selected currency. ### Order Confirmation The confirmation page and customer-facing emails display amounts in the currency chosen by the customer. ## FAQs > **Are orders charged in the selected currency?** > > Yes. Customers are charged in the currency displayed on the storefront at checkout. > **Will I see both currencies in the admin order view?** > > Yes. You can see: > > * The amount charged in the customer’s chosen currency > * The approximate equivalent in your home currency > **How are automatic FX rates calculated?** > > Automatic FX rates are pulled from HitPay’s partnered FX providers. These rates update periodically and the dashboard shows the latest timestamp. > **Can I override or manually set the FX rate?** > > Yes. You can switch a currency to Manual mode and enter your own fixed rate. > **If I switch to manual FX rates, will they update automatically later?** > > No. Manual rates stay fixed until you change them yourself. This ensures predictable pricing. > **Does the price adjustment apply before or after the FX rate?** > > The price adjustment percent applies on top of the base FX rate. For example, if 1 SGD equals 40 PHP and you set a 5 percent adjustment, the display rate becomes 42 PHP. > **Will customers see the FX rate used in the calculation?** > > No. Customers only see the final product price. FX rates, adjustments, and rounding logic are visible to merchants only. # Order Form Customization Source: https://docs.hitpayapp.com/store/order-form-customisation Customizing the Order Confirmation Page for your Online Store ## Overview The order confirmation page is an essential part of your online store as it provides customers with a final overview of their order details before completing the purchase. HitPay allows you to customize this page to suit your business needs, enabling you to add extra questions, adjust phone number and remarks options, and create a tailored experience for your customers. ## Customizing the Order Form ### Accessing the Order Form Customization Settings * Log in to your HitPay Web Dashboard. * Navigate to **Online Shop > Store Settings**. ![Step 1](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Order-Form-1.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=25a9f5a62b819cb6cde95445d3cac264) ### Configuring Phone Number and Remarks Options * Scroll down to the Order Form Customization section at the bottom of the settings page. * To include the phone number field on the order confirmation page, check the Include checkbox next to "Phone Number." This will display the phone number field for customers to fill out. If you want the phone number field to be mandatory, check the Mandatory checkbox next to "Phone Number." This ensures that customers must provide their phone number before proceeding. ![Step 2](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Order-Form-2.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=712e4411194fedf63ac312a91f3d1369) * Similarly, you can adjust the remarks option. Check the Include checkbox if you want to display the remarks field. Check the Mandatory checkbox if you want customers to provide remarks before placing their order. ### Adding Additional Questions To add extra questions to the order confirmation page, click on Add additional field in the Order Form Customization section. A pop-up window will appear, prompting you to enter a **Question Title** and select a **Question Type** from the available options: * **Text:** Customers can provide short text-based answers. * **Long Text:** Customers can provide longer text-based answers. * **Dropdown:** Customers can select an option from a predefined list. * **Radio:** Customers can choose a single option from a predefined list. * **Checkbox:** Customers can select multiple options from a predefined list. ![Step 3](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Order-Form-3.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=1f565a4a5121682392d9a0ca205aa924) Depending on the selected question type, you can define options, choices, or text fields accordingly. After configuring the question, you can choose whether the question should be Mandatory or not. Click **Add Field** to include the new question on the order confirmation page. ### Review and Testing Once you have made the necessary changes and additions, click **Save Changes** to save your customizations. To observe how your customized order confirmation form looks, go to your Storefront and visit the Order Confirmation page. # Orders Source: https://docs.hitpayapp.com/store/orders Managing orders for your online store # Overview Managing orders efficiently is crucial to ensure a seamless customer experience in your HitPay Online Store. The Orders page allows you to view and handle incoming orders, making the order fulfillment process straightforward. You can access the Orders page through the HitPay web dashboard by navigating to **Online Shop > Orders**. ![Orders](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Orders.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=085bf338aadcf9507b6227618b3c5d5e) ## Fulfilling Orders After customers place orders in your online store, you'll receive order confirmation notifications via email and push notifications on the HitPay mobile app. To efficiently fulfill orders and mark them as completed, follow these steps: * Navigate to Orders: Access the Orders page by going to **Online Store > Orders** from the HitPay Dashboard. * View Pending Orders: On the Orders page, select the *"Pending"* tab to view a list of pending orders that require your attention. * Filter and Sort: If you have multiple pending orders, use the filters at the top right corner to sort orders by various criteria such as order ID, customer email, products, order date, total amount, fulfillment status, and payment status. * Viewing Order Details: Click on an order to view its detailed information, including the products ordered, customer details, and order total. * Mark Order as Shipped/Picked Up: In the order details view, click the **Mark As Shipped** or **Mark as Picked Up** button based on the fulfillment status. * Update Order Status: A dialog box will appear where you can enter shipping tracking details. Select "Mark as Shipped" or "Delivered" and submit the information. This step is crucial for accurate order tracking and customer communication. > [!NOTE] > > **Tip:** Utilize this function not only for order fulfillment but also to provide order status updates to customers before shipping. Be cautious not to select "Mark as Shipped/Delivered" for status updates. * Order Fulfilled: Once you complete the above steps, the order will be marked as fulfilled or completed. * Customer Notification: An email notification will be sent to your customer, informing them that their order has been fulfilled. ## More Actions When dealing with orders in your HitPay Online Store, you have the option to perform various actions beyond the essential order fulfillment process. These additional actions can be accessed through the **More Actions** dropdown menu, providing you with extra functionalities to enhance your order management capabilities. To access these options, follow these steps: 1. Navigate to Orders: Start by navigating to the Orders Page within your HitPay Online Store. 2. Select Order: Click on the specific order that you want to manage. This will open the order information page. 3. More Actions Dropdown: Locate the top right corner of the order information page. There, you'll find the **More Actions** dropdown menu. Within the More Actions dropdown, you'll find a list of supplementary actions that you can perform on the selected order: * **Print Order:** Generate a printable version of the order for your records or for further processing. * **Resend Order Confirmation:** Resend the order confirmation email to the customer, providing them with a duplicate confirmation for their reference. * **Cancel Order:** Cancel the order if necessary, ensuring proper communication with the customer about the cancellation. * **Issue Refund:** Initiate the refund process for the order, if applicable. These additional actions offer you greater flexibility in managing your orders and addressing various scenarios that may arise during the order lifecycle. Utilize these options as needed to ensure a smooth and efficient order management process in your HitPay Online Store. # Product Customisation Source: https://docs.hitpayapp.com/store/product-customisation Add custom questions and options to products so customers can specify their preferences at checkout. ## Overview You can now capture specific customer preferences and requirements for your products with HitPay's product customisation feature. This allows you to add tailored questions and options to your products, enabling a more personalised shopping experience for your customers. This guide will show you how to set up and manage product customisations effectively. ![Customisation](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Product-add-on.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=76d1763979652b67f9f5deb7969634d4) ## Product Variants vs Product Customisations ### Product Variants * **Definition:** Different versions of a product with distinct attributes and unique SKUs. * **Usage:** Use this when variations affect the SKU, price, or inventory. * **Example:** A t-shirt available in different sizes (S, M, L) and colors (red, blue, green). ### Product Customisations * **Definition:** Add-ons or personalised options that enhance the base product without changing its core identity or SKU. * **Usage:** Use this for options or inputs like custom engravings, specific instructions, or additional toppings that don’t create a separate SKU but may influence the price. * **Example:** Custom engraving on a watch, extra toppings on a pizza, or instructions for a juice. ## How to Set Up Product Customisations ### Adding Product Customisations 1. Go to **Online Shop > Products > All Products** and select a product to add or edit. 2. Scroll to the **Product Customisation** section below the product variants. 3. Click **Add New** to create a new option or select an existing one. ### Adding a New Customisation Option 1. Fill out the fields in the popup: * **Title:** Enter the customisation title (e.g., "Extra Toppings"). * **Option Type:** Choose the input type (Checkbox, Radio Button, Dropdown). * **Option Values:** Enter values and prices if applicable (e.g., Apple, Orange, Carrot). * **Required Checkbox:** Specify if the option is required or optional. * **Selection Limits:** Set min/max selections (applicable to Checkbox and if the option is required). 2. Click **Save Changes** to add the customisation option. 3. The option will appear in the options list, where you can edit or remove it as needed. ### Managing Customisations * Navigate to **Online Shop > Products > Customisation** to view all customisation options. * You can: * **Edit:** Update fields with changes affecting all associated products. * **Duplicate:** Create a copy of an existing option. * **Delete:** Remove the option entirely. ## Customer Experience ### Selecting Customisations 1. Your customers navigate to the product detail page. 2. Customers complete all required fields and add the product to their cart. Validation ensures all requirements are met. ### Checkout and Order Details 1. Customisations are displayed below the product name in the cart and checkout pages. 2. Customers receive an order confirmation email with all selected options. # Products Source: https://docs.hitpayapp.com/store/products Add products for your online store ## Overview This section covers various aspects of managing products on HitPay’s Web Dashboard. Whether you’re adding individual products or importing products in bulk, we’ve got you covered with easy-to-follow instructions. ## Products Adding products on HitPay is a straightforward process that allows you to sell your products on your online store. You have the option to add products one by one or by using the bulk upload option to streamline the process. This way, you can have your products ready for sale in no time. This guide will walk you through everything you need to know about products and the step-by-step process of adding products on into your online store. ![Products](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Products.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=129920b193865e3d9b7985691b37e790) ### Adding Individual Products From the web dashboard, navigate to **Products > Products**, click on the **Add Products** button to access the Add Product page. You have the option to add: * Product images * Multiple product [categories](/store/categories) to enhance customer navigation * Product variants such as size or colour * Inventory status to add an order limit for a product and create urgency Complete the required product fields and click the **Publish** button when done. ### Product Variations You can add unlimited variations to each of your products on HitPay. Variations can include size, color, material or any other custom variation. ![Product Variants](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Product-Variants.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=d014ccc1dc13a09e75ec3425d74381dd) You can add variants by toggling **Enable Variants** while creating a product or in the **Edit Product** page which can be accessed by navigating to **Products > Products** and clicking on the product you'd like to edit. Click on Size, Color, or Material to add variants. Note that these are placeholders and you can add your own type of variant > [!NOTE] > > You can click on the **"Others"** button to add your own custom variant type You can set different prices for different variants of the same product. Hit the **Publish** or **Save** button after adding your product variations and other product details. ### Featured Products Featured Product option allows highlighting specific products that can be promoted easily on your online store. Enabling the featured product option for different products in Hitpay turns all of your featured products to show every where at first. To make a product as a featured product: * Navigate to the **Create/Edit Products** page and enable the **Featured Products** checkmark. * Click **Publish/Save** to save your changes. ### Product on Sale Encourage purchases by visibly demonstrating the savings customers will enjoy on sale items. To showcase your products on sale and display price comparisons: * Navigate to the **Create/Edit Products** page. * Activate the **On Sale** option to signal that the product is offered at a discounted rate. * Input the **Price Before Discount**, ensuring it is set higher than the selling price. * Specify the **Selling Price** to indicate the current sale price of the product. * The system will automatically display the price before discount with a strikethrough next to the selling price on your online store, allowing customers to easily see the price comparison and savings. ### Shipping or Pickup Required To ensure customers can choose a delivery method at checkout, leave the 'Shipping or Pickup Required' option enabled to mark your products as either shippable or available for pickup. If the product is a service or digital product that doesn’t require delivery, disable this option. If you're using weight-based shipping calculations, be sure to specify the product weight. * Navigate to the **Create/Edit Products** page. * Toggle the **Shipping or Pickup is Required** option to enable this feature. * If enabled, a new option for **Product Weight** will be added at the product level and variant level, allowing you to specify the weight. This weight will be used to calculate shipping costs during the checkout process. * Click **Publish/Save** to save your changes. ## Open Amount Products You can add **Open Amount** products to your online store. These products let customers enter the amount they want to pay at checkout—ideal for businesses that accept donations, offer services with variable pricing, or sell products where pricing is flexible. Unlike fixed-price products, Open Amount products offer more freedom for your customers while still benefiting from inventory tracking and product reporting. ### Common Use Cases Open Amount products are especially useful for: * **Donations**: Perfect for non-profits or fundraisers collecting contributions online. * **Custom Services**: Great for consultations, coaching, or creative work where pricing depends on the service. * **Digital Content**: Artists or creators can let buyers choose how much to pay for downloads or exclusive content. * **Workshops & Events**: Offer flexible pricing tiers for classes or events with sliding scale contributions. * **Variable Charges**: Businesses that need to collect different amounts (e.g. vendors paying for different booth sizes via a single link). ### How to Create an Open Amount Product 1. **Go to Products**: Navigate to the **Products** section in your HitPay dashboard. 2. **Create or Edit a Product**: * Add a new product or edit an existing one. * Select the **Open Amount** option. 3. **Save the Product**: The open amount product will now appear in your storefront. 4. **Customer Checkout**: * Customers will see a field to enter their desired amount before checkout. ### Customize Button Label and Admin Fee You can further tailor the experience: * Customize the **Add to Cart**, **Buy Now**, and **I want to pay** labels to match your use case (e.g. "Donate", "Contribute", or "Enter your amount"). [Learn how to customize these settings](store/buttons-label) * Apply a **percentage-based admin fee** to Open Amount products if needed. [Learn how to apply admin fees](/payments/admin-fees) ## Performing Bulk Actions HitPay's Web Dashboard empowers you wth the ability to perform bulk actions on multiple products at a time. You have the ability to perform these actions: * Publish products * Unpublish products * Delete products To perform bulk actions, navigate to **Products > Products** on the HitPay dashboard, mark the products you'd like to edit by clicking on the **checkbox** right next to the product names and click the **More actions** button on the top left corner of the products list to open a dropdown menu of the possible actions. ## Inventory Management To keep track of an item's inventory, HitPay offers an intuitive inventory tracking feature that can be enabled by going to the **Create/Edit Products** page and turning on the **Manage Inventory** toggle * After enabling inventory management for a product, you can update the **Available Quantity** to store the product's inventory. > [!NOTE] > > (Optional) You can also set a low quantity alert. You will receive an email if the product's quantity reaches the set quantity. * Continue Selling When Out of Stock: Sometimes a product might be marked out of stock but you would like to continue selling anyway, simply check the **Continue selling when out of stock** checkmark. ## One Page Checkout The One Page Checkout feature lets customers view product details, choose options like variations or quantities, and complete their purchase on a single page. It eliminates multiple steps like cart review and separate checkout screens, making the process faster and simpler. This feature is ideal for: * Single-product purchases * Digital products or services * Direct product links from social media or messaging apps To enable it, you can generate a unique link with the query `?express_checkout=true`, which takes customers straight to the one-page experience without showing other online shop pages. ### Benefits * Faster checkout for better conversions * Reduced drop-offs from fewer steps * Ideal for mobile and social sharing You can share the One Page Checkout link across platforms like Instagram, WhatsApp or email to simplify the customer journey. ### How to Generate the One Page Checkout Link To create the express checkout experience: 1. **Go to a Specific Product**: Navigate to your product in the dashboard. 2. **Click on Share**: Click the **Share** button. 3. **Copy the Express Checkout Link**: Copy the link with `?express_checkout=true` appended. 4. **Share the Link with Customers**: Distribute the link via your preferred channels (e.g. Instagram, WhatsApp or email). # SEO Settings Source: https://docs.hitpayapp.com/store/seo-settings Optimizing Your Online Shop SEO ## Overview Optimizing your online shop's SEO is an important aspect for boosting its visibility on search engines. You can seamlessly enhance your shop's search engine performance by customizing your meta homepage title and description and submitting your sitemap to Google. ![Seo Settings](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Seo-Settings.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=2ca8f1a9ae2a6652972d46a6d1ca6c79) ## Adding Meta Title and Description Navigate to **Online Shop > Settings > SEO** in your dashboard. Click on **Optimize online store** button to start optimizing your online shop's SEO Enter the necessary details: * Meta Homepage Title: In the "Meta Homepage Title" field, enter a concise and descriptive title for your homepage. This title will be displayed prominently in search engine results when users discover your shop. * Meta Homepage Description: In the "Meta Homepage Description" field, provide a brief yet engaging description of your shop's offerings. This description will appear below the title in search results and should entice users to click on your link. Preview: As you input your meta title and description, a real-time preview will be displayed, showing you how your shop will appear in Google search results. Utilize this preview to fine-tune your title and description for maximum impact. ## Submitting a Sitemap to Google ### Verifying Your Online Shop with Google Search Console Before submitting your sitemap to Google, you must verify your online shop with Google Search Console. * Visit Google Search Console: Access [Google Search Console](https://search.google.com/search-console) and sign in with your Google account. * Enter Your Web Address: In the Google Search Console, enter the web address of your online shop as a "URL prefix property type." It should look like "[https://hitpay.shop/shop\_slug](https://hitpay.shop/shop_slug)" * Choose the HTML Tag Method: From the list of different verification methods, select the "HTML Tag" method. * Copy the Meta Code: A meta code will pop up on the screen. Copy this code as it is. * Open the HitPay Dashboard: In a new browser tab, open your HitPay dashboard and navigate to the "Online Shop > Settings" page. * Paste Your Meta Tag: Scroll down to the "SEO > Sitemap verification tag" section and paste the meta tag code that you copied from Google Search Console into this field. * Save the Changes: After pasting the code, click on "Save Changes" button to apply the verification meta tag to your online shop. ## Adding a New Sitemap Now that your online shop is verified on Google Search Console, you can submit your sitemap: * Access Google Search Console: Log in to Google Search Console and select your online shop property. * Sitemaps: In the left-hand menu, click on "Sitemaps." * Add a New Sitemap: Click the "Add a new sitemap" button. * Enter Sitemap URL: In the "Add a new sitemap" field, add sitemap.xml to your online shop URL. * Submit: Click "Submit." * Confirmation: Google will confirm the submission of your sitemap. Allow some time for Google to crawl and index your pages. # Setup Online Store Source: https://docs.hitpayapp.com/store/setup-online-store Creating and Setting Up an Online Store In HitPay ## Overview Creating an online store with HitPay offers you a seamless and efficient way to sell your products and services online. With built-in inventory and order management, you can establish your digital storefront and start reaching your customers in no time. Let's dive into the simple steps to set up your HitPay online store. ## Creating an Online Store **1. Access Your Online Shop Dashboard** To begin, navigate to your HitPay account and locate the "Online Shop" section. Click on "Dashboard" to access the tools needed to build and manage your online store. ![Online Shop Dashboard](https://mintcdn.com/hitpay/l-n8tkdG_LR85WBs/images/Online-Store.png?fit=max\&auto=format\&n=l-n8tkdG_LR85WBs\&q=85\&s=b40f4fad783387c44f5ce199806a9b21) **2. Set Up Your Home URL** Define the home URL for your online store. This is the web address where customers will visit to explore and purchase your products. A well-chosen URL enhances your brand's online presence. **3. Choose Your Store Theme** Select a theme that best aligns with your brand identity and products. A visually appealing theme enhances user experience and creates a professional online shopping environment. **4. Add Products to Your Store** Start building your online catalog by adding your products. Each product entry should include detailed descriptions, clear images, and accurate pricing. If you're starting from scratch, HitPay provides a guided process to assist you. If you don't have any products yet, click **Next step**. **5. Configure Shipping or Pickup Options** Add the appropriate shipping or pickup options for your online store. This step ensures that your customers have a clear understanding of how their purchases will be delivered. If you're offering digital products click **Next step**. **6. Setup Payment Methods** Enable/disable the payment methods for your Online Store by updating your Integration Under Payment Tab, **Settings > Payment Methods**. **7. Launch Your Online Store** Congratulations, your HitPay online store is now ready to go live! Share the store URL with your potential customers through various online communication platforms. This is your opportunity to start attracting visitors and converting them into shoppers. By following these straightforward steps, you can establish a fully functional online store on HitPay, providing your customers with a convenient and user-friendly shopping experience. # Shipping and Pickup Source: https://docs.hitpayapp.com/store/shipping-pickup Configuring Shipping and Pickup Settings for Your Online Store ## Overview Setting up shipping and pickup options for your HitPay online store is essential to provide a seamless shopping experience for your customers. Whether you're shipping products locally or globally, offering various delivery methods, or enabling customers to choose pickup options, HitPay's shipping settings allow you to tailor your online store to meet your specific business needs. ![Shipping & Pickup](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Shipping-Pickup.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=0ae4a18a87bcaca7151d85a26cd0f353) ## Configuring Shipping Settings To configure shipping settings for your HitPay online store, follow these steps: **Step 1: Navigate to Shipping & Pickup:** * Access the shipping settings by going to your HitPay Web Dashboard and navigating to **Online Shop > Shipping & Pickup**. **Step 2: Enable Shipping and Add a Shipping Method:** * Click on the "Shipping Method" toggle button to activate shipping options for your online store. * Click on the **Add Shipping Method** button to define a new shipping method. **Step 3: Fill Out Details and Create Shipping Method:** When adding a shipping method, you’ll need to fill out the following sections: #### a. Method Name * Provide a clear and descriptive name for the shipping method to help identify it easily (e.g., "Standard Shipping" or "Express Delivery"). * The method name will be displayed to customers during the checkout process. #### b. Applicable Countries and Regions * Select the countries and specific regions within those countries where this shipping method will be available. #### c. Calculation & Rate * Choose how the shipping costs will be calculated: * **Flat Fee**: A fixed rate applied to all orders regardless of weight or quantity. * **Fee Per Unit**: A rate applied based on the number of units ordered. * **Weight-Based**: A rate calculated based on the total weight of the order. For this option, you must ensure that each product in your store has a weight assigned, as the system uses these weights to determine shipping costs. For more information, refer to the [Shipping or Pickup Required section](/store/products#shipping-or-pickup-required). * After selecting the calculation method, input the relevant rates and ranges to be applied. #### d. Description * Optionally, add a description for this shipping method to provide additional context or information to customers (e.g., "Delivered within 3-5 business days"). * The description will be displayed to customers during the checkout process. **Step 4 (Optional): Enable Delivery Date and Time Slots:** * Enhance the customer experience by offering the option for customers to choose their preferred delivery date and time. This can be particularly useful for businesses offering time-sensitive products or services. * After enabling this feature, customers will be able to select their preferred delivery date and time slot during the checkout process. Once you've filled out the required details, click on the **Create Shipping Method** button to save your settings. After configuring your shipping settings and saving your changes, the newly added shipping methods will be available during the checkout process. Customers will first select their country and enter their address details. Only countries with available shipping methods will be displayed at checkout. Once the address is entered, customers will see the available shipping options based on their entered address. ## Setting Up and Managing Pickup Locations for Your Store 1. Navigate to **Online Shop > Shipping & Pickup > Pickup**. 2. Click on the **"Activate Pickup Method"** checkbox to activate pickups for your store. 3. Click on **+ Pickup Location**. 4. Enter the pickup name and select a location from the dropdown menu labeled **"Locations"** which lists all available locations from **Online Store > Locations**. * If the desired location is not listed, you can add a new location directly from this dropdown menu by clicking on 'Add New'. 5. Repeat steps 3 and 4 to add multiple pickup locations. 6. To manage existing pickup locations, navigate to the **Pickup Locations** tab. * **Active/Inactive Locations:** Active locations will appear as an option on the checkout page, and inactive locations will not. ## Setting Time Slots For Pick-Ups & Shipping Methods **Shipping** 1. When you're in the "**Add/Edit Shipping Method**" page, click on the **"Delivery date and time slots"** toggle to enable time slots for the shipping method. 2. Select the day(s) allocated for shipping. 3. Set a time slot for the selected days. > [!NOTE] > > **(Optional)** Specify the number of slots available; once all slots are filled, customers can't choose that time slot. 4. Click **Save/Create Shipping Method** to save your changes. **Pickups** 1. While in the main Shipping settings page, click on the "Enable Time Slots for Pick-Up" toggle to enable time slots. 2. Select the day(s) allocated for pick-ups. 3. Set a time slot for the selected day. > [!NOTE] > > **(Optional)** Specify the number of slots available; once all slots are filled, customers can't choose that time slot. 4. Click **Save Pickup Method** to save your changes. ## Calendar Settings for Pick-Up or Shipping Methods After enabling time slots, you can configure advance calendar settings for the pickup or shipping mode. These settings include advance days, cutoff time, maximum days, and blackout dates: 1. **Advance Days:** The Advance Day setting allows you to specify the number of days required for order preparation before shipping or pickup. This ensures that you have enough time to fulfill the orders. To configure advance days: * Enable the "Advance Day" option. * In the field provided, enter the number of days required for order preparation. > [!NOTE] > > The current day is day 1. If orders are fulfilled immediately, leave advance settings disabled. 2. **Cutoff Time:** The cutoff time option is available only when the Advance Day setting is enabled. It allows you to set the latest time of day by which customers can place their orders for shipping or pickup. To configure cutoff time: * Enable the "Cutoff Time" option * Enter the desired time in the provided field 3. **Maximum Days:** The Maximum Days setting specifies the time frame in which customers can place their orders. Dates beyond this specified time frame will not be available for selection during the checkout process. To configure maximum days: * Enable the "Maximum Days" option * In the "Days" field, enter the maximum number of days within which customers can place their orders. > [!NOTE] > > This restricts the available dates for pickup during checkout. 4. **Blackout Dates:** The Blackout Dates setting allows you to specify dates when the shipping or pickup option will be unavailable, such as holidays or non-working days. To configure blackout dates: * Enable the "Blackout Dates" option * In the "Blackout Dates" section, enter the start and end dates of the blackout period * Click on the **+** button to specify additional blackout periods if needed * To remove a blackout date, click on the "Delete" icon next to the respective date Your configured settings will be displayed on the checkout page of your online store. ## Conclusion Setting up shipping and pickup options in your HitPay online store is an integral part of providing a convenient and efficient shopping experience for your customers. By following the steps outlined above, you can tailor your shipping methods to match your business's needs and ensure that customers have clear information about their delivery options. # Store Design Source: https://docs.hitpayapp.com/store/store-design Customizing the design of your online store ## Overview Customizing your online store's design allows you to create a unique and engaging shopping experience for your customers. HitPay offers several customization options to help you tailor your store's appearance to match your brand and preferences. From adding your company logo to defining the layout and colors, these customization options empower you to make your online store truly yours. ![Store Design](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Store-Design.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=cb5904a99af04723504bb80e357aff3d) The following customization options are available to HitPay online store users: * [Customize Store Design](#customization-options) * [Customizable Announcement for Promotions](#customizable-announcement-for-promotions) * [Customizing the Header and Navigation ](#customizing-the-header-and-navigation) * [Adding a Store Banner](#adding-a-store-banner) * [Adding Online Store Sections](#adding-online-store-sections) * [Customizing Your Footer](#customizing-your-footer) * [Customizing Font, Color and Card Appearance](#customizing-font-color-and-card-appearance) * [Adding Pages and Sections ](#adding-pages-and-sections) ## Store Design Structure The store design includes a unified navigation system with the following pages: * **Homepage** * **Pages** * **Link in Bio** ### Global Components The following components apply globally across all pages: * Announcement * Header * Footer ## Customization Options To further customize your Store's appearance, you can navigate to the **Store Design** page by going to **Online Store > Store Design** in your Web Dashboard. The following customization options are accessible through the store design page: ### Customizable Announcement for Promotions Highlight your store's special offers and promotions: * Navigate to Homepage > Announcement * Choose whether to make the announcement promotion closable. * Customize the announcement content. * Adjust the background color and text color. ### Customizing the Header and Navigation The header and navigation menu help define your store’s branding and improve customer navigation. * Navigate to **Homepage > Header**. * Under **Settings**: * Upload your logo and select its width. * Choose how to align your navigation menu and logo. * Click on **New Menu** to create a navigation menu. * Add an existing page or an external link to the menu. * Rearrange the menu items by dragging and dropping them. * Under **Appearance**: * Customize the background color and text color. ### Adding a Store Banner Highlight your store’s special offers and promotions: * Navigate to **Homepage > Banner**. * Upload and customize your banner image. * Choose full width, boxed, or half-width display. * Adjust alignment and overlay text options. ### Adding Online Store Sections Enhance your online store with customizable sections. Follow these steps to set up the **Products**, **Categories**, **Text**, **Text & Image**, **Gallery** and **Embed Code** sections: #### Products Section Define how your products appear on your storefront: * Navigate to **Homepage or Pages > Sections**. * Click on **+ New Section** and select **Products**. * Choose which products to display: * **All Products** * **Featured Products** * **Product Categories** * **Pick Specific Products** * Under **Settings**: * Select the layout type (**Carousel** or **Grid**). * Choose how many columns to display. * Select the product image shape (**Landscape, Square, or Portrait**). * Choose whether to limit the number of displayed products. * Choose whether to display or hide the **Categories Filter**. * Under **Content**: * Add a section title and description to introduce the products. * Under **Appearance**: * Customize the background color and text color for consistency with your store’s theme. #### Categories Section Define and display product categories on your storefront: * Navigate to **Homepage or Pages > Sections**. * Click on **+ New Section** and select **Product Categories**. * Choose which categories to display. * Under **Settings**: * Select the layout type (**Carousel** or **Grid**). * Choose how many columns to display. * Select the category image shape (**Landscape, Square, Portrait, or Circle**). * Choose whether to display or hide the **View All Categories** page. * Under **Content**: * Add a section title and description to introduce the categories. * Under **Appearance**: * Customize the background color and text color for consistency with your store’s theme. #### Text Section Share important messages, promotions, or information with a flexible text section: * Navigate to **Homepage or Pages > Sections**. * Click on **+ New Section** and select **Text**. * Choose how many columns to display your text. * For a single column, select the text alignment: Split or Center. * Customize the title, description, and add a Call-to-Action button for each column. * Adjust text alignment and color options to fit your store’s aesthetic. #### Text & Image Section Combine text and images to create engaging and visually compelling content: * Navigate to **Homepage or Pages > Sections**. * Click on **+ New Section** and select **Text & Image**. * Choose the image width for the text and image: Half Width or Full Width. * Select the text alignment. * Upload an image. * Under **Content**, add a title and description. Optionally, include a Call-to-Action button linked to a page or product. * Customize the background color and text color for alignment with your store's theme. #### Gallery Section Showcase your products, events, or customer reviews with the new gallery section: * Navigate to **Homepage or Pages > Sections**. * Click on **+ New Section** and select **Gallery**. * Choose from three layout types: **Carousel**, **Masonry**, or **Grid**. * Select how many columns to display the gallery on web and mobile. * Upload your images and optionally assign captions, external links, and the option to show a lightbox when the image is clicked. * Add a section title and description to explain the gallery's purpose. * Customize the background color and text color to align with your store’s branding. #### Embed Code Section Embed custom content, such as newsletter sign-up, map, social media feed, or interactive survey into your online store using the **Embed Code** section: * Navigate to **Homepage or Pages > Sections**. * Click on **+ New Section** and select **Embed Code**. * Choose the alignment for your embedded content: **Center** or **Split**. * Customize the background color and text color to align with your store’s branding. * Add a section title and description to provide context for the embedded content. * Enter or paste your embed code directly into the **Code** field to display the external content on your store. By customizing these sections, you can create a more engaging and visually appealing online store that reflects your brand’s identity and enhances the customer experience. ### Customizing Your Footer Include a 'Contact Us' section with phone, WhatsApp, and Telegram links, as well as a 'Follow Us' section featuring email, other websites, and social network links. * Click on Homepage > Footer Content. * Find the 'Footer Link' section and click on it. * Click on 'Add New Menu' and fill in your Phone number, WhatsApp number, or Telegram. * Locate the "Social Media" section and click on it. * Click on 'Add New Menu' to input your links to your social network profiles. ### Customizing Font, Color and Card Appearance Enhance your online store's user experience by customising your store appearance * Click on Style * Choose from predefined styles or customize your own. * For custom style you can customize fonts, background colors, button appearance, and card appearance. ### Adding a 'Link-in-Bio' Link-in-bio is a feature that allows you to create a single page that acts as a hub for all of your important links. Instead of having to constantly update your bio links on social media or elsewhere, you can simply direct people to your link-in-bio page. From there, they can easily access all of the resources that you want to share with them. * Click on Link-in-Bio. * Click on 'Icon Links > Add More' to add links you would like to highlight as icons. * Click on 'Button Links > Add More' to add links that you wish to showcase as buttons. ### Adding Pages and Sections Pages allow you to create structured content beyond your homepage, helping you organize information such as **About Us**, **FAQs**, or **Custom Landing Pages**. Each page can contain multiple sections, giving you flexibility in design and layout. ### Pages Each page consists of: * **Page Title** – The title displayed at the top of the page. * **Banner** – A large image or visual element at the top of the page. * **Page Content Sections** – Customizable sections that can include text, images, product listings, and other content. #### To add a new page: 1. Click on **New Page**. 2. Provide a **title**, **URL slug**, and choose whether to add it to the navigation bar. 3. Click **Publish** to make the page live. Once created, you can add sections to the page to customize its layout and content. ### Customising the Categories Page You can customise the layout and content of your **All Categories Page** or individual **Category Pages** to better reflect your brand and guide customers through your product catalog. ### What You Can Customise Each categories page can include: * **Title** – Displayed at the top of the page. * **Banner** – An optional image or visual to showcase your store or key collections. * **Content Sections** – Add flexible sections such as featured collections, product carousels, images, or text. #### To Customise a Categories Page: 1. Go to **Online Store** > **Categories**. 2. Select **All Categories** or choose a specific category. 3. Click on the category to begin customising. 4. Add, remove, or rearrange sections to fit your layout. 5. Click **Publish** to apply changes to your live store. > [!NOTE] > > Changes made to a specific category page will apply to all specific category pages. ## Conclusion Once you're satisfied with the changes you've made to your store's design, remember to click the **Update** button to apply them. You can then return to the HitPay Dashboard. By customizing your online store's design, you create a visually appealing and branded shopping environment that resonates with your customers and enhances their shopping journey. # Store Settings Source: https://docs.hitpayapp.com/store/store-settings Configuring Store Settings for Your Online Store ## Overview The store settings page allows you to manage various aspects of your online store's functionality. From enabling your store to setting up a password-protected storefront, customising messages, and managing sold-out products, these settings help you tailor your store to meet your business needs. ## General Store Settings ### Accessing the Store Settings * Log in to your HitPay Web Dashboard. * Navigate to **Online Shop > Store Settings**. ![Store Settings](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Store-Settings.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=8bcbb59806741b8e1ff2e00cd49def45) ### Store Settings Options #### Store is Enabled * **Enable or Disable Your Store:** Use this option to enable or disable your online store. When disabled, your store will not be accessible to customers. #### Password is Required to Access the Store * **Password-Protected Storefront:** Create a password for your online shop, allowing only visitors with the password to access your store. This is useful for pre-launch phases, private sales, or B2B sales. #### Sold Out Products * **Hide Sold Out Products:** Choose whether to hide products that are sold out from your storefront. #### Custom Thank You Message * **Custom Thank You Message:** Enter a message that will be displayed to customers after they complete their order. This can be used to thank customers for their purchase or provide additional information. #### Redirect After Order Completion * **Redirect URL:** Set a URL to which customers will be redirected after they complete their order. This can be used to guide customers to a specific page, such as a survey, promotion, or your own website. #### Seller Notes * **Checkout Page Message:** Enter a message that will be displayed on the checkout page. This can be used to provide important information or instructions to customers before they complete their purchase. By configuring these settings, you can ensure your online store operates smoothly and provides a tailored experience for your customers. Be sure to save any changes you make to apply the new settings to your store. # Tax Settings Source: https://docs.hitpayapp.com/store/tax-settings Managing Tax Rates on HitPay ## Overview Managing taxes is an essential part of your business operations. You can effortlessly create and manage tax rates directly from HitPay Dshboard. HitPay's fees are calculated from the total transaction amount, including taxes and [tips](/pos/tips). ![Tax Settings](https://mintcdn.com/hitpay/NOuofLOdkKFMdz_7/images/Tax-Settings.png?fit=max\&auto=format\&n=NOuofLOdkKFMdz_7\&q=85\&s=a2ea4eff0a8f3f3ad5a88f5efb27d31e) ## Creating a Tax Navigate to **Settings > Tax Settings** in your dashboard. Here, you can create a new tax by clicking the **Add Tax** button. Enter the necessary tax details: * Tax name * Tax rate * Specify whether the tax is inclusive or exclusive of the total amount or product pricing. Your newly created tax rates will be listed under the tax settings page. ## Applying a Tax at Checkout Only one tax can be applied to each order. You can learn more about applying taxes by following the guide [here](/pos/taxes#applying-an-automatic-default-tax-at-checkout). > [!NOTE] > > If you've set a default tax, it will be automatically added to the total amount at Checkout. ## Tax-Inclusive vs Tax-Exclusive Tax The choice between Tax-Inclusive and Tax-Exclusive Tax impacts how taxes are calculated in relation to the final transaction amount. **Tax-Exclusive Tax** A Tax-Exclusive Tax is added to the Total Amount at the point of the final transaction. Example: You may charge #100 for a service and add a 7% GST tax. Adding a Tax-Exclusive GST tax adds an additional #7 at the point of purchase. The Total Amount becomes #107.00. **Tax-Inclusive Tax** A Tax-Inclusive Tax is already included in the price of purchase. Example: You may charge #100 for a service with 7% GST included as a Tax-Inclusive Tax. The Total Amount remains #100. Understanding the difference between these tax types helps you make informed decisions when configuring your tax rates in the HitPay app. ## FAQs > **Can I view the tax amounts applied to my transactions on my reports?** > > Yes, on the web dashboard, navigate to **Bank Payouts > Transactions > Export Transactions**. Make sure you check 'POS Order Details' field under Fields Required. > > * **Tax Applied** = Name of tax that is applied > * **Tax Calculated** = Nominal amount of tax applied based on tax % and transaction amount > * **Tax Amount** = Amount of tax added to the sum. Inclusive tax will result in 0.