# Cross-border ecommerce in the EU: selling from Bulgaria to Europe

Cross-border ecommerce from Bulgaria to the EU: the €10,000 OSS VAT threshold, languages, currencies, couriers, payments and returns, step by step.

Source: https://cloudcart.com/en/blog/cross-border-ecommerce-eu · CloudCart · 2026-11-06

In short: cross-border ecommerce from Bulgaria means selling online to consumers in other EU countries. Below €10,000 a year in such sales you can charge Bulgarian VAT; above it, you charge each customer's national VAT, usually through the EU One Stop Shop (OSS). You also need the customer's language, a courier that reaches the country, local payment methods and EU-compliant returns.

This guide is for companies selling from Bulgaria to the rest of the EU: foreign founders with a Bulgarian company, expats running a store from Sofia or Plovdiv, and Bulgarian brands taking their first orders from Romania, Greece or Germany. It covers what changes when an order crosses a border, and how each part is set up in CloudCart, the Bulgarian ecommerce platform. The legal rules come from the EU pages linked in the text; confirm how they apply to your company with your accountant.

## What does cross-border ecommerce mean for a store in Bulgaria?

Cross-border ecommerce is an online sale where the store and the customer are in different countries. For a Bulgarian company, the most common case is a B2C order from a consumer in another EU member state, shipped from a warehouse in Bulgaria. Inside the EU there are no customs, but VAT, consumer law and delivery differ from a domestic sale.

Three types of sale need different handling, so sort your orders into them first:

| Type of sale | Example | VAT | Customs |

| B2C inside the EU | A consumer in Romania orders from your Bulgarian store | Bulgarian VAT up to €10,000 a year in EU distance sales, then the customer's country VAT | None |

| B2B inside the EU | A company in Greece with a valid EU VAT number buys stock | Usually 0% on your invoice, the buyer accounts for VAT (reverse charge) | None |

| Outside the EU | A customer in Serbia, the UK or Turkey | Export rules, usually no Bulgarian VAT | Customs declaration and duties in the destination country |

