Skip to content

Payments

Last updated: 7 November 2026

The short version. Payments by card, wallet, FPX and GrabPay are processed by Stripe, and HalusAI never sees your card number. Prices on halus.app are in US dollars (USD). Customers in Malaysia can pay in Malaysian ringgit (RM) on our Malaysian page, halus.app/my. RM prices are for FPX online banking, GrabPay or a card issued in Malaysia. Passes, and one month of a plan, can also be paid by DuitNow QR in the app while that option is shown. DuitNow receipts are checked automatically, sometimes by our team, and the words go to your account when the payment is approved. The price shown is the full amount you pay.

1. Who processes payments

Payments by card, wallet, FPX and GrabPay are processed by Stripe. You enter your payment details on Stripe's checkout page, not on HalusAI. HalusAI never sees your card number.

The one exception is DuitNow QR, for passes and one month of a plan, paid in RM. You pay in your own bank or e-wallet app, to our account. Receipts are checked automatically, sometimes by our team. Stripe is not involved.

To buy, you must be 18 or older, or have a parent's or guardian's consent. A purchase through Stripe needs a HalusAI account. DuitNow QR purchases are made in the app (halus.app/app/plans) and need a HalusAI account too. Order pages made before 7 November 2026 keep working.

2. Currencies and prices

  • Prices on halus.app are in US dollars (USD). Our Malaysian page, halus.app/my, shows the same options in Malaysian ringgit (RM). You see the currency before you pay.
  • The price shown is the full amount you pay. Your bank may add its own fees, for example for paying in a foreign currency.
  • Every price, with its words and validity, is on the pricing page (USD) and on halus.app/my (RM).

3. Payment methods

What you buyPay in USDPay in RM
Passes (one-time)Card, or a wallet Stripe shows at checkoutFPX online banking, GrabPay, or a card issued in Malaysia. Also by DuitNow QR, in the app, while that option is shown
Top-ups (one-time, for subscribers)Card, or a wallet Stripe shows at checkoutFPX online banking, GrabPay, or a card issued in Malaysia
Monthly and yearly plansCard, or a wallet Stripe shows at checkoutA card issued in Malaysia. One month of a plan, which does not renew, also by DuitNow QR in the app while that option is shown

Which wallets Stripe shows depends on your device and browser. FPX and GrabPay cannot pay for a plan, because they cannot renew it, so monthly and yearly plans in RM need a card issued in Malaysia. Passes, and one month of a plan, can be paid by DuitNow QR. A plan paid this way lasts one month and does not renew. Top-ups cannot be paid by DuitNow QR.

4. The RM price rule

RM prices are only for payment by FPX online banking, GrabPay or a card issued in Malaysia, or, for passes and one month of a plan, by DuitNow QR. Anyone can pay in USD.

  • If you use a card issued outside Malaysia to buy a pass or top-up at an RM checkout, it is not charged: the hold on the card is released. You can pay in USD instead.
  • For monthly and yearly plans in RM, if the card turns out not to be issued in Malaysia, the plan is cancelled straight away, any amount taken is refunded in full, and no words are added. You can pay in USD instead. This is checked on every payment of the plan, not only the first, so a card that you swap for one issued elsewhere in Manage billing is caught at the next renewal.
  • A released hold can show on your statement for a few days before your bank removes it.

5. DuitNow QR

Customers in Malaysia can pay for the 3-Day Pass (10,000 words), the 7-Day Pass (20,000 words), or one month of a plan, by DuitNow QR, at the RM price shown on halus.app/my. You pay in the app, signed in to your HalusAI account, and only while the option is shown: we can switch it off. A plan paid by DuitNow QR lasts one month and does not renew. Top-ups cannot be paid by DuitNow. Paying in USD by card (through Stripe) does not change.

How it works

  1. Choose a pass or a plan in the app, under Plans, with RM selected (the RM buttons on halus.app/my lead there). Sign in or create an account first if you have not.
  2. The app shows the DuitNow QR code, the exact amount, the recipient's name and a reference code.
  3. Pay in your bank or e-wallet app, and type the reference code in the recipient reference field.
  4. Upload a screenshot of the receipt in the app: JPEG, PNG or WebP, up to 5 MB, and up to 3 uploads per order. We may also ask for the bank transaction ID shown on the receipt.
  5. An AI service reads the receipt and our system compares what it reads with your order: the amount, the recipient, the time, the reference and that the receipt was not used before. If everything matches, the words are added to your account at once. If anything does not match, or the check cannot run, our team checks it, usually within a few hours. If your order is still being checked after 24 hours, contact us with its reference code.
  6. We can still cancel an approval if the money did not reach us.

