[{"data":1,"prerenderedAt":470},["ShallowReactive",2],{"navigation_docs":3,"-guides-currencies":132,"-guides-currencies-surround":465},[4,30,47,128],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,13,17,21,25],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart",{"title":18,"path":19,"stem":20},"Authentication","\u002Fgetting-started\u002Fauthentication","1.getting-started\u002F3.authentication",{"title":22,"path":23,"stem":24},"Self-Hosting","\u002Fgetting-started\u002Fself-hosting","1.getting-started\u002F4.self-hosting",{"title":26,"path":27,"stem":28},"Build an Integration","\u002Fgetting-started\u002Fbuild-an-integration","1.getting-started\u002F5.build-an-integration",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Sdks","\u002Fsdks","2.sdks",[35,39,43],{"title":36,"path":37,"stem":38},"TypeScript SDK","\u002Fsdks\u002Ftypescript","2.sdks\u002F1.typescript",{"title":40,"path":41,"stem":42},"Python SDK","\u002Fsdks\u002Fpython","2.sdks\u002F2.python",{"title":44,"path":45,"stem":46},"PHP SDK","\u002Fsdks\u002Fphp","2.sdks\u002F3.php",{"title":48,"path":49,"stem":50,"children":51,"page":29},"Guides","\u002Fguides","3.guides",[52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124],{"title":53,"path":54,"stem":55},"Customers","\u002Fguides\u002Fcustomers","3.guides\u002F1.customers",{"title":57,"path":58,"stem":59},"Usage-Based Billing","\u002Fguides\u002Fusage-billing","3.guides\u002F10.usage-billing",{"title":61,"path":62,"stem":63},"Wallets","\u002Fguides\u002Fwallets","3.guides\u002F11.wallets",{"title":65,"path":66,"stem":67},"Coupons, Add-ons and Credit Notes","\u002Fguides\u002Fcoupons-add-ons-credit-notes","3.guides\u002F12.coupons-add-ons-credit-notes",{"title":69,"path":70,"stem":71},"Taxes","\u002Fguides\u002Ftaxes","3.guides\u002F13.taxes",{"title":73,"path":74,"stem":75},"Customer Portal","\u002Fguides\u002Fcustomer-portal","3.guides\u002F14.customer-portal",{"title":77,"path":78,"stem":79},"Ledger","\u002Fguides\u002Fledger","3.guides\u002F15.ledger",{"title":81,"path":82,"stem":83},"Plan Limits and Access","\u002Fguides\u002Fplan-limits-and-access","3.guides\u002F16.plan-limits-and-access",{"title":85,"path":86,"stem":87},"Currencies and Exchange Rates","\u002Fguides\u002Fcurrencies","3.guides\u002F17.currencies",{"title":89,"path":90,"stem":91},"Charge a Customer","\u002Fguides\u002Fcharge-a-customer","3.guides\u002F18.charge-a-customer",{"title":93,"path":94,"stem":95},"One-time Products & Partial Payments","\u002Fguides\u002Fone-time-products-and-partial-payments","3.guides\u002F19.one-time-products-and-partial-payments",{"title":97,"path":98,"stem":99},"Plans & Pricing","\u002Fguides\u002Fplans-and-pricing","3.guides\u002F2.plans-and-pricing",{"title":101,"path":102,"stem":103},"Subscriptions","\u002Fguides\u002Fsubscriptions","3.guides\u002F3.subscriptions",{"title":105,"path":106,"stem":107},"Invoices & Payments","\u002Fguides\u002Finvoices-and-payments","3.guides\u002F4.invoices-and-payments",{"title":109,"path":110,"stem":111},"Payment Providers","\u002Fguides\u002Fpayment-providers","3.guides\u002F5.payment-providers",{"title":113,"path":114,"stem":115},"Analytics","\u002Fguides\u002Fanalytics","3.guides\u002F6.analytics",{"title":117,"path":118,"stem":119},"Webhooks","\u002Fguides\u002Fwebhooks","3.guides\u002F7.webhooks",{"title":121,"path":122,"stem":123},"Sandbox","\u002Fguides\u002Fsandbox","3.guides\u002F8.sandbox",{"title":125,"path":126,"stem":127},"Money Movement","\u002Fguides\u002Fmoney-movement","3.guides\u002F9.money-movement",{"title":129,"path":130,"stem":131},"API Reference","\u002Fapi-reference","4.api-reference",{"id":133,"title":85,"body":134,"description":458,"extension":459,"links":460,"meta":461,"navigation":462,"path":86,"seo":463,"stem":87,"__hash__":464},"docs\u002F3.guides\u002F17.currencies.md",{"type":135,"value":136,"toc":452},"minimark",[137,146,151,188,192,199,278,303,310,313,317,326,329,411,415,418,429,448],[138,139,140,141,145],"p",{},"PimaBill keeps money in the currency it was charged in. A customer billed in UGX owes UGX, pays UGX, and appears in your UGX totals. Nothing is converted except reports, which add every currency up in one ",[142,143,144],"strong",{},"reporting currency"," so you can see the whole business at once.",[147,148,150],"h2",{"id":149},"any-iso-currency","Any ISO currency",[138,152,153,154,161,162,166,167,166,170,166,173,166,176,179,180,183,184,187],{},"Customers, prices, add-ons, wallets and invoices take any ",[155,156,160],"a",{"href":157,"rel":158},"https:\u002F\u002Fwww.iso.org\u002Fiso-4217-currency-codes.html",[159],"nofollow","ISO 4217"," code, such as ",[163,164,165],"code",{},"UGX",", ",[163,168,169],{},"KES",[163,171,172],{},"NGN",[163,174,175],{},"XOF",[163,177,178],{},"USD"," or ",[163,181,182],{},"EUR",", with the right number of decimals for each: none for UGX, two for KES, three for KWD. A code that is neither ISO nor one of your own is refused, so a typo like ",[163,185,186],{},"UGS"," never becomes a price.",[147,189,191],{"id":190},"your-own-currencies","Your own currencies",[138,193,194,195,198],{},"Bill in something that isn't an ISO currency, such as loyalty points, credits, a stablecoin or vouchers, by defining it first in ",[142,196,197],{},"Settings → Currencies",", or with the API:",[200,201,206],"pre",{"className":202,"code":203,"language":204,"meta":205,"style":205},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST https:\u002F\u002Fapi.pimabill.com\u002Fapi\u002Fcurrencies\u002Fcustom \\\n  -H \"Authorization: Bearer sk_live_...\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"code\": \"PTS\", \"name\": \"Loyalty points\", \"decimals\": 0, \"perUsd\": 100 }'\n","bash","",[163,207,208,231,249,263],{"__ignoreMap":205},[209,210,213,217,221,224,227],"span",{"class":211,"line":212},"line",1,[209,214,216],{"class":215},"sBMFI","curl",[209,218,220],{"class":219},"sfazB"," -X",[209,222,223],{"class":219}," POST",[209,225,226],{"class":219}," https:\u002F\u002Fapi.pimabill.com\u002Fapi\u002Fcurrencies\u002Fcustom",[209,228,230],{"class":229},"sTEyZ"," \\\n",[209,232,234,237,241,244,247],{"class":211,"line":233},2,[209,235,236],{"class":219},"  -H",[209,238,240],{"class":239},"sMK4o"," \"",[209,242,243],{"class":219},"Authorization: Bearer sk_live_...",[209,245,246],{"class":239},"\"",[209,248,230],{"class":229},[209,250,252,254,256,259,261],{"class":211,"line":251},3,[209,253,236],{"class":219},[209,255,240],{"class":239},[209,257,258],{"class":219},"Content-Type: application\u002Fjson",[209,260,246],{"class":239},[209,262,230],{"class":229},[209,264,266,269,272,275],{"class":211,"line":265},4,[209,267,268],{"class":219},"  -d",[209,270,271],{"class":239}," '",[209,273,274],{"class":219},"{ \"code\": \"PTS\", \"name\": \"Loyalty points\", \"decimals\": 0, \"perUsd\": 100 }",[209,276,277],{"class":239},"'\n",[279,280,281,287,293],"ul",{},[282,283,284,286],"li",{},[163,285,163],{},": 2 to 10 letters or digits, not an ISO code.",[282,288,289,292],{},[163,290,291],{},"decimals",": 0 to 8. Amounts round to this.",[282,294,295,298,299,302],{},[163,296,297],{},"perUsd",": optional. How many units make one US dollar, used to include the currency in reports. Without it, the currency is left out of converted totals, and reports list it under ",[163,300,301],{},"unconverted",".",[138,304,305,306,309],{},"After that, use ",[163,307,308],{},"PTS"," anywhere a currency goes. A currency in use can't be removed, and its decimals can't change.",[138,311,312],{},"Payment providers only move real money, so collections and payouts stay in ISO currencies.",[147,314,316],{"id":315},"reporting-currency","Reporting currency",[138,318,319,320,322,323,302],{},"Analytics and the dashboard overview add every currency up in your reporting currency. It starts as your country's currency (UGX for an organisation in Uganda, KES in Kenya) and can be changed in ",[142,321,197],{}," or with ",[163,324,325],{},"PUT \u002Fapi\u002Fcurrencies\u002Freporting",[138,327,328],{},"Every analytics response says what it is in:",[200,330,334],{"className":331,"code":332,"language":333,"meta":205,"style":205},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ \"mrr\": \"8400000.00\", \"currency\": \"UGX\", \"ratesAsOf\": \"2026-10-25\", \"unconverted\": [] }\n","json",[163,335,336],{"__ignoreMap":205},[209,337,338,341,343,347,349,352,354,357,359,362,364,367,369,371,373,375,377,379,381,384,386,388,390,393,395,397,399,401,403,405,408],{"class":211,"line":212},[209,339,340],{"class":239},"{",[209,342,240],{"class":239},[209,344,346],{"class":345},"spNyl","mrr",[209,348,246],{"class":239},[209,350,351],{"class":239},":",[209,353,240],{"class":239},[209,355,356],{"class":219},"8400000.00",[209,358,246],{"class":239},[209,360,361],{"class":239},",",[209,363,240],{"class":239},[209,365,366],{"class":345},"currency",[209,368,246],{"class":239},[209,370,351],{"class":239},[209,372,240],{"class":239},[209,374,165],{"class":219},[209,376,246],{"class":239},[209,378,361],{"class":239},[209,380,240],{"class":239},[209,382,383],{"class":345},"ratesAsOf",[209,385,246],{"class":239},[209,387,351],{"class":239},[209,389,240],{"class":239},[209,391,392],{"class":219},"2026-10-25",[209,394,246],{"class":239},[209,396,361],{"class":239},[209,398,240],{"class":239},[209,400,301],{"class":345},[209,402,246],{"class":239},[209,404,351],{"class":239},[209,406,407],{"class":239}," []",[209,409,410],{"class":239}," }\n",[147,412,414],{"id":413},"exchange-rates","Exchange rates",[138,416,417],{},"Rates are fetched once a day and kept by date. Each payment is converted at the rate of the day it was paid, so last month's revenue doesn't change when the shilling moves. Recurring revenue uses today's rate. Payments older than the rate history use the earliest rate available.",[138,419,420,421,424,425,428],{},"To see money exactly as it is, use the ",[142,422,423],{},"Money by currency"," card on the overview, or ",[163,426,427],{},"GET \u002Fapi\u002Fanalytics\u002Fby-currency",". It shows what was collected this month and last, what is outstanding, and recurring revenue in each currency, with nothing converted.",[138,430,431,432,435,436,439,440,443,444,447],{},"Self-hosting? Rates come from ",[163,433,434],{},"open.er-api.com"," by default. Set ",[163,437,438],{},"EXCHANGE_RATES_URL"," to any source that answers ",[163,441,442],{},"{ \"rates\": { \"UGX\": 3650.5, ... } }"," against USD (for example Open Exchange Rates with your app ID), or to ",[163,445,446],{},"off"," to turn fetching off.",[449,450,451],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":205,"searchDepth":233,"depth":233,"links":453},[454,455,456,457],{"id":149,"depth":233,"text":150},{"id":190,"depth":233,"text":191},{"id":315,"depth":233,"text":316},{"id":413,"depth":233,"text":414},"Bill in any ISO currency or one of your own, keep every balance in its own currency, and report in one currency at the rate of each payment's day.","md",null,{},true,{"title":85,"description":458},"Z_MtWgt7Sz7cLI45odHRpLJ2MyoWrPK8HpiVWObo4T0",[466,468],{"title":81,"path":82,"stem":83,"description":467,"children":-1},"What happens when your organisation reaches a plan limit, or its access is restricted.",{"title":89,"path":90,"stem":91,"description":469,"children":-1},"Take a one-time payment or start a plan, and send the customer a link to pay by card or mobile money.",1793401245431]