India GST on Stripe Digital Sales (OIDAR) in QuickBooks

India taxes foreign digital services from the first consumer sale, and a GSTIN decides who pays. How it works on Stripe and in QuickBooks.

Acodei Content Team · 10/16/2026 · 15 min read

A US software company has 46 customers in India on its 29 USD monthly plan, plus six Indian companies on a 99 USD team plan. Stripe Tax is on, and Stripe shows India as "registration required" after the very first Indian sale. The company registers, starts collecting, and assumes the six team-plan customers are out of scope because they're businesses. Five of them are. One isn't, because the GSTIN it typed at checkout belongs to nobody. Two of the 29 USD customers are small Indian businesses with no GSTIN at all, and since 2023 Indian law counts them as consumers.

India has no registration threshold for foreign digital services, so the obligation starts at sale one. What makes India different from the other countries in this series is the line between consumer and business. It's drawn by GST registration, not by whether the customer is a company, and the GST portal checks that line in a way Stripe doesn't.

This guide covers India GST on Stripe sales of digital services by a foreign seller: what counts as OIDAR, the first-sale registration, why unregistered Indian businesses are taxed like consumers, how GSTINs drive reverse charge in Stripe and on the GST portal, the 18% rate, the monthly GSTR-5A return due on the 20th, and how the tax reaches QuickBooks. A worked example runs in dollars and rupees.

Acodei brings Stripe Tax amounts into QuickBooks automatically, so the IGST you collect from Indian customers is already in a liability account when each monthly return comes due. Start a free trial.

What OIDAR is, and why your SaaS product almost certainly counts

India taxes foreign digital services under a category called OIDAR, short for online information and database access or retrieval services. The CBIC's OIDAR flyer describes it as services "provided through the medium of internet and received by the recipient online without having any physical interface with the supplier." Its list includes:

  • cloud services and online data storage
  • software and its updates, downloaded or accessed online
  • e-books, music, films and other digital content
  • online advertising
  • data or information provided electronically through a network
  • online gaming

Its indicative list goes further: website hosting, online newspaper subscriptions, stock photos for automatic download, and automated distance teaching. A typical SaaS subscription, a template shop or an online course platform fits.

Stripe's India tax page is narrower than the law. It says Stripe "only supports collecting integrated goods and services tax (IGST)" for OIDAR, which it calls digital products, and only for "a remote seller without a physical presence in the country." A business located in India is outside this guide.

The automation test changed in 2023

The flyer predates a change that matters at the edges. It offers a test for whether a service is OIDAR, built on the definition's words "essentially automated and involving minimal human intervention." Under that test, a pre-recorded course is OIDAR, but the same course with support from a live tutor isn't.

The Finance Act, 2023 deleted those words from the definition in section 2(17) of the IGST Act. So the flyer's "not OIDAR" examples are no longer a safe guide. If you sell a product with real human involvement, such as coaching bundled with a course, take that question to an Indian tax adviser rather than leaning on the old table.

Registered from the first sale: India GST on Stripe for foreign sellers

Stripe's India page states the rule plainly: remote sellers of digital products to consumers in India "have no registration threshold. They must register for IGST purposes from the first sale." Stripe lists the registration threshold as "1 transaction", and the transactions it monitors as "B2C sales of digital products."

So Stripe Tax threshold monitoring flips India to registration required on your first Indian consumer sale. Compare that with Indonesia, where nothing happens until 50 million rupiah in a month. India is the same shape as South Korea: no line to stay under.

Registration uses a simplified scheme on Form GST REG-10. The GST portal's manual for non-resident online service providers walks through it, and three details shape how hard it is for a foreign company:

  1. You need someone in India. The manual says the authorized signatory "must be a resident of India with a valid PAN Card." A US company with no Indian staff needs an Indian representative or adviser who can sign.
  2. Your PAN is optional; your home tax ID isn't. The company's own Indian PAN "is not a mandatory field." The form asks instead for the tax identification number from your country of origin, the URLs you sell through, and proof that you're a non-resident online service provider.
  3. Bank details are optional, unless you appoint an Indian authorized representative, in which case the manual says they're required.

