At a glance
Successful Viva Payments revenue grouped by customer country (or, when missing, card-issuer country). The cross-border / domestic split that’s structurally important for pan-EU SMBs adopting Viva for multi-country expansion.
| What it counts | SUM(transactions.Amount WHERE StatusId = F) GROUP BY billing_country. Falls back to card-issuer country when billing country is missing (typical for guest checkout). |
| API endpoint | /api/transactions joined with BillingDetails.Country and CardCountry (BIN-derived). |
| Currency | FX-converted to a presentment currency (default EUR) at Viva’s published daily rate for cross-country comparison. The only Viva card with FX. Per-country totals visible in native currency on hover. |
| Refunds | NOT deducted. Gross revenue per country. |
| Disputes / chargebacks | NOT deducted. |
| Failed / declined payments | Excluded. |
| Country resolution priority | (1) Customer billing country (Smart Checkout requires this for EEA SCA), (2) Card-issuer country from BIN, (3) “Unknown” (typically <2% of volume). |
| Channels | Online + POS unified. POS captures default to merchant’s country (terminal location) unless explicitly tagged. |
| Time window | 30D vsP. |
| Alert trigger | +25% shift in any single country’s share vs prior period (catches cross-border surges). |
| Roles | owner, marketing |
Calculation
Calculated automatically from your Viva Payments data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A pan-EU DTC olive-oil brand (“Aegean Olive”) shipping to 12 EU countries, headquartered Greece. Window 03 Apr 26 to 02 May 26.| Country | Customers | Revenue (native) | Revenue (EUR equiv) | Share |
|---|---|---|---|---|
| Greece (GR) | 4,210 | EUR 218,400 | EUR 218,400 | 47% |
| Germany (DE) | 1,150 | EUR 64,800 | EUR 64,800 | 14% |
| France (FR) | 980 | EUR 51,200 | EUR 51,200 | 11% |
| Italy (IT) | 620 | EUR 32,100 | EUR 32,100 | 7% |
| Cyprus (CY) | 540 | EUR 28,400 | EUR 28,400 | 6% |
| United Kingdom (GB) | 480 | GBP 24,200 | EUR 28,300 (FX 1.17) | 6% |
| Netherlands (NL) | 280 | EUR 16,200 | EUR 16,200 | 3.5% |
| Romania (RO) | 220 | RON 78,400 | EUR 15,800 (FX 0.20) | 3.4% |
| Belgium (BE) | 95 | EUR 4,800 | EUR 4,800 | 1% |
| Other | 110 | mixed | EUR 4,200 | 1% |
- Greece + Cyprus = 53% of revenue. Mediterranean home-market dominance is normal for a Greek brand. If this drops, either home market is shrinking or international growth is real, watch the trend.
- Germany at 14% with no German-language site is impressive. A brand selling to DE customers in English/Greek is leaving conversion on the table; native-language checkout typically lifts DE conversion 15, 25%.
- GBP-settled revenue at EUR 28,300 equivalent is ~6%, with FX applied at 1.17. UK customers paying in GBP avoid Stripe-style 1% FX spread; the merchant settles directly to a GBP IBAN with Viva. A pan-EU brand serving UK is structurally cheaper on Viva than on Stripe for this reason.
- RON traffic is small but present. Romanian customers pay in lei; Viva natively settles to a RON IBAN (or converts to EUR daily at published rate). Most non-Greek competitors don’t offer RON settlement and lose Romanian customers to local PSPs.
- “Other” at 1% covers tail markets. Often Spain (ES), Portugal (PT), Bulgaria (BG), Sweden (SE), Norway (NO). Each individually small but worth aggregating for marketing planning.
Sibling cards merchants should reference together
| Card | Why pair it with Revenue by Country |
|---|---|
viva_total_revenue | The total this slices. |
viva_card_country_mismatch | Mismatch view, when card-country and customer-country differ. Good fraud signal. |
viva_payment_methods | Country mix drives method mix (NL → iDEAL, BE → Bancontact, GR → IRIS). |
viva_decline_rate | Cross-border declines higher than domestic; country mix moves blended rate. |
viva_avg_transaction | Country mix moves avg (DE / NL baskets often larger than GR). |
Stripe stripe_revenue_by_country / PayPal revenue by country | Cross-PSP comparison. |
| Commerce platform revenue by country | Upstream view; should match for Viva-paid orders. |
Reconciling against the vendor’s own dashboard
Where to look in the Viva Payments Dashboard: viva.com/business/account/login. Closest comparable view:Viva Business → Sales → Reports → GeographyThe map view shows revenue density by country; the table view exposes per-country totals. Why our number may legitimately differ from the Viva Dashboard:
| Reason | Direction | Why |
|---|---|---|
| FX rate timing | Small drift | Viva publishes daily FX; we use Viva’s day-rate for the conversion. If you’re comparing across periods that span FX-rate changes, totals can drift 1, 3%. |
| Country resolution fallback | Either | Some transactions have no billing country; we fall back to card-issuer country, Viva Dashboard may use a different fallback. |
| Time zone | Boundary days off | Athens vs UTC. |
| Comparison | Expected relationship | When divergence is legitimate |
|---|---|---|
viva_revenue_by_country ↔ commerce-platform geo report | Should match for Viva-paid orders | Commerce-platform aggregate covers all rails. |
viva_revenue_by_country ↔ Stripe revenue by country | Independent | Per-country split may differ by rail (Greek issuers favour Viva domestic routing). |
Known limitations / merchant FAQs
Why is “Unknown” not zero? Some transactions arrive without billing country (guest checkout, certain wallet flows). We fall back to BIN-derived card country, which covers most. Residual “Unknown” is typically <2%; if higher, your checkout is missing a billing address requirement. Multi-currency settlement, does this card show native or EUR? Default presentment is EUR (or your account’s home currency). Hover any country row for the native amount. The FX is Viva’s published daily rate. Why is my UK-share lower than my Shopify UK-share? UK customers paying with PayPal don’t appear here. Sumpaypal.pp_revenue_by_country UK + this card’s UK + any Stripe UK to triangulate.
Greek customers paying with Greek-issued card vs non-Greek card?
Customer billing country is Greek (resolves to GR) regardless of card. Card-country only used when billing is missing. The mismatch view is viva_card_country_mismatch.
Romanian customers paying in lei (RON), do they show in Romania row?
Yes, billing-country = RO; native amount = RON; presentment EUR-converted at day-rate.
Customer in Cyprus paying in EUR, vs Greek customer paying in EUR?
Both EUR-native. The country split is by billing country, not currency. Cyprus = CY row; Greece = GR row; both denominated EUR.
My country share moved 5pp, what to investigate?
Marketing campaign launched in that country, currency / FX shift made one country relatively cheaper, public holiday in home market, or a competitor outage in target market. Cross-reference viva_revenue_trend for daily timing.
JP Morgan ownership impact?
None.