If you also sell to customers in Bulgaria, the local side is covered in the guide to [how Bulgarians shop online](https://cloudcart.com/en/blog/ecommerce-in-bulgaria).

## When do you charge VAT of the customer's country? The €10,000 threshold and OSS

You charge the VAT of the customer's country once your intra-EU distance sales of goods and cross-border digital services to consumers exceed €10,000 (excluding VAT) in the current or the previous calendar year. The threshold is one total for all EU countries together, and it applies only to a seller established in a single EU country, such as a Bulgarian company shipping from Bulgaria ([European Commission, VAT One Stop Shop](https://vat-one-stop-shop.ec.europa.eu/one-stop-shop_en)).

Below the threshold, a sale to a consumer in Romania or Germany carries Bulgarian VAT, exactly as a domestic sale does. Above €10,000, each B2C sale to another EU country carries that country's VAT. You can register for VAT in each country where you sell, or use the One Stop Shop.

The One Stop Shop (OSS) is an EU scheme that lets you declare and pay the VAT of all EU countries through one quarterly return in your own country. It has applied to distance sales of goods since 1 July 2021. For a Bulgarian company, the registration and the quarterly return go through the NRA, the National Revenue Agency, which then passes the VAT on to the other countries. Bulgarian companies use the Union scheme; the import scheme (IOSS) is for goods imported from outside the EU.

- Add up your EU distance sales for this calendar year and the previous one, excluding VAT, Bulgarian customers and B2B sales.

- Decide before you pass €10,000. You can also apply the customer's country VAT from the first sale.

- Register for the OSS Union scheme with the NRA, or register for VAT in each destination country.

- Set the VAT rate per country in your store, so every order is charged correctly from the date the rule applies.

- File the quarterly OSS return with sales and VAT broken down by country, and keep the evidence of where each customer is, such as the delivery address.

Important: B2B sales to companies with a valid EU VAT number do not count towards the €10,000 and do not go through OSS. Check the buyer's VAT number in VIES, the EU's VAT number validation system, before you issue an invoice without VAT.

The detailed OSS rules for Bulgarian companies, with VAT rates and filing steps, are in the separate guide. See [OSS VAT for cross-border EU sales](https://cloudcart.com/en/blog/oss-eu-vat-cross-border-sales). If you still need the company itself, start with [company registration in Bulgaria for an online store](https://cloudcart.com/en/blog/company-registration-online-store).

> VAT by country OSS rates and VIES checks in the checkout In CloudCart, a VAT rule with the One Stop Shop switch charges each EU consumer the rate of their country, and a VAT number validated in VIES takes VAT off a B2B order and prints your reverse-charge wording on the invoice. Invoices and VAT in CloudCart →

## Which languages and currencies does a cross-border store need?

A cross-border store needs the customer's language for the product pages, the checkout and the emails, and the customer's currency outside the euro area.

Currency is simpler for a Bulgarian seller than it used to be. Bulgaria joined the euro area on 1 January 2026 at the fixed rate of 1 EUR = 1.95583 BGN ([European Central Bank](https://www.ecb.europa.eu/euro/changeover/bulgaria/html/index.en.html)), so one euro price list now works for Bulgaria, Greece, Germany and the other euro countries. Romania, Hungary, Poland and Czechia keep their own currencies.

In CloudCart, a second language is a language store built with the Multilang app. The main store stays your catalog, and each language store gets its own currency, prices, couriers, payment methods and domain. Multilang copies the products, machine-translates up to 9 fields per product, sets prices with a multiplier you choose, and adds hreflang tags so Google shows each searcher the right language. Stores Sync keeps stock equal between the stores by SKU or barcode. Copying and AI translation are included in CC Master (€249/month billed annually, excluding VAT, on the [pricing page](https://cloudcart.com/en/pricing)), and the full setup is in the guide to the [multilingual online store](https://cloudcart.com/en/blog/multilanguage-multicurrency-multistore).

The model with one catalog and several country stores is on the [multistore page](https://cloudcart.com/en/multistore).

## Which couriers ship from Bulgaria to other EU countries?

For parcels leaving Bulgaria, CloudCart stores use DPD Bulgaria for Romania, GLS for Europe, DHL and DHL Express worldwide, and the Sendcloud and EuShipment aggregators for many couriers through one contract.

| Courier in CloudCart | Where it ships | Best for |

| DPD Bulgaria (Speedy) | Bulgaria and Romania, to an address, office or locker | Romanian customers, with the same contract you use in Bulgaria |

| GLS | Across Europe, door to door, with GLS ParcelShop pickup points | Parcels to many EU countries from one contract country |

| DHL | Worldwide, door to door, customs paperwork for non-EU destinations | Customers outside the EU |

| DHL Express | 220+ countries, next-day or two-day international delivery | Urgent or high-value parcels |

| Sendcloud | Many European couriers, including DHL, DPD and GLS, through one Sendcloud account | Countries where you have no courier contract |

| EuShipment | EU-wide, through the couriers in your EuShipment contract | Pallets, freight and B2B stock |

Speedy is part of DPD, and in CloudCart its integration is called DPD Bulgaria. It reaches Romania directly, so a Bulgarian store does not need a separate Romanian courier contract for its first Romanian orders. Bulgarian couriers are compared in the guide to [couriers in Bulgaria](https://cloudcart.com/en/blog/couriers-in-bulgaria).

Two details save time. The GLS integration connects a contract from one GLS country office (Croatia, Czechia, Hungary, Romania, Slovenia, Slovakia or Serbia) and ships from there to other GLS countries. In Sendcloud and EuShipment, each courier inside the app is enabled separately.

For destinations outside the EU, DHL generates the customs paperwork from the order data, and its Duty account number field decides who pays the duties: you, if you set a duty account, or the recipient on delivery.

> Shipping across Europe Live rates and labels for DPD, GLS, DHL and Sendcloud Every courier connects with your own contract from Apps in the admin, quotes at checkout and prints the shipping label from the order, so a parcel to Bucharest or Vienna takes the same clicks as one to Sofia. Couriers in CloudCart →

## Which payment methods do EU customers expect?

EU customers expect card payments with Apple Pay and Google Pay everywhere, plus their national method in some countries: iDEAL in the Netherlands, Bancontact in Belgium and SEPA payments across the euro area. For parcels crossing a border, card payments remove the risk of an unpaid cash on delivery return.

| Payment option in CloudCart | What it adds for cross-border sales |

| CloudCart Pay | Visa, Mastercard, Apple Pay and Google Pay at checkout and on the product page, payouts by SEPA in 11 currencies, 0% transaction fee through Dec 31, 2026 |

| Mollie | iDEAL, Bancontact, SEPA Direct Debit, cards and PayPal on Mollie's hosted page; amounts are always sent in euro |

| Stripe | Card payments in 135+ currencies on Stripe's hosted checkout |

| PayPal | PayPal account payments for customers who prefer not to enter a card |

Mollie fits stores selling to Western Europe, because its national methods are in euro. For a store in lei or forints, Stripe's hosted checkout can charge the customer in their own currency. How these providers compare for a Bulgarian company is in the guide to [PayPal, Stripe and local payment providers in Bulgaria](https://cloudcart.com/en/blog/payment-providers-bulgaria), and the trade-offs of cash on delivery are in [cash on delivery or card payment](https://cloudcart.com/en/blog/cash-on-delivery-vs-card-payments).

> CloudCart Pay 0% transaction fee through Dec 31, 2026 Cards, Apple Pay and Google Pay are built into the checkout with no separate bank agreement, and payouts reach your account by SEPA, also in a second currency for a store in another market. How CloudCart Pay works →

## What are the EU rules for returns and withdrawal?

An EU consumer who buys online can withdraw from the contract within 14 days of delivery without giving a reason, and you must refund the payment within 14 days of being told. One returns policy covers all EU markets ([Your Europe, e-commerce and distance selling](https://europa.eu/youreurope/business/selling-in-eu/selling-goods-services/ecommerce-distance-selling/index_en.htm)).

- The refund. You refund the price and the original standard delivery cost within 14 days. You may wait until the goods are back or the customer shows proof of sending them. If the customer chose express delivery, you refund only the cost of standard delivery.

- The return shipping. The customer pays to send the goods back, unless you offered to pay or did not tell them about this cost before the purchase. A defective product goes back at your cost ( Your Europe, returns ).

- Missing information. If your store does not inform the customer about the right of withdrawal, the period is extended by one year.

- Exceptions. Perishable goods, goods made to order or clearly personalised, and sealed hygiene products that were opened can be excluded, if your terms say so.

- Delivery. Unless you agreed otherwise, you must deliver within 30 days. Until delivery, the risk of damage in transit is yours.

Since 19 June 2026, an online store selling to EU consumers must also have a withdrawal function: a clearly labelled button, such as "withdraw from contract here", available for the whole withdrawal period, through which the customer starts the withdrawal online ([Directive (EU) 2023/2673, EUR-Lex](https://eur-lex.europa.eu/eli/dir/2023/2673/oj/eng)). A returns email address in the terms is no longer enough on its own.

In CloudCart, the Withdraw from contract app adds this function: a floating button on the storefront and a step-by-step withdrawal page at /withdrawal, with email verification and an item picker. Requests arrive in Orders → Withdraw from contract, and the app keeps the acknowledgement and audit trail the directive expects. The refund itself and the credit note come from Issue return on the order, which moves the returned quantities back into stock. The full returns process is in [returns and consumer rights for an online store](https://cloudcart.com/en/blog/returns-consumer-rights-online-store).

## Can you refuse to sell to some EU countries?

You may choose the countries you deliver to, but you may not block or treat customers differently because of their nationality or place of residence. The EU Geo-blocking Regulation, which has applied since 3 December 2018, requires an online store to let customers from any EU country access it and buy on the same terms as local customers ([Regulation (EU) 2018/302, EUR-Lex](https://eur-lex.europa.eu/eli/reg/2018/302/oj/eng)).

- Allowed: delivering only to Bulgaria, Romania and Greece. Any EU customer can still buy for delivery there.

- Not allowed: redirecting a visitor to another country version without their consent, or refusing a card because it was issued in another EU country, when you accept that card brand.

## How to launch cross-border sales from Bulgaria: step by step

The fastest way to start is one new country at a time: pick the market, set VAT, translate, connect a courier and a payment method, publish compliant returns and test an order.

- Choose the first market by data. Look at where your visitors and orders already come from and where your courier reaches without a new contract.

- Settle VAT before the first order. Decide with your accountant whether to stay on Bulgarian VAT under €10,000 or register for OSS now, and enter the rates in the store.

- Create the language store with Multilang, set the currency and the price multiplier, and translate the meta fields and image alt texts too.

- Connect the courier for that country: DPD Bulgaria for Romania, GLS or Sendcloud for other EU countries, DHL outside the EU. Set a default product weight so the live rate is right.

- Add the payment methods the country expects, and test each one with a real order in the store's currency.

- Publish the terms and returns policy in the customer's language, with the 14-day withdrawal right, who pays for return shipping and the withdrawal button.

- Place a test order end to end: checkout, payment, shipping label, invoice, a withdrawal request and a refund. Then start advertising in the new market.

## How do you set up a CloudCart store for EU sales?

A CloudCart store sells to the EU with settings and apps that already exist in the admin: VAT rules by geo zone with the One Stop Shop switch, VIES validation at checkout, Multilang for languages, European couriers and payment providers, and the Withdraw from contract app.

| What you need | Where in the CloudCart admin |

| A geo zone for each EU country | Settings → Geo Zones |

| The country's VAT rate with OSS | Settings → Taxes and fees: a regional VAT rule (with "Make the tax Global" off) and the "One Stop Shop" switch on |

| Invoice text for orders without VAT | The same VAT rule: one text for EU B2B customers, one for non-EU customers |

| A language and currency store | Apps → Multilang → Stores → "+ Add language site" |

| Shared stock between stores | Apps → Stores Sync |

| European couriers | Apps: DPD Bulgaria, GLS, DHL, DHL Express, Sendcloud, EuShipment |

| The EU withdrawal button | Apps → Withdraw from contract, with a 4-step setup wizard |

With the One Stop Shop switch on, the platform charges a consumer in another EU country the rate of that country. With it off, the default rate is the one of the store's operating country in the general settings. Only one VAT rule applies to an order, and only country-level zone rules count for tax matching, so build one zone per country rather than a single "EU" zone with mixed rates.

> New store €1/month for the first 3 months Set up VAT by country, a second language and European couriers on the full plan before you pay the regular price. The offer applies to new stores on every plan. Create a store for €1 →

> Your margin abroad 0% commission on sales in every country Each country store pays its monthly plan, and the order value in Romania, Greece or Germany is never shared with the platform. How 0% commission works →

Platforms are compared in the guide to the [ecommerce platform for Bulgaria](https://cloudcart.com/en/blog/ecommerce-platform-bulgaria). Questions about VAT rules or courier setup in your store can go to support@cloudcart.com.

## Frequently asked questions

**What is cross-border ecommerce?**

Cross-border ecommerce is selling online to customers in another country. For a Bulgarian company, it usually means B2C orders from consumers in other EU countries, shipped from Bulgaria. It brings different VAT rules, the customer's language and currency, an international courier and EU consumer law on returns.

**Do I need to register for VAT in every EU country I sell to?**

No, if you use the One Stop Shop. Above €10,000 a year in EU distance sales you charge each customer's national VAT, and the OSS Union scheme lets a Bulgarian company declare and pay it all through one quarterly return with the NRA. Below the threshold you can charge Bulgarian VAT.

**Which courier ships from Bulgaria to other EU countries?**

DPD Bulgaria (Speedy) ships directly to Romania, GLS covers Europe, and DHL and DHL Express deliver worldwide. Aggregators such as Sendcloud and EuShipment give you several couriers through one contract. All of them are integrated in CloudCart with live rates and shipping labels.

**Who pays for returns when an EU customer withdraws?**

The customer pays the cost of sending the goods back, unless you offered to pay or did not inform them before the purchase. You refund the price and the original standard delivery cost within 14 days. Defective goods always go back at the seller's cost.

**Is the withdrawal button mandatory for online stores in the EU?**

Yes. Since 19 June 2026, Directive (EU) 2023/2673 requires a clearly labelled withdrawal function, such as a "withdraw from contract here" button, available throughout the withdrawal period. In CloudCart, the Withdraw from contract app adds the button, the withdrawal page and the admin inbox for requests.

**Can I refuse to ship to some EU countries?**

Yes, you choose where you deliver. What the Geo-blocking Regulation forbids is blocking access, redirecting without consent or offering worse terms because of a customer's nationality or residence. A customer from any EU country must be able to buy and receive the order at an address in a country you serve.