Once the GSTIN is issued, add the registration in Stripe with its effective date. Stripe also needs the customer's Indian state or union territory as part of the address to calculate the tax, and its reports show the state based on that. That detail comes back when you file.

Who counts as a consumer: unregistered Indian businesses are in

Stripe's page says sales to business customers in India "don't trigger any tax registration obligations because non-resident businesses aren't required to collect tax on these sales." That's true for a business with a GST registration. India's definition of a consumer is wider than "not a company."

The IGST Act calls the consumer side a "non-taxable online recipient." Before October 2023, that meant individuals, governments and others receiving the service for a purpose "other than commerce, industry or any other business or profession." The Finance Act, 2023 replaced the definition with a much shorter one:

"non-taxable online recipient" means any unregistered person receiving online information and database access or retrieval services located in taxable territory.

An explanation adds that "unregistered person" includes a person registered only to deduct tax at source, which mostly means government bodies.

Read it as a bookkeeper: the test is GST registration, not business use. An Indian freelancer, a two-person agency below India's own GST threshold, or a startup that hasn't registered yet is a non-taxable online recipient when it buys your software. The foreign supplier pays the IGST on that sale, exactly as for a consumer.

In practice Stripe handles this the natural way. A customer with no GSTIN on file is taxed, whether it's a person or a company. The risk is in your own analysis: a revenue report that splits "B2B" and "B2C" by company name, or a sales team telling Indian prospects that business purchases are tax-free, will undercount what you owe.

GSTINs and reverse charge: what Stripe checks and what the GST portal checks

A sale to a GST-registered Indian business works differently. The CBIC flyer explains that when the recipient is a registered person, "the reverse charge mechanism would get triggered and the recipient in India who is a registered entity under GST will be liable to pay GST." You charge no IGST; your customer self-assesses it.

On Stripe, the switch is the customer's tax ID. Stripe's customer tax ID list supports one Indian type, in_gst (example format 12ABCDE3456FGZH), and marks it Yes for impact in tax calculation. Add a GSTIN to the customer and Stripe Tax stops charging IGST on that sale; the itemized export records it with a taxability reason of reverse_charge.

Here's the gap. Stripe checks a GSTIN's format, but it validates tax IDs against a government database only for Australian ABNs, EU VAT numbers and UK VAT numbers. India isn't on that list. And Stripe's page is explicit that Stripe Tax "applies the reverse charge or zero rate according to applicable laws when the tax ID has the required number format, regardless of the government verification result."

The GST portal is stricter. Since October 1, 2023, GSTR-5A has a Table 5B for supplies to registered persons on reverse charge, introduced by Notification 51/2023 according to the GST Council's October 2023 newsletter. The portal's GSTR-5A manual lists the checks on each GSTIN you enter there:

  • it must be 15 characters and in a valid format
  • it must be a valid registered number
  • an inactive GSTIN triggers an error
  • a GSTIN that wasn't registered in the selected period triggers an error

So a customer who types a format-valid number with one wrong character gets a tax-free invoice from Stripe, and then you can't report that sale as reverse charge on your return. If the customer turns out not to be registered, the 2023 definition puts them in the non-taxable online recipient group, and the IGST on that sale is yours to pay, out of a price that didn't include it.

The fix is a habit, not a setting: check new Indian GSTINs against the GST portal's records when they're added, not when the return is due. Our guide to reverse charge covers how the mechanism works in other countries Stripe supports.

The 18% IGST rate and the monthly GSTR-5A return

The rate. OIDAR services fall under heading 9984 (telecommunications, broadcasting and information supply services) in the IGST rate notification. The consolidated Notification 8/2017-Integrated Tax (Rate) sets 18% for those services, with a separate 5% line for supplies consisting only of e-books. The services changes announced after the GST Council's September 2025 meeting didn't include heading 9984. On a 29 USD plan priced tax-exclusive, IGST is 5.22 USD.

