Capability status
What is live, what is SDK-ready but not yet product-proven, and what is roadmap — verified against the published alpha.
This page is the honest map of the platform. Every capability below is graded against the published packages, not against ambition. If a page elsewhere in these docs disagrees with this one, this one wins — and the disagreement is a bug worth reporting.
Last verified: 2026-07-08 against @capxul/sdk@1.0.0-alpha.13 /
@capxul/sdk-react@1.0.0-alpha.13.
How to read the grades
- Live — published, exercised by a real consumer (the Capxul app or the reference app), safe to build on.
- SDK-ready — the primitive is published and tested, but no product surface has proven it end-to-end yet. Expect rough edges; build against it with that expectation.
- Partial — published, but with documented constraints that limit what you can ship on it today. The constraint is listed.
- Roadmap — direction, not capability. Do not build against it; do not claim it.
Status matrix
| Capability | Grade | Hooks / API | Notes |
|---|---|---|---|
| Email OTP auth, session, sign-out | Live | useCapxulSignIn, useCapxulVerifyOtp, useCapxulSession, useCapxulSignOut | Proven in the Capxul app and reference app. |
| Profile & current user | Live | useCapxulProfile, useCapxulCurrentUser | Profile is null for a fresh identity until onboarding completes. |
| Account lifecycle / readiness | Live | useCapxulAccountLifecycle, useCapxul | The account lane runs automatically after sign-in when requirement !== "none". |
| Personal balance | Live | useCapxulAccountBalance | |
| Organizations: list, detail, switching | Live | useCapxulOrgs, useCapxulOrg, useCapxulSwitchActingEntity | |
| Org treasury, members, roles | Live | useCapxulOrgTreasury, useCapxulOrgMembers, useCapxulOrgRoles | Treasury returns the org's single treasury Account. |
| Org audit log | Roadmap (typed contract published) | useCapxulOrganizationAuditLog | org(orgId).auditLog() currently returns NOT_IMPLEMENTED on every call. |
| Onboarding completion | Live | useCapxulCompletePersonalOnboarding, useCapxulCompleteOrganizationOnboarding | |
| Payments: pay, list, get | Partial | useCapxulPay, useCapxulPayments, useCapxulPayment | pay requires typed recipients (handle, email, payee, request) and personal actors today; bare addresses are rejected by design. Amounts must use decimals: 6. |
| Cancel payment | Roadmap (typed contract published) | useCapxulCancelPayment | payments.cancel currently returns NOT_IMPLEMENTED on every call. |
| Wallet withdraw | SDK-ready | useCapxulWithdraw | External wallet cash-out with a Withdrawal document. Not yet wired into a product surface. |
| Payout to saved destination | Partial | useCapxulPayout | Backend settles wallet destinations only. Bank / mobile-money payouts are rejected. |
| Destinations (bank / mobile-money / wallet) | Partial | useCapxulDestinations, useCapxulAddDestination, useCapxulRemoveDestination | Destination metadata can be stored for all three kinds; settlement exists only for wallet. |
| Offramp quotes & status | Roadmap (typed contract published) | useCapxulOfframpQuote, useCapxulOfframpStatus | The hooks and types exist so integrations can be typed today, but every call currently returns NOT_IMPLEMENTED. No live rail yet. |
| Payment requests & inbox | SDK-ready | useCapxulIssueRequest, useCapxulInbox, useCapxulApproveInboxRequest, … | Create / send / approve / decline primitives exist; a full invoice product workflow does not. |
| Address book & insights | SDK-ready | useCapxulAddressBook, useCapxulInsightsSummary, … | |
| Activity feed | SDK-ready | useCapxulActivity | Outbound payments feed. Published but not yet proven against a product screen. |
| Payroll roster & runs | SDK-ready | useCapxulPayrollRoster, useCapxulRunPayroll, … | Primitives exist; scheduling / streaming product UX is not SDK-complete. |
| Sub-accounts (envelopes) & transfers | SDK-ready | useCapxulSubAccountsList, useCapxulTransfer, … | |
| Bank / mobile-money settlement | Roadmap | — | The next platform build direction. Destinations can be modeled today; cash-out cannot. |
| Cards | Roadmap | — | Product vision. No SDK or backend surface exists. |
@capxul/components (headless UI) | Roadmap | — | Compound-component families are specified in the domain canon but not yet implemented. |
Known gaps the platform team is tracking
These are read-model gaps the Capxul frontend team has already hit; they are tracked as SDK public-contract work. If you hit them too, you are not doing it wrong — the contract does not exist yet:
- A composite personal payments read model (metrics, payroll cards, invoice rows).
- Multi-chain org treasury token balances (today's treasury read is a single account).
- Org payment history rows with export.
- Personal activity aggregates (earnings summaries).
The instant-send guardrail
One rule explains many "why was this rejected?" moments: an instant, irreversible payment is only permitted to a validated recipient. Paying anyone not yet validated always goes through a recoverable Commitment (escrowed, cancellable, redirectable). The SDK enforces this; it is not a bug to work around. See Money & accounts.