@grtsnx/payba3 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/CODE_OF_CONDUCT.md +24 -0
  3. package/CONTRIBUTING.md +149 -0
  4. package/LICENSE +21 -0
  5. package/README.md +282 -0
  6. package/SECURITY.md +53 -0
  7. package/SUPPORT.md +27 -0
  8. package/assets/payba3-logo.svg +17 -0
  9. package/dist/index.d.ts +18 -0
  10. package/dist/index.js +24 -0
  11. package/dist/lib/lib.module.d.ts +2 -0
  12. package/dist/lib/lib.module.js +37 -0
  13. package/dist/lib/lib.module.js.map +1 -0
  14. package/dist/lib/monnify/config/monnify.helper.d.ts +24 -0
  15. package/dist/lib/monnify/config/monnify.helper.js +234 -0
  16. package/dist/lib/monnify/config/monnify.helper.js.map +1 -0
  17. package/dist/lib/monnify/config/monnify.types.d.ts +93 -0
  18. package/dist/lib/monnify/config/monnify.types.js +3 -0
  19. package/dist/lib/monnify/config/monnify.types.js.map +1 -0
  20. package/dist/lib/monnify/monnify.module.d.ts +2 -0
  21. package/dist/lib/monnify/monnify.module.js +22 -0
  22. package/dist/lib/monnify/monnify.module.js.map +1 -0
  23. package/dist/lib/monnify/monnify.service.d.ts +19 -0
  24. package/dist/lib/monnify/monnify.service.js +113 -0
  25. package/dist/lib/monnify/monnify.service.js.map +1 -0
  26. package/dist/lib/mono/config/mono.helper.d.ts +11 -0
  27. package/dist/lib/mono/config/mono.helper.js +78 -0
  28. package/dist/lib/mono/config/mono.helper.js.map +1 -0
  29. package/dist/lib/mono/config/mono.types.d.ts +48 -0
  30. package/dist/lib/mono/config/mono.types.js +3 -0
  31. package/dist/lib/mono/config/mono.types.js.map +1 -0
  32. package/dist/lib/mono/mono.module.d.ts +2 -0
  33. package/dist/lib/mono/mono.module.js +22 -0
  34. package/dist/lib/mono/mono.module.js.map +1 -0
  35. package/dist/lib/mono/mono.service.d.ts +15 -0
  36. package/dist/lib/mono/mono.service.js +77 -0
  37. package/dist/lib/mono/mono.service.js.map +1 -0
  38. package/dist/lib/opay/config/opay.helper.d.ts +17 -0
  39. package/dist/lib/opay/config/opay.helper.js +175 -0
  40. package/dist/lib/opay/config/opay.helper.js.map +1 -0
  41. package/dist/lib/opay/config/opay.types.d.ts +73 -0
  42. package/dist/lib/opay/config/opay.types.js +3 -0
  43. package/dist/lib/opay/config/opay.types.js.map +1 -0
  44. package/dist/lib/opay/opay.module.d.ts +2 -0
  45. package/dist/lib/opay/opay.module.js +22 -0
  46. package/dist/lib/opay/opay.module.js.map +1 -0
  47. package/dist/lib/opay/opay.service.d.ts +17 -0
  48. package/dist/lib/opay/opay.service.js +104 -0
  49. package/dist/lib/opay/opay.service.js.map +1 -0
  50. package/dist/lib/payba3.service.d.ts +16 -0
  51. package/dist/lib/payba3.service.js +59 -0
  52. package/dist/lib/payba3.service.js.map +1 -0
  53. package/dist/lib/payba3.types.d.ts +18 -0
  54. package/dist/lib/payba3.types.js +13 -0
  55. package/dist/lib/payba3.types.js.map +1 -0
  56. package/dist/lib/paystack/config/paystack.helper.d.ts +15 -0
  57. package/dist/lib/paystack/config/paystack.helper.js +134 -0
  58. package/dist/lib/paystack/config/paystack.helper.js.map +1 -0
  59. package/dist/lib/paystack/config/paystack.types.d.ts +92 -0
  60. package/dist/lib/paystack/config/paystack.types.js +3 -0
  61. package/dist/lib/paystack/config/paystack.types.js.map +1 -0
  62. package/dist/lib/paystack/paystack.module.d.ts +2 -0
  63. package/dist/lib/paystack/paystack.module.js +22 -0
  64. package/dist/lib/paystack/paystack.module.js.map +1 -0
  65. package/dist/lib/paystack/paystack.service.d.ts +33 -0
  66. package/dist/lib/paystack/paystack.service.js +328 -0
  67. package/dist/lib/paystack/paystack.service.js.map +1 -0
  68. package/dist/lib/qoreid/config/qoreid.helper.d.ts +19 -0
  69. package/dist/lib/qoreid/config/qoreid.helper.js +132 -0
  70. package/dist/lib/qoreid/config/qoreid.helper.js.map +1 -0
  71. package/dist/lib/qoreid/config/qoreid.types.d.ts +35 -0
  72. package/dist/lib/qoreid/config/qoreid.types.js +3 -0
  73. package/dist/lib/qoreid/config/qoreid.types.js.map +1 -0
  74. package/dist/lib/qoreid/qoreid.module.d.ts +2 -0
  75. package/dist/lib/qoreid/qoreid.module.js +22 -0
  76. package/dist/lib/qoreid/qoreid.module.js.map +1 -0
  77. package/dist/lib/qoreid/qoreid.service.d.ts +10 -0
  78. package/dist/lib/qoreid/qoreid.service.js +63 -0
  79. package/dist/lib/qoreid/qoreid.service.js.map +1 -0
  80. package/dist/lib/safehaven/config/safe.helper.d.ts +16 -0
  81. package/dist/lib/safehaven/config/safe.helper.js +136 -0
  82. package/dist/lib/safehaven/config/safe.helper.js.map +1 -0
  83. package/dist/lib/safehaven/config/safe.types.d.ts +50 -0
  84. package/dist/lib/safehaven/config/safe.types.js +3 -0
  85. package/dist/lib/safehaven/config/safe.types.js.map +1 -0
  86. package/dist/lib/safehaven/safe.module.d.ts +2 -0
  87. package/dist/lib/safehaven/safe.module.js +22 -0
  88. package/dist/lib/safehaven/safe.module.js.map +1 -0
  89. package/dist/lib/safehaven/safe.service.d.ts +14 -0
  90. package/dist/lib/safehaven/safe.service.js +77 -0
  91. package/dist/lib/safehaven/safe.service.js.map +1 -0
  92. package/dist/lib/seerbit/config/seerbit.helper.d.ts +11 -0
  93. package/dist/lib/seerbit/config/seerbit.helper.js +88 -0
  94. package/dist/lib/seerbit/config/seerbit.helper.js.map +1 -0
  95. package/dist/lib/seerbit/config/seerbit.types.d.ts +49 -0
  96. package/dist/lib/seerbit/config/seerbit.types.js +3 -0
  97. package/dist/lib/seerbit/config/seerbit.types.js.map +1 -0
  98. package/dist/lib/seerbit/seerbit.module.d.ts +2 -0
  99. package/dist/lib/seerbit/seerbit.module.js +22 -0
  100. package/dist/lib/seerbit/seerbit.module.js.map +1 -0
  101. package/dist/lib/seerbit/seerbit.service.d.ts +11 -0
  102. package/dist/lib/seerbit/seerbit.service.js +83 -0
  103. package/dist/lib/seerbit/seerbit.service.js.map +1 -0
  104. package/dist/lib/shared/index.d.ts +1 -0
  105. package/dist/lib/shared/index.js +18 -0
  106. package/dist/lib/shared/index.js.map +1 -0
  107. package/dist/lib/shared/response.helper.d.ts +15 -0
  108. package/dist/lib/shared/response.helper.js +39 -0
  109. package/dist/lib/shared/response.helper.js.map +1 -0
  110. package/llms.txt +25 -0
  111. package/package.json +169 -0
  112. package/src/lib/monnify/monnify_llm.txt +429 -0
  113. package/src/lib/mono/mono_llm.txt +372 -0
  114. package/src/lib/opay/opay_llm.txt +1022 -0
  115. package/src/lib/paystack/paystack_llm.txt +382 -0
  116. package/src/lib/qoreid/qoreid_llm.txt +68 -0
  117. package/src/lib/safehaven/safehaven_llm.txt +77 -0
  118. package/src/lib/seerbit/seerbit_llm.txt +61 -0