Stripe collects it as IGST, integrated GST, a single tax rather than separate central and state components. That keeps it to one rate and one tax line per sale.

The return. Registered OIDAR suppliers file Form GSTR-5A. The portal's GSTR-5A FAQ sets the rules:

  • Monthly, "by 20th of the month succeeding the tax period," unless the Commissioner extends it. March's return is due April 20.
  • Nil returns are mandatory. A month with no Indian sales still needs a filing.
  • In order. You can't file the current month "if return for previous tax period has not been filed."
  • Paid in full first. GSTR-5A "can be filed only after making full payment of taxes and other liabilities for the return period," from the Electronic Cash Ledger.
  • No input tax credit. OIDAR suppliers can't claim it, and there's no Electronic Credit Ledger for them.

The FAQ also says that "at present, there is no late fee" for a delayed GSTR-5A. Don't read that as permission. Table 6 of the return exists for interest, and one missed month blocks every month after it.

The 20th is the tightest deadline in this series. Indonesia gives you until the end of the following month; India gives you 20 days, and the payment has to clear before you can file.

What goes in each table

Table 5 takes your consumer sales, entered by place of supply (state or union territory), with the taxable value and rate for each. That's why Stripe needs the customer's state. Table 5B takes your reverse-charge sales, one row per customer GSTIN, up to 500 records. Table 5A is for amending an earlier month's consumer figures.

How Indian IGST from Stripe reaches QuickBooks

For a US QuickBooks company, the workable Acodei tax method is usually the Tax Product. QuickBooks' Sales Tax Center doesn't let third parties create official tax rates for US companies, so the tax goes to a product line instead:

  1. In QuickBooks, create a non-inventory product such as "Sales Tax" and map it to a liability account.
  2. In Acodei's Stripe Tax settings, choose Tax Product and select that product.
  3. Each synced sale gets one line for its total Stripe Tax amount on the QuickBooks invoice or sales receipt.

It requires Stripe Tax enabled with Stripe Invoice or Stripe Checkout. You then file from Stripe's tax reports and pay from the liability account. A company whose QuickBooks file is outside the US can instead map each Stripe tax rate to a QuickBooks tax code.

On a 29 USD Indian consumer invoice, that means 29 USD of revenue and a 5.22 USD tax line in the liability account. A reverse-charged sale to a registered business carries no Indian tax, so nothing from it lands in the liability account.

The return needs more than the liability balance. The Tax Product puts every Stripe Tax amount in one account, so US sales tax and other countries' VAT are mixed in. GSTR-5A also wants consumer sales by state and reverse-charge sales by GSTIN. Both come from Stripe's itemized tax export filtered to India for the month: group the taxed rows by state for Table 5, and list the reverse_charge rows with each customer's GSTIN for Table 5B.

The return is in rupees. Stripe's tax reports documentation says that when your pricing currency differs from the authority's filing currency, Stripe Tax "converts amounts using available exchange rates at the time of the transaction," and the exports show both. See our explainer on the Stripe Tax filing currency for how those columns relate. Your liability account in QuickBooks holds dollars, so when you pay the rupee amount, the difference between the two is an exchange gain or loss. Our guide to why the Stripe tax report and QuickBooks don't match covers the other common gaps.

Refunds need one habit. In QuickBooks, a refund issued without a line-level breakdown may not reduce the tax line, so refund Indian invoices through a credit note when you can. Ask your adviser how a refund of an earlier month's sale should show on GSTR-5A; Table 5A is the amendment route for earlier periods.

A worked example: one March, three kinds of Indian customer

Back to the company from the top. Its GSTIN is active, India is registered in Stripe, and every price is tax-exclusive. The rupee figures use an illustrative 88 rupees to the dollar, not a real rate.

March's Indian sales:

CustomerCountSales (USD)IGST charged by Stripe (USD)GSTR-5A table
Individuals, 29 USD plan441,276.00229.685
Unregistered small businesses, 29 USD plan258.0010.445
Registered businesses, valid GSTIN, 99 USD plan5495.000.005B
Business with a mistyped GSTIN, 99 USD plan199.000.00Rejected from 5B

