If your CR ecommerce sells USD 8,000/month and uses Stripe only, you are gifting USD 230 a month to avoidable fees — and migrating costs less than one month of margin. Most small Costa Rica stores default to Stripe because it integrates fast (true, under a day), but they do not realize the 5 national and regional options have a better effective fee once the ticket goes above USD 50.
This guide is the honest comparison of the 6 real gateways in CR — Stripe, Tilopay, GreenPay, BAC Credomatic, Promerica/BCR, and PayPal — with effective USD fees per ticket of 25, 80, and 250, the recommended mix by business model, the mistakes that cost the most, and how to choose in 1 week. If you arrived from the SINPE Móvil integration guide or the checkout optimization post, this is the detail on the gateway side.
💡 TL;DR: Stripe is the global default for its time-to-market (1 day), but above USD 50 of ticket any national option cuts fees by 30–70%. Tilopay wins for B2C mid ticket (USD 50–200), BAC for B2B (> USD 200), Stripe + PayPal for cross-border. The most expensive mistake is not auditing the effective fee after VAT + FX.
For a range with your real scope, head to the quote builder marking "ecommerce + local payments".
What a payment gateway is (and why CR is different)
A payment gateway is the service that connects your site's "Pay" button to the banking network and processors. It tokenizes the card, validates 3D-Secure, calculates the commission, and deposits the net amount in your account. No gateway, no online charge — period.
Costa Rica has 3 particularities that make the market different from the rest of LatAm:
- SINPE Móvil is a national rail with 90% adoption among banked adults. It is the only country in the region with a universally recognized instant P2P transfer system. Ignoring it at checkout costs between 20% and 40% lost conversion with local customers.
- Hacienda regulates mandatory e-invoicing for every taxpayer with sales > CRC 5 million/year. Every charge must generate an electronic receipt accepted by the ATV (Virtual Tax Administration). This happens outside the gateway — the gateway confirms the payment, your system fires the invoice.
- 13% VAT on the gateway commission. Stripe nominal commission is 2.9%, but effective after VAT is ~3.28%. Nobody looks at it in the contract but it shows up at month-end.
These three things — SINPE as a unique piece, Hacienda as a mandatory layer, VAT on commissions — are the context that defines which gateway fits.
SINPE Móvil detail, e-invoicing, and payment gateway are in the glossary.
The 6 real options for CR ecommerce 2026
Stripe (global default, 2.9% + USD 0.30, non-negotiable)
The default for a valid reason: integration in under 24 hours, SDKs for every modern stack (Next.js, React Native, Shopify), clean dashboard, automated dispute management. The commission is flat 2.9% + USD 0.30 for international cards — non-negotiable unless you do USD 80,000/month, and even then the discount is marginal.
The good: zero bureaucracy to start, automated payouts to your CR account in colones (BCCR rate, no margin), native recurring subscriptions support, Apple Pay and Google Pay integration that lifts mobile conversion ~10%.
The not-so-good: effective commission after VAT is 3.28%, not 2.9%. Does not process SINPE Móvil. The first time it goes down (1–2 times a year), your checkout is dead if you have no fallback. Support is 24/7 but in English and ticket-based.
Best for: new launches, B2C with international customers, subscriptions, marketplaces (Stripe Connect).
Tilopay (CR-native, integrates SINPE + cards)
The most complete option for new CR ecommerce. One integration covers SINPE Móvil + local cards (BAC, BCR, BNCR, Promerica) + international cards. Official SDKs for Next.js and WordPress, Shopify plugin, decent Spanish documentation.
Negotiated commission: SINPE 0.5%–1.5%, local card 2.8%–3.6%, international 3.4%–4.2%. Monthly fee USD 0–25. Settlement: same day for SINPE, 1–2 days for cards. Local support on CR business hours.
The good: the only integration that gives you SINPE + cards in a single SDK. Time-to-market 10–14 days including KYC. Real commission savings vs Stripe from USD 50 ticket onwards.
The not-so-good: the brand is less known internationally — some premium customers hesitate when they see the Tilopay logo at checkout. English documentation is weaker than Stripe.
Best for: new CR ecommerce, B2C mid ticket, merchants who want SINPE without adding another provider.
GreenPay (multi-bank + SINPE)
Traditional CR gateway with SINPE added. Stronger on corporate customers with business credit cards. Integration with BAC, Promerica, BCR, and BNCR under a single contract.
Commission: SINPE 1.0%–2.0%, local card 3.0%–4.0%, international 3.8%–4.5%. Monthly fee USD 30–80. Settlement: 2–3 business days. Local support with technical on-call.
The good: if you already operate with a corporate BAC account and want to add SINPE quickly, GreenPay is the short path. Integration with legacy systems (old ERPs) is better than Tilopay.
The not-so-good: higher commission than Tilopay, monthly fee not negotiable until volume is high, less polished documentation.
Best for: established merchants with corporate bank account that need to add SINPE and consolidate gateways under one provider.
BAC Credomatic (direct, best fee if you sell > USD 15,000/month)
Integrating directly with BAC makes sense when you bill more than USD 15,000/month and have a backend team that can maintain a banking connection. Negotiated commission drops to 1.8%–2.8% for local cards — vs 3.0%–4.0% via a provider — and incoming corporate SINPE charges no commission to the merchant.
Setup: corporate contract + bank KYC (4–8 weeks), declared minimum volume, integration with the BAC E-Commerce API (Spanish-only documentation, average quality). Dev cost: USD 3,000–5,000. Settlement: 1 business day.
The good: unbeatable commission for high volume, fast settlement (same bank), dedicated corporate account executive.
The not-so-good: slow setup, your team owns technical maintenance (the API changes 1–2 times a year), does not process international cards as smoothly as Stripe.
Best for: B2B with tickets > USD 200, distributors, merchants with > USD 15,000/month that want to cut fees to the bone.
Promerica + BCR (tier 2, integrate only if a B2B client requires it)
Promerica and BCR offer their own gateways that work technically but rarely are the best standalone option. Local card commission 2.5%–3.5%, monthly fee USD 25–60, settlement 2 days.
The only reason to integrate them is that a large B2B client (government supplier, educational institution, corporate client) demands receiving payments through those specific rails. Without that need, BAC or Tilopay cover better.
Setup: 3–6 weeks with KYC, dev cost USD 2,500–4,000 per gateway. Legacy documentation, support on banking hours only.
Best for: ecommerce that sells to state institutions or corporates that demand those specific banks.
PayPal (yes, still, for cross-border checkout)
PayPal is still alive and worth specifically for cross-border checkout. If your customer is in the US, Europe, or LatAm outside CR and does not want to enter their card on a site they do not know, PayPal closes the sale.
Cross-border commission: 4.4% + fixed fee per currency (USD 0.30 for USD). For CRC charges within CR, PayPal is expensive (5% + exchange rate with 3–4% margin). Settlement: instant to the PayPal account, 3–5 days to pull into CR.
The good: visual trust signal for international customers, ~12% of US customers prefer PayPal over card.
The not-so-good: high commission, poor support, arbitrary fund freezes (we see one client a year hit by this). Do not use it as the primary gateway.
Best for: as an additional button at checkout when your market includes US, Europe, or LatAm cross-border.
Real fees per ticket
Effective calculation (commission + 13% VAT) per single sale. What actually leaves your margin.
| Gateway | Ticket USD 25 | Ticket USD 80 | Ticket USD 250 |
|---|---|---|---|
| Stripe | USD 1.16 (4.6%) | USD 2.95 (3.7%) | USD 8.59 (3.4%) |
| Tilopay (card) | USD 0.81 (3.2%) | USD 2.45 (3.1%) | USD 7.64 (3.1%) |
| Tilopay (SINPE) | USD 0.20 (0.8%) | USD 0.63 (0.8%) | USD 1.97 (0.8%) |
| GreenPay | USD 1.02 (4.1%) | USD 3.25 (4.1%) | USD 10.16 (4.1%) |
| BAC direct | USD 0.65 (2.6%) | USD 2.04 (2.6%) | USD 6.36 (2.5%) |
| Promerica/BCR | USD 0.93 (3.7%) | USD 2.78 (3.5%) | USD 8.59 (3.4%) |
| PayPal cross-border | USD 1.45 (5.8%) | USD 4.32 (5.4%) | USD 12.74 (5.1%) |
Quick reads of the table:
- On a USD 25 ticket, the gap between best and worst gateway is USD 1.25 per sale. On 200 sales/month that is USD 250 — it starts to justify integration but barely.
- On a USD 80 ticket the gap goes up to USD 3.69 per sale. On 200 sales it is USD 738/month, USD 8,856/year. Here a bad gateway costs you more than half a developer salary.
- On a USD 250 ticket the gap is USD 10.77 per sale. On 100 sales/month that is USD 1,077/month, USD 12,924/year. At this level BAC direct pays back its setup in under a quarter.
SINPE Móvil via Tilopay is the cheapest option at any ticket but loses ~15% conversion vs cards — that is why the correct mix is not "SINPE only" but "offering SINPE in parallel". Details in integrate SINPE Móvil in CR ecommerce.
How to choose by business model
B2C ticket < USD 50: Stripe + SINPE in parallel
When the ticket is low, the additional friction of SINPE does not pay back with the savings. The winning strategy: Stripe as the primary gateway (because it converts better on mobile and is 1-day setup) plus SINPE Móvil via Tilopay or ProSinpe as a parallel button for customers who prefer not to use a card. Typical mix: 70% Stripe, 25% SINPE, 5% others.
Dev cost: USD 1,500–2,500 to add SINPE to an existing checkout. Payback: 6–10 months if you have > 150 transactions/month.
B2C ticket USD 50–200: Tilopay (1 integration, both)
Mid ticket is Tilopay's sweet spot: a single integration gives you SINPE + local card + international, the effective commission drops vs Stripe in any scenario, and local support resolves incidents on CR business hours. Typical mix here: 50% card, 40% SINPE, 10% others.
Dev cost: USD 1,500–2,200 for Tilopay from scratch. If you already have Stripe, leaving Stripe as fallback costs USD 600–1,000 extra. Migration payback: 4–7 months.
B2B ticket > USD 200: BAC direct + Tilopay backup
For high B2B tickets the effective commission weighs too much not to negotiate directly. BAC direct (or BNCR if your corporate account is there) drops local card commission to 1.8–2.8%, and incoming corporate SINPE is free. Tilopay as automatic backup covers when BAC has maintenance (typically Sundays 2–6 am).
Dev cost: USD 3,000–5,000 BAC + USD 1,500 Tilopay fallback. Typical payback: 3–5 months with volume > USD 15,000/month.
Cross-border: Stripe + PayPal
If your real market includes US, Europe, or LatAm cross-border, no CR provider handles international cards with the fluency those customers need. Stripe converts better on international mobile (Apple Pay, Google Pay) and PayPal closes ~12% of customers who refuse to enter a card. Mix: 75% Stripe, 15% PayPal, 10% others.
Dev cost: USD 1,200–2,000 to add PayPal to the existing Stripe checkout. ROI: the PayPal button recovers sales that would not close without it — the math is "extra sales recovered" not "commission saved".
Technical setup: what to ask the provider
Before signing with any gateway, demand documentation covering these points. If the account executive cannot answer concretely, do not sign:
- Webhooks with exponential retry: the "payment.succeeded" event must arrive at your backend with HMAC signed. If your server replies with an error, the provider must retry at least 5 times with backoff (5 min, 30 min, 2 h, 6 h, 24 h).
- Sandbox testing with simulated cards and SINPE: no serious provider forces you to test against prod. If there is no real sandbox, go elsewhere.
- Configurable fraud rules: amount limit per hour, BIN blacklist, Stripe Radar score or equivalent. They come off by default — turning them on drops chargebacks 40%.
- Refunds via API, not manual panel: your system must be able to refund partial or full with a call. Refunds via manual panel scale badly as volume grows.
- Automatic 3DS handling: the provider must trigger 3D-Secure on risky transactions without your frontend managing it. If they ask you to integrate 3DS in your UI, it is poorly built.
- Multi-currency with clear FX: if you sell in USD and your account is in CRC, the applied exchange rate must be the official BCCR rate of the day (not a hidden margin). Ask for the spread in writing in the contract.
- Support and SLA in writing: response time for critical incidents (frozen account, payments not credited). Without a written SLA it is not support, it is goodwill.
These seven points are non-negotiable. If any is missing, the gateway will fail you the day it matters most.
4 expensive mistakes we see often
Charging 2x due to race condition. The customer hits "Pay" twice because the button did not disable after the first click. Without an idempotency key on the call, the gateway processes both charges. Solution: implement an idempotency key generated on frontend (UUID per payment attempt) and validate it on backend before creating the transaction. Each double charge costs USD 15 chargeback + disputed amount + lost customer. We have seen merchants with 0.5% double-charge rate monthly — that is thousands of dollars.
Checkout fails on Safari mobile. Safari iOS has specific third-party cookie bugs that break the Stripe Elements flow if you do not initialize the frame correctly. If you never tested your checkout on a real iPhone (not simulator), it is almost certainly broken on a screen somewhere. iPhone is 35–45% of mobile traffic in CR — losing that segment kills the business. Solution: real tester with iPhone 13+ and Safari as part of every release. We also cover this in optimize checkout for conversion.
Not handling 3DS / chargebacks. The gateway issues the 3D-Secure challenge (typically OTP by SMS or bank app) and your UI must wait for it before marking payment as successful. If the frontend assumes "200 OK = paid" without validating final state, you will mark as paid transactions the bank rejected. Result: you ship product, the bank chargebacks 2 weeks later, you lose product + money + USD 15 fee. Solution: always use the
payment_intent.succeededwebhook as truth, never the inline POST response.Hidden FX fee when customer pays in CRC but merchant settles in USD. If your Stripe account is in USD but the customer pays in CRC, Stripe converts and keeps a 1% margin on top of the 2.9% nominal. Real total: ~4.5%. Most merchants do not see it until they reconcile month-end. Solution: configure settlement in CRC if your customer pays in CRC, in USD if they pay in USD. Or demand Tilopay/BAC to use the BCCR rate without margin — they do put this in writing.
How to pick your gateway mix in 1 week
Follow the howTo schema of this post — 5 sequential steps any ecommerce owner can execute:
Step 1: Calculate your real average ticket and volume
Export the last 90 days of sales and extract: average ticket, number of transactions/month, effective commission paid. With those three numbers you can project what you would pay on each gateway.
Step 2: Request quotes from 3 providers the same day
Tilopay (sales@tilopay.com), GreenPay (comercial@greenpay.me), and your main bank account executive. Same email, same questions: SINPE commission, local card commission, international card commission, monthly fee, settlement time, minimum volume.
Step 3: Model the 3 scenarios with your real volume
In an Excel calculate: total monthly commission with Stripe only, with Tilopay only, with Stripe + SINPE 60/40 mix. Add the monthly fee. The difference between worst and best scenario over 12 months almost always exceeds USD 1,500 — more than the integration cost.
Step 4: Verify the gateway supports your business model
Recurring subscriptions → only Stripe and PayPal have robust auto-billing. Marketplace with vendors → only Stripe Connect handles split payments. Heavy cross-border → BAC and Tilopay charge more for international. Cross-check your model against each provider before signing.
Step 5: Sign with 1 primary and leave 1 fallback ready
A gateway is down 1–3 days a year on average. Best practice: 1 primary gateway and 1 fallback already integrated. The fallback is off by default and flips on with a toggle if the primary fails. Extra cost: USD 600–1,200 one-time.
Mix by store type — final recommendation
| Store type | Recommended mix | Total dev cost |
|---|---|---|
| B2C ecommerce low ticket (Shopify, CR) | Stripe + SINPE (Tilopay) | USD 800–1,500 |
| B2C ecommerce mid ticket (custom Next.js) | Tilopay (all-in-one) + Stripe fallback | USD 2,000–3,200 |
| B2B distributor with recurring invoicing | BAC direct + Tilopay fallback + corp SINPE | USD 4,500–7,000 |
| SaaS with recurring subscriptions | Stripe Subscriptions only | USD 1,200–2,000 |
| Marketplace with multiple vendors | Stripe Connect (mandatory) | USD 4,000–7,000 |
| Store exporting to US/Europe | Stripe + PayPal | USD 1,500–2,500 |
If your case does not clearly fit any of these, review the custom vs Shopify comparison — gateway decision depends on the base you pick for the store.
In summary
The gateway you choose determines between 1% and 3% of your annual margin on sales. In a CR store doing USD 100,000/year that is between USD 1,000 and USD 3,000 avoidable — more than the total migration cost.
| Decision | Recommendation |
|---|---|
| Default if starting from zero | Stripe (1-day setup) + plan to add SINPE in month 2 |
| If average ticket > USD 50 | Tilopay (1 integration covers SINPE + cards) |
| If volume > USD 15,000/month | BAC direct as primary + Tilopay as fallback |
| Cross-border | Stripe + PayPal button at checkout |
| Mistake to avoid | Comparing only nominal commission — always add 13% VAT + FX |
If you sell online in CR and never audited your effective commission per gateway, you are almost certainly leaving between USD 200 and USD 2,000 per month on the table. Most efficient move: use the quote builder for a range with your scope, or let's talk directly on WhatsApp.
💡 30-second quote: head to the interactive quote builder, pick "ecommerce + local payments" and get a USD range + WhatsApp message with your scope ready to send.
📞 Direct technical conversation: WhatsApp +506 8433 7752 or admin@siriusx.net. If your ecommerce is already live, we audit your current gateway at no cost.
Related posts
- How to integrate SINPE Móvil in a CR ecommerce — technical guide to add SINPE at checkout without killing conversion.
- Optimize the CR ecommerce checkout — from 1.5% to 3.5% conversion: the 7 most common leaks.
- How much does software cost in Costa Rica — the pillar with ranges by project type.
- Custom vs Shopify — when Shopify wins and when custom is worth it.
- Ecommerce services — what we build for online stores in Costa Rica.
- Glossary: payment gateway — definition and quick comparison.
- Glossary: SINPE Móvil — how it works and when to integrate it.
- Glossary: e-invoicing — how it connects with the gateway.