Good to know

  • A pass or plan month starts when the payment is approved, not when you pay. A pass's 3 or 7 days, or the plan's month, count from approval. The words end when the pass or month ends. Other words on the same account are not affected.
  • No code is needed: the words go to the account you ordered with. Codes are only for purchases made outside halus.app, such as our Shopee shop.
  • The app shows where your order is: waiting for payment, being checked, approved, not approved, expired or cancelled. Order pages made before 7 November 2026 keep working. Keep those links private.
  • An order with no receipt expires after 48 hours. If you had already paid, you can still upload the receipt for that order for up to 14 days after ordering.
  • If a payment cannot be confirmed, the app says why. You can upload a corrected receipt (up to 3 receipts per order) until the order closes, 7 days after that decision, and we can still approve the order if the money turns up. Any money that reached us for an order we do not approve is returned by bank transfer to the account it came from.
  • If we refund a DuitNow QR payment, or an approved payment turns out not to have reached our account (for example, the bank reversed it), we end the pass or plan month and remove its remaining words. The app then shows the purchase as cancelled. Words from a cancelled pass do not come back, even from a run that fails.
  • Your receipt is personal data. It is read by an AI service provider so the payment can be checked automatically, and by our team when a check needs a person. The Privacy Policy explains what it shows, who sees it and how long we keep it.

6. Where purchases are not available

At launch, purchases with a billing address in the European Union, the EEA or the United Kingdom are not available, because we are not yet registered for VAT there. A pass or top-up paid by card is held and not charged. A plan cannot be held first: if its payment, a renewal included, has a billing address there, the plan is cancelled and that payment is refunded in full.

7. Passes and top-ups

  • Passes are one-time payments. They never renew, so there is nothing to cancel. Pass words end when the pass ends. A pass paid by DuitNow QR starts when the payment is approved.
  • Top-ups are one-time payments for subscribers. Their words are valid for 6 months and are still usable after a plan ends.

8. Plans and renewals

  • Monthly and yearly plans renew automatically until you cancel, and Stripe charges the same payment method at each renewal. You can have one plan at a time.
  • A yearly plan costs the same as 8 months and runs for 12. Its words are given month by month.
  • A plan's words do not roll over. At each renewal the words left from the last period end and the new period's words are added.
  • Cancel any time in Account, then Manage billing. You are not charged again, and you keep your words until the end of the period you paid for.
  • Your plan stays in the currency of your first plan (USD or RM). To switch between USD and RM, contact support.
  • Top-ups need a plan that is active. They are not available while a payment has failed or after a plan has ended, and their words stay usable after it ends.

Changing plan

Change plan in Manage billing.

  • A dearer plan takes effect at once. You pay the difference for the days left in the period, and extra words are added in proportion to the days left in the month, so a change on the last day adds only a few words.
  • A cheaper plan, or a yearly plan changed to a monthly one, takes effect when the current period ends. Until then you keep what you have, and the next payment is the new, lower one. Nothing is refunded for the difference.
  • A monthly plan changed to a yearly one starts the yearly plan at once. The unused time of the monthly plan is credited against the yearly price, the words left from the monthly plan end, and the first month's words of the yearly plan are added in full.

9. Failed renewals

If a renewal payment fails, for example because a card has expired:

  • Stripe tries the payment again over a few days.
  • Your Account page shows "payment failed", and a link if your bank needs you to confirm the payment.
  • You can update your card in Manage billing.
  • The last period's words stay usable for up to 3 days after that period ends. After that you have no plan words until the payment succeeds.
  • The words for the new period arrive once the payment succeeds. If Stripe gives up, the plan ends.

10. Receipts

Stripe emails a receipt for every payment it processes. Your Account page also lists those purchases.

For a DuitNow QR payment, the receipt is the one your bank or e-wallet app gives you. Keep it. The app shows the order's status.

11. Security

  • Card details are entered on Stripe's checkout page and handled by Stripe. HalusAI never sees card numbers.
  • With DuitNow QR, you pay in your own bank or e-wallet app. We never ask for your online-banking password, TAC or OTP.
  • The site uses an encrypted connection (HTTPS).
  • Never send card details to us by email, phone or chat. We will never ask for them.

12. Refunds and disputes

Refunds follow the refund and cancellation policy: a full refund within 48 hours of a purchase or renewal if no more than 1,000 of its words were used. Refunds go back to the original payment method, usually within 5-10 business days. Refunding a plan payment cancels the plan too (the extra payment for a change to a dearer plan ends it when the period you already paid for ends), and a chargeback on a plan payment cancels the plan and pauses the account.

DuitNow QR payments follow the same rule, with the 48 hours counted from when the payment is approved. Their refunds are paid by bank transfer to the account the payment came from. We may ask by email for that account's details, but never for an online-banking password, TAC or OTP.

If something is wrong with a payment, please contact us first. A chargeback pauses your account while it is open.

13. Contact

  • Business: Halus App
  • Address: Level 4, PAM Centre 99L, Jalan Tandok, Bangsar, 59100 Kuala Lumpur
  • Email: support@halus.app
  • Phone / WhatsApp: 012-200 5500
  • Support hours: Monday to Friday, 10:00-18:00 Malaysia time (GMT+8)

For billing questions, write from your account's email address. An account opened with a personal invite link, or from a DuitNow QR order page, has no email address: for such an account, write from any address and give your DuitNow QR order's reference code.