What Stripe collected. 240.12 USD of IGST, all of it in the QuickBooks liability account through the Tax Product line. The two unregistered businesses were charged because they had no GSTIN on file, which is the right result under the 2023 definition.

What the portal accepts. Table 5 takes 1,334 USD of consumer sales and 240.12 USD of tax, entered by state. In rupees, using Stripe's filing-currency columns, that's about 21,131 rupees of tax at the illustrative rate. Table 5B takes the five valid GSTINs. The sixth is refused, because the number it typed isn't registered.

The mistyped GSTIN. The company emails the customer. If a corrected, active GSTIN comes back, the sale goes into Table 5B and nothing is owed. If the customer isn't registered at all, the sale belongs in Table 5, and 18% of 99 USD, 17.82 USD, is payable by the company with nothing collected to cover it. Update the customer's tax ID in Stripe either way, so April's invoice is right.

The deadline. The March return and payment are due April 20. The cash has to be in the Electronic Cash Ledger before the return will file. When the rupee payment clears, the company clears 240.12 USD from the liability account and books any difference as an exchange gain or loss. If it ends up owing the 17.82 USD, that's an expense, not a reduction of the liability account, because Stripe never collected it.

Common mistakes with Stripe and India GST

  • Waiting for a threshold. India has none for foreign digital services. The first consumer sale starts the obligation.
  • Treating every company as B2B. Since 2023, an unregistered Indian business is a non-taxable online recipient. The GSTIN decides, not the company name.
  • Trusting a GSTIN because Stripe accepted it. Stripe checks the format and reverse-charges on it. The GST portal checks registration when you file.
  • Filing at month end. GSTR-5A is due on the 20th, and only after the tax is paid in full.
  • Skipping nil months. A month with no Indian sales still needs a return, and a missing one blocks the next.
  • Leaving out the state. Stripe needs the Indian state or union territory to calculate, and Table 5 is entered by state.
  • Relying on the old OIDAR test. The "minimal human intervention" wording was deleted in 2023.

Frequently asked questions

Do foreign SaaS companies have to register for GST in India for Stripe sales?

Yes, from the first sale to an Indian consumer. Stripe's India page lists the registration threshold as one transaction for remote sellers of digital products. Registration uses the simplified Form GST REG-10, and the GST portal requires an authorized signatory who is resident in India with a valid PAN. Sales only to GST-registered Indian businesses don't create the obligation.

What is the GST rate on OIDAR services in India?

18% IGST. OIDAR falls under heading 9984 in the integrated tax rate notification, which sets 18% for those services and a separate 5% rate for supplies consisting only of e-books. On a 29 USD subscription priced tax-exclusive, the IGST is 5.22 USD. Test one invoice in Stripe after adding your Indian registration.

Does Stripe Tax charge GST to Indian business customers?

Not if the customer has an Indian GSTIN on file in Stripe. Stripe treats in_gst as affecting the calculation and applies reverse charge when the number has a valid format. It doesn't check the GSTIN against Indian government records, though, and a business without a GSTIN is taxed like a consumer, which matches Indian law since 2023.

When is GSTR-5A due?

By the 20th of the month after the tax period, so March's return is due April 20. It's filed every month, including nil months, and the portal won't accept it until the tax for the period is paid in full from the Electronic Cash Ledger. You also can't file a month until the previous month's return is filed.

Where does Indian IGST go in QuickBooks?

With Acodei's Tax Product method, each synced Stripe sale carries its Stripe Tax amount as one line on a non-inventory product mapped to a liability account. A 29 USD Indian consumer invoice becomes 29 USD of revenue and 5.22 USD of tax liability. You build GSTR-5A from Stripe's itemized export filtered to India and pay from the liability account.

Acodei syncs Stripe Tax into QuickBooks automatically, so every monthly Indian return starts from a liability account that already holds what you collected. Start a free trial.

Share

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

Get more operational finance guides like this one

We will only send high-value product and finance content.