Skip to content

Prices by country and region

A regional price lets a buyer in a lower-income country pay a share of your price, in its currency, with taxes as its country expects.

One plan, priced for one buyer

Filled: what the buyer sees. The point marks the charge that pays you.

The Team plan in five countries

A regional tier names its countries and the share of the listed price they pay. A country outside every tier pays the list.

Buyer's cardTierPaysShown as
USnoneThe listed priceDollars, with sales tax added at Checkout
DEnoneThe listed priceEuros, with VAT inside the price
PLmiddle, 0.770% of the listZłoty, VAT inside, rounded to a usual ending
BRlower, 0.440% of the listReais, taxes inside, rounded
INlower, 0.440% of the listRupees, GST inside, rounded

A tier may name the plans it lowers. Verb prices, credit packs and coupons follow the tier unless plans leaves them out, and a coupon applies after the factor.

Which country a buyer is in

The country of the card sets the tier, and the billing address must agree with it. Where the buyer connects from never sets a price.

  1. The tier is fixed on the Customer at its first payment, and every renewal keeps it.
  2. A later card from outside that tier answers 402 region_mismatch, with the price for the card's country in offers.
  3. A Customer that moves pays its new country's price with a card from there, and moves to a cheaper tier at most once a year.
  4. An agent buying under a mandate pays the tier of the org that issued it, by that org's billing country.
  5. Keys bought at a regional price that call mostly from another tier's countries feed the risk signals, and a person reviews the account.

A traveller keeps its own price. A buyer behind a network from a cheaper country pays the list, because its card says where it is.

Currency, rounding and taxes

Each buyer sees one number in its currency on the price page, at Checkout and on the receipt. The factor applies before tax.

display.round sets the ending: charm rounds up to the ending prices there usually have, whole to a whole unit, exact not at all. display.taxes: 'local' puts tax inside the price where the buyer's country expects that, and on top where it does not.

The tax is calculated per charge by Stripe from the buyer's location, as settlement describes. Your payout lands in your own currency at Stripe's rate that day.

A tracker priced by purchasing power

The sales tracker lowers Team for two tiers and shows each price as buyers there expect it.

definition.ts
21 lines
import { define } from 'apis.dev'

/** Deals for each Customer, with Team priced by purchasing power in two tiers. */
export default define({
  name: 'pipeline', domain: 'pipeline.apis.dev',
  Company: { name: 'string', domain: 'url!#', deals: '<-Deal.company' },
  Deal: {
    title: 'string', amount: 'decimal(12,2)', company: '->Company.deals',
    stage: { open: [], qualify: 'opened', win: 'qualified', lose: ['opened', 'qualified'] },
  },
  offer: {
    Free: { month: 0, seats: 1, includes: { 'Deal.open': 25 } },
    Team: { month: 49, seats: 5, includes: { 'Deal.open': 1000 } },
    'Deal.open': 0.001,
    regions: {
      lower:  { countries: ['IN', 'BR', 'ID', 'EG'], factor: 0.4 },
      middle: { countries: ['MX', 'PL', 'TR', 'ZA'], factor: 0.7 },
    },
    display: { round: 'charm', taxes: 'local' },
  },
})

Your team checks what a buyer with a PL card sees with Price.preview on the Operator plane.

Price.preview · PL
11 lines
{
  "plan": "Team",
  "country": "PL",
  "tier": "middle",
  "factor": 0.7,
  "list": { "amount": 49, "currency": "USD" },
  "net": { "amount": 34.3, "currency": "USD" },
  "shown": { "amount": 167.99, "currency": "PLN", "taxes": "included" },
  "rate": 3.98,
  "set": "card"
}

Limits and refusals

The ruleWhat happens past it
A factor between 0 and 1A higher price for a country is a separate plan, never a tier
Each country in one tierA second tier for it is refused at publish with region_overlap
A tier's price above what its Sources costRefused at publish with below_cost, naming the tier
One tier per Customer, from its first paymentA card from elsewhere answers 402 region_mismatch with its own price
Regional prices on every plan, Free includedAPIs.Dev's take is a share of what the buyer paid, so it falls with the price