[{"data":1,"prerenderedAt":1851},["ShallowReactive",2],{"navigation_docs":3,"-guides-payment-providers":132,"-guides-payment-providers-surround":1846},[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":109,"body":134,"description":1840,"extension":1841,"links":1842,"meta":1843,"navigation":738,"path":110,"seo":1844,"stem":111,"__hash__":1845},"docs\u002F3.guides\u002F5.payment-providers.md",{"type":135,"value":136,"toc":1828},"minimark",[137,141,146,261,270,274,293,564,570,574,577,982,1001,1013,1017,1316,1327,1331,1575,1579,1582,1693,1697,1703,1706,1762,1766,1769,1773,1807,1811,1819,1824],[138,139,140],"p",{},"PimaBill supports multiple payment providers for global and African markets. Configure one or more providers to process payments for your tenants.",[142,143,145],"h2",{"id":144},"supported-providers","Supported Providers",[147,148,149,165],"table",{},[150,151,152],"thead",{},[153,154,155,159,162],"tr",{},[156,157,158],"th",{},"Provider",[156,160,161],{},"Coverage",[156,163,164],{},"Payment Methods",[166,167,168,183,196,209,222,235,248],"tbody",{},[153,169,170,177,180],{},[171,172,173],"td",{},[174,175,176],"strong",{},"Stripe",[171,178,179],{},"Global (195+ countries)",[171,181,182],{},"Cards, Bank Transfers, Wallets (Apple Pay, Google Pay)",[153,184,185,190,193],{},[171,186,187],{},[174,188,189],{},"Flutterwave",[171,191,192],{},"Nigeria, Kenya, Ghana, South Africa, Uganda, Tanzania",[171,194,195],{},"Cards, Bank Transfer, Mobile Money, USSD",[153,197,198,203,206],{},[171,199,200],{},[174,201,202],{},"Paystack",[171,204,205],{},"Nigeria, Ghana, South Africa, Kenya",[171,207,208],{},"Cards, Bank Transfer, USSD",[153,210,211,216,219],{},[171,212,213],{},[174,214,215],{},"Pesapal",[171,217,218],{},"Kenya, Uganda, Tanzania",[171,220,221],{},"M-Pesa, Airtel Money, cards",[153,223,224,229,232],{},[171,225,226],{},[174,227,228],{},"PayPal",[171,230,231],{},"Global",[171,233,234],{},"PayPal balance, cards",[153,236,237,242,245],{},[171,238,239],{},[174,240,241],{},"PayU",[171,243,244],{},"South Africa and others",[171,246,247],{},"Cards, EFT",[153,249,250,255,258],{},[171,251,252],{},[174,253,254],{},"DPO",[171,256,257],{},"Across Africa",[171,259,260],{},"Cards, mobile money",[138,262,263,264,269],{},"These process invoice payments through a checkout. Collections and payouts outside invoices also use MTN MoMo, Airtel Money, Yo! Payments, Eversend, NOWPayments, Binance Pay and your own crypto wallet: see the ",[265,266,268],"a",{"href":267},"\u002Fsdks\u002Ftypescript#collections-payouts-and-transfers","Money movement"," section of the SDK guides.",[142,271,273],{"id":272},"list-providers","List providers",[138,275,276,280,281,284,285,288,289,292],{},[277,278,279],"code",{},"GET \u002Fapi\u002Fpayment-providers"," lists every provider PimaBill supports, configured or not, so your integration can show what can be connected. Each entry says whether it's configured and active, its priority, which environment its saved credentials are for (",[277,282,283],{},"live"," or ",[277,286,287],{},"sandbox",", when that can be told from them), and the webhook URL to give the provider. Credentials are never returned. Pass ",[277,290,291],{},"configured=true"," to list only the providers you've set up.",[294,295,300],"pre",{"className":296,"code":297,"language":298,"meta":299,"style":299},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[\n  { \"id\": \"clx123\", \"providerName\": \"flutterwave\", \"name\": \"Flutterwave\", \"isConfigured\": true, \"isActive\": true, \"priority\": 1, \"environment\": \"live\", \"webhookUrl\": \"https:\u002F\u002Fapi.pimabill.com\u002Fwebhooks\u002Fflutterwave\u002Ften_123\" },\n  { \"id\": null, \"providerName\": \"stripe\", \"name\": \"Stripe\", \"isConfigured\": false, \"isActive\": false, \"priority\": null, \"environment\": null, \"webhookUrl\": \"https:\u002F\u002Fapi.pimabill.com\u002Fwebhooks\u002Fstripe\u002Ften_123\" }\n]\n","json","",[277,301,302,311,450,558],{"__ignoreMap":299},[303,304,307],"span",{"class":305,"line":306},"line",1,[303,308,310],{"class":309},"sMK4o","[\n",[303,312,314,317,320,324,327,330,332,336,338,341,343,346,348,350,352,355,357,359,361,364,366,368,370,372,374,376,378,381,383,385,388,390,393,395,397,399,401,404,406,408,412,414,416,419,421,423,425,427,429,431,433,436,438,440,442,445,447],{"class":305,"line":313},2,[303,315,316],{"class":309},"  {",[303,318,319],{"class":309}," \"",[303,321,323],{"class":322},"spNyl","id",[303,325,326],{"class":309},"\"",[303,328,329],{"class":309},":",[303,331,319],{"class":309},[303,333,335],{"class":334},"sfazB","clx123",[303,337,326],{"class":309},[303,339,340],{"class":309},",",[303,342,319],{"class":309},[303,344,345],{"class":322},"providerName",[303,347,326],{"class":309},[303,349,329],{"class":309},[303,351,319],{"class":309},[303,353,354],{"class":334},"flutterwave",[303,356,326],{"class":309},[303,358,340],{"class":309},[303,360,319],{"class":309},[303,362,363],{"class":322},"name",[303,365,326],{"class":309},[303,367,329],{"class":309},[303,369,319],{"class":309},[303,371,189],{"class":334},[303,373,326],{"class":309},[303,375,340],{"class":309},[303,377,319],{"class":309},[303,379,380],{"class":322},"isConfigured",[303,382,326],{"class":309},[303,384,329],{"class":309},[303,386,387],{"class":309}," true,",[303,389,319],{"class":309},[303,391,392],{"class":322},"isActive",[303,394,326],{"class":309},[303,396,329],{"class":309},[303,398,387],{"class":309},[303,400,319],{"class":309},[303,402,403],{"class":322},"priority",[303,405,326],{"class":309},[303,407,329],{"class":309},[303,409,411],{"class":410},"sbssI"," 1",[303,413,340],{"class":309},[303,415,319],{"class":309},[303,417,418],{"class":322},"environment",[303,420,326],{"class":309},[303,422,329],{"class":309},[303,424,319],{"class":309},[303,426,283],{"class":334},[303,428,326],{"class":309},[303,430,340],{"class":309},[303,432,319],{"class":309},[303,434,435],{"class":322},"webhookUrl",[303,437,326],{"class":309},[303,439,329],{"class":309},[303,441,319],{"class":309},[303,443,444],{"class":334},"https:\u002F\u002Fapi.pimabill.com\u002Fwebhooks\u002Fflutterwave\u002Ften_123",[303,446,326],{"class":309},[303,448,449],{"class":309}," },\n",[303,451,453,455,457,459,461,463,466,468,470,472,474,476,479,481,483,485,487,489,491,493,495,497,499,501,503,505,507,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,553,555],{"class":305,"line":452},3,[303,454,316],{"class":309},[303,456,319],{"class":309},[303,458,323],{"class":322},[303,460,326],{"class":309},[303,462,329],{"class":309},[303,464,465],{"class":309}," null,",[303,467,319],{"class":309},[303,469,345],{"class":322},[303,471,326],{"class":309},[303,473,329],{"class":309},[303,475,319],{"class":309},[303,477,478],{"class":334},"stripe",[303,480,326],{"class":309},[303,482,340],{"class":309},[303,484,319],{"class":309},[303,486,363],{"class":322},[303,488,326],{"class":309},[303,490,329],{"class":309},[303,492,319],{"class":309},[303,494,176],{"class":334},[303,496,326],{"class":309},[303,498,340],{"class":309},[303,500,319],{"class":309},[303,502,380],{"class":322},[303,504,326],{"class":309},[303,506,329],{"class":309},[303,508,509],{"class":309}," false,",[303,511,319],{"class":309},[303,513,392],{"class":322},[303,515,326],{"class":309},[303,517,329],{"class":309},[303,519,509],{"class":309},[303,521,319],{"class":309},[303,523,403],{"class":322},[303,525,326],{"class":309},[303,527,329],{"class":309},[303,529,465],{"class":309},[303,531,319],{"class":309},[303,533,418],{"class":322},[303,535,326],{"class":309},[303,537,329],{"class":309},[303,539,465],{"class":309},[303,541,319],{"class":309},[303,543,435],{"class":322},[303,545,326],{"class":309},[303,547,329],{"class":309},[303,549,319],{"class":309},[303,551,552],{"class":334},"https:\u002F\u002Fapi.pimabill.com\u002Fwebhooks\u002Fstripe\u002Ften_123",[303,554,326],{"class":309},[303,556,557],{"class":309}," }\n",[303,559,561],{"class":305,"line":560},4,[303,562,563],{"class":309},"]\n",[138,565,566,567,569],{},"Live and the ",[265,568,287],{"href":122}," each keep their own providers. In the sandbox, connect each provider with its test credentials. On live, a provider whose credentials are for its test environment is never used as a fallback for live payments.",[142,571,573],{"id":572},"configure-stripe","Configure Stripe",[138,575,576],{},"Stripe is the recommended provider for international payments and customers outside Africa.",[578,579,581,697,912],"code-group",{"sync":580},"lang",[294,582,587],{"className":583,"code":584,"filename":585,"language":586,"meta":299,"style":299},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fpayment-providers \\\n  -H \"Authorization: Bearer sk_live_a1b2c3d4...\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"providerName\": \"STRIPE\",\n    \"credentials\": {\n      \"secretKey\": \"sk_live_xxxxx\",\n      \"webhookSecret\": \"whsec_xxxxx\"\n    },\n    \"isActive\": true,\n    \"priority\": 1\n  }'\n","cURL","bash",[277,588,589,608,622,635,646,652,658,664,670,676,682,688],{"__ignoreMap":299},[303,590,591,595,598,601,604],{"class":305,"line":306},[303,592,594],{"class":593},"sBMFI","curl",[303,596,597],{"class":334}," -X",[303,599,600],{"class":334}," POST",[303,602,603],{"class":334}," http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fpayment-providers",[303,605,607],{"class":606},"sTEyZ"," \\\n",[303,609,610,613,615,618,620],{"class":305,"line":313},[303,611,612],{"class":334},"  -H",[303,614,319],{"class":309},[303,616,617],{"class":334},"Authorization: Bearer sk_live_a1b2c3d4...",[303,619,326],{"class":309},[303,621,607],{"class":606},[303,623,624,626,628,631,633],{"class":305,"line":452},[303,625,612],{"class":334},[303,627,319],{"class":309},[303,629,630],{"class":334},"Content-Type: application\u002Fjson",[303,632,326],{"class":309},[303,634,607],{"class":606},[303,636,637,640,643],{"class":305,"line":560},[303,638,639],{"class":334},"  -d",[303,641,642],{"class":309}," '",[303,644,645],{"class":334},"{\n",[303,647,649],{"class":305,"line":648},5,[303,650,651],{"class":334},"    \"providerName\": \"STRIPE\",\n",[303,653,655],{"class":305,"line":654},6,[303,656,657],{"class":334},"    \"credentials\": {\n",[303,659,661],{"class":305,"line":660},7,[303,662,663],{"class":334},"      \"secretKey\": \"sk_live_xxxxx\",\n",[303,665,667],{"class":305,"line":666},8,[303,668,669],{"class":334},"      \"webhookSecret\": \"whsec_xxxxx\"\n",[303,671,673],{"class":305,"line":672},9,[303,674,675],{"class":334},"    },\n",[303,677,679],{"class":305,"line":678},10,[303,680,681],{"class":334},"    \"isActive\": true,\n",[303,683,685],{"class":305,"line":684},11,[303,686,687],{"class":334},"    \"priority\": 1\n",[303,689,691,694],{"class":305,"line":690},12,[303,692,693],{"class":334},"  }",[303,695,696],{"class":309},"'\n",[294,698,703],{"className":699,"code":700,"filename":701,"language":702,"meta":299,"style":299},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { PimaBillClient } from 'pimabill';\n\nconst client = new PimaBillClient({ token: 'sk_live_a1b2c3d4...' });\n\nconst provider = await client.paymentProviders.configure({\n  providerName: 'STRIPE',\n  credentials: {\n    secretKey: 'sk_live_xxxxx',\n    webhookSecret: 'whsec_xxxxx'\n  },\n  isActive: true,\n  priority: 1\n});\n","TypeScript","typescript",[277,704,705,734,740,783,787,817,834,844,860,874,879,892,902],{"__ignoreMap":299},[303,706,707,711,714,717,720,723,725,728,731],{"class":305,"line":306},[303,708,710],{"class":709},"s7zQu","import",[303,712,713],{"class":309}," {",[303,715,716],{"class":606}," PimaBillClient",[303,718,719],{"class":309}," }",[303,721,722],{"class":709}," from",[303,724,642],{"class":309},[303,726,727],{"class":334},"pimabill",[303,729,730],{"class":309},"'",[303,732,733],{"class":309},";\n",[303,735,736],{"class":305,"line":313},[303,737,739],{"emptyLinePlaceholder":738},true,"\n",[303,741,742,745,748,751,754,757,760,763,767,769,771,774,776,778,781],{"class":305,"line":452},[303,743,744],{"class":322},"const",[303,746,747],{"class":606}," client ",[303,749,750],{"class":309},"=",[303,752,753],{"class":309}," new",[303,755,716],{"class":756},"s2Zo4",[303,758,759],{"class":606},"(",[303,761,762],{"class":309},"{",[303,764,766],{"class":765},"swJcz"," token",[303,768,329],{"class":309},[303,770,642],{"class":309},[303,772,773],{"class":334},"sk_live_a1b2c3d4...",[303,775,730],{"class":309},[303,777,719],{"class":309},[303,779,780],{"class":606},")",[303,782,733],{"class":309},[303,784,785],{"class":305,"line":560},[303,786,739],{"emptyLinePlaceholder":738},[303,788,789,791,794,796,799,802,805,808,810,813,815],{"class":305,"line":648},[303,790,744],{"class":322},[303,792,793],{"class":606}," provider ",[303,795,750],{"class":309},[303,797,798],{"class":709}," await",[303,800,801],{"class":606}," client",[303,803,804],{"class":309},".",[303,806,807],{"class":606},"paymentProviders",[303,809,804],{"class":309},[303,811,812],{"class":756},"configure",[303,814,759],{"class":606},[303,816,645],{"class":309},[303,818,819,822,824,826,829,831],{"class":305,"line":654},[303,820,821],{"class":765},"  providerName",[303,823,329],{"class":309},[303,825,642],{"class":309},[303,827,828],{"class":334},"STRIPE",[303,830,730],{"class":309},[303,832,833],{"class":309},",\n",[303,835,836,839,841],{"class":305,"line":660},[303,837,838],{"class":765},"  credentials",[303,840,329],{"class":309},[303,842,843],{"class":309}," {\n",[303,845,846,849,851,853,856,858],{"class":305,"line":666},[303,847,848],{"class":765},"    secretKey",[303,850,329],{"class":309},[303,852,642],{"class":309},[303,854,855],{"class":334},"sk_live_xxxxx",[303,857,730],{"class":309},[303,859,833],{"class":309},[303,861,862,865,867,869,872],{"class":305,"line":672},[303,863,864],{"class":765},"    webhookSecret",[303,866,329],{"class":309},[303,868,642],{"class":309},[303,870,871],{"class":334},"whsec_xxxxx",[303,873,696],{"class":309},[303,875,876],{"class":305,"line":678},[303,877,878],{"class":309},"  },\n",[303,880,881,884,886,890],{"class":305,"line":684},[303,882,883],{"class":765},"  isActive",[303,885,329],{"class":309},[303,887,889],{"class":888},"sfNiH"," true",[303,891,833],{"class":309},[303,893,894,897,899],{"class":305,"line":690},[303,895,896],{"class":765},"  priority",[303,898,329],{"class":309},[303,900,901],{"class":410}," 1\n",[303,903,905,908,910],{"class":305,"line":904},13,[303,906,907],{"class":309},"}",[303,909,780],{"class":606},[303,911,733],{"class":309},[294,913,918],{"className":914,"code":915,"filename":916,"language":917,"meta":299,"style":299},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from pimabill import PimaBillClient\n\nclient = PimaBillClient(token=\"sk_live_a1b2c3d4...\")\n\nprovider = client.payment_providers.configure(\n    provider_name=\"STRIPE\",\n    credentials={\n        \"secret_key\": \"sk_live_xxxxx\",\n        \"webhook_secret\": \"whsec_xxxxx\"\n    },\n    is_active=True,\n    priority=1\n)\n","Python","python",[277,919,920,925,929,934,938,943,948,953,958,963,967,972,977],{"__ignoreMap":299},[303,921,922],{"class":305,"line":306},[303,923,924],{},"from pimabill import PimaBillClient\n",[303,926,927],{"class":305,"line":313},[303,928,739],{"emptyLinePlaceholder":738},[303,930,931],{"class":305,"line":452},[303,932,933],{},"client = PimaBillClient(token=\"sk_live_a1b2c3d4...\")\n",[303,935,936],{"class":305,"line":560},[303,937,739],{"emptyLinePlaceholder":738},[303,939,940],{"class":305,"line":648},[303,941,942],{},"provider = client.payment_providers.configure(\n",[303,944,945],{"class":305,"line":654},[303,946,947],{},"    provider_name=\"STRIPE\",\n",[303,949,950],{"class":305,"line":660},[303,951,952],{},"    credentials={\n",[303,954,955],{"class":305,"line":666},[303,956,957],{},"        \"secret_key\": \"sk_live_xxxxx\",\n",[303,959,960],{"class":305,"line":672},[303,961,962],{},"        \"webhook_secret\": \"whsec_xxxxx\"\n",[303,964,965],{"class":305,"line":678},[303,966,675],{},[303,968,969],{"class":305,"line":684},[303,970,971],{},"    is_active=True,\n",[303,973,974],{"class":305,"line":690},[303,975,976],{},"    priority=1\n",[303,978,979],{"class":305,"line":904},[303,980,981],{},")\n",[983,984,985,986,992,993,996,997,1000],"note",{},"Get your Stripe API keys from the ",[265,987,991],{"href":988,"rel":989},"https:\u002F\u002Fdashboard.stripe.com\u002Fapikeys",[990],"nofollow","Stripe Dashboard",". Use test keys (",[277,994,995],{},"sk_test_...",") for development and live keys (",[277,998,999],{},"sk_live_...",") for production.",[1002,1003,1004,1005,1008,1009,1012],"warning",{},"The ",[277,1006,1007],{},"webhookSecret"," (the signing secret of your Stripe webhook endpoint) is required: Stripe notifications without a valid ",[277,1010,1011],{},"stripe-signature"," are refused, so payments are not confirmed until it is set.",[142,1014,1016],{"id":1015},"configure-flutterwave","Configure Flutterwave",[578,1018,1019,1117,1261],{"sync":580},[294,1020,1022],{"className":583,"code":1021,"filename":585,"language":586,"meta":299,"style":299},"curl -X POST http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fpayment-providers \\\n  -H \"Authorization: Bearer sk_live_a1b2c3d4...\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"providerName\": \"FLUTTERWAVE\",\n    \"credentials\": {\n      \"publicKey\": \"FLWPUBK-xxxxx\",\n      \"secretKey\": \"FLWSECK-xxxxx\",\n      \"encryptionKey\": \"xxxxx\",\n      \"secretHash\": \"the secret hash set under Webhooks in your Flutterwave dashboard\"\n    },\n    \"isActive\": true,\n    \"priority\": 2\n  }'\n",[277,1023,1024,1036,1048,1060,1068,1073,1077,1082,1087,1092,1097,1101,1105,1110],{"__ignoreMap":299},[303,1025,1026,1028,1030,1032,1034],{"class":305,"line":306},[303,1027,594],{"class":593},[303,1029,597],{"class":334},[303,1031,600],{"class":334},[303,1033,603],{"class":334},[303,1035,607],{"class":606},[303,1037,1038,1040,1042,1044,1046],{"class":305,"line":313},[303,1039,612],{"class":334},[303,1041,319],{"class":309},[303,1043,617],{"class":334},[303,1045,326],{"class":309},[303,1047,607],{"class":606},[303,1049,1050,1052,1054,1056,1058],{"class":305,"line":452},[303,1051,612],{"class":334},[303,1053,319],{"class":309},[303,1055,630],{"class":334},[303,1057,326],{"class":309},[303,1059,607],{"class":606},[303,1061,1062,1064,1066],{"class":305,"line":560},[303,1063,639],{"class":334},[303,1065,642],{"class":309},[303,1067,645],{"class":334},[303,1069,1070],{"class":305,"line":648},[303,1071,1072],{"class":334},"    \"providerName\": \"FLUTTERWAVE\",\n",[303,1074,1075],{"class":305,"line":654},[303,1076,657],{"class":334},[303,1078,1079],{"class":305,"line":660},[303,1080,1081],{"class":334},"      \"publicKey\": \"FLWPUBK-xxxxx\",\n",[303,1083,1084],{"class":305,"line":666},[303,1085,1086],{"class":334},"      \"secretKey\": \"FLWSECK-xxxxx\",\n",[303,1088,1089],{"class":305,"line":672},[303,1090,1091],{"class":334},"      \"encryptionKey\": \"xxxxx\",\n",[303,1093,1094],{"class":305,"line":678},[303,1095,1096],{"class":334},"      \"secretHash\": \"the secret hash set under Webhooks in your Flutterwave dashboard\"\n",[303,1098,1099],{"class":305,"line":684},[303,1100,675],{"class":334},[303,1102,1103],{"class":305,"line":690},[303,1104,681],{"class":334},[303,1106,1107],{"class":305,"line":904},[303,1108,1109],{"class":334},"    \"priority\": 2\n",[303,1111,1113,1115],{"class":305,"line":1112},14,[303,1114,693],{"class":334},[303,1116,696],{"class":309},[294,1118,1120],{"className":699,"code":1119,"filename":701,"language":702,"meta":299,"style":299},"const provider = await client.paymentProviders.configure({\n  providerName: 'FLUTTERWAVE',\n  credentials: {\n    publicKey: 'FLWPUBK-xxxxx',\n    secretKey: 'FLWSECK-xxxxx',\n    encryptionKey: 'xxxxx',\n    secretHash: 'the secret hash set under Webhooks in your Flutterwave dashboard'\n  },\n  isActive: true,\n  priority: 2\n});\n",[277,1121,1122,1146,1161,1169,1185,1200,1216,1230,1234,1244,1253],{"__ignoreMap":299},[303,1123,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142,1144],{"class":305,"line":306},[303,1125,744],{"class":322},[303,1127,793],{"class":606},[303,1129,750],{"class":309},[303,1131,798],{"class":709},[303,1133,801],{"class":606},[303,1135,804],{"class":309},[303,1137,807],{"class":606},[303,1139,804],{"class":309},[303,1141,812],{"class":756},[303,1143,759],{"class":606},[303,1145,645],{"class":309},[303,1147,1148,1150,1152,1154,1157,1159],{"class":305,"line":313},[303,1149,821],{"class":765},[303,1151,329],{"class":309},[303,1153,642],{"class":309},[303,1155,1156],{"class":334},"FLUTTERWAVE",[303,1158,730],{"class":309},[303,1160,833],{"class":309},[303,1162,1163,1165,1167],{"class":305,"line":452},[303,1164,838],{"class":765},[303,1166,329],{"class":309},[303,1168,843],{"class":309},[303,1170,1171,1174,1176,1178,1181,1183],{"class":305,"line":560},[303,1172,1173],{"class":765},"    publicKey",[303,1175,329],{"class":309},[303,1177,642],{"class":309},[303,1179,1180],{"class":334},"FLWPUBK-xxxxx",[303,1182,730],{"class":309},[303,1184,833],{"class":309},[303,1186,1187,1189,1191,1193,1196,1198],{"class":305,"line":648},[303,1188,848],{"class":765},[303,1190,329],{"class":309},[303,1192,642],{"class":309},[303,1194,1195],{"class":334},"FLWSECK-xxxxx",[303,1197,730],{"class":309},[303,1199,833],{"class":309},[303,1201,1202,1205,1207,1209,1212,1214],{"class":305,"line":654},[303,1203,1204],{"class":765},"    encryptionKey",[303,1206,329],{"class":309},[303,1208,642],{"class":309},[303,1210,1211],{"class":334},"xxxxx",[303,1213,730],{"class":309},[303,1215,833],{"class":309},[303,1217,1218,1221,1223,1225,1228],{"class":305,"line":660},[303,1219,1220],{"class":765},"    secretHash",[303,1222,329],{"class":309},[303,1224,642],{"class":309},[303,1226,1227],{"class":334},"the secret hash set under Webhooks in your Flutterwave dashboard",[303,1229,696],{"class":309},[303,1231,1232],{"class":305,"line":666},[303,1233,878],{"class":309},[303,1235,1236,1238,1240,1242],{"class":305,"line":672},[303,1237,883],{"class":765},[303,1239,329],{"class":309},[303,1241,889],{"class":888},[303,1243,833],{"class":309},[303,1245,1246,1248,1250],{"class":305,"line":678},[303,1247,896],{"class":765},[303,1249,329],{"class":309},[303,1251,1252],{"class":410}," 2\n",[303,1254,1255,1257,1259],{"class":305,"line":684},[303,1256,907],{"class":309},[303,1258,780],{"class":606},[303,1260,733],{"class":309},[294,1262,1264],{"className":914,"code":1263,"filename":916,"language":917,"meta":299,"style":299},"provider = client.payment_providers.configure(\n    provider_name=\"FLUTTERWAVE\",\n    credentials={\n        \"public_key\": \"FLWPUBK-xxxxx\",\n        \"secret_key\": \"FLWSECK-xxxxx\",\n        \"encryption_key\": \"xxxxx\",\n        \"secret_hash\": \"the secret hash set under Webhooks in your Flutterwave dashboard\"\n    },\n    is_active=True,\n    priority=2\n)\n",[277,1265,1266,1270,1275,1279,1284,1289,1294,1299,1303,1307,1312],{"__ignoreMap":299},[303,1267,1268],{"class":305,"line":306},[303,1269,942],{},[303,1271,1272],{"class":305,"line":313},[303,1273,1274],{},"    provider_name=\"FLUTTERWAVE\",\n",[303,1276,1277],{"class":305,"line":452},[303,1278,952],{},[303,1280,1281],{"class":305,"line":560},[303,1282,1283],{},"        \"public_key\": \"FLWPUBK-xxxxx\",\n",[303,1285,1286],{"class":305,"line":648},[303,1287,1288],{},"        \"secret_key\": \"FLWSECK-xxxxx\",\n",[303,1290,1291],{"class":305,"line":654},[303,1292,1293],{},"        \"encryption_key\": \"xxxxx\",\n",[303,1295,1296],{"class":305,"line":660},[303,1297,1298],{},"        \"secret_hash\": \"the secret hash set under Webhooks in your Flutterwave dashboard\"\n",[303,1300,1301],{"class":305,"line":666},[303,1302,675],{},[303,1304,1305],{"class":305,"line":672},[303,1306,971],{},[303,1308,1309],{"class":305,"line":678},[303,1310,1311],{},"    priority=2\n",[303,1313,1314],{"class":305,"line":684},[303,1315,981],{},[1002,1317,1318,1319,1322,1323,1326],{},"Set the same secret hash in the Flutterwave dashboard (Settings → Webhooks) and as ",[277,1320,1321],{},"secretHash"," here. Notifications without a matching ",[277,1324,1325],{},"verif-hash"," header are refused, and every accepted one is confirmed with Flutterwave's verify API before an invoice is marked paid.",[142,1328,1330],{"id":1329},"configure-paystack","Configure Paystack",[578,1332,1333,1420,1530],{"sync":580},[294,1334,1336],{"className":583,"code":1335,"filename":585,"language":586,"meta":299,"style":299},"curl -X POST http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fpayment-providers \\\n  -H \"Authorization: Bearer sk_live_a1b2c3d4...\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"providerName\": \"PAYSTACK\",\n    \"credentials\": {\n      \"publicKey\": \"pk_live_xxxxx\",\n      \"secretKey\": \"sk_live_xxxxx\"\n    },\n    \"isActive\": true,\n    \"priority\": 3\n  }'\n",[277,1337,1338,1350,1362,1374,1382,1387,1391,1396,1401,1405,1409,1414],{"__ignoreMap":299},[303,1339,1340,1342,1344,1346,1348],{"class":305,"line":306},[303,1341,594],{"class":593},[303,1343,597],{"class":334},[303,1345,600],{"class":334},[303,1347,603],{"class":334},[303,1349,607],{"class":606},[303,1351,1352,1354,1356,1358,1360],{"class":305,"line":313},[303,1353,612],{"class":334},[303,1355,319],{"class":309},[303,1357,617],{"class":334},[303,1359,326],{"class":309},[303,1361,607],{"class":606},[303,1363,1364,1366,1368,1370,1372],{"class":305,"line":452},[303,1365,612],{"class":334},[303,1367,319],{"class":309},[303,1369,630],{"class":334},[303,1371,326],{"class":309},[303,1373,607],{"class":606},[303,1375,1376,1378,1380],{"class":305,"line":560},[303,1377,639],{"class":334},[303,1379,642],{"class":309},[303,1381,645],{"class":334},[303,1383,1384],{"class":305,"line":648},[303,1385,1386],{"class":334},"    \"providerName\": \"PAYSTACK\",\n",[303,1388,1389],{"class":305,"line":654},[303,1390,657],{"class":334},[303,1392,1393],{"class":305,"line":660},[303,1394,1395],{"class":334},"      \"publicKey\": \"pk_live_xxxxx\",\n",[303,1397,1398],{"class":305,"line":666},[303,1399,1400],{"class":334},"      \"secretKey\": \"sk_live_xxxxx\"\n",[303,1402,1403],{"class":305,"line":672},[303,1404,675],{"class":334},[303,1406,1407],{"class":305,"line":678},[303,1408,681],{"class":334},[303,1410,1411],{"class":305,"line":684},[303,1412,1413],{"class":334},"    \"priority\": 3\n",[303,1415,1416,1418],{"class":305,"line":690},[303,1417,693],{"class":334},[303,1419,696],{"class":309},[294,1421,1423],{"className":699,"code":1422,"filename":701,"language":702,"meta":299,"style":299},"const provider = await client.paymentProviders.configure({\n  providerName: 'PAYSTACK',\n  credentials: {\n    publicKey: 'pk_live_xxxxx',\n    secretKey: 'sk_live_xxxxx'\n  },\n  isActive: true,\n  priority: 3\n});\n",[277,1424,1425,1449,1464,1472,1487,1499,1503,1513,1522],{"__ignoreMap":299},[303,1426,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447],{"class":305,"line":306},[303,1428,744],{"class":322},[303,1430,793],{"class":606},[303,1432,750],{"class":309},[303,1434,798],{"class":709},[303,1436,801],{"class":606},[303,1438,804],{"class":309},[303,1440,807],{"class":606},[303,1442,804],{"class":309},[303,1444,812],{"class":756},[303,1446,759],{"class":606},[303,1448,645],{"class":309},[303,1450,1451,1453,1455,1457,1460,1462],{"class":305,"line":313},[303,1452,821],{"class":765},[303,1454,329],{"class":309},[303,1456,642],{"class":309},[303,1458,1459],{"class":334},"PAYSTACK",[303,1461,730],{"class":309},[303,1463,833],{"class":309},[303,1465,1466,1468,1470],{"class":305,"line":452},[303,1467,838],{"class":765},[303,1469,329],{"class":309},[303,1471,843],{"class":309},[303,1473,1474,1476,1478,1480,1483,1485],{"class":305,"line":560},[303,1475,1173],{"class":765},[303,1477,329],{"class":309},[303,1479,642],{"class":309},[303,1481,1482],{"class":334},"pk_live_xxxxx",[303,1484,730],{"class":309},[303,1486,833],{"class":309},[303,1488,1489,1491,1493,1495,1497],{"class":305,"line":648},[303,1490,848],{"class":765},[303,1492,329],{"class":309},[303,1494,642],{"class":309},[303,1496,855],{"class":334},[303,1498,696],{"class":309},[303,1500,1501],{"class":305,"line":654},[303,1502,878],{"class":309},[303,1504,1505,1507,1509,1511],{"class":305,"line":660},[303,1506,883],{"class":765},[303,1508,329],{"class":309},[303,1510,889],{"class":888},[303,1512,833],{"class":309},[303,1514,1515,1517,1519],{"class":305,"line":666},[303,1516,896],{"class":765},[303,1518,329],{"class":309},[303,1520,1521],{"class":410}," 3\n",[303,1523,1524,1526,1528],{"class":305,"line":672},[303,1525,907],{"class":309},[303,1527,780],{"class":606},[303,1529,733],{"class":309},[294,1531,1533],{"className":914,"code":1532,"filename":916,"language":917,"meta":299,"style":299},"provider = client.payment_providers.configure(\n    provider_name=\"PAYSTACK\",\n    credentials={\n        \"public_key\": \"pk_live_xxxxx\",\n        \"secret_key\": \"sk_live_xxxxx\"\n    },\n    is_active=True,\n    priority=3\n)\n",[277,1534,1535,1539,1544,1548,1553,1558,1562,1566,1571],{"__ignoreMap":299},[303,1536,1537],{"class":305,"line":306},[303,1538,942],{},[303,1540,1541],{"class":305,"line":313},[303,1542,1543],{},"    provider_name=\"PAYSTACK\",\n",[303,1545,1546],{"class":305,"line":452},[303,1547,952],{},[303,1549,1550],{"class":305,"line":560},[303,1551,1552],{},"        \"public_key\": \"pk_live_xxxxx\",\n",[303,1554,1555],{"class":305,"line":648},[303,1556,1557],{},"        \"secret_key\": \"sk_live_xxxxx\"\n",[303,1559,1560],{"class":305,"line":654},[303,1561,675],{},[303,1563,1564],{"class":305,"line":660},[303,1565,971],{},[303,1567,1568],{"class":305,"line":666},[303,1569,1570],{},"    priority=3\n",[303,1572,1573],{"class":305,"line":672},[303,1574,981],{},[142,1576,1578],{"id":1577},"test-a-connection","Test a Connection",[138,1580,1581],{},"Before going live, test that your provider credentials are valid:",[578,1583,1584,1613,1678],{"sync":580},[294,1585,1587],{"className":583,"code":1586,"filename":585,"language":586,"meta":299,"style":299},"curl -X POST http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fpayment-providers\u002Fprovider_abc123\u002Ftest \\\n  -H \"Authorization: Bearer sk_live_a1b2c3d4...\"\n",[277,1588,1589,1602],{"__ignoreMap":299},[303,1590,1591,1593,1595,1597,1600],{"class":305,"line":306},[303,1592,594],{"class":593},[303,1594,597],{"class":334},[303,1596,600],{"class":334},[303,1598,1599],{"class":334}," http:\u002F\u002Flocalhost:4000\u002Fapi\u002Fpayment-providers\u002Fprovider_abc123\u002Ftest",[303,1601,607],{"class":606},[303,1603,1604,1606,1608,1610],{"class":305,"line":313},[303,1605,612],{"class":334},[303,1607,319],{"class":309},[303,1609,617],{"class":334},[303,1611,1612],{"class":309},"\"\n",[294,1614,1616],{"className":699,"code":1615,"filename":701,"language":702,"meta":299,"style":299},"const result = await client.paymentProviders.testConnection('provider_abc123');\nconsole.log(result.success); \u002F\u002F true\n",[277,1617,1618,1653],{"__ignoreMap":299},[303,1619,1620,1622,1625,1627,1629,1631,1633,1635,1637,1640,1642,1644,1647,1649,1651],{"class":305,"line":306},[303,1621,744],{"class":322},[303,1623,1624],{"class":606}," result ",[303,1626,750],{"class":309},[303,1628,798],{"class":709},[303,1630,801],{"class":606},[303,1632,804],{"class":309},[303,1634,807],{"class":606},[303,1636,804],{"class":309},[303,1638,1639],{"class":756},"testConnection",[303,1641,759],{"class":606},[303,1643,730],{"class":309},[303,1645,1646],{"class":334},"provider_abc123",[303,1648,730],{"class":309},[303,1650,780],{"class":606},[303,1652,733],{"class":309},[303,1654,1655,1658,1660,1663,1666,1668,1671,1674],{"class":305,"line":313},[303,1656,1657],{"class":606},"console",[303,1659,804],{"class":309},[303,1661,1662],{"class":756},"log",[303,1664,1665],{"class":606},"(result",[303,1667,804],{"class":309},[303,1669,1670],{"class":606},"success)",[303,1672,1673],{"class":309},";",[303,1675,1677],{"class":1676},"sHwdD"," \u002F\u002F true\n",[294,1679,1681],{"className":914,"code":1680,"filename":916,"language":917,"meta":299,"style":299},"result = client.payment_providers.test_connection(\"provider_abc123\")\nprint(result.success)  # True\n",[277,1682,1683,1688],{"__ignoreMap":299},[303,1684,1685],{"class":305,"line":306},[303,1686,1687],{},"result = client.payment_providers.test_connection(\"provider_abc123\")\n",[303,1689,1690],{"class":305,"line":313},[303,1691,1692],{},"print(result.success)  # True\n",[142,1694,1696],{"id":1695},"provider-priority","Provider Priority",[138,1698,1699,1700,1702],{},"When several providers are configured, a checkout uses the one it names, otherwise the active provider with the lowest ",[277,1701,403],{}," number. There is no automatic failover: deactivate a provider to stop using it.",[138,1704,1705],{},"A recommended setup for a global billing system:",[147,1707,1708,1720],{},[150,1709,1710],{},[153,1711,1712,1715,1717],{},[156,1713,1714],{},"Priority",[156,1716,158],{},[156,1718,1719],{},"Use Case",[166,1721,1722,1732,1742,1752],{},[153,1723,1724,1727,1729],{},[171,1725,1726],{},"1",[171,1728,176],{},[171,1730,1731],{},"International cards and wallets",[153,1733,1734,1737,1739],{},[171,1735,1736],{},"2",[171,1738,189],{},[171,1740,1741],{},"African markets (NG, KE, GH, ZA, UG, TZ)",[153,1743,1744,1747,1749],{},[171,1745,1746],{},"3",[171,1748,202],{},[171,1750,1751],{},"Nigerian market fallback",[153,1753,1754,1757,1759],{},[171,1755,1756],{},"4",[171,1758,215],{},[171,1760,1761],{},"M-Pesa and Airtel Money in East Africa",[142,1763,1765],{"id":1764},"credential-security","Credential Security",[138,1767,1768],{},"All provider credentials are encrypted at rest using AES-256 encryption. They are never logged or exposed in API responses.",[142,1770,1772],{"id":1771},"how-payments-are-confirmed","How payments are confirmed",[1774,1775,1776,1783,1789,1800],"ul",{},[1777,1778,1779,1782],"li",{},[174,1780,1781],{},"Signed notifications"," (Stripe, Paystack, Flutterwave, PayPal) are verified with the provider's signature; unsigned ones are refused.",[1777,1784,1785,1788],{},[174,1786,1787],{},"Unsigned notifications"," (PayU, DPO, Pesapal) only prompt a status request to the provider; the outcome, amount and reference come from the provider's API, never from the notification.",[1777,1790,1791,1792,1795,1796,1799],{},"A success whose amount or currency differs from the payment, or that reports no amount, is ",[174,1793,1794],{},"held for review"," (",[277,1797,1798],{},"payment.held_for_review",") instead of marking the invoice paid.",[1777,1801,1802,1803,1806],{},"Money that arrives for an invoice already paid or voided is flagged with ",[277,1804,1805],{},"payment.duplicate"," for you to refund.",[142,1808,1810],{"id":1809},"no-provider-account-yet","No provider account yet?",[138,1812,1813,1814,1818],{},"On the hosted cloud, ",[265,1815,1817],{"href":1816},"\u002Fguides\u002Fmoney-movement#managed-payments","managed payments"," takes card, mobile money and PayPal payments for you and pays you out to mobile money, a bank account or PayPal. It is used only when none of your own providers can take a payment, so you can connect your own later without changing your integration.",[138,1820,1821,1822,804],{},"Mobile money (MTN MoMo, Airtel Money, Yo! Payments), PayPal and crypto providers are also used for one-time collections and payouts; see ",[265,1823,268],{"href":126},[1825,1826,1827],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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":299,"searchDepth":313,"depth":313,"links":1829},[1830,1831,1832,1833,1834,1835,1836,1837,1838,1839],{"id":144,"depth":313,"text":145},{"id":272,"depth":313,"text":273},{"id":572,"depth":313,"text":573},{"id":1015,"depth":313,"text":1016},{"id":1329,"depth":313,"text":1330},{"id":1577,"depth":313,"text":1578},{"id":1695,"depth":313,"text":1696},{"id":1764,"depth":313,"text":1765},{"id":1771,"depth":313,"text":1772},{"id":1809,"depth":313,"text":1810},"Configure global and African payment providers to process payments for your tenants.","md",null,{},{"title":109,"description":1840},"u5VtuTyljYPPCS8WseoaoflqO0LlESlVQ8x7MCVjbx4",[1847,1849],{"title":105,"path":106,"stem":107,"description":1848,"children":-1},"Manage invoices and process payments through multiple providers.",{"title":113,"path":114,"stem":115,"description":1850,"children":-1},"Track revenue, subscriptions, customers, and payment performance with built-in analytics.",1793401242782]