Selling Software to Korea on Stripe: VAT and QuickBooks
Korea taxes foreign digital sales to consumers from the first sale, with no threshold. What Stripe Tax covers, the B2B carve-out, and the won return.
A US software company with one paying subscriber in Seoul already has a South Korean VAT obligation. There is no revenue threshold to grow into and no grace year. Korea expects a foreign seller of digital services to consumers to register from the first sale, and Stripe Tax sets its Korean registration threshold to match: one transaction.
That makes Korea one of the simplest countries to reason about and one of the easiest to get wrong by default. Most sellers are used to thresholds that give them a year or two of warning. Korea gives none. The rest of the system is just as specific: a simplified registration built for foreign sellers, a carve-out for business customers that depends on a Korean business registration number, a return filed in won at a rate fixed on the last day of the period, and a currency your sync tool may not be able to carry.
This guide covers who owes South Korea VAT on Stripe sales, what Stripe Tax does and doesn't do for Korea, the B2B carve-out, the return and the exchange rate it uses, and how the tax you collect reaches QuickBooks, with a worked example in dollars and won.
Acodei brings Stripe Tax amounts into QuickBooks automatically, so the Korean VAT you collect is already sitting in a liability account when the return is due. Start a free trial.
Who owes South Korea VAT on Stripe sales of digital services
Stripe's South Korea tax page states the rule in one sentence: "Remote sellers providing digital goods or electronically supplied services (digital products) to consumers in South Korea must register for VAT purposes as from the first sale." It adds that "there are no registration thresholds for non-resident service providers."
The rate is 10%. PwC's Korea tax summary puts it plainly: "VAT is generally levied at a rate of 10% on the supply of goods and services in Korea."
What counts as a digital service comes from Korea's own law. Article 96-2 of the Enforcement Decree of the Value-Added Tax Act covers "a game, audio or video file, electronic document, software or other works" that can be stored and run, or used in real time, on "a mobile communications terminal device, computer, etc.", plus services that improve them. A SaaS subscription, a downloadable app, an e-book and an online course all sit inside that definition. The decree also reaches some brokerage services, such as platforms that broker goods or services supplied in Korea.
Two groups of sellers fall outside the direct obligation:
- Sellers whose consumers buy through an intermediary that owes the tax. PwC notes that when a third party, such as an app marketplace, stands between you and the Korean consumer, "the third party must register and account for the VAT." Sales you take directly through Stripe are yours.
- Sellers with a physical presence in Korea. Stripe's page says Stripe Tax collects Korean VAT only for "a remote seller without a physical presence in the country." A business located in Korea is on Korea's ordinary VAT system and out of scope for this guide.
The cost of a late start is set out too. PwC reports that, from 1 January 2024, a foreign supplier that fails to register faces "a penalty of 1% of the supply price of electronic services" for the period before its simplified registration date. On top of that, the 10% VAT you didn't collect is still owed, and on tax-exclusive pricing you can't go back and add it to invoices customers have already paid. It comes out of your margin.
What Stripe Tax does for Korea, and what stays with you
Stripe Tax handles the calculation side well. On the Korean page, the registration threshold reads "1 transaction", and threshold monitoring covers "B2C sales of digital products." So the moment you sell to a Korean consumer, Stripe flags that you should be registered.
Stripe Tax calculates Korean VAT only for products that carry a digital product tax code. Stripe's page is explicit: "Stripe doesn't calculate tax for products that don't use a digital product tax code." If your catalog still uses the general tangible-goods default, Korean customers will check out with no VAT at all, and nothing in Stripe will look wrong.
Calculation also waits for you. Stripe's registration guide says you must "register with the local tax authorities and add the registration to Stripe Tax" before Stripe collects for a location. Until a Korean registration is added under Tax, then Locations, in the Stripe Dashboard, Stripe flags the obligation but charges nothing.
What Stripe doesn't do for Korea is everything after the checkout:
- Register you. You file the simplified business registration with Korea's National Tax Service yourself or through an adviser. The NTS's page for foreign electronic service suppliers points to its Hometax service for the simplified registration and for filing.
- File the return. Stripe produces the data. You or your adviser file it.
- Pay the tax. The decree says payment is made "by depositing into a foreign exchange bank account, as determined by the Commissioner of the National Tax Service."
- Keep Korea's records. Korea expects transaction-level detail that Stripe holds but doesn't hand to the NTS.
What the simplified registration asks for
Article 96-2(3) lists the information you enter on the NTS system:
- names, phone numbers, mailing and email addresses, and the website of the business and its representative, plus any trading name you use instead of the legal name
- your country of registration, address and registration number there
- the types of electronic services you supply and the date you started supplying them in Korea
The NTS then allocates a simplified business registration number. That number goes into Stripe when you add the Korean registration, and onto every return.
Business customers and the Korean BRN
Stripe's page says that "sales to business customers in South Korea don't trigger any tax registration obligations as remote sellers aren't required to collect tax on such sales." The Korean business customer accounts for the VAT itself. This is the reverse charge model, applied to Korea.
The question is how your checkout tells the two apart. In Stripe, it's the customer's tax ID. Stripe's customer tax ID list includes the Korean business registration number as kr_brn, in the format 123-45-67890, and marks it as one that affects tax calculation. Stripe's zero-tax guide says "Stripe Tax automatically applies the reverse charge based on the presence of a tax ID and the jurisdictions involved in the transaction."
In practice:
- A Korean customer with a
kr_brnon file gets a reverse-charge invoice with no Korean VAT on it. - A Korean customer without one is treated as a consumer and charged 10%.
- A company that buys without entering its number is charged as a consumer. Getting that back is a conversation, not a setting.
If your product sells to Korean companies, collect the tax ID at checkout. Stripe Checkout has a tax ID collection option for business tax IDs, and you can add them to existing customers in the Dashboard.
Korea's records rule makes the BRN matter twice. Article 96-2(8) says your transaction details must include the "registration number (limited to entrepreneurs), name, and trade name of the recipient", along with the service type, the value of supply and VAT, and the time of supply. PwC says these records are kept "for five years from the VAT return filing due date." A kr_brn on the Stripe customer is the easiest place to keep that number.
Filing Korean VAT: periods, deadlines and the won exchange rate
Korea's VAT year has two six-month taxable periods, January to June and July to December. Each is split again: a preliminary return covers the first three months (January to March, July to September), and a final return covers the period as a whole. Under Korea's Value-Added Tax Act, returns are due within 25 days after each period ends. In practice, that means four filings a year:
| Return | Covers | Due |
|---|---|---|
| Preliminary, first period | January to March | April 25 |
| Final, first period | April to June | July 25 |
| Preliminary, second period | July to September | October 25 |
| Final, second period | October to December | January 25 |
Article 96-2(5) of the decree sets the content for foreign sellers: "the total value of supply of electronic services in the Republic of Korea for the filing period of return, the input tax amount to be deducted, and the amount of tax payable."
The exchange rate Korea uses is not the one in your Stripe export
The return is in won, but your Stripe prices probably aren't. Korea tells foreign sellers how to convert. Under Article 96-2(7), a seller paid in foreign currency "may use, as a tax base, an amount converted applying the basic exchange rate as at the last day of the taxable period (for a preliminary return and payment, referring to the last day of the preliminary return period)." The NTS publishes that rate.
Stripe converts differently. Its tax reporting documentation says that when your pricing currency differs from the filing currency, "Stripe Tax converts amounts using available exchange rates at the time of the transaction." Each sale in Stripe's itemized export carries its own filing_exchange_rate. Add up the filing_tax_amount column and you get a won figure built from hundreds of daily rates. The decree's method uses one rate for the whole quarter.
The two totals won't match. If you follow the period-end method, start from the dollar totals in Stripe's export and convert them once at the NTS rate for the last day of the quarter. Don't sum Stripe's won column. Our glossary entry on the Stripe Tax filing currency explains those columns in detail.
A worked example: one quarter of Korean SaaS sales
Take a US company selling a 20 USD per month plan, priced tax-exclusive in USD. The won figures use an illustrative 1,400 won to the dollar. That is not a real rate. Use the NTS basic exchange rate for March 31 when you file.
In January to March, its Korean sales through Stripe are:
| Customers | Subscription months | Sales (USD) | VAT charged (USD) |
|---|---|---|---|
| Consumers, no tax ID | 600 | 12,000 | 1,200 |
Companies with a kr_brn | 45 | 900 | 0 (reverse charge) |
The preliminary return, due April 25, reports Korean consumer sales of 12,000 USD. At the illustrative 1,400 won, that is a tax base of 16,800,000 won and VAT payable of 1,680,000 won. The 900 USD of sales to Korean companies doesn't appear as VAT you owe. Keep those customers' BRNs in your records.
Timing follows Korea's rule, not your invoice date. Article 96-2(11) makes the time of supply the earlier of "when the purchaser receives electronic services from the supplier" or "when the purchaser completes the payment." A renewal charged on March 31 belongs to this quarter even if the service month runs into April.
On the QuickBooks side, the liability account picked up 1,200 USD for these sales. When you pay, the dollars that leave your bank depend on the rate on the day you pay, not the March 31 rate. Clear the 1,200 USD from the liability account and post any difference to an exchange gain or loss account. Don't leave a few dollars sitting in the liability forever.
How Korean VAT 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. It works like this:
- In QuickBooks, create a non-inventory product such as "Sales Tax" and map it to a liability account.
- In Acodei's Stripe Tax settings, choose Tax Product and select that product.
- 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.
So in the example, each Korean consumer's 20 USD sale reaches QuickBooks as 20 USD of revenue and a 2 USD tax line in the liability account. A Korean company's reverse-charge sale carries no Korean VAT in Stripe, so it adds nothing to what the liability account holds.
The Tax Product puts every Stripe Tax amount in one account. If you also collect US sales tax, EU VAT or Japanese Consumption Tax, the Korean share is mixed in with the rest. The liability balance tells you what you hold in total. The Korean figure comes from Stripe's itemized export, filtered to South Korea. Our guide to Japanese Consumption Tax on Stripe sales shows the same filing-time split for another Asia-Pacific country.
Price in USD: Acodei doesn't support the won
Stripe lists KRW among its zero-decimal currencies, the ones charged in whole units with no cents. Acodei supports decimal-based currencies only, and zero-decimal currencies are not supported. If you price Korean plans in won, those transactions will cause sync issues.
The practical answer is to keep Korean prices in USD. Stripe Tax still calculates Korean VAT on a USD price, and the won figures you need exist only on the return, built from your Stripe export and the NTS rate. For running other currencies through Stripe and QuickBooks, see our guide to Stripe multicurrency in QuickBooks.
Common mistakes with Stripe and South Korea VAT
- Waiting for a threshold. Korea has none for foreign digital sellers. The first consumer sale creates the obligation.
- Leaving products on a non-digital tax code. Stripe calculates Korean VAT only on digital product tax codes. Everything else checks out with no tax.
- Collecting before you add the registration. Stripe charges Korean VAT only after the Korean registration is in Stripe Tax. Register with the NTS first, then add it.
- Treating every company as B2B. Without a
kr_brnon the Stripe customer, Stripe charges a Korean company 10% like a consumer. - Filing from Stripe's won column. Korea's period-end method uses one rate. Stripe's export uses a rate per transaction. Convert the USD totals once.
- Pricing in won. KRW is zero-decimal, and Acodei doesn't support zero-decimal currencies. Keep Korean plans in USD.
For the general rules on when Stripe Tax says you need to register anywhere, start with our guide to Stripe Tax registration thresholds.
Frequently asked questions
Is there a VAT registration threshold in South Korea for foreign SaaS companies?
No. Stripe's South Korea page says remote sellers of digital products to consumers "must register for VAT purposes as from the first sale" and that "there are no registration thresholds for non-resident service providers." Stripe Tax's own threshold for Korea is one transaction. Registration is a simplified business registration with the National Tax Service, which assigns a registration number you then add to Stripe.
Do I charge Korean VAT to business customers?
Not if they're registered businesses. Stripe's page says sales to business customers in South Korea don't create a registration obligation for remote sellers, and the customer accounts for the VAT. In Stripe, a Korean business registration number stored as a kr_brn tax ID lets Stripe Tax apply the reverse charge. Without it, the sale is taxed at 10% as a consumer sale.
How often do foreign sellers file Korean VAT returns?
Four times a year. Korea has two six-month taxable periods, each with a preliminary return for its first three months and a final return for the period, due within 25 days after each period ends. Foreign sellers file through the NTS's system and pay into a foreign-exchange bank account the NTS designates. Confirm current deadlines with a Korean tax adviser before your first filing.
Which exchange rate converts Stripe sales into won for the return?
Korea's Enforcement Decree lets a foreign seller paid in foreign currency use the basic exchange rate on the last day of the taxable period, or of the preliminary period for a preliminary return. Stripe's itemized export converts each transaction at the rate when it happened. Convert your USD totals once at the NTS period-end rate rather than summing Stripe's won column.
Can I sync won-priced Stripe sales to QuickBooks with Acodei?
No. The won is a zero-decimal currency, and Acodei supports decimal-based currencies only. Price Korean plans in USD in Stripe. Stripe Tax still calculates the 10% Korean VAT, Acodei syncs the USD sale and its tax line to QuickBooks, and the won figures for the return come from your Stripe export and the NTS exchange rate.
Acodei syncs Stripe Tax into QuickBooks automatically, so your Korean return starts from a liability account that already holds what you collected, not 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 numbering, invoice matching, 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.
Related articles
Acodei Journal
Foreign Contractors on Stripe Connect: W-8BEN and 1042-S
Acodei Content Team
Foreign Contractors on Stripe Connect: W-8BEN and 1042-S
10/13/2026
Acodei Journal
Stripe to QuickBooks in Canada: Convert USD or Keep It?
Acodei Content Team
Stripe to QuickBooks in Canada: Convert USD or Keep It?
10/13/2026
Acodei Journal
Stripe Connect Backup Withholding: The 24% in QuickBooks
Acodei Content Team
Stripe Connect Backup Withholding: The 24% in QuickBooks
10/12/2026
Get more operational finance guides like this one
We will only send high-value product and finance content.