{"openapi":"3.1.0","info":{"title":"Paystack Commerce (BYOK) API","version":"0.1.0","description":"Paystack Commerce (BYOK) lets an AI assistant read your own Paystack Commerce data through the Paystack Commerce API with a key you supply (secret key (starts with sk_live_ or sk_test_)). Read-only: 12 tools (list_products, get_product, list_payment_pages, get_payment_page, list_splits, get_split, list_balance_ledger, list_storefronts, get_payment_request_totals, list_countries, list_banks,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-paystack-commerce.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-paystack-commerce/docs"},"termsOfService":"https://connectorbay.com/byok-paystack-commerce/terms"},"servers":[{"url":"https://byok-paystack-commerce.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-paystack-commerce/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_products":{"post":{"operationId":"list_products","summary":"List products defined in your Paystack account with price (smallest currency unit), stock, quantity sold, type and activ","description":"List products defined in your Paystack account with price (smallest currency unit), stock, quantity sold, type and active state. Use for \"Which products do I sell through Paystack and how many have sold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active products only, false for inactive only.","title":"Active"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Records per page (default 50).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"date_from":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the date range, an ISO 8601 date such as 2026-09-01.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the date range, an ISO 8601 date such as 2026-09-30.","title":"Date To"}},"title":"list_productsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_product":{"post":{"operationId":"get_product","summary":"Get one Paystack product by numeric id with price, stock, quantity sold, type and dates. Use for \"What is the price and ","description":"Get one Paystack product by numeric id with price, stock, quantity sold, type and dates. Use for \"What is the price and stock of Paystack product 1001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric product id.","title":"Id","type":"integer"}},"required":["id"],"title":"get_productArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_payment_pages":{"post":{"operationId":"list_payment_pages","summary":"List your Paystack payment pages with name, amount, currency, slug, type and whether they are active and published. Use ","description":"List your Paystack payment pages with name, amount, currency, slug, type and whether they are active and published. Use for \"Which payment pages have I created on Paystack\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Records per page (default 50).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"date_from":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the date range, an ISO 8601 date such as 2026-09-01.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the date range, an ISO 8601 date such as 2026-09-30.","title":"Date To"}},"title":"list_payment_pagesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_payment_page":{"post":{"operationId":"get_payment_page","summary":"Get one Paystack payment page by id or slug with amount, currency, type and active state. Use for \"Show Paystack payment","description":"Get one Paystack payment page by id or slug with amount, currency, type and active state. Use for \"Show Paystack payment page 2002\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Payment page id or slug.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_payment_pageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_splits":{"post":{"operationId":"list_splits","summary":"List transaction split configurations (how payments are divided between subaccounts) with name, type, currency, split co","description":"List transaction split configurations (how payments are divided between subaccounts) with name, type, currency, split code and number of subaccounts. Subaccount bank and contact details are not returned. Use for \"What payment splits do I have configured on Paystack\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only splits with this name.","title":"Name"},"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active splits only, false for inactive only.","title":"Active"},"sort_by":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Field to sort by, for example createdAt.","title":"Sort By"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Records per page (default 50).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"date_from":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the date range, an ISO 8601 date such as 2026-09-01.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the date range, an ISO 8601 date such as 2026-09-30.","title":"Date To"}},"title":"list_splitsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_split":{"post":{"operationId":"get_split","summary":"Get one split configuration by numeric id: name, type, currency, split code, bearer type and subaccount count. Subaccoun","description":"Get one split configuration by numeric id: name, type, currency, split code, bearer type and subaccount count. Subaccount bank and contact details are not returned. Use for \"Show Paystack split 3003\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Numeric split id.","title":"Id","type":"integer"}},"required":["id"],"title":"get_splitArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_balance_ledger":{"post":{"operationId":"list_balance_ledger","summary":"List the balance ledger: each change to your Paystack balance with the difference, resulting balance, currency, reason a","description":"List the balance ledger: each change to your Paystack balance with the difference, resulting balance, currency, reason and time. Amounts are in the smallest currency unit. Use for \"What changes have there been to my Paystack balance recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Records per page (default 50).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"date_from":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Start of the date range, an ISO 8601 date such as 2026-09-01.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"End of the date range, an ISO 8601 date such as 2026-09-30.","title":"Date To"}},"title":"list_balance_ledgerArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_storefronts":{"post":{"operationId":"list_storefronts","summary":"List your Paystack storefronts with name, slug, status, order count and currency. Use for \"Which Paystack storefronts do","description":"List your Paystack storefronts with name, slug, status, order count and currency. Use for \"Which Paystack storefronts do I run and how many orders do they have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["active","inactive"],"type":"string"},{"type":"null"}],"default":null,"description":"Only storefronts with this status.","title":"Status"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Records per page (default 50).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_storefrontsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_payment_request_totals":{"post":{"operationId":"get_payment_request_totals","summary":"Show totals of payment requests (invoices) per currency: pending, successful and overall amounts in the smallest currenc","description":"Show totals of payment requests (invoices) per currency: pending, successful and overall amounts in the smallest currency unit. Use for \"How much have I invoiced through Paystack payment requests and how much is still pending\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_payment_request_totalsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_countries":{"post":{"operationId":"list_countries","summary":"List countries Paystack supports with ISO code, default currency, calling code and dashboard onboarding availability. Us","description":"List countries Paystack supports with ISO code, default currency, calling code and dashboard onboarding availability. Use for \"Which countries does Paystack support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_countriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_banks":{"post":{"operationId":"list_banks","summary":"List banks and mobile money providers Paystack supports in a country, with bank code, slug, type, currency and whether t","description":"List banks and mobile money providers Paystack supports in a country, with bank code, slug, type, currency and whether the bank supports transfers and pay-with-bank. Use for \"Which banks does Paystack support in Nigeria\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"country":{"anyOf":[{"enum":["ghana","kenya","nigeria","south africa"],"type":"string"},{"type":"null"}],"default":null,"description":"Country to list banks for.","title":"Country"},"currency":{"anyOf":[{"enum":["GHS","KES","NGN","ZAR"],"type":"string"},{"type":"null"}],"default":null,"description":"Currency to filter by.","title":"Currency"},"type":{"anyOf":[{"enum":["ghipps","mobile_money","nuban","kepss","basa"],"type":"string"},{"type":"null"}],"default":null,"description":"Type of financial channel.","title":"Type"},"pay_with_bank":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only banks customers can pay from directly.","title":"Pay With Bank"},"pay_with_bank_transfer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only banks a customer can transfer to in order to pay.","title":"Pay With Bank Transfer"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"Records per page (default 50).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_banksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_payment_session_timeout":{"post":{"operationId":"get_payment_session_timeout","summary":"Show the payment session timeout (in seconds) configured on your Paystack integration. Use for \"How long does a Paystack","description":"Show the payment session timeout (in seconds) configured on your Paystack integration. Use for \"How long does a Paystack payment session stay open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_payment_session_timeoutArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}