# Ladder Partner API > Server-to-server API for licensed partners: KYB, wallets, funding rails, investments, NGX market data, orders, holdings and webhooks. - [Ladder Partner API](https://partners.ladder.africa/index.md): Buy and redeem Ladder investments for your organisation or your customers through a signed, server-to-server API. - [Quickstart](https://partners.ladder.africa/guides/quickstart.md): From test keys to a live order in five steps. Sandbox and KYB run in parallel. - [Authentication](https://partners.ladder.africa/guides/authentication.md): Every request carries an HMAC-SHA512 signature over its own timestamp, method, path and body. Your secret never travels. - [Conventions](https://partners.ladder.africa/guides/conventions.md): Envelopes, idempotency, amounts, identifiers, pagination, and what differs between sandbox and live. - [KYB](https://partners.ladder.africa/guides/kyb.md): Business information, people, documents and a settlement account, submitted once through the API. - [Wallets and funding](https://partners.ladder.africa/guides/wallets-and-funding.md): One balance per currency, funded by bank transfer, hosted checkout, direct debit or mobile money, and a ledger you can reconcile. - [Direct-debit mandates](https://partners.ladder.africa/guides/direct-debit-mandates.md): Let Ladder pull NGN from one of your settlement accounts under a NIBSS e-mandate, approved once by the account's signatory. - [Investments](https://partners.ladder.africa/guides/investments.md): What a partner can buy, and how to read price, minimum, open state and allocation. - [Market data](https://partners.ladder.africa/guides/market-data.md): Every NGX equity, ETF and index with quotes, daily bars, indices, FX, the trading calendar and corporate disclosures. - [Buy orders](https://partners.ladder.africa/guides/buy-orders.md): Pay from the wallet or per order, tag the end customer, and follow the order to a holding. - [Sell orders](https://partners.ladder.africa/guides/sell-orders.md): Redeem all or part of a holding; units are reserved while Ladder redeems and proceeds are credited once. - [Webhooks](https://partners.ladder.africa/guides/webhooks.md): Signed HTTPS deliveries for every money and order event, retried for 24 hours, verifiable in five lines. - [Errors](https://partners.ladder.africa/reference/errors.md): Every error.code the API returns, when it happens, and what details carries. - [Go-live checklist](https://partners.ladder.africa/reference/go-live-checklist.md): What to have in place before your first live order. - [Support](https://partners.ladder.africa/reference/support.md): Where to find the live schema and how to reach Ladder. - [Get the calling organisation](https://partners.ladder.africa/api-reference/organisation/get-the-calling-organisation.md) - [Get business information](https://partners.ladder.africa/api-reference/kyb/get-business-information.md) - [Update business information](https://partners.ladder.africa/api-reference/kyb/update-business-information.md): Partial update. Only while KYB is `draft` or `more_info_required`. - [List directors, owners and signatories](https://partners.ladder.africa/api-reference/kyb/list-directors-owners-and-signatories.md) - [Add a person](https://partners.ladder.africa/api-reference/kyb/add-a-person.md): `id_number` and `bvn` are write-only and stored encrypted; responses show masked values. Beneficial owners need ≥5%; `pep_details` is required when `is_pep`. - [Get a person](https://partners.ladder.africa/api-reference/kyb/get-a-person.md) - [Update a person](https://partners.ladder.africa/api-reference/kyb/update-a-person.md) - [Remove a person](https://partners.ladder.africa/api-reference/kyb/remove-a-person.md) - [List KYB documents](https://partners.ladder.africa/api-reference/kyb/list-kyb-documents.md) - [Upload a KYB document](https://partners.ladder.africa/api-reference/kyb/upload-a-kyb-document.md): multipart/form-data. PDF, JPEG or PNG, max 2MB. The signature covers the raw multipart body. `person_id` links an ID document to a person. Idempotency-Key is not required here. - [Delete a KYB document](https://partners.ladder.africa/api-reference/kyb/delete-a-kyb-document.md) - [List settlement accounts](https://partners.ladder.africa/api-reference/kyb/list-settlement-accounts.md) - [Add a settlement account](https://partners.ladder.africa/api-reference/kyb/add-a-settlement-account.md): Bank account in the organisation's name, one per currency. Verified by Ladder ops before payouts. - [Remove a settlement account](https://partners.ladder.africa/api-reference/kyb/remove-a-settlement-account.md): Only accounts Ladder has not yet verified can be removed by the partner; a verified account is removed by Ladder ops. - [Submit KYB for review](https://partners.ladder.africa/api-reference/kyb/submit-kyb-for-review.md): Fails with `kyb_incomplete` and `details.missing` listing what is still required. - [List wallet balances](https://partners.ladder.africa/api-reference/wallets/list-wallet-balances.md): One wallet per currency (NGN, GHS, USD) for the key's environment. - [Fund a wallet](https://partners.ladder.africa/api-reference/wallets/fund-a-wallet.md): Returns payment `instructions` for the chosen `method` (default per currency). NGN: `korapay_bank_transfer` (one-time bank account, `instructions.account`), `korapay_checkout` (hosted page, `instructions.checkout_url`), `flutterwave_direct_debit` (debits an active mandate, `instructions.mandate_id`)… - [List funding requests](https://partners.ladder.africa/api-reference/wallets/list-funding-requests.md) - [Get a funding request](https://partners.ladder.africa/api-reference/wallets/get-a-funding-request.md) - [Ledger statement](https://partners.ladder.africa/api-reference/wallets/ledger-statement.md): Append-only wallet entries, newest first: funding, order_debit, order_refund, adjustment. - [List direct-debit mandates](https://partners.ladder.africa/api-reference/wallets/list-direct-debit-mandates.md) - [Create a direct-debit mandate](https://partners.ladder.africa/api-reference/wallets/create-a-direct-debit-mandate.md): Takes a NIBSS e-mandate on one of your NGN settlement accounts (Flutterwave). The response is `pending` with an `activation` block: the account holder makes the stated token payment (typically NGN 100) from the mandated account into `activation.account_number`; the bank then confirms, `status` becom… - [Get a mandate](https://partners.ladder.africa/api-reference/wallets/get-a-mandate.md) - [Revoke a mandate](https://partners.ladder.africa/api-reference/wallets/revoke-a-mandate.md): Stops further debits. Sends `mandate.revoked`. - [List investments](https://partners.ladder.africa/api-reference/investments/list-investments.md) - [Get an investment](https://partners.ladder.africa/api-reference/investments/get-an-investment.md) - [List market instruments](https://partners.ladder.africa/api-reference/market-data/list-market-instruments.md): Reference data for every NGX equity and ETF Ladder tracks (indices on request), each with its latest `quote` and the `ladder` block that says whether it can be ordered through `POST /orders`. Reference fields change rarely; quotes refresh about every 15 minutes during the NGX session, so poll `GET /… - [Get a market instrument](https://partners.ladder.africa/api-reference/market-data/get-a-market-instrument.md): Symbol lookup is case-insensitive. Indices resolve here too, and at `GET /market/indices/{symbol}`. - [Latest quote for an instrument](https://partners.ladder.africa/api-reference/market-data/latest-quote-for-an-instrument.md): The newest observation only (market data, refreshed about every 15 minutes in session). 404 `quote_not_found` before the first observation. - [Batch quotes](https://partners.ladder.africa/api-reference/market-data/batch-quotes.md): Latest quote for each requested symbol, in one call: what a trading screen polls. Unknown symbols are skipped; instruments without a quote yet are skipped. - [Daily price history](https://partners.ladder.africa/api-reference/market-data/daily-price-history.md): One `market.bar` per trading day, newest first, built from Ladder's own observations since tracking began (`source=derived`). Defaults to the last 366 days. - [List indices](https://partners.ladder.africa/api-reference/market-data/list-indices.md): NGX benchmark indices with their latest level in `quote.last`. Indices are never orderable. - [Get an index](https://partners.ladder.africa/api-reference/market-data/get-an-index.md) - [Latest NGX session summary](https://partners.ladder.africa/api-reference/market-data/latest-ngx-session-summary.md): All-Share Index, turnover, market capitalisation and breadth for the latest (or given) session. - [NGX session history](https://partners.ladder.africa/api-reference/market-data/ngx-session-history.md): One summary per trading day (the last observation of each day), newest first. - [Indicative NGN exchange rates](https://partners.ladder.africa/api-reference/market-data/indicative-ngn-exchange-rates.md): The latest daily reference rate per currency. Indicative only: Ladder's own locked quotes govern any conversion it performs. - [Trading calendar](https://partners.ladder.africa/api-reference/market-data/trading-calendar.md): Whether today is an NGX trading day, the next one, session times from the latest summary, and the holidays Ladder knows about. - [Corporate disclosures](https://partners.ladder.africa/api-reference/market-data/corporate-disclosures.md): Filings published by the exchange, newest first. - [List orders](https://partners.ladder.africa/api-reference/orders/list-orders.md) - [Place an order (buy or sell)](https://partners.ladder.africa/api-reference/orders/place-an-order-buy-or-sell.md): **Buy** (`side=buy`, default): `investment_id`, `amount`, `currency`. `payment_mode=wallet` debits the wallet in `currency` immediately (402 if short). `payment_mode=checkout` returns `payment` instructions; the order executes when that funding settles. `currency` must equal the investment's currenc… - [Get an order](https://partners.ladder.africa/api-reference/orders/get-an-order.md) - [Cancel an order](https://partners.ladder.africa/api-reference/orders/cancel-an-order.md): Allowed in `awaiting_payment` and `pending_fulfilment`; a paid order is refunded to the wallet. - [List holdings](https://partners.ladder.africa/api-reference/holdings/list-holdings.md) - [Get a holding](https://partners.ladder.africa/api-reference/holdings/get-a-holding.md) - [List webhook endpoints](https://partners.ladder.africa/api-reference/webhooks/list-webhook-endpoints.md) - [Register a webhook endpoint](https://partners.ladder.africa/api-reference/webhooks/register-a-webhook-endpoint.md): HTTPS only for live keys; the host must resolve to public IPs. `events` empty = all events. Max 5 per environment. The `secret` is returned only in this response. - [Get a webhook endpoint](https://partners.ladder.africa/api-reference/webhooks/get-a-webhook-endpoint.md) - [Update a webhook endpoint](https://partners.ladder.africa/api-reference/webhooks/update-a-webhook-endpoint.md) - [Delete a webhook endpoint](https://partners.ladder.africa/api-reference/webhooks/delete-a-webhook-endpoint.md) - [Rotate signing secret](https://partners.ladder.africa/api-reference/webhooks/rotate-signing-secret.md): The old secret stops working immediately. - [Send a test event](https://partners.ladder.africa/api-reference/webhooks/send-a-test-event.md): Sends `webhook.test` synchronously (no retries) and returns the delivery result. - [List webhook deliveries](https://partners.ladder.africa/api-reference/webhooks/list-webhook-deliveries.md) - [Retry a delivery](https://partners.ladder.africa/api-reference/webhooks/retry-a-delivery.md) - [Settle a funding request (sandbox)](https://partners.ladder.africa/api-reference/sandbox/settle-a-funding-request-sandbox.md): Test keys only (403 with live keys). ## OpenAPI Specs - [openapi](/openapi.json) ## Optional - [Swagger (live schema)](https://api.myladder.africa/partner/docs/) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.