Cambodian VAT on Stripe Digital Services in QuickBooks
Cambodia taxes foreign digital sales at 10% once you cross either turnover test. The B2B rule, monthly riel returns, and what reaches QuickBooks.
A software company in Denver sells a $30 monthly plan. A few dozen customers in Phnom Penh and Siem Reap find it, then a few hundred, and one quarter the Cambodian line in the Stripe dashboard is bigger than the company expected. Cambodia taxes that revenue. Since 1 April 2022, a foreign seller of digital services to Cambodian consumers has had to register for what the General Department of Taxation (GDT) calls Simplified VAT, charge 10 percent, and file every month in riel.
The rules are short and mostly clear. Two turnover tests decide when you register, and you have 30 days once you cross either. Business customers fall out of your VAT, but only on conditions that are stricter than the tax ID check Stripe runs. The return is monthly, due by the 20th or the 25th, and the tax is paid in Khmer riel, which turns a dollar liability into a currency question for your QuickBooks file.
This guide works through each piece from the GDT's own documents: the sub-decree, the implementing prakas, the GDT's e-commerce FAQ and its payment instruction. It ends with a worked month and what reaches QuickBooks. It is bookkeeping guidance, not tax advice, and the English versions of Cambodia's instruments are marked as unofficial translations, so the Khmer text governs.
Acodei brings Stripe Tax amounts into QuickBooks, so the Cambodian VAT you collect is already sitting in a liability account when the month closes. Start a free trial.
The rules and where they come from
Three instruments carry the regime:
- Sub-Decree No. 65 ANKr.BK of 8 April 2021 sets the scope. It covers "the supply of digital goods or services or any e-commerce activity via an electronic system carrying out by non-resident suppliers from the outside of the Kingdom of Cambodia into the Kingdom of Cambodia."
- Prakas No. 542 MEF.PrK of 8 September 2021 sets the mechanics: the rate, the thresholds, registration, invoices and returns.
- The GDT's e-commerce VAT FAQ answers the practical questions, including the start date. Under Notification No. 776 GDT, "the effective date for implementing Prakas No 542 MEF.PK is from 1 April 2022 onward."
The sub-decree's annex lists 28 kinds of covered activity. The ones a SaaS company will recognize include application hosting, "Application Service Provider -ASP", website hosting, data warehousing and "Subscription to a Website Allowing the Downloading of Digital Products." If customers log in to use your software, assume you are in scope. One carve-out from the FAQ is worth knowing for course sellers: virtual education is "not subject to VAT if the provided educational institution is recognized by the government of the non-resident country and is conducted live, otherwise it is subject to VAT on e-commerce." A recorded course sold by a company that isn't a recognized institution is taxable.
The registration is for VAT only. Sub-Decree 65 says so in Article 4: "This tax registration is applicable for VAT purpose only." The FAQ adds that a registered non-resident is exempt from patent tax.
Two thresholds, and 30 days once you cross one
Article 11 of Prakas 542 sets the tests. You must register if your Cambodian digital sales have "annual turnover from 250 million Riel or more" or you "expect to have any 3-month-consecutive turnover period completed in the current calendar year from 60 million Riel or more." Registration is due "within 30 days" of reaching the turnover.
The FAQ puts dollar figures on both: 250 million riel is "approximately USD 62.5k" and 60 million is "approximately USD 15k."
The second test is the one to watch. It is forward-looking ("expect to have"), so a business growing quickly in Cambodia can be inside it before three months of sales have actually happened. If your Cambodian revenue is running at $5,000 a month or more, the three-month test is the one that will catch you first.
The first test has an open question. The prakas says "annual turnover" without saying which year. Stripe's Cambodia entry reads it as "250 million KHR in current year." Some practitioner summaries of the 2023 GDT instruction that amended the procedure read it as the prior year. The English texts on the GDT site don't settle it. In practice the three-month test usually triggers first, which makes the question matter less, but confirm it with an adviser if your sales are close to the annual line.
Below both thresholds you can still register. The FAQ says "a non-resident taxpayer can voluntarily register for Simplified VAT even if their turnover ... does not fall within the above outlined thresholds."
What Stripe watches for you
Stripe's threshold monitoring covers Cambodia, and the Cambodia entry says it includes "B2B and B2C sales of digital products." Stripe states the rule as: register "within 30 days when their taxable sales of digital goods and services exceeds 250,000,000 KHR," and also if you "expect to exceed 60 million KHR (approximately 15,000 USD) in any 3-month-consecutive period."
Monitoring tells you when your actual sales cross a line. It can't know what you expect, so the forward-looking half of the three-month test is still yours to judge. Note too that Stripe counts B2B sales in monitoring, while only consumer sales carry VAT you collect.
How to register
Prakas 542 allows registration "via an electronic system (e-registration) via website https://www.tax.gov.kh" or in person, and lets non-residents use "registered Tax Service Agents." The FAQ lists what to send, including the registration certificate of your company, ID for the owner or representative, a bank account confirmation, and "an application fee of Khmer Riels 400,000 (approximately USD100)." Registration doesn't require a permanent establishment in Cambodia.
Once you are registered, the FAQ says you "shall issue a tax invoice and collect the applicable amount of VAT from consumers," while B2B invoices carry no VAT.
In Stripe, the matching step is adding a Cambodian registration under Stripe Tax so that calculations start. Stripe says that "without a registration in the customer's location, the calculation returns zero tax," and that in Cambodia it "only supports collecting VAT for digital services." It also "doesn't calculate tax for products that don't use a digital product tax code," so check each product's product tax code before relying on the totals.
Which sales are Cambodian
The GDT's FAQ gives three kinds of evidence for where a customer is:
- "Payment information (e.g., credit card or bank account information)"
- "Residence information (e.g., home address, billing address)"
- "Access information (SIM Card code, IP address)"
And then: "If one or more of the above indicators are identified, then a determination can be made that the digital service or e-commerce activity has occurred in Cambodia."
Stripe works differently. Its customer location rules say "Stripe Tax uses a single address as your customer's location when calculating tax." For invoices and subscriptions that is the first of the shipping address, billing address, payment method billing details and IP address. A customer with a Thai billing address who pays with a card issued in Cambodia gets Thai treatment from Stripe. On the GDT's wording, the card alone could make that sale Cambodian.
You can't make Stripe apply a one-of-three test. What you can do is look for the gap each month: compare the card issuing country Stripe records on each charge with the country it taxed in the itemized tax export, and take the mismatches to an adviser. For most SaaS sellers the list is short. Our place of supply entry covers the general idea, and our guide to Georgian VAT works through another country with an any-one-signal test.
Business customers: a stricter test than Stripe's
Cambodia uses a reverse charge for business buyers. Sub-Decree 65 says a resident taxpayer that buys from a non-resident "shall collect VAT using the Reverse Charge mechanism," and Prakas 542 Article 10 says the non-resident files a return for those sales "but not required to pay the VAT."
The condition for treating a buyer as a business is the part to read carefully. The FAQ says a registered self-assessment taxpayer "who has made the payment via a bank account in their name, and provided their TIN and registered name, shall not collect VAT." If the buyer "does not make the payment to the supplier via their own bank account and does not provide their TIN or the name of the enterprise," the seller "shall consider the transaction as B2C and invoice and collect VAT @10%." Card payments work the same way "if the bank account and credit card account is in the name of the enterprise."
So the GDT asks for three things: the TIN, the registered name, and payment from an account or card in the company's name.
Stripe asks for one. Its tax ID table lists kh_tin, "Cambodia Tax Identification Number," with "Impact in Tax Calculation" marked Yes, and the footnote says "Stripe Tax won't apply tax if this tax ID is provided, in line with the relevant laws." Stripe also notes that it applies the reverse charge "when the tax ID has the required number format, regardless of the government verification result."
Two consequences follow:
- A TIN on a personal card. An employee who enters the company's TIN at checkout and pays with their own card gets no VAT from Stripe. Under the FAQ, that sale is B2C and should have carried 10 percent. Review B2B sales where the card holder's name isn't the company's.
- No TIN, no refund later. If a business buyer doesn't give its TIN in time and you charge it VAT as a consumer, the FAQ says "no VAT refund is allowed if the VAT-TIN of the purchaser does not record on the invoice." Collect the TIN before the first invoice. Our customer tax ID entry covers where Stripe stores it.
B2B sales still go on your return. The GDT's filing instruction has a separate step for "E-commerce transactions supplied to self-assessment taxpayers," uploaded as Appendix 02, alongside consumer sales in Appendix 01.
The monthly return, in riel
Prakas 542 Article 7 sets the rate: "The VAT shall be imposed at the rate of 10 percent on the taxable value." The return is monthly. The FAQ says it "shall be filed to the GDT by the 20th of the following month after receiving the supply or by the 25th of the following month for those using e-filing and e-payment method." The GDT's Instruction No. 13099 on the E-Commerce Tax System says returns go through that system with payment "by the 25th of the following month." The system is reached from the GDT's e-service page.
The currency is riel. The FAQ: a non-resident "shall file monthly VAT returns and pay the applicable amount of VAT in Khmer Riel currency," and when completing Form NR-VAT01 it "can convert foreign currency to Khmer Riel currency, using the exchange rate published by the National Bank of Cambodia on the last working day of the month in which the supply took place."
So each month has a fixed conversion point. Your Stripe sales are in dollars, the return is in riel at one rate, and your payment arrives in riel at whatever rate your bank uses. That last step is where a difference appears.
Instruction 13099 lists three ways to pay: in cash through the GDT's partner banks in Cambodia (directly or through a representative or tax agent), by card or e-payment inside the E-Commerce Tax System, or by transfer "from Overseas Bank Account to GDT's Bank Account." It is plain about costs: "All bank fees incurred by the payments of the due VAT amounts will be the burden of the non-resident taxpayers. The due VAT amounts that have been paid by the non-resident taxpayers to the GDT will not be refundable." It also warns that late filing or payment is "subject to penalties (additional tax and interest) as stipulated in the laws and regulations in force."
A non-refundable payment is a reason to check the riel amount twice before you send it.
What the documents leave open
Three questions the English texts don't answer cleanly:
- Which year the 250 million test uses, covered above.
- Refunds. The English instruments we read don't set out how a refund to a Cambodian consumer adjusts a later monthly return. Ask the GDT or an adviser before your first one.
- Later changes. Cambodia adopted a new Law on Taxation in 2023 and a VAT sub-decree in 2024, and the GDT amended its e-commerce instruction in January 2023. Those are published in Khmer only, so this guide relies on the GDT's FAQ and on the English sub-decree, prakas and payment instruction, which the GDT still lists as valid.
A worked month for a software company
The Denver company sells one plan at $30 a month, priced in USD and exclusive of tax. In October it has these Cambodian sales:
- Consumers. 220 individuals pay $30 each: $6,600 of sales. Stripe Tax adds 10 percent, $3.00 an invoice, $660.00 in total. Its Cambodian consumer sales passed the three-month line of roughly $15,000 over June to August, so it registered in September and added the registration in Stripe Tax.
- A business customer. A Phnom Penh firm buys 10 seats ($300), gives its TIN and registered name, and pays with a company card. Stripe applies no tax. The sale goes on Appendix 02 of the return with no VAT due.
- A TIN on a personal card. A second firm's office manager enters the company TIN but pays $60 with a personal card. Stripe charged no tax. Under the FAQ, this sale is B2C, so the company owes $6.00 of VAT that it didn't collect. It flags the sale and fixes the checkout flow.
- The return. Say the National Bank of Cambodia's rate on 30 October is 4,050 riel to the dollar (an illustrative figure, not the actual rate). The VAT due is $666.00 (660 plus 6), which is 2,697,300 riel, filed on NR-VAT01 in the E-Commerce Tax System by 25 November.
- The payment. The company wires dollars to the GDT's partner bank, which converts them to riel. To land 2,697,300 riel it sends $672.00, and its own bank charges a $25.00 wire fee.
What reaches QuickBooks, and what you book yourself
Acodei syncs the tax Stripe Tax calculated, so Stripe Tax has to be active in your Stripe account and your Cambodian registration set up in Stripe first. Without it, there is no Cambodian VAT for Acodei to carry across.
For a US QuickBooks company, Acodei's method is the Tax Product: a non-inventory "Sales Tax" product mapped to a liability account, with all Stripe Tax amounts on a sale rolled into one line on the QuickBooks invoice or sales receipt. QuickBooks' Sales Tax Center doesn't let third parties create official tax rates for US companies, which is why the product approach is the one that works there. It needs Stripe Tax used with Stripe Invoicing or Stripe Checkout. In item 1, each $30 subscription arrives with one $3.00 tax line, and $660.00 builds up in the liability account over the month. You then use Stripe's tax reports to file and pay from that account.
For a QuickBooks company outside the US, Acodei can map individual Stripe tax rates to QuickBooks tax codes you set up. Cambodia has one rate for these services, so one code at 10 percent covers it.
The business sales, items 2 and 3. Stripe charged no tax on either, so nothing reaches the liability account for them. The $6.00 owed on item 3 is yours to book: debit an expense (or reduce revenue, as your accountant prefers) and credit the tax liability, with a note pointing at the charge.
Refunds. Acodei's documentation says a refund issued through a credit note carries the line-level tax breakdown. A refund made on the payment alone may not show how much was tax, and that case can need a manual adjustment in QuickBooks. Since the Cambodian refund procedure is one of the open questions, the credit note is also the cleaner record to keep.
The payment, item 5. The liability for October is $666.00 in your dollar books. Paying it cost $672.00 plus a $25.00 fee. Debit the tax liability $666.00, debit an exchange loss of $6.00 and bank charges of $25.00, and credit the bank $697.00. The Cambodian slice of the liability account then clears to zero. In a month where the riel moves the other way, the $6.00 becomes a gain. The same liability account also holds US sales tax and any other foreign tax from Stripe Tax, so note the Cambodian part each month. Our guide to reconciling the Stripe Tax report in QuickBooks covers the liability side, and the itemized export lets you filter on country_code KH.
Common mistakes with Cambodian VAT on Stripe sales
- Waiting for three months of actual sales. The 60 million riel test is about what you expect, and registration is due within 30 days.
- Trusting
kh_tinalone. The GDT also wants the registered name and payment from the company's own account or card. - Filing in dollars. The return and the payment are in riel, converted at the National Bank of Cambodia rate for the last working day of the month.
- Leaving B2B sales off the return. They go on Appendix 02 even though no VAT is due on them.
- Wiring the dollar amount of the liability. The riel amount is what has to arrive, bank fees are yours, and payments aren't refundable.
- Using a general tax code. Stripe only calculates Cambodian VAT on digital product tax codes.
Frequently Asked Questions
Do foreign SaaS companies have to register for VAT in Cambodia?
Yes, once they cross either threshold. Under Prakas 542, a non-resident selling digital services into Cambodia must register for Simplified VAT within 30 days of reaching 250 million riel (about $62,500) of annual turnover, or of expecting 60 million riel (about $15,000) in any three consecutive months of the current calendar year. Voluntary registration below the thresholds is allowed.
What is the VAT rate on digital services in Cambodia?
10 percent of the taxable value. Prakas 542 sets the rate for digital goods, digital services and e-commerce supplied by non-residents, which covers SaaS, hosting, downloads and recorded online courses.
When are Cambodian VAT returns due for foreign sellers?
Monthly. The GDT's FAQ says the return is due by the 20th of the following month, or by the 25th for sellers using e-filing and e-payment. Non-residents file through the GDT's E-Commerce Tax System, and the GDT's payment instruction puts payment by the 25th.
Can I pay Cambodian VAT in US dollars?
The return and the payment are in Khmer riel. The GDT's FAQ says you convert at the National Bank of Cambodia rate published on the last working day of the month of supply. You can wire dollars from abroad to a GDT partner bank, which converts them, but the riel amount is what must arrive, the bank fees are yours, and the GDT says payments are not refundable.
Does Stripe Tax charge Cambodian business customers?
Not if they give a Cambodian TIN. Stripe marks kh_tin as affecting the tax calculation and doesn't apply tax when it is present. The GDT's own test is stricter: the buyer must also give its registered name and pay from a bank account or card in the company's name, or the sale is treated as B2C.
The short version
Ten percent, monthly, in riel. Cambodia registers foreign digital sellers once they cross 250 million riel a year or expect 60 million in three months, with 30 days to register. Business buyers fall out of your VAT only if they give their TIN and name and pay from a company account, which is more than Stripe checks. And because the tax is paid in riel at a month-end rate, each payment leaves a small exchange difference in your QuickBooks file. Our guides to the countries that register you from the first sale, registration thresholds, Aruba's levies and Bahamian VAT cover the pattern elsewhere.
Acodei syncs Stripe Tax into QuickBooks, so each Cambodian month starts from the liability account instead of a spreadsheet. Start a free trial.
Automate your Stripe to QuickBooks sync
Save hours every month. Acodei automatically syncs your Stripe transactions, invoices, and payouts to QuickBooks Online.
14-day free trial · card required · cancel anytime
How Acodei handles this in your stack
Stripe QuickBooks Integration
See how Acodei syncs Stripe payments, fees, refunds, invoices, and payouts into QuickBooks Online automatically.
Or go straight to a capability
Advanced Product Mapping
Map Stripe products to QuickBooks with rule-based logic on product ID, price ID, metadata, and account. Set rule priority and extend mapping to refunds and fees.
Automated Invoice Sync
Bring Stripe invoices into QuickBooks and auto-apply payments and credit memos, with invoice numbering suffixes and quantity tracking to cut double-entry.
Multi-Currency Mastery
Sync Stripe transactions across currencies with automatic exchange rate handling and currency-specific customer records. Our team enables multicurrency on request, and zero-decimal currencies such as JPY are not supported.
Class Mapping
Map Stripe products to QuickBooks classes for scalable categorization and multi-entity reporting. Class tracking requires QuickBooks Online Plus or Advanced.
Historical Data Import
Backfill historical Stripe data into QuickBooks by month range. Preview volume and cost before syncing so reporting starts from a complete baseline.
How to Connect Stripe to QuickBooks Online
Connect Stripe to QuickBooks Online in minutes. Acodei links both accounts with secure OAuth and syncs payments, fees, refunds, and payouts automatically.
Reconcile Stripe Payments in QuickBooks
Reconcile Stripe in QuickBooks Online automatically. Acodei splits out fees, matches payouts to deposits, and keeps every charge audit-ready.
Get more operational finance guides like this one
We will only send high-value product and finance content.