Skip to main content
POST /orders with the investment, the amount in the investment’s currency and how to pay: Optional fields: client_reference (your own id, unique per environment; 409 duplicate_client_reference), customer (reference, name, email of the end customer the position is for), metadata (free-form, returned unchanged).
Request
Response (sandbox)
That is a sandbox response, which completes at once. Live, the same request returns status: "pending_fulfilment" with paid_at set and holding_id null; order.completed arrives when Ladder has placed the position.

Lifecycle

Money rules you can rely on

  • A buy is debited exactly once and refunded at most once. Both ledger entries carry the order reference.
  • A short payment on a checkout order stays in your wallet and the order keeps waiting; an overpayment executes the order and leaves the surplus in the wallet.
  • A completed buy always has a holding.

Holdings

GET /holdings lists positions with units, unit_price, principal, current_value, accrued_returns, maturity_date and the customer_reference you tagged the order with. Reconcile per end customer with GET /holdings?customer_reference=… and GET /orders?client_reference=….

Validation

Validation errors come back before anything moves: investment_not_found, investment_closed, currency_mismatch (with investment_currency), amount_below_minimum (with minimum), allocation_exceeded (with allocation_remaining).

Listed equities

An order for an NGX-listed instrument (through its ladder.investment_id) is a market order placed through Ladder’s broker at the prevailing price. It is accepted as pending_fulfilment, executed during the trading session, and completed with the executed units and unit_price. Plan for same-day or next-session completion rather than seconds.