@@ -0,0 +1,382 @@
1
+ # Paystack Documentation
2
+
3
+ > Paystack is Africa's leading payments infrastructure provider, enabling businesses to accept payments from customers via cards, bank accounts, mobile money, USSD, QR codes, and bank transfers. This documentation covers integration guides, SDKs, webhooks, and best practices for building payment experiences.
4
+
5
+ Paystack operates in Nigeria, Ghana, South Africa, Kenya, and Côte d'Ivoire. The platform supports both online and in-person payments through various integration methods including Popup JS, Redirect, Mobile SDKs, and Terminal devices.
6
+
7
+ Important notes:
8
+ - All amounts are in smallest currency unit (kobo for NGN, pesewas for GHS, cents for KES/ZAR/USD)
9
+ - API requests require authentication: secret keys (server-side) or public keys (client-side)
10
+ - Test mode uses test API keys (`sk_test_*`, `pk_test_*`); live mode uses live keys (`sk_live_*`, `pk_live_*`)
11
+ - Always verify transactions server-side before delivering value
12
+ - Webhooks provide real-time notifications; validate signatures using your secret key
13
+ - Supported currencies: NGN (Nigeria), GHS (Ghana), ZAR (South Africa), KES (Kenya), USD (International)
14
+
15
+ ## Home
16
+
17
+ - [Paystack Documentation Home](https://paystack.com/docs/): Main entry point with quick start guides for accepting payments, sending money, and identity verification
18
+
19
+ ## Payments
20
+
21
+ - [Payments Overview](https://paystack.com/docs/payments/): Introduction to accepting payments with Paystack including demos and integration options
22
+ - [Accept Payments](https://paystack.com/docs/payments/accept-payments/): Integration methods including Popup JS, Redirect API, and Mobile SDKs for collecting payments
23
+ - [Verify Payments](https://paystack.com/docs/payments/verify-payments/): How to verify transaction status and understand transaction states (success, failed, abandoned, pending)
24
+ - [Payment Channels](https://paystack.com/docs/payments/payment-channels/): Supported payment methods including cards, mobile money, USSD, QR codes, bank transfers, and Apple Pay
25
+ - [Apple Pay](https://paystack.com/docs/payments/apple-pay/): Setting up Apple Pay for web and Commerce Suite with domain registration and verification
26
+ - [Recurring Charges](https://paystack.com/docs/payments/recurring-charges/): Tokenization and charging saved cards for repeat payments using authorization codes
27
+ - [Subscriptions](https://paystack.com/docs/payments/subscriptions/): Creating plans and managing recurring subscription billing with automatic charges
28
+ - [Split Payments](https://paystack.com/docs/payments/split-payments/): Splitting transaction settlements between main account and subaccounts
29
+ - [Multi-split Payments](https://paystack.com/docs/payments/multi-split-payments/): Advanced splitting with transaction splits across multiple subaccounts
30
+ - [Dedicated Virtual Accounts](https://paystack.com/docs/payments/dedicated-virtual-accounts/): Creating customer-specific bank accounts for receiving transfers (Nigeria & Ghana)
31
+ - [Webhooks](https://paystack.com/docs/payments/webhooks/): Setting up webhook endpoints to receive real-time event notifications for transactions
32
+ - [Refunds](https://paystack.com/docs/payments/refunds/): Initiating partial or full refunds for completed transactions
33
+ - [Manage Disputes](https://paystack.com/docs/payments/manage-disputes/): Handling chargebacks and disputes through the Disputes API
34
+ - [Test Payments](https://paystack.com/docs/payments/test-payments/): Test cards, bank accounts, and mobile money numbers for development
35
+
36
+ ## Payment Channels by Country
37
+
38
+ ### Nigeria (NGN)
39
+ Cards (Visa, Mastercard, Verve), Bank Transfer, USSD, QR Code, Apple Pay
40
+
41
+ ### Ghana (GHS)
42
+ Cards, Mobile Money (MTN, AirtelTigo, Telecel), Bank Transfer, QR Code
43
+
44
+ ### South Africa (ZAR)
45
+ Cards, Apple Pay, QR Code
46
+
47
+ ### Kenya (KES)
48
+ Cards, Mobile Money (M-PESA, Airtel Money)
49
+
50
+ ### Côte d'Ivoire (XOF)
51
+ Cards, Mobile Money (MTN MoMo, Wave, Orange Money), Apple Pay
52
+
53
+ ## Terminal
54
+
55
+ - [Terminal Overview](https://paystack.com/docs/terminal/): In-person payment solutions including Physical Terminal, Virtual Terminal, and Terminal API
56
+ - [Invoice Payments](https://paystack.com/docs/terminal/invoice-payments/): Accepting payment for invoices and orders on Terminal devices
57
+ - [Push Payment Requests](https://paystack.com/docs/terminal/push-payment-requests/): Initiating payment requests from POS systems to Terminal devices
58
+ - [Custom Apps](https://paystack.com/docs/terminal/custom-apps/): Building custom Android applications that run on Paystack Terminal hardware
59
+ - [Virtual Terminal](https://paystack.com/docs/terminal/virtual-terminal/): Using mobile phones as virtual POS devices with WhatsApp notifications
60
+
61
+ ## Transfers
62
+
63
+ - [Transfers Overview](https://paystack.com/docs/transfers/): Sending money to bank accounts and mobile money wallets
64
+ - [How Transfers Work](https://paystack.com/docs/transfers/how-transfers-work/): Understanding transfer flow, statuses, and processing times
65
+ - [Single Transfers](https://paystack.com/docs/transfers/single-transfers/): Step-by-step guide to sending money to individual recipients
66
+ - [Bulk Transfers](https://paystack.com/docs/transfers/bulk-transfers/): Batch disbursements to multiple recipients in a single request
67
+ - [Creating Transfer Recipients](https://paystack.com/docs/transfers/creating-transfer-recipients/): Setting up beneficiaries with bank account or mobile money details
68
+ - [Managing Transfers](https://paystack.com/docs/transfers/managing-transfers/): Balance management, OTP settings, and transfer controls
69
+
70
+ ## Identity Verification
71
+
72
+ - [Identity Verification Overview](https://paystack.com/docs/identity-verification/): KYC tools for verifying customer identity and bank details
73
+ - [Verify Account Number](https://paystack.com/docs/identity-verification/verify-account-number/): Confirming bank account ownership before transfers (Nigeria & Ghana)
74
+ - [Validate Customer](https://paystack.com/docs/identity-verification/validate-customer/): BVN and identity verification for Dedicated Virtual Account customers
75
+ - [Resolve Card BIN](https://paystack.com/docs/identity-verification/resolve-card-bin/): Getting card information from the first 6 digits of a card number
76
+
77
+ ## Developer Tools
78
+
79
+ - [Developer Tools Overview](https://paystack.com/docs/developer-tools/): SDKs, libraries, and tools for Paystack integration
80
+ - [InlineJS](https://paystack.com/docs/developer-tools/inlinejs/): JavaScript SDK for web payment integration with Popup checkout
81
+ - [Flutter SDK](https://paystack.com/docs/developer-tools/flutter-sdk/): Cross-platform mobile SDK for Flutter applications (Beta)
82
+ - [iOS SDK](https://paystack.com/docs/developer-tools/ios-sdk/): Native iOS SDK for accepting payments in Swift/Objective-C apps (Beta)
83
+ - [Android SDK](https://paystack.com/docs/developer-tools/android-sdk/): Native Android SDK for accepting payments in Kotlin/Java apps
84
+
85
+ ## Guides
86
+
87
+ - [Guides Overview](https://paystack.com/docs/guides/): Step-by-step tutorials for integrating Paystack with various frameworks
88
+ - [Accept Payments on your Vue App](https://paystack.com/docs/guides/accept_payments_on_your_vue_app/): Vue.js integration tutorial with Paystack Popup
89
+ - [Accept Payments on your React App](https://paystack.com/docs/guides/accept_payments_on_your_react_app/): React integration tutorial with component examples
90
+ - [Accept Payments on your Android App](https://paystack.com/docs/guides/accept_payments_on_your_android_app/): Native Android integration with the Paystack Android SDK
91
+ - [Accept Payments in your Flutter App](https://paystack.com/docs/guides/accept-payments-in-your-flutter-app/): Flutter integration guide with the Paystack Flutter SDK
92
+ - [Using the Paystack Checkout in a Mobile WebView](https://paystack.com/docs/guides/using_the_paystack_checkout_in_a_mobile_webview/): Embedding Paystack checkout in mobile app WebViews
93
+ - [Migrating from InlineJS V1 to V2](https://paystack.com/docs/guides/migrating-from-inlinejs-v1-to-v2/): Upgrading from legacy Popup to InlineJS V2
94
+
95
+ ## Libraries and Plugins
96
+
97
+ - [Libraries and Plugins Overview](https://paystack.com/docs/libraries-and-plugins/): Official and community-maintained integrations
98
+ - [Libraries](https://paystack.com/docs/libraries-and-plugins/libraries/): Server-side libraries for PHP, Python, Node.js, Java, .NET, Ruby, and more
99
+ - [Plugins](https://paystack.com/docs/libraries-and-plugins/plugins/): E-commerce platform plugins for WordPress, WooCommerce, Shopify, Magento, PrestaShop, Joomla, BigCommerce, Xero, and Ecwid
100
+
101
+ ## Optional
102
+
103
+ - [API Reference](https://paystack.com/docs/api/): Complete REST API documentation with all endpoints, parameters, and responses
104
+ - [API Changelog](https://paystack.com/docs/changelog/api/): Latest API updates, new features, deprecations, and breaking changes
105
+ - [OpenAPI Specification](https://github.com/PaystackOSS/openapi): Machine-readable API spec for code generation and tooling
106
+ - [Paystack CLI](https://github.com/PaystackOSS/paystack-cli): Command-line tool for testing webhooks and managing integrations
107
+ - [Paystack MCP Server](https://github.com/PaystackOSS/paystack-mcp-server): Model Context Protocol server for AI assistant integration
108
+ - [Payslack Community](https://paystack.slack.com): Developer community on Slack for questions and discussions
109
+ - [Paystack Support](https://support.paystack.com/): Help center with FAQs and support resources
110
+
111
+ ## Open Source Resources (PaystackOSS)
112
+
113
+ - [PaystackOSS on GitHub](https://github.com/PaystackOSS/): Official open-source projects and sample code
114
+ - [paystack-node](https://github.com/PaystackOSS/paystack-node): Official Node.js client library
115
+ - [paystack-python](https://github.com/PaystackOSS/paystack-python): Official Python client library
116
+ - [paystack_flutter](https://github.com/PaystackOSS/paystack_flutter): Official Flutter SDK
117
+ - [sample-gift-store](https://github.com/PaystackOSS/sample-gift-store): Vue.js e-commerce demo with Paystack checkout
118
+ - [sample-react](https://github.com/PaystackOSS/sample-react): React integration example
119
+ - [sample-subscriptions-app](https://github.com/PaystackOSS/sample-subscriptions-app): Subscription billing implementation demo
120
+ - [sample-restaurant](https://github.com/PaystackOSS/sample-restaurant): Terminal integration for in-person payments
121
+ - [sample-logistics](https://github.com/PaystackOSS/sample-logistics): Payment on delivery with Terminal
122
+ - [apple-pay-react](https://github.com/PaystackOSS/apple-pay-react): Apple Pay integration with React
123
+
124
+ ---
125
+
126
+ # API Reference
127
+
128
+ > The Paystack API is a RESTful, JSON-based API that enables programmatic access to payment processing, transfers, customer management, and identity verification. All requests must be authenticated and made over HTTPS.
129
+
130
+ Base URL: `https://api.paystack.co`
131
+
132
+ Authentication: Include your secret key in the Authorization header as `Bearer SECRET_KEY`. Public keys are only for client-side integrations (Popup, Mobile SDKs).
133
+
134
+ HTTP Methods:
135
+ - GET: Retrieve resources
136
+ - POST: Create resources or perform actions
137
+ - PUT: Update resources
138
+ - DELETE: Remove resources
139
+
140
+ Response Format: All responses return JSON with `status` (boolean), `message` (string), and `data` (object/array) fields.
141
+
142
+ Supported Currencies: NGN (Nigeria), GHS (Ghana), ZAR (South Africa), KES (Kenya), USD (International)
143
+
144
+ Amount Format: All amounts are in the smallest currency unit (e.g., kobo for NGN, pesewas for GHS)
145
+
146
+ ## API Introduction
147
+
148
+ - [API Introduction](https://paystack.com/docs/api/): Overview of Paystack API basics, base URL, and getting started
149
+ - [Authentication](https://paystack.com/docs/api/authentication/): API key management, public vs secret keys, and authorization headers
150
+ - [Errors](https://paystack.com/docs/api/errors/): Error types (api_error, validation_error, processor_error), codes, and handling
151
+ - [Transaction Errors](https://paystack.com/docs/api/errors/transaction/): Common transaction failure codes and troubleshooting
152
+ - [Pagination](https://paystack.com/docs/api/pagination/): Offset and cursor-based pagination for list endpoints
153
+
154
+ ## Transactions API
155
+
156
+ - [Transaction API](https://paystack.com/docs/api/transaction/): Create and manage payment transactions on your integration
157
+ - [Initialize Transaction](https://paystack.com/docs/api/transaction/#initialize-transaction): POST /transaction/initialize - Start a new transaction and get authorization URL
158
+ - [Verify Transaction](https://paystack.com/docs/api/transaction/#verify-transaction): GET /transaction/verify/:reference - Confirm transaction status by reference
159
+ - [List Transactions](https://paystack.com/docs/api/transaction/#list-transactions): GET /transaction - Retrieve all transactions with pagination and filters
160
+ - [Fetch Transaction](https://paystack.com/docs/api/transaction/#fetch-transaction): GET /transaction/:id - Get details of a specific transaction by ID
161
+ - [Charge Authorization](https://paystack.com/docs/api/transaction/#charge-authorization): POST /transaction/charge_authorization - Charge a saved card using authorization code
162
+ - [View Transaction Timeline](https://paystack.com/docs/api/transaction/#view-transaction-timeline): GET /transaction/timeline/:id_or_reference - Get transaction history and events
163
+ - [Transaction Totals](https://paystack.com/docs/api/transaction/#transaction-totals): GET /transaction/totals - Get total volume and count of transactions
164
+ - [Export Transactions](https://paystack.com/docs/api/transaction/#export-transactions): GET /transaction/export - Export transactions to CSV
165
+ - [Partial Debit](https://paystack.com/docs/api/transaction/#partial-debit): POST /transaction/partial_debit - Charge partial amount from saved card
166
+
167
+ ## Charge API
168
+
169
+ - [Charge API](https://paystack.com/docs/api/charge/): Initiate direct charges for various payment channels
170
+ - [Create Charge](https://paystack.com/docs/api/charge/#create-charge): POST /charge - Initiate a charge with email, amount, and payment channel details
171
+ - [Submit PIN](https://paystack.com/docs/api/charge/#submit-pin): POST /charge/submit_pin - Submit card PIN for charges requiring it
172
+ - [Submit OTP](https://paystack.com/docs/api/charge/#submit-otp): POST /charge/submit_otp - Submit OTP for 2FA verification
173
+ - [Submit Phone](https://paystack.com/docs/api/charge/#submit-phone): POST /charge/submit_phone - Submit phone number for verification
174
+ - [Submit Birthday](https://paystack.com/docs/api/charge/#submit-birthday): POST /charge/submit_birthday - Submit birthday for card verification
175
+ - [Submit Address](https://paystack.com/docs/api/charge/#submit-address): POST /charge/submit_address - Submit billing address for international cards
176
+ - [Check Pending Charge](https://paystack.com/docs/api/charge/#check-pending-charge): GET /charge/:reference - Check status of a pending charge
177
+
178
+ ## Customer API
179
+
180
+ - [Customer API](https://paystack.com/docs/api/customer/): Manage customer records and their payment authorizations
181
+ - [Create Customer](https://paystack.com/docs/api/customer/#create-customer): POST /customer - Create a new customer with email and optional details
182
+ - [List Customers](https://paystack.com/docs/api/customer/#list-customers): GET /customer - Retrieve all customers with pagination
183
+ - [Fetch Customer](https://paystack.com/docs/api/customer/#fetch-customer): GET /customer/:email_or_code - Get customer details by email or customer code
184
+ - [Update Customer](https://paystack.com/docs/api/customer/#update-customer): PUT /customer/:code - Update customer information
185
+ - [Validate Customer](https://paystack.com/docs/api/customer/#validate-customer): POST /customer/:customer_code/identification - Verify customer identity with BVN
186
+ - [Whitelist/Blacklist Customer](https://paystack.com/docs/api/customer/#whitelist-blacklist-customer): POST /customer/set_risk_action - Set risk action to allow or deny transactions
187
+ - [Deactivate Authorization](https://paystack.com/docs/api/customer/#deactivate-authorization): POST /customer/deactivate_authorization - Disable a saved card authorization
188
+
189
+ ## Plans API
190
+
191
+ - [Plan API](https://paystack.com/docs/api/plan/): Create and manage subscription plans
192
+ - [Create Plan](https://paystack.com/docs/api/plan/#create-plan): POST /plan - Create a plan with name, amount, and billing interval
193
+ - [List Plans](https://paystack.com/docs/api/plan/#list-plans): GET /plan - Retrieve all plans with pagination
194
+ - [Fetch Plan](https://paystack.com/docs/api/plan/#fetch-plan): GET /plan/:id_or_code - Get plan details by ID or plan code
195
+ - [Update Plan](https://paystack.com/docs/api/plan/#update-plan): PUT /plan/:id_or_code - Update plan details
196
+
197
+ ## Subscriptions API
198
+
199
+ - [Subscription API](https://paystack.com/docs/api/subscription/): Manage recurring billing subscriptions
200
+ - [Create Subscription](https://paystack.com/docs/api/subscription/#create-subscription): POST /subscription - Subscribe a customer to a plan
201
+ - [List Subscriptions](https://paystack.com/docs/api/subscription/#list-subscriptions): GET /subscription - Retrieve all subscriptions with filters
202
+ - [Fetch Subscription](https://paystack.com/docs/api/subscription/#fetch-subscription): GET /subscription/:id_or_code - Get subscription details
203
+ - [Enable Subscription](https://paystack.com/docs/api/subscription/#enable-subscription): POST /subscription/enable - Reactivate a disabled subscription
204
+ - [Disable Subscription](https://paystack.com/docs/api/subscription/#disable-subscription): POST /subscription/disable - Pause or cancel a subscription
205
+ - [Generate Update Subscription Link](https://paystack.com/docs/api/subscription/#generate-update-subscription-link): GET /subscription/:code/manage/link - Get link for customer to update card
206
+
207
+ ## Payment Pages API
208
+
209
+ - [Payment Pages API](https://paystack.com/docs/api/page/): Create and manage payment pages (hosted payment forms)
210
+ - [Create Payment Page](https://paystack.com/docs/api/page/#create-payment-page): POST /page - Create a payment page with custom slug
211
+ - [List Payment Pages](https://paystack.com/docs/api/page/#list-payment-pages): GET /page - Retrieve all payment pages
212
+ - [Fetch Payment Page](https://paystack.com/docs/api/page/#fetch-payment-page): GET /page/:id_or_slug - Get payment page details
213
+ - [Update Payment Page](https://paystack.com/docs/api/page/#update-payment-page): PUT /page/:id_or_slug - Update payment page details
214
+ - [Check Slug Availability](https://paystack.com/docs/api/page/#check-slug-availability): GET /page/check_slug_availability/:slug - Check if a slug is available
215
+ - [Add Products](https://paystack.com/docs/api/page/#add-products): POST /page/:id/product - Add products to a payment page
216
+
217
+ ## Products API
218
+
219
+ - [Product API](https://paystack.com/docs/api/product/): Create and manage products for payment pages and storefronts
220
+ - [Create Product](https://paystack.com/docs/api/product/#create-product): POST /product - Create a new product
221
+ - [List Products](https://paystack.com/docs/api/product/#list-products): GET /product - Retrieve all products
222
+ - [Fetch Product](https://paystack.com/docs/api/product/#fetch-product): GET /product/:id - Get product details
223
+ - [Update Product](https://paystack.com/docs/api/product/#update-product): PUT /product/:id - Update product details
224
+ - [Delete Product](https://paystack.com/docs/api/product/#delete-product): DELETE /product/:id - Remove a product
225
+
226
+ ## Storefront API
227
+
228
+ - [Storefront API](https://paystack.com/docs/api/storefront/): Create and manage digital storefronts (paystack.shop)
229
+ - [Create Storefront](https://paystack.com/docs/api/storefront/#create-storefront): POST /storefront - Create a new storefront with slug
230
+ - [List Storefronts](https://paystack.com/docs/api/storefront/#list-storefronts): GET /storefront - Retrieve all storefronts
231
+ - [Fetch Storefront](https://paystack.com/docs/api/storefront/#fetch-storefront): GET /storefront/:id - Get storefront details
232
+ - [Update Storefront](https://paystack.com/docs/api/storefront/#update-storefront): PUT /storefront/:id - Update storefront details
233
+ - [Delete Storefront](https://paystack.com/docs/api/storefront/#delete-storefront): DELETE /storefront/:id - Remove a storefront
234
+
235
+ ## Payment Requests API
236
+
237
+ - [Payment Request API](https://paystack.com/docs/api/payment-request/): Create and manage invoices and payment requests
238
+ - [Create Payment Request](https://paystack.com/docs/api/payment-request/#create-payment-request): POST /paymentrequest - Create an invoice for a customer
239
+ - [List Payment Requests](https://paystack.com/docs/api/payment-request/#list-payment-requests): GET /paymentrequest - Retrieve all payment requests
240
+ - [Fetch Payment Request](https://paystack.com/docs/api/payment-request/#fetch-payment-request): GET /paymentrequest/:id_or_code - Get payment request details
241
+ - [Verify Payment Request](https://paystack.com/docs/api/payment-request/#verify-payment-request): GET /paymentrequest/verify/:code - Verify payment request status
242
+ - [Send Notification](https://paystack.com/docs/api/payment-request/#send-notification): POST /paymentrequest/notify/:code - Send payment request to customer email
243
+ - [Payment Request Totals](https://paystack.com/docs/api/payment-request/#payment-request-totals): GET /paymentrequest/totals - Get total amount and count
244
+ - [Finalize Payment Request](https://paystack.com/docs/api/payment-request/#finalize-payment-request): POST /paymentrequest/finalize/:code - Finalize a draft payment request
245
+ - [Update Payment Request](https://paystack.com/docs/api/payment-request/#update-payment-request): PUT /paymentrequest/:id_or_code - Update payment request details
246
+ - [Archive Payment Request](https://paystack.com/docs/api/payment-request/#archive-payment-request): POST /paymentrequest/archive/:code - Archive a payment request
247
+
248
+ ## Subaccounts API
249
+
250
+ - [Subaccount API](https://paystack.com/docs/api/subaccount/): Manage subaccounts for split payments
251
+ - [Create Subaccount](https://paystack.com/docs/api/subaccount/#create-subaccount): POST /subaccount - Create a subaccount with bank details and split percentage
252
+ - [List Subaccounts](https://paystack.com/docs/api/subaccount/#list-subaccounts): GET /subaccount - Retrieve all subaccounts
253
+ - [Fetch Subaccount](https://paystack.com/docs/api/subaccount/#fetch-subaccount): GET /subaccount/:id_or_code - Get subaccount details
254
+ - [Update Subaccount](https://paystack.com/docs/api/subaccount/#update-subaccount): PUT /subaccount/:id_or_code - Update subaccount details
255
+
256
+ ## Transaction Splits API
257
+
258
+ - [Transaction Split API](https://paystack.com/docs/api/split/): Configure multi-split payment rules
259
+ - [Create Split](https://paystack.com/docs/api/split/#create-split): POST /split - Create a transaction split configuration
260
+ - [List Splits](https://paystack.com/docs/api/split/#list-splits): GET /split - Retrieve all transaction splits
261
+ - [Fetch Split](https://paystack.com/docs/api/split/#fetch-split): GET /split/:id - Get transaction split details
262
+ - [Update Split](https://paystack.com/docs/api/split/#update-split): PUT /split/:id - Update split configuration
263
+ - [Add/Update Split Subaccount](https://paystack.com/docs/api/split/#add-update-split-subaccount): POST /split/:id/subaccount/add - Add or update subaccount in split
264
+ - [Remove Subaccount from Split](https://paystack.com/docs/api/split/#remove-subaccount-from-split): POST /split/:id/subaccount/remove - Remove subaccount from split
265
+
266
+ ## Transfers API
267
+
268
+ - [Transfer API](https://paystack.com/docs/api/transfer/): Send money to bank accounts and mobile money wallets
269
+ - [Initiate Transfer](https://paystack.com/docs/api/transfer/#initiate-transfer): POST /transfer - Send money to a transfer recipient
270
+ - [Finalize Transfer](https://paystack.com/docs/api/transfer/#finalize-transfer): POST /transfer/finalize_transfer - Complete transfer with OTP
271
+ - [Initiate Bulk Transfer](https://paystack.com/docs/api/transfer/#initiate-bulk-transfer): POST /transfer/bulk - Send money to multiple recipients at once
272
+ - [List Transfers](https://paystack.com/docs/api/transfer/#list-transfers): GET /transfer - Retrieve all transfers with filters
273
+ - [Fetch Transfer](https://paystack.com/docs/api/transfer/#fetch-transfer): GET /transfer/:id_or_code - Get transfer details
274
+ - [Verify Transfer](https://paystack.com/docs/api/transfer/#verify-transfer): GET /transfer/verify/:reference - Verify transfer status
275
+
276
+ ## Transfer Recipients API
277
+
278
+ - [Transfer Recipient API](https://paystack.com/docs/api/transfer-recipient/): Manage transfer beneficiaries
279
+ - [Create Transfer Recipient](https://paystack.com/docs/api/transfer-recipient/#create-transfer-recipient): POST /transferrecipient - Create a recipient with bank or mobile money details
280
+ - [Bulk Create Transfer Recipients](https://paystack.com/docs/api/transfer-recipient/#bulk-create-transfer-recipients): POST /transferrecipient/bulk - Create multiple recipients at once
281
+ - [List Transfer Recipients](https://paystack.com/docs/api/transfer-recipient/#list-transfer-recipients): GET /transferrecipient - Retrieve all transfer recipients
282
+ - [Fetch Transfer Recipient](https://paystack.com/docs/api/transfer-recipient/#fetch-transfer-recipient): GET /transferrecipient/:id_or_code - Get recipient details
283
+ - [Update Transfer Recipient](https://paystack.com/docs/api/transfer-recipient/#update-transfer-recipient): PUT /transferrecipient/:id_or_code - Update recipient details
284
+ - [Delete Transfer Recipient](https://paystack.com/docs/api/transfer-recipient/#delete-transfer-recipient): DELETE /transferrecipient/:id_or_code - Remove a transfer recipient
285
+
286
+ ## Transfer Control API
287
+
288
+ - [Transfer Control API](https://paystack.com/docs/api/transfer-control/): Manage transfer settings and balance
289
+ - [Check Balance](https://paystack.com/docs/api/transfer-control/#check-balance): GET /balance - Get available balance on integration
290
+ - [Fetch Balance Ledger](https://paystack.com/docs/api/transfer-control/#fetch-balance-ledger): GET /balance/ledger - Get balance ledger entries
291
+ - [Resend OTP](https://paystack.com/docs/api/transfer-control/#resend-otp): POST /transfer/resend_otp - Resend OTP for transfer verification
292
+ - [Disable OTP](https://paystack.com/docs/api/transfer-control/#disable-otp): POST /transfer/disable_otp - Disable OTP requirement for transfers
293
+ - [Finalize Disable OTP](https://paystack.com/docs/api/transfer-control/#finalize-disable-otp): POST /transfer/disable_otp_finalize - Complete OTP disable with token
294
+ - [Enable OTP](https://paystack.com/docs/api/transfer-control/#enable-otp): POST /transfer/enable_otp - Re-enable OTP requirement
295
+
296
+ ## Settlements API
297
+
298
+ - [Settlement API](https://paystack.com/docs/api/settlement/): View settlement payouts to your bank account
299
+ - [List Settlements](https://paystack.com/docs/api/settlement/#list-settlements): GET /settlement - Retrieve all settlements with filters
300
+ - [List Settlement Transactions](https://paystack.com/docs/api/settlement/#list-settlement-transactions): GET /settlement/:id/transactions - Get transactions in a settlement
301
+
302
+ ## Dedicated Virtual Accounts API
303
+
304
+ - [Dedicated Virtual Account API](https://paystack.com/docs/api/dedicated-virtual-account/): Manage customer-specific virtual bank accounts
305
+ - [Create Dedicated Virtual Account](https://paystack.com/docs/api/dedicated-virtual-account/#create-dedicated-virtual-account): POST /dedicated_account - Create a DVA for a customer
306
+ - [Assign Dedicated Virtual Account](https://paystack.com/docs/api/dedicated-virtual-account/#assign-dedicated-virtual-account): POST /dedicated_account/assign - Assign DVA to existing customer
307
+ - [List Dedicated Virtual Accounts](https://paystack.com/docs/api/dedicated-virtual-account/#list-dedicated-virtual-accounts): GET /dedicated_account - Retrieve all DVAs
308
+ - [Fetch Dedicated Virtual Account](https://paystack.com/docs/api/dedicated-virtual-account/#fetch-dedicated-virtual-account): GET /dedicated_account/:dedicated_account_id - Get DVA details
309
+ - [Requery Dedicated Virtual Account](https://paystack.com/docs/api/dedicated-virtual-account/#requery-dedicated-virtual-account): GET /dedicated_account/requery - Check for missed transactions
310
+ - [Deactivate Dedicated Virtual Account](https://paystack.com/docs/api/dedicated-virtual-account/#deactivate-dedicated-virtual-account): DELETE /dedicated_account/:dedicated_account_id - Deactivate a DVA
311
+ - [Split Dedicated Virtual Account Transaction](https://paystack.com/docs/api/dedicated-virtual-account/#split-dedicated-virtual-account-transaction): POST /dedicated_account/split - Configure split for DVA transactions
312
+ - [Remove Split from DVA](https://paystack.com/docs/api/dedicated-virtual-account/#remove-split-from-dva): DELETE /dedicated_account/split - Remove split configuration
313
+ - [Fetch Bank Providers](https://paystack.com/docs/api/dedicated-virtual-account/#fetch-bank-providers): GET /dedicated_account/available_providers - Get supported DVA banks
314
+
315
+ ## Bulk Charges API
316
+
317
+ - [Bulk Charge API](https://paystack.com/docs/api/bulk-charge/): Process multiple recurring charges in batch
318
+ - [Initiate Bulk Charge](https://paystack.com/docs/api/bulk-charge/#initiate-bulk-charge): POST /bulkcharge - Create a bulk charge batch
319
+ - [List Bulk Charge Batches](https://paystack.com/docs/api/bulk-charge/#list-bulk-charge-batches): GET /bulkcharge - Retrieve all bulk charge batches
320
+ - [Fetch Bulk Charge Batch](https://paystack.com/docs/api/bulk-charge/#fetch-bulk-charge-batch): GET /bulkcharge/:id_or_code - Get batch details
321
+ - [Fetch Charges in Batch](https://paystack.com/docs/api/bulk-charge/#fetch-charges-in-batch): GET /bulkcharge/:id_or_code/charges - Get individual charges in batch
322
+ - [Pause Bulk Charge](https://paystack.com/docs/api/bulk-charge/#pause-bulk-charge): GET /bulkcharge/pause/:batch_code - Pause a running batch
323
+ - [Resume Bulk Charge](https://paystack.com/docs/api/bulk-charge/#resume-bulk-charge): GET /bulkcharge/resume/:batch_code - Resume a paused batch
324
+
325
+ ## Disputes API
326
+
327
+ - [Dispute API](https://paystack.com/docs/api/dispute/): Handle chargebacks and payment disputes
328
+ - [List Disputes](https://paystack.com/docs/api/dispute/#list-disputes): GET /dispute - Retrieve all disputes with filters
329
+ - [Fetch Dispute](https://paystack.com/docs/api/dispute/#fetch-dispute): GET /dispute/:id - Get dispute details
330
+ - [List Transaction Disputes](https://paystack.com/docs/api/dispute/#list-transaction-disputes): GET /dispute/transaction/:id - Get disputes for a transaction
331
+ - [Update Dispute](https://paystack.com/docs/api/dispute/#update-dispute): PUT /dispute/:id - Update dispute with refund amount
332
+ - [Add Evidence](https://paystack.com/docs/api/dispute/#add-evidence): POST /dispute/:id/evidence - Upload evidence for dispute
333
+ - [Get Upload URL](https://paystack.com/docs/api/dispute/#get-upload-url): GET /dispute/:id/upload_url - Get URL to upload dispute documents
334
+ - [Resolve Dispute](https://paystack.com/docs/api/dispute/#resolve-dispute): PUT /dispute/:id/resolve - Accept or decline dispute
335
+ - [Export Disputes](https://paystack.com/docs/api/dispute/#export-disputes): GET /dispute/export - Export disputes to CSV
336
+
337
+ ## Refunds API
338
+
339
+ - [Refund API](https://paystack.com/docs/api/refund/): Process partial and full refunds
340
+ - [Create Refund](https://paystack.com/docs/api/refund/#create-refund): POST /refund - Initiate a refund for a transaction
341
+ - [List Refunds](https://paystack.com/docs/api/refund/#list-refunds): GET /refund - Retrieve all refunds with filters
342
+ - [Fetch Refund](https://paystack.com/docs/api/refund/#fetch-refund): GET /refund/:reference - Get refund details
343
+ - [Retry Refund](https://paystack.com/docs/api/refund/#retry-refund): POST /refund/:reference/retry - Retry a failed refund with new bank details
344
+
345
+ ## Terminal API
346
+
347
+ - [Terminal API](https://paystack.com/docs/api/terminal/): Manage Paystack Terminal devices and events
348
+ - [Send Event](https://paystack.com/docs/api/terminal/#send-event): POST /terminal/:terminal_id/event - Send payment event to Terminal
349
+ - [Fetch Event Status](https://paystack.com/docs/api/terminal/#fetch-event-status): GET /terminal/:terminal_id/event/:event_id - Check event processing status
350
+ - [Fetch Terminal Status](https://paystack.com/docs/api/terminal/#fetch-terminal-status): GET /terminal/:terminal_id/presence - Check if Terminal is online
351
+ - [List Terminals](https://paystack.com/docs/api/terminal/#list-terminals): GET /terminal - Retrieve all registered Terminals
352
+ - [Fetch Terminal](https://paystack.com/docs/api/terminal/#fetch-terminal): GET /terminal/:terminal_id - Get Terminal details
353
+ - [Update Terminal](https://paystack.com/docs/api/terminal/#update-terminal): PUT /terminal/:terminal_id - Update Terminal details
354
+ - [Commission Terminal](https://paystack.com/docs/api/terminal/#commission-terminal): POST /terminal/commission_device - Activate a new Terminal
355
+ - [Decommission Terminal](https://paystack.com/docs/api/terminal/#decommission-terminal): POST /terminal/decommission_device - Deactivate a Terminal
356
+
357
+ ## Verification API
358
+
359
+ - [Verification API](https://paystack.com/docs/api/verification/): KYC and identity verification endpoints
360
+ - [Resolve Account](https://paystack.com/docs/api/verification/#resolve-account): GET /bank/resolve - Confirm bank account ownership with account number and bank code
361
+ - [Validate Account](https://paystack.com/docs/api/verification/#validate-account): POST /bank/validate - Validate account details for South African accounts
362
+ - [Resolve Card BIN](https://paystack.com/docs/api/verification/#resolve-card-bin): GET /decision/bin/:bin - Get card information from first 6 digits
363
+
364
+ ## Apple Pay API
365
+
366
+ - [Apple Pay API](https://paystack.com/docs/api/apple-pay/): Register and manage domains for Apple Pay transactions
367
+ - [Register Domain](https://paystack.com/docs/api/apple-pay/#register-domain): POST /apple-pay/domain - Register a domain for Apple Pay
368
+ - [List Domains](https://paystack.com/docs/api/apple-pay/#list-domains): GET /apple-pay/domain - List all registered Apple Pay domains
369
+ - [Unregister Domain](https://paystack.com/docs/api/apple-pay/#unregister-domain): DELETE /apple-pay/domain - Remove a domain from Apple Pay
370
+
371
+ ## Integration API
372
+
373
+ - [Integration API](https://paystack.com/docs/api/integration/): Manage integration settings
374
+ - [Fetch Timeout](https://paystack.com/docs/api/integration/#fetch-timeout): GET /integration/payment_session_timeout - Get payment session timeout
375
+ - [Update Timeout](https://paystack.com/docs/api/integration/#update-timeout): PUT /integration/payment_session_timeout - Set payment session timeout
376
+
377
+ ## Miscellaneous API
378
+
379
+ - [Miscellaneous API](https://paystack.com/docs/api/miscellaneous/): Supporting APIs for banks, countries, and currencies
380
+ - [List Banks](https://paystack.com/docs/api/miscellaneous/#list-banks): GET /bank - Get list of supported banks by country
381
+ - [List Countries](https://paystack.com/docs/api/miscellaneous/#list-countries): GET /country - Get list of supported countries
382
+ - [List States](https://paystack.com/docs/api/miscellaneous/#list-states): GET /address_verification/states - Get states for AVS verification
@@ -0,0 +1,68 @@
1
+ # QoreID
2
+
3
+ QoreID provides identity-verification APIs for KYC, business verification, CAC lookups, and hosted verification sessions.
4
+
5
+ ## Configuration
6
+
7
+ - Base URL used by payba3: `https://api.qoreid.com`
8
+ - Optional override: `QOREID_BASE_URL`
9
+ - payba3 env switch: `QOREID_ENVIRONMENT=sandbox|live`
10
+ - Sandbox keys: `QOREID_CLIENT`, `QOREID_SECRET`
11
+ - Live keys: `QOREID_LIVE_CLIENT`, `QOREID_LIVE_SECRET`
12
+
13
+ ## Authentication
14
+
15
+ QoreID API calls should be made from the backend with client credentials. payba3 obtains and caches an access token, then refreshes it before expiry.
16
+
17
+ Token response shapes can vary by integration surface. Accept both:
18
+
19
+ ```json
20
+ {
21
+ "accessToken": "token",
22
+ "expiresIn": 3600
23
+ }
24
+ ```
25
+
26
+ and:
27
+
28
+ ```json
29
+ {
30
+ "access_token": "token",
31
+ "expires_in": 3600
32
+ }
33
+ ```
34
+
35
+ Never expose QoreID client secrets to frontend code.
36
+
37
+ ## Sessions
38
+
39
+ Create hosted verification sessions with:
40
+
41
+ `POST /v1/sessions`
42
+
43
+ Use this when integrating the QoreID Web SDK or any hosted verification flow. The backend should mint the session token and pass only the safe session data to the frontend.
44
+
45
+ ## CAC Verification
46
+
47
+ Default CAC Basic endpoint:
48
+
49
+ `POST /v1/ng/identities/cac-basic`
50
+
51
+ Premium variants:
52
+
53
+ - `POST /v2/ng/identities/cac-premium`
54
+ - `POST /v3/ng/identities/cac-premium`
55
+
56
+ Common body:
57
+
58
+ ```json
59
+ {
60
+ "regNumber": "RC123456"
61
+ }
62
+ ```
63
+
64
+ ## payba3 Notes
65
+
66
+ - `verifyCacNumber(cacNumber)` defaults to CAC Basic V1.
67
+ - Use `verifyCacNumber(cacNumber, { version: "v3", level: "premium" })` for CAC Premium V3.
68
+ - Use `createSession(payload)` for hosted/SDK flows.
@@ -0,0 +1,77 @@
1
+ # Safehaven
2
+
3
+ Safehaven MFB provides Nigerian banking APIs for account creation, subaccounts, virtual accounts, transfers, and value-added services.
4
+
5
+ ## Environments
6
+
7
+ - Sandbox API: `https://api.sandbox.safehavenmfb.com`
8
+ - Live API: `https://api.safehavenmfb.com`
9
+ - payba3 env switch: `SAFEHAVEN_ENVIRONMENT=sandbox|live`
10
+ - Optional override: `SAFEHAVEN_BASE_URL`
11
+
12
+ ## Authentication
13
+
14
+ Generate an access token with:
15
+
16
+ `POST /oauth2/token`
17
+
18
+ Headers:
19
+
20
+ - `accept: application/json`
21
+ - `content-type: application/json`
22
+
23
+ Body:
24
+
25
+ ```json
26
+ {
27
+ "grant_type": "client_credentials",
28
+ "client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
29
+ "client_id": "SAFEHAVEN_CLIENT_ID",
30
+ "client_assertion": "SAFEHAVEN_CLIENT_ASSERTION"
31
+ }
32
+ ```
33
+
34
+ Token responses include:
35
+
36
+ - `access_token`
37
+ - `expires_in`
38
+ - `refresh_token`
39
+ - `client_id`
40
+ - `ibs_client_id`
41
+ - `ibs_user_id`
42
+
43
+ Use `expires_in` to refresh before expiry. For banking/account APIs, prefer the returned `ibs_client_id` as the `ClientID` header. Fall back to the OAuth `client_id` only when the token response does not include `ibs_client_id`.
44
+
45
+ ## Subaccounts
46
+
47
+ Create an individual subaccount with:
48
+
49
+ `POST /accounts/v2/subaccount`
50
+
51
+ Headers:
52
+
53
+ - `authorization: Bearer {access_token}`
54
+ - `ClientID: {ibs_client_id}`
55
+ - `accept: application/json`
56
+ - `content-type: application/json`
57
+
58
+ Common body fields:
59
+
60
+ ```json
61
+ {
62
+ "phoneNumber": "08000000000",
63
+ "identityType": "vID",
64
+ "identityId": "identity-id",
65
+ "emailAddress": "customer@example.com",
66
+ "externalReference": "customer_123",
67
+ "autoSweep": false
68
+ }
69
+ ```
70
+
71
+ Identity flows may use `identityId`, `identityNumber`, `otp`, or `callbackUrl` depending on the selected `identityType`.
72
+
73
+ ## payba3 Notes
74
+
75
+ - Safehaven token refresh must be automatic.
76
+ - Store token metadata, not only `access_token`, because account calls need `ibs_client_id`.
77
+ - Never expose `SAFEHAVEN_CLIENT_ASSERTION` to browser/client code.
@@ -0,0 +1,61 @@
1
+ # SeerBit
2
+
3
+ SeerBit provides online payments, virtual accounts, collections, payment links, products/orders, recurring billing, and checkout APIs.
4
+
5
+ ## Environment
6
+
7
+ - Primary API base URL: `https://seerbitapi.com/api/v2`
8
+ - payba3 env switch: `SEERBIT_ENVIRONMENT=sandbox|live`
9
+ - Optional override: `SEERBIT_BASE_URL`
10
+ - Sandbox keys: `SEERBIT_PUBLIC_KEY`, `SEERBIT_SECRET_KEY`
11
+ - Live keys: `SEERBIT_LIVE_PUBLIC_KEY`, `SEERBIT_LIVE_SECRET_KEY`
12
+
13
+ ## Authentication
14
+
15
+ Generate the encrypted bearer token with:
16
+
17
+ `POST /encrypt/keys`
18
+
19
+ Body:
20
+
21
+ ```json
22
+ {
23
+ "key": "{secretKey}.{publicKey}"
24
+ }
25
+ ```
26
+
27
+ Use the returned encrypted key as:
28
+
29
+ `Authorization: Bearer {encryptedKey}`
30
+
31
+ The encrypted-key response may appear as either `EncryptedSecKey` or `EncrytedSecKey`; robust integrations should support both spellings.
32
+
33
+ ## Virtual Accounts
34
+
35
+ Create a virtual account:
36
+
37
+ `POST /virtual-accounts`
38
+
39
+ Body:
40
+
41
+ ```json
42
+ {
43
+ "publicKey": "SEERBIT_PUBLIC_KEY",
44
+ "fullName": "Jane Doe",
45
+ "bankVerificationNumber": "00000000000",
46
+ "currency": "NGN",
47
+ "country": "NG",
48
+ "reference": "customer_123",
49
+ "email": "jane@example.com"
50
+ }
51
+ ```
52
+
53
+ Retrieve a virtual account:
54
+
55
+ `GET /virtual-accounts/{paymentReference}`
56
+
57
+ ## payba3 Notes
58
+
59
+ - `bankVerificationNumber` is optional in payba3 input and defaults to an empty string for sandbox-friendly flows.
60
+ - Production/compliance flows should pass BVN when required by the merchant/provider configuration.
61
+ - SeerBit encrypted bearer keys do not expose a standard `expires_in` field in the documented response; regenerate on process restart or when the provider rejects a cached token.