[{"data":1,"prerenderedAt":1032},["ShallowReactive",2],{"navigation_docs":3,"landing":72},[4,22,35,68],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Getting Started","/getting-started","1.getting-started",[9,13,17],{"title":10,"path":11,"stem":12},"Introduction","/getting-started/introduction","1.getting-started/1.introduction",{"title":14,"path":15,"stem":16},"Quickstart","/getting-started/quickstart","1.getting-started/2.quickstart",{"title":18,"path":19,"stem":20},"Authentication","/getting-started/authentication","1.getting-started/3.authentication",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Sdks","/sdks","2.sdks",[27,31],{"title":28,"path":29,"stem":30},"TypeScript SDK","/sdks/typescript","2.sdks/1.typescript",{"title":32,"path":33,"stem":34},"Python SDK","/sdks/python","2.sdks/2.python",{"title":36,"path":37,"stem":38,"children":39,"page":21},"Guides","/guides","3.guides",[40,44,48,52,56,60,64],{"title":41,"path":42,"stem":43},"Customers","/guides/customers","3.guides/1.customers",{"title":45,"path":46,"stem":47},"Plans & Pricing","/guides/plans-and-pricing","3.guides/2.plans-and-pricing",{"title":49,"path":50,"stem":51},"Subscriptions","/guides/subscriptions","3.guides/3.subscriptions",{"title":53,"path":54,"stem":55},"Invoices & Payments","/guides/invoices-and-payments","3.guides/4.invoices-and-payments",{"title":57,"path":58,"stem":59},"Payment Providers","/guides/payment-providers","3.guides/5.payment-providers",{"title":61,"path":62,"stem":63},"Analytics","/guides/analytics","3.guides/6.analytics",{"title":65,"path":66,"stem":67},"Webhooks","/guides/webhooks","3.guides/7.webhooks",{"title":69,"path":70,"stem":71},"API Reference","/api-reference","4.api-reference",{"id":73,"title":74,"body":75,"description":74,"extension":1024,"meta":1025,"navigation":21,"path":1026,"seo":1027,"stem":1030,"__hash__":1031},"landing/index.md","",{"type":76,"value":77,"toc":1022},"minimark",[78,106,161,858,995,1018],[79,80,81,89,92],"u-page-hero",{},[82,83,84,85,88],"template",{"v-slot:title":74},"One API. Every payment provider. ",[86,87],"br",{}," Billing without borders.",[82,90,91],{"v-slot:description":74},"NovaBilling is an open billing platform inspired by Stripe's developer experience and Lago's flexibility -- purpose-built for Africa and the world. Connect Stripe, Flutterwave, Paystack, and M-Pesa through a single, unified API. Manage customers, subscriptions, invoices, and payments across 17 currencies.",[82,93,94,100],{"v-slot:links":74},[95,96,99],"u-button",{"size":97,"to":15,"trailing-icon":98},"xl","i-lucide-arrow-right","Get Started",[95,101,69],{"size":97,"to":102,"color":103,"target":104,"variant":105},"http://localhost:3000/api/reference","neutral","_blank","outline",[107,108,109,112],"u-page-section",{},[82,110,111],{"v-slot:title":74},"Why NovaBilling?",[113,114,115,121,126,131,136,141,146,151,156],"card-group",{},[116,117,120],"card",{"icon":118,"title":119,"to":58},"i-lucide-globe","Borderless by Default","Support 17 currencies across 40+ countries. Automatic currency matching routes payments to the right provider -- from mobile money in Nairobi to card payments in New York.",[116,122,125],{"icon":123,"title":124,"to":15},"i-lucide-building-2","Multi-Tenant Architecture","Every tenant gets an isolated database with encrypted credentials. Built for SaaS platforms that need to offer billing to their own customers.",[116,127,130],{"icon":128,"title":129,"to":29},"i-lucide-zap","Ship in Minutes","Type-safe TypeScript and Python SDKs generated from our OpenAPI spec. Full autocomplete, comprehensive error handling, and always in sync with the API.",[116,132,135],{"icon":133,"title":134,"to":58},"i-lucide-credit-card","4 Payment Providers","Stripe for global cards. Flutterwave & Paystack for West Africa. M-Pesa for East Africa. Automatic failover between providers when one is unavailable.",[116,137,140],{"icon":138,"title":139,"to":50},"i-lucide-refresh-cw","Smart Subscriptions","Free trials, plan upgrades, downgrades, pausing, resuming, and automated renewals. Proration and dunning handled automatically.",[116,142,145],{"icon":143,"title":144,"to":54},"i-lucide-file-text","Invoices & Checkout","Auto-generate PDF invoices. Create hosted checkout URLs for any invoice. Email delivery on every billing event with automatic retries.",[116,147,150],{"icon":148,"title":149,"to":62},"i-lucide-bar-chart-3","Revenue Analytics","Track revenue, subscriptions, churn, and payment success rates. Filter by date range, currency, and provider with daily, weekly, or monthly grouping.",[116,152,155],{"icon":153,"title":154,"to":66},"i-lucide-bell","Real-Time Webhooks","Signature-verified webhook notifications for every event -- payments, subscriptions, invoices. Automatic retries with exponential backoff.",[116,157,160],{"icon":158,"title":159,"to":19},"i-lucide-lock","Enterprise Security","AES-256 credential encryption, JWT + API key dual authentication, scoped permissions, and rate limiting out of the box.",[107,162,163,166,169,212,845],{},[82,164,165],{"v-slot:title":74},"Get Started in 60 Seconds",[82,167,168],{"v-slot:description":74},"Install an SDK and create your first subscription.",[170,171,173,198],"code-group",{"sync":172},"pkg",[174,175,180],"pre",{"className":176,"code":177,"filename":178,"language":179,"meta":74,"style":74},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install novabilling\n","npm","bash",[181,182,183],"code",{"__ignoreMap":74},[184,185,188,191,195],"span",{"class":186,"line":187},"line",1,[184,189,178],{"class":190},"sBMFI",[184,192,194],{"class":193},"sfazB"," install",[184,196,197],{"class":193}," novabilling\n",[174,199,202],{"className":176,"code":200,"filename":201,"language":179,"meta":74,"style":74},"pip install novabilling\n","pip",[181,203,204],{"__ignoreMap":74},[184,205,206,208,210],{"class":186,"line":187},[184,207,201],{"class":190},[184,209,194],{"class":193},[184,211,197],{"class":193},[170,213,215,571,678],{"sync":214},"lang",[174,216,221],{"className":217,"code":218,"filename":219,"language":220,"meta":74,"style":74},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { NovaBillingClient } from 'novabilling';\n\nconst nova = new NovaBillingClient({\n  token: process.env.NOVA_API_KEY,\n});\n\n// Create a customer\nconst customer = await nova.customers.create({\n  externalId: 'usr_001',\n  email: 'amina@kampaltech.ug',\n  name: 'Amina Nakato',\n  currency: 'UGX',\n});\n\n// Subscribe them to a plan\nconst sub = await nova.subscriptions.create({\n  customerId: customer.id,\n  planId: 'plan_growth',\n  currency: 'UGX',\n});\n\nconsole.log(sub.status); // \"ACTIVE\"\n","TypeScript","typescript",[181,222,223,255,262,287,314,325,330,337,367,384,401,418,435,444,449,455,482,500,517,532,541,546],{"__ignoreMap":74},[184,224,225,229,233,237,240,243,246,249,252],{"class":186,"line":187},[184,226,228],{"class":227},"s7zQu","import",[184,230,232],{"class":231},"sMK4o"," {",[184,234,236],{"class":235},"sTEyZ"," NovaBillingClient",[184,238,239],{"class":231}," }",[184,241,242],{"class":227}," from",[184,244,245],{"class":231}," '",[184,247,248],{"class":193},"novabilling",[184,250,251],{"class":231},"'",[184,253,254],{"class":231},";\n",[184,256,258],{"class":186,"line":257},2,[184,259,261],{"emptyLinePlaceholder":260},true,"\n",[184,263,265,269,272,275,278,281,284],{"class":186,"line":264},3,[184,266,268],{"class":267},"spNyl","const",[184,270,271],{"class":235}," nova ",[184,273,274],{"class":231},"=",[184,276,277],{"class":231}," new",[184,279,236],{"class":280},"s2Zo4",[184,282,283],{"class":235},"(",[184,285,286],{"class":231},"{\n",[184,288,290,294,297,300,303,306,308,311],{"class":186,"line":289},4,[184,291,293],{"class":292},"swJcz","  token",[184,295,296],{"class":231},":",[184,298,299],{"class":235}," process",[184,301,302],{"class":231},".",[184,304,305],{"class":235},"env",[184,307,302],{"class":231},[184,309,310],{"class":235},"NOVA_API_KEY",[184,312,313],{"class":231},",\n",[184,315,317,320,323],{"class":186,"line":316},5,[184,318,319],{"class":231},"}",[184,321,322],{"class":235},")",[184,324,254],{"class":231},[184,326,328],{"class":186,"line":327},6,[184,329,261],{"emptyLinePlaceholder":260},[184,331,333],{"class":186,"line":332},7,[184,334,336],{"class":335},"sHwdD","// Create a customer\n",[184,338,340,342,345,347,350,353,355,358,360,363,365],{"class":186,"line":339},8,[184,341,268],{"class":267},[184,343,344],{"class":235}," customer ",[184,346,274],{"class":231},[184,348,349],{"class":227}," await",[184,351,352],{"class":235}," nova",[184,354,302],{"class":231},[184,356,357],{"class":235},"customers",[184,359,302],{"class":231},[184,361,362],{"class":280},"create",[184,364,283],{"class":235},[184,366,286],{"class":231},[184,368,370,373,375,377,380,382],{"class":186,"line":369},9,[184,371,372],{"class":292},"  externalId",[184,374,296],{"class":231},[184,376,245],{"class":231},[184,378,379],{"class":193},"usr_001",[184,381,251],{"class":231},[184,383,313],{"class":231},[184,385,387,390,392,394,397,399],{"class":186,"line":386},10,[184,388,389],{"class":292},"  email",[184,391,296],{"class":231},[184,393,245],{"class":231},[184,395,396],{"class":193},"amina@kampaltech.ug",[184,398,251],{"class":231},[184,400,313],{"class":231},[184,402,404,407,409,411,414,416],{"class":186,"line":403},11,[184,405,406],{"class":292},"  name",[184,408,296],{"class":231},[184,410,245],{"class":231},[184,412,413],{"class":193},"Amina Nakato",[184,415,251],{"class":231},[184,417,313],{"class":231},[184,419,421,424,426,428,431,433],{"class":186,"line":420},12,[184,422,423],{"class":292},"  currency",[184,425,296],{"class":231},[184,427,245],{"class":231},[184,429,430],{"class":193},"UGX",[184,432,251],{"class":231},[184,434,313],{"class":231},[184,436,438,440,442],{"class":186,"line":437},13,[184,439,319],{"class":231},[184,441,322],{"class":235},[184,443,254],{"class":231},[184,445,447],{"class":186,"line":446},14,[184,448,261],{"emptyLinePlaceholder":260},[184,450,452],{"class":186,"line":451},15,[184,453,454],{"class":335},"// Subscribe them to a plan\n",[184,456,458,460,463,465,467,469,471,474,476,478,480],{"class":186,"line":457},16,[184,459,268],{"class":267},[184,461,462],{"class":235}," sub ",[184,464,274],{"class":231},[184,466,349],{"class":227},[184,468,352],{"class":235},[184,470,302],{"class":231},[184,472,473],{"class":235},"subscriptions",[184,475,302],{"class":231},[184,477,362],{"class":280},[184,479,283],{"class":235},[184,481,286],{"class":231},[184,483,485,488,490,493,495,498],{"class":186,"line":484},17,[184,486,487],{"class":292},"  customerId",[184,489,296],{"class":231},[184,491,492],{"class":235}," customer",[184,494,302],{"class":231},[184,496,497],{"class":235},"id",[184,499,313],{"class":231},[184,501,503,506,508,510,513,515],{"class":186,"line":502},18,[184,504,505],{"class":292},"  planId",[184,507,296],{"class":231},[184,509,245],{"class":231},[184,511,512],{"class":193},"plan_growth",[184,514,251],{"class":231},[184,516,313],{"class":231},[184,518,520,522,524,526,528,530],{"class":186,"line":519},19,[184,521,423],{"class":292},[184,523,296],{"class":231},[184,525,245],{"class":231},[184,527,430],{"class":193},[184,529,251],{"class":231},[184,531,313],{"class":231},[184,533,535,537,539],{"class":186,"line":534},20,[184,536,319],{"class":231},[184,538,322],{"class":235},[184,540,254],{"class":231},[184,542,544],{"class":186,"line":543},21,[184,545,261],{"emptyLinePlaceholder":260},[184,547,549,552,554,557,560,562,565,568],{"class":186,"line":548},22,[184,550,551],{"class":235},"console",[184,553,302],{"class":231},[184,555,556],{"class":280},"log",[184,558,559],{"class":235},"(sub",[184,561,302],{"class":231},[184,563,564],{"class":235},"status)",[184,566,567],{"class":231},";",[184,569,570],{"class":335}," // \"ACTIVE\"\n",[174,572,577],{"className":573,"code":574,"filename":575,"language":576,"meta":74,"style":74},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import os\nfrom novabilling import NovaBilling\n\nnova = NovaBilling(token=os.environ[\"NOVA_API_KEY\"])\n\n# Create a customer\ncustomer = nova.customers.create(\n    external_id=\"usr_001\",\n    email=\"amina@kampaltech.ug\",\n    name=\"Amina Nakato\",\n    currency=\"UGX\",\n)\n\n# Subscribe them to a plan\nsub = nova.subscriptions.create(\n    customer_id=customer.id,\n    plan_id=\"plan_growth\",\n    currency=\"UGX\",\n)\n\nprint(sub.status)  # \"ACTIVE\"\n","Python","python",[181,578,579,584,589,593,598,602,607,612,617,622,627,632,637,641,646,651,656,661,665,669,673],{"__ignoreMap":74},[184,580,581],{"class":186,"line":187},[184,582,583],{},"import os\n",[184,585,586],{"class":186,"line":257},[184,587,588],{},"from novabilling import NovaBilling\n",[184,590,591],{"class":186,"line":264},[184,592,261],{"emptyLinePlaceholder":260},[184,594,595],{"class":186,"line":289},[184,596,597],{},"nova = NovaBilling(token=os.environ[\"NOVA_API_KEY\"])\n",[184,599,600],{"class":186,"line":316},[184,601,261],{"emptyLinePlaceholder":260},[184,603,604],{"class":186,"line":327},[184,605,606],{},"# Create a customer\n",[184,608,609],{"class":186,"line":332},[184,610,611],{},"customer = nova.customers.create(\n",[184,613,614],{"class":186,"line":339},[184,615,616],{},"    external_id=\"usr_001\",\n",[184,618,619],{"class":186,"line":369},[184,620,621],{},"    email=\"amina@kampaltech.ug\",\n",[184,623,624],{"class":186,"line":386},[184,625,626],{},"    name=\"Amina Nakato\",\n",[184,628,629],{"class":186,"line":403},[184,630,631],{},"    currency=\"UGX\",\n",[184,633,634],{"class":186,"line":420},[184,635,636],{},")\n",[184,638,639],{"class":186,"line":437},[184,640,261],{"emptyLinePlaceholder":260},[184,642,643],{"class":186,"line":446},[184,644,645],{},"# Subscribe them to a plan\n",[184,647,648],{"class":186,"line":451},[184,649,650],{},"sub = nova.subscriptions.create(\n",[184,652,653],{"class":186,"line":457},[184,654,655],{},"    customer_id=customer.id,\n",[184,657,658],{"class":186,"line":484},[184,659,660],{},"    plan_id=\"plan_growth\",\n",[184,662,663],{"class":186,"line":502},[184,664,631],{},[184,666,667],{"class":186,"line":519},[184,668,636],{},[184,670,671],{"class":186,"line":534},[184,672,261],{"emptyLinePlaceholder":260},[184,674,675],{"class":186,"line":543},[184,676,677],{},"print(sub.status)  # \"ACTIVE\"\n",[174,679,682],{"className":176,"code":680,"filename":681,"language":179,"meta":74,"style":74},"# Create a customer\ncurl -X POST http://localhost:3000/api/customers \\\n  -H \"Authorization: Bearer sk_live_...\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"externalId\": \"usr_001\",\n    \"email\": \"amina@kampaltech.ug\",\n    \"name\": \"Amina Nakato\",\n    \"currency\": \"UGX\"\n  }'\n\n# Create a subscription\ncurl -X POST http://localhost:3000/api/subscriptions \\\n  -H \"Authorization: Bearer sk_live_...\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"customerId\": \"cust_abc123\",\n    \"planId\": \"plan_growth\",\n    \"currency\": \"UGX\"\n  }'\n","cURL",[181,683,684,688,705,721,734,743,748,753,758,763,771,775,780,793,805,817,825,830,835,839],{"__ignoreMap":74},[184,685,686],{"class":186,"line":187},[184,687,606],{"class":335},[184,689,690,693,696,699,702],{"class":186,"line":257},[184,691,692],{"class":190},"curl",[184,694,695],{"class":193}," -X",[184,697,698],{"class":193}," POST",[184,700,701],{"class":193}," http://localhost:3000/api/customers",[184,703,704],{"class":235}," \\\n",[184,706,707,710,713,716,719],{"class":186,"line":264},[184,708,709],{"class":193},"  -H",[184,711,712],{"class":231}," \"",[184,714,715],{"class":193},"Authorization: Bearer sk_live_...",[184,717,718],{"class":231},"\"",[184,720,704],{"class":235},[184,722,723,725,727,730,732],{"class":186,"line":289},[184,724,709],{"class":193},[184,726,712],{"class":231},[184,728,729],{"class":193},"Content-Type: application/json",[184,731,718],{"class":231},[184,733,704],{"class":235},[184,735,736,739,741],{"class":186,"line":316},[184,737,738],{"class":193},"  -d",[184,740,245],{"class":231},[184,742,286],{"class":193},[184,744,745],{"class":186,"line":327},[184,746,747],{"class":193},"    \"externalId\": \"usr_001\",\n",[184,749,750],{"class":186,"line":332},[184,751,752],{"class":193},"    \"email\": \"amina@kampaltech.ug\",\n",[184,754,755],{"class":186,"line":339},[184,756,757],{"class":193},"    \"name\": \"Amina Nakato\",\n",[184,759,760],{"class":186,"line":369},[184,761,762],{"class":193},"    \"currency\": \"UGX\"\n",[184,764,765,768],{"class":186,"line":386},[184,766,767],{"class":193},"  }",[184,769,770],{"class":231},"'\n",[184,772,773],{"class":186,"line":403},[184,774,261],{"emptyLinePlaceholder":260},[184,776,777],{"class":186,"line":420},[184,778,779],{"class":335},"# Create a subscription\n",[184,781,782,784,786,788,791],{"class":186,"line":437},[184,783,692],{"class":190},[184,785,695],{"class":193},[184,787,698],{"class":193},[184,789,790],{"class":193}," http://localhost:3000/api/subscriptions",[184,792,704],{"class":235},[184,794,795,797,799,801,803],{"class":186,"line":446},[184,796,709],{"class":193},[184,798,712],{"class":231},[184,800,715],{"class":193},[184,802,718],{"class":231},[184,804,704],{"class":235},[184,806,807,809,811,813,815],{"class":186,"line":451},[184,808,709],{"class":193},[184,810,712],{"class":231},[184,812,729],{"class":193},[184,814,718],{"class":231},[184,816,704],{"class":235},[184,818,819,821,823],{"class":186,"line":457},[184,820,738],{"class":193},[184,822,245],{"class":231},[184,824,286],{"class":193},[184,826,827],{"class":186,"line":484},[184,828,829],{"class":193},"    \"customerId\": \"cust_abc123\",\n",[184,831,832],{"class":186,"line":502},[184,833,834],{"class":193},"    \"planId\": \"plan_growth\",\n",[184,836,837],{"class":186,"line":519},[184,838,762],{"class":193},[184,840,841,843],{"class":186,"line":534},[184,842,767],{"class":193},[184,844,770],{"class":231},[846,847,848,852,853,857],"tip",{"to":15},[849,850,851],"strong",{},"Ready to dive deeper?"," Follow the full ",[854,855,856],"a",{"href":15},"Quickstart Guide"," for a complete walkthrough -- from registration to your first payment.",[107,859,860,863,870],{},[82,861,862],{"v-slot:title":74},"Supported Currencies",[82,864,865,866,869],{"v-slot:description":74},"NovaBilling supports ",[849,867,868],{},"17 currencies"," across Africa and internationally.",[871,872,873,886],"table",{},[874,875,876],"thead",{},[877,878,879,883],"tr",{},[880,881,882],"th",{},"Region",[880,884,885],{},"Currencies",[887,888,889,909,932,950,962,977],"tbody",{},[877,890,891,897],{},[892,893,894],"td",{},[849,895,896],{},"West Africa",[892,898,899,902,903,902,906],{},[181,900,901],{},"NGN"," ",[181,904,905],{},"GHS",[181,907,908],{},"XOF",[877,910,911,916],{},[892,912,913],{},[849,914,915],{},"East Africa",[892,917,918,902,921,902,923,902,926,902,929],{},[181,919,920],{},"KES",[181,922,430],{},[181,924,925],{},"TZS",[181,927,928],{},"RWF",[181,930,931],{},"ETB",[877,933,934,939],{},[892,935,936],{},[849,937,938],{},"North Africa",[892,940,941,902,944,902,947],{},[181,942,943],{},"EGP",[181,945,946],{},"MAD",[181,948,949],{},"DZD",[877,951,952,957],{},[892,953,954],{},[849,955,956],{},"Central Africa",[892,958,959],{},[181,960,961],{},"XAF",[877,963,964,969],{},[892,965,966],{},[849,967,968],{},"Southern Africa",[892,970,971,902,974],{},[181,972,973],{},"ZAR",[181,975,976],{},"ZMW",[877,978,979,984],{},[892,980,981],{},[849,982,983],{},"International",[892,985,986,902,989,902,992],{},[181,987,988],{},"USD",[181,990,991],{},"EUR",[181,993,994],{},"GBP",[107,996,997,1000],{},[82,998,999],{"v-slot:title":74},"Explore the Docs",[113,1001,1002,1006,1010,1014],{},[116,1003,1005],{"icon":1004,"title":14,"to":15},"i-lucide-play","Register, create API keys, configure a payment provider, and start billing in under 5 minutes.",[116,1007,1009],{"icon":1008,"title":18,"to":19},"i-lucide-key","Understand JWT tokens for tenant management and API keys for data operations.",[116,1011,1013],{"icon":1012,"title":28,"to":29},"i-lucide-code","Full reference for the NovaBillingClient with type-safe methods for every resource.",[116,1015,1017],{"icon":1016,"title":32,"to":33},"i-lucide-terminal","Sync and async clients with comprehensive type hints and error handling.",[1019,1020,1021],"style",{},"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 .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 .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":74,"searchDepth":257,"depth":257,"links":1023},[],"md",{},"/",{"title":1028,"description":1029},"NovaBilling Docs - Borderless Billing for Africa & Beyond","One unified API for subscriptions, invoices, and payments. Connect Stripe, Flutterwave, Paystack, and M-Pesa through a single integration.","index","LU8lguWDBqMx5bXBPWWOdmv4L-r2G1ZYCbeVHoOW2a0",1773994178886]