> ## Documentation Index
> Fetch the complete documentation index at: https://www.easyppp.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ

> Billing, cards, environments, keys, and what EasyPPP does and does not touch in Stripe.

## Billing

<AccordionGroup>
  <Accordion title="What does EasyPPP cost?">
    10% of what the localized Prices collect. Nothing on anything sold at your base price, and nothing per request. The fee is billed monthly to the card on your team's account. Stripe does not issue invoices under $0.50, so a month with less than $5 of localized revenue is not charged.
  </Accordion>

  <Accordion title="What counts as localized revenue?">
    Paid invoice lines and completed one-time Checkout payments on Prices EasyPPP created, including siblings you have since un-imported. Discounts are deducted. Refunds and credit notes are netted off, so a refunded sale costs nothing. Figures are read from your Stripe account each night and converted to USD at that day's rate.
  </Accordion>

  <Accordion title="Is there a free tier?">
    Test mode and sandbox connections are free and never billed. Live revenue is billed at 10% from the first sale.
  </Accordion>

  <Accordion title="Where do I see what I owe?">
    **Settings** shows this month's localized revenue and the estimated fee. **Manage billing** opens the Stripe customer portal with your invoices and card.
  </Accordion>
</AccordionGroup>

## Cards and pausing

<AccordionGroup>
  <Accordion title="Why do I need a card before going live?">
    Live Prices and the live key are only created once a card is on file, because that is what the 10% is billed to. Test mode and sandboxes never ask for one.
  </Accordion>

  <Accordion title="What happens if my card is removed or fails?">
    Localized pricing pauses for your live connections: the API keeps answering, but every visitor gets your base Price and `meta.paused` is `true`. Your Stripe Prices and your key are untouched. Add a card under **Settings** and pricing resumes.
  </Accordion>

  <Accordion title="Can I pause localized pricing myself?">
    Yes. The pause switch on the dashboard does the same thing without touching Stripe. Turn it off to resume. Either way the change reaches the API within about a minute.
  </Accordion>
</AccordionGroup>

## Environments and keys

<AccordionGroup>
  <Accordion title="How do test mode and sandboxes work?">
    Live, test mode and each sandbox are separate connections, each with its own Prices and its own key (`ep_live_`, `ep_test_`, `ep_sbx_`). A test key only ever returns test Price IDs. Connect in test mode first if you want to see the full flow before any live Prices exist.
  </Accordion>

  <Accordion title="Is the key safe in my frontend code?">
    Yes. It is public on purpose, like a Stripe publishable key. It can only read the localized prices for the Prices you selected. It cannot charge, refund, change anything in Stripe, or see your customers, payments or revenue.
  </Accordion>

  <Accordion title="Can I rotate the key?">
    No. Each connection keeps one key. It is revoked when you disconnect the Stripe account, and reconnecting issues a new one, which you then update on your page.
  </Accordion>

  <Accordion title="Can I pass the visitor's country or IP address myself?">
    No. The country always comes from the request that reaches EasyPPP, which is why the call belongs in the browser.
  </Accordion>
</AccordionGroup>

## Stripe

<AccordionGroup>
  <Accordion title="What does EasyPPP change in my Stripe account?">
    It creates new Prices, nothing else. Existing Prices, Products, customers and subscriptions are never edited or deleted. Each sibling is created on the same Product as its base, in the same currency, with a nickname like `Pro · Deep (35%)` and metadata that marks it as EasyPPP's.
  </Accordion>

  <Accordion title="What permissions does the Stripe app need, and why?">
    Read access to products, prices, charges, invoices and Checkout Sessions, and write access to create Prices. The payment permissions are what let EasyPPP count localized revenue for billing without you doing anything. Nothing can charge or move money.
  </Accordion>

  <Accordion title="Which Prices can be localized?">
    Active Prices that charge a fixed amount per unit in your Stripe account's default currency, one-time or recurring. Archived, tiered, usage-based, customer-chooses-the-amount and fractional-cent Prices cannot be selected.
  </Accordion>

  <Accordion title="Are the localized Prices in the visitor's currency?">
    No. Siblings are in the same currency as your base Price, and that is what Stripe charges. The amount shown to the visitor on your page is an estimate in their currency at that night's exchange rate. If you have Adaptive Pricing enabled in Stripe, Checkout may present its own converted amount.
  </Accordion>

  <Accordion title="What happens when I un-import a Price?">
    Its siblings are archived. Subscriptions already on them keep billing as normal, and revenue on them still counts toward your fee. Importing the Price again brings the same siblings back.
  </Accordion>

  <Accordion title="I archived or deleted a sibling in Stripe by hand.">
    EasyPPP notices within the hour, stops returning it, and offers to recreate it on the products page. Visitors in that tier get your base Price until then.
  </Accordion>

  <Accordion title="How do I change the price of a product that is already localized?">
    Create the new base Price in Stripe as you normally would and import it. The old base and its siblings stay as they are for existing subscribers.
  </Accordion>

  <Accordion title="How do I remove EasyPPP?">
    Disconnect the account under **Settings**, which revokes the key, and remove the app from your Stripe dashboard. The Prices EasyPPP created remain in your account; archive them whenever you like.
  </Accordion>
</AccordionGroup>

## Pricing behavior

<AccordionGroup>
  <Accordion title="Why did a visitor get the base price?">
    One of four reasons: their country is in the base bucket for your currency, their country could not be determined, they came through a VPN, proxy or hosting provider while the VPN guard is on, or your account is paused. The response does not say which.
  </Accordion>

  <Accordion title="Can I choose which countries get a discount, or change the percentages?">
    No. The tiers come from World Bank purchasing-power data and are the same for every merchant. See [How it works](/docs/how-it-works).
  </Accordion>

  <Accordion title="Why is one of the siblings more expensive than my base price?">
    A few markets, Switzerland among them, have higher purchasing power than the home market of your base currency, so they get a premium tier. If you would rather not charge more there, you can archive that sibling in Stripe; visitors from those countries then get your base Price.
  </Accordion>

  <Accordion title="Does EasyPPP work with coupons, trials and tax?">
    Yes. Siblings are ordinary Prices, so Checkout applies coupons, trials and automatic tax to them exactly as it would to the base Price. Tax behavior is copied from the base Price.
  </Accordion>
</AccordionGroup>

## Support

Email [support@easyppp.com](mailto:support@easyppp.com). For a question about a specific response, include the `meta.request_id` from it.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.