- TL;DR: For B2B SaaS in Portugal, Stripe is usually the most complete choice if you are prepared to handle VAT, invoicing and reconciliation rigorously.
- Paddle makes sense when you want a Merchant of Record: it charges more, but takes on the sale, VAT, receipts and a significant part of the tax burden in international sales.
- Mollie is strong in European methods and simplicity: it is a good option for direct payments and simple subscriptions, but less complete for complex SaaS billing.
- The worst decision is choosing only by the transaction fee: dunning, taxes, chargebacks, reconciliation and support for upgrades cost more than a 0.3% difference.
- For Portugal, confirm Multibanco, SEPA, cards, certified invoicing and VAT handling from the outset: these four points change the architecture.
The short answer: it depends on who the seller is
The question “Stripe vs Paddle vs Mollie” looks like a comparison of payment gateways. It is not. For a SaaS in Portugal, the first decision is to understand who legally sells to the end customer.
If your Portuguese company sells directly to the customer, Stripe and Mollie are payment processors. They help you collect payment. They do not become the seller. You remain responsible for VAT, invoicing, refunds, accounting, tax evidence, commercial terms and, in many cases, integration with certified invoicing software in Portugal.
If you use Paddle, in many scenarios Paddle acts as the Merchant of Record. The customer buys from Paddle, not directly from your company. Paddle charges, calculates applicable taxes, issues documentation to the buyer and then pays you. This changes the operation significantly.
At Impact Origin, when we enter SaaS products that do not yet have billing defined, as happened recently with two active clients at an early stage, the first conversation is not about SDKs. It is about the commercial model. Will the product sell to Portuguese companies by invoice? Will it sell self-service to freelancers in the EU? Will it sell globally to consumers? Will it have simple monthly plans or usage-based billing? Will it need trials, upgrades, credits and contract discounts?
My practical opinion:
- B2B SaaS with assisted sales, contracts and Portuguese or European clients: start with Stripe, unless you have a strong tax reason for a Merchant of Record.
- Global self-service SaaS, with many countries and a low ticket size: Paddle deserves serious consideration, even with a lower margin.
- European product with a simple checkout and important local methods: Mollie can be the cleanest option.
- Complex billing with usage metrics, add-ons, seat billing and internal integrations: Stripe tends to win.
VAT, invoicing and Merchant of Record
This is the point most teams underestimate.
With Stripe or Mollie, your company receives payments. That means you have to issue fiscally valid documents. In Portugal, this may involve invoicing software certified by the Tax Authority, series communication, SAF-T and accounting processes that do not disappear because the checkout looks good.
Stripe Billing and Stripe Invoicing generate invoices inside Stripe, but this should not automatically be confused with certified invoicing for Portuguese obligations. In many Portuguese SaaS companies, the correct architecture is: Stripe charges, your system records the event, a system such as Moloni, InvoiceXpress, Jasmin or another issues the fiscal invoice, and accounting reconciles the payments. The exact detail should be validated with an accountant, not with a Reddit thread.
Paddle changes the problem. As Merchant of Record, Paddle is usually the entity selling to the end customer. This simplifies VAT in international sales, especially B2C, because Paddle handles the collection and reporting of applicable taxes at checkout. You receive net payouts. For small teams, this can save months of operational work.
But there are trade-offs.
With Paddle:
- you have less control over the commercial and tax relationship with the buyer;
- the checkout experience and tax documentation follow Paddle's rules;
- the fees are higher;
- some B2B contractual exceptions may be more difficult;
- reconciliation is done through aggregated payouts.
With Stripe or Mollie:
- you have more control over pricing, invoicing, contracts and data;
- you can integrate better with CRM, ERP and internal processes;
- you take on the tax and operational burden;
- you have to design the model for invoices, credit notes, refunds and chargebacks well.
For B2B SaaS in Portugal, this is often decisive. A Portuguese company selling to other Portuguese companies may need an invoice with NIF, fiscal address, payment terms and, sometimes, payment by bank transfer. The gateway is only one part of the system.
Relevant documentation:
- Stripe Tax and Billing: docs.stripe.com
- Paddle Billing API v2: developer.paddle.com
- Mollie API v2 and Recurring: docs.mollie.com
- VAT rules in the EU: europa.eu, VAT on digital services section
Payment methods in Portugal and Europe
For B2B SaaS, cards are still sufficient in many cases. But there are nuances in Portugal.
Stripe supports cards, Apple Pay, Google Pay, Link, SEPA Direct Debit and Multibanco in certain scenarios. Multibanco is useful for one-off payments, but it is not a good basis for automatic subscriptions. If the product depends on frictionless monthly renewal, cards and SEPA Direct Debit are more suitable.
Mollie has a strong position in Europe because of local methods such as iDEAL, Bancontact, SEPA, cards, PayPal and others. For Portugal, you should confirm at the time of implementation the exact availability of Multibanco and other local methods in your contract and country of operation. Do not assume that all methods listed globally are active for your account.
Paddle abstracts much of this decision. Paddle's checkout presents available methods according to country, currency and risk. This is convenient, but less controllable. If you have a very specific strategy for the Portuguese market, for example promoting Multibanco to reduce abandonment among local customers, Paddle may not give you the same level of fine-tuning.
The practical rule:
- B2B SaaS above 50 euros per month: card and SEPA are enough to start. You need good invoicing more than ten payment methods.
- B2C or prosumer in Portugal: Multibanco can help, but be careful with subscriptions.
- Expansion to the Netherlands or Belgium: Mollie becomes more interesting because of iDEAL and Bancontact.
- Global self-service sales: Paddle reduces tax and operational work.
A common trap: teams choose Multibanco because “Portuguese people use it”, but then build a monthly subscription that depends on the user generating and paying references manually. This increases involuntary churn. For recurrence, choose methods with automatic collection.
Subscriptions, upgrades and dunning
The real difference appears when billing stops being “monthly plan of 29 euros”.
Stripe Billing is quite complete for SaaS: subscriptions, prices, coupons, trials, invoices, proration, metered billing, customer portal and detailed webhooks. If you use a recent version of the API, for example Stripe API 2024-04-10, you can model most common cases without writing a billing engine from scratch.
Stripe's strength is the combination of flexibility and ecosystem. Want to charge by seats? You can. Want a base plan plus usage? You can. Want immediate upgrades with proration? You can. Want dunning with Smart Retries? That too.
The problem is that flexibility creates complexity. If every special plan becomes a manual exception, in six months you have an unreadable pricing table and incorrect MRR reports.
Paddle Billing also supports plans, trials, discounts, proration and webhooks. The difference is that you are operating within Paddle's commercial model. For self-service products, it is sufficient in many cases. For B2B with customised contracts, procurement and specific terms, it can become restrictive.
Mollie Recurring is simpler. It works well for less complex subscriptions, especially if your system already has the concept of plan, account status and collection authorisation. But do not expect the same depth of billing product that you find in Stripe. Many teams end up building more logic on the application side.
Dunning is another critical point. An expired card, a 3D Secure failure or a rejected SEPA debit can wrongly suspend an account. For B2B SaaS, automatically suspending at the first failed payment is almost always a bad idea. Better:
- mark the invoice as overdue;
- notify billing contacts;
- attempt collection several times;
- keep a grace period of 7 to 14 days;
- block features progressively, do not delete data;
- create an internal task for important accounts.
Stripe provides good tools here. Paddle also handles part of the flow. With Mollie, you may need more of your own logic.
Technical integration: webhooks, idempotency and reconciliation
Payment integration should be treated as a distributed system. Webhooks arrive duplicated, out of order and sometimes minutes after checkout. If your code assumes that an event arrives once and in the right order, you will create expensive bugs.
Typical stack we recommend: Node.js 22 LTS or another current runtime, PostgreSQL 16 for transactional state, a queue for asynchronous tasks when there are heavy side effects, and structured logs with correlation IDs. You do not need microservices to start. You need clear boundaries.
The minimum pattern is to store processed events and apply idempotency. Simple example in PostgreSQL:
create table payment_webhook_events (
provider text not null,
event_id text not null,
event_type text not null,
received_at timestamptz not null default now(),
processed_at timestamptz,
primary key (provider, event_id)
);
The handler should try to insert the event before executing actions. If the key already exists, respond 200 and do not repeat provisioning, email sending or invoice issuing.
Another production gotcha: do not activate an account just because the user reached the checkout success page. The success page is user experience, not accounting confirmation. Activate based on the correct webhook:
- Stripe: events such as
checkout.session.completed,invoice.paidandcustomer.subscription.updated, depending on the flow. - Paddle: transaction and subscription events in API v2.
- Mollie: query the payment or subscription after the webhook, because the webhook is a notification for you to fetch the current state.
You should also separate three concepts:
- entitlement: what the customer can use now;
- billing state: the state of the subscription, invoice and payment;
- accounting state: fiscal documents, refunds, credit notes and reconciliation.
Mixing all three into a plan column is classic technical debt. It works in the first month. Then come trials, upgrades, payment failures, coupons and partial refund requests.
Practical recommendation: keep your own internal model of subscription, plan, entitlement and billing_customer_id. The provider is an external dependency, not the single source of the entire domain.
Costs: the visible fee is only part of the bill
Fees change by country, card, volume, currency and contract. You always have to consult the official pages before deciding. Even so, there is a structural difference.
In typical public pricing, Stripe for European cards may be in the region of 1.5% plus 0.25 euros per transaction. Mollie for cards may be in a similar or slightly different range depending on method and country. Paddle is often presented with a higher fee, for example 5% plus 0.50 dollars, because it includes the Merchant of Record role.
On a 20 euro payment:
- Stripe at 1.5% plus 0.25 euros costs about 0.55 euros.
- A model at 1.8% plus 0.25 euros costs about 0.61 euros.
- Paddle at 5% plus about 0.50 euros costs close to 1.50 euros, before any conversions or specific terms.
It seems obvious to choose Stripe. But the calculation changes if you need to:
- implement VAT OSS;
- validate VAT IDs;
- issue invoices and credit notes correctly;
- handle sales tax outside the EU;
- reconcile hundreds of microtransactions;
- maintain billing support;
- respond to chargebacks;
- manage payment failures.
If you have an average ticket of 300 euros per month in B2B, the percentage difference is less relevant than control and integration with internal processes. If you have a global ticket of 9 euros per month, Paddle may pay off because it reduces tax and operational work.
Do not compare only gross margin. Compare margin after operations.
Simple question: how much does one monthly hour of your accountant, one hour of a senior developer and one hour of support solving billing cost? Multiply by 12. In many small SaaS companies, this weighs more than the gateway fee.
Recommendation by scenario
Choose Stripe if:
You have B2B SaaS in Portugal or the EU, need subscriptions with some complexity, want control over data and processes, and have the capacity to handle invoicing and taxes with accounting support. It is the choice I would make in most Portuguese B2B SaaS companies with the ambition to grow in a controlled way.
Stripe is also the best option if you plan usage-based billing, multiple prices, customer portal, trials, coupons, frequent upgrades and integration with internal tools. The documentation is good, the webhooks are detailed and there is a lot of knowledge available.
Choose Paddle if:
You sell self-service to many countries, especially B2C or prosumer, and do not want to turn your team into an international tax operation. The higher fee can be a rational trade-off. For small teams, reducing tax surface area can be worth more than optimising every transaction.
But do not choose Paddle just to “avoid hassle”. Read the terms carefully, test the checkout, validate how invoices appear for business customers, confirm exportable data and understand how you will reconcile payouts.
Choose Mollie if:
Your focus is Europe, you want local methods with good coverage, you have relatively simple payments and prefer a more direct integration. For products with simple subscriptions, recurring donations, memberships or models close to eCommerce, it can be a very good option.
I would be more cautious with Mollie in B2B SaaS with complex billing, multiple plans, add-ons, usage metrics and demanding financial reporting. There, you will probably write more of your own logic.
Do not choose any of them before answering this:
- Who is the legal seller?
- What fiscal document does the customer need?
- Is the payment automatically recurring?
- Are there sales outside the EU?
- Does the product have simple plans or usage-based billing?
- What happens when payment fails?
- How will you reconcile payouts with invoices?
- How do you leave this provider in two years?
This last question is important. Store external IDs, but do not let the provider define your entire domain. If tomorrow you migrate from Paddle to Stripe, or from Stripe to another processor, you need to know who is entitled to what without relying on an external API to answer everything.
Conclusion
For SaaS in Portugal, Stripe is usually the strongest option for B2B with technical and financial control. Paddle wins when Merchant of Record reduces international tax complexity. Mollie is a good European choice for simple payments and subscriptions.
The right decision is not the cheapest. It is the one that reduces operational risk without blocking the product.
If you are facing a similar problem, book a call at https://impact-origin.com/agendamento.