Roadmap

What is built, what is still an interface, and what comes next

Use this page to decide what to integrate against now. Anything marked 🟡 is not live. Don't build a production dependency on it yet.

Real Now
Live on the current API
Next Steps
Agreed scope, not built
Deferred
Waiting on a decision
Later
If partners ask

What your key gets today#

Warning

Float is pre-launch. Live keys don't work for underwriting or KYB yet. See Environments and access.

Test keys (fk_test_)Live keys (fk_live_)
UnderwritingFull sandbox behavior with mock results503. No real provider is configured yet
KYBFull sandbox behavior with mock results503. No real provider is configured yet
Chain observationSolana devnetNot enabled
Document uploads503. No object storage is configured yet503. No object storage is configured yet
AttestationsCreated, but stay pending (no anchor)Created, but stay pending (no anchor)

What is real vs stubbed#

Area🟢 Real now🟡 Interface / not yet built
AuthPartner API keys (HMAC-hashed, scoped, test/live, revocable), service keysOAuth client credentials
HTTP conventionsEnvelope, error registry, request IDs, validation, idempotency, rate limit, security headersPublished API Reference, on hold while the API is finalized
BusinessesCreate/link, masked identifiers (AES-GCM + blind index), ed25519 wallet proofs, wallet-based identityKYB. Test keys use a sandbox; live keys return 503, and businesses stay unverified
UnderwritingAsync lifecycle, dispatch with retries, SLA sweeper, information push, result ingestion, taxonomy validationReal engine. Sandbox is test-only. Live keys return 503 until a real provider is connected
AssessmentsStored, band resolved from versioned taxonomy, expiry flagFinal band taxonomy (draft-1 is a placeholder)
Events & webhooksOutbox, GET /v1/events, signed webhooks (retries, auto-disable, secret rotation, SSRF guard with connect-time IP check)Self-serve endpoint management (operator-managed for now)
AttestationsFingerprints, batching, proofs, private detail for the owning partner, and a public verification endpoint. See Verifiable assessmentsOn-chain anchoring is not live. Every attestation sits at pending with no anchor. Revocation isn't wired up yet
DocumentsEncrypted upload, forwarding, retention + deletion sweepUploads return 503: no object storage is configured yet. Production retention policy is also undecided
Obligations & repaymentsRegistration, reported accounting + status machine, overdue sweeper, repayment references, verification pipeline, OutcomePolicy (chain_observed v0), real Solana observer per environmentDiscovery of unreported invoice repayments (only partner-supplied tx signatures are verified)
Credit lineskind: credit_line, Float-wide ceilings with per-provider shares, facilities, usage, live limit, settlements, chain observer for Subscriptions & Allowances delegations, CreditOutcomePolicy (chain_observed_credit v0)Stream/webhook indexer for scale (polling today)
ReputationConsent-gated cross-partner read from Float-verified evidence only; evidence_only policyBand policy (band is always null)
Note

The chain observer is real but off by default, enabled per environment. Where it is off: repayments report float_verification.status: "not_configured", obligations report verified.chain_observability: "not_configured", and reputation returns evidence_status: "chain_verification_not_configured" with empty counts. Today it is on for test keys (Solana devnet) and not enabled for live keys.

Next increments#

Agreed scope, not built yet. Roughly in order.

Attestation anchoring on Solana

Publish batch values on Solana, and revoke when an assessment is withdrawn.

Document object storage

S3/GCS/R2 adapter, malware scanning, retention for information payloads and invoices.

Webhook delivery visibility

Delivery logs in the dashboard and a manual redeliver command.

Invoice repayment discovery

Find unreported repayments via repayment_reference (source chain_observed).

Chain indexing at scale

Replace polling with a webhook/stream indexer (Helius / Geyser). Pick a mainnet RPC provider.

Failed-pull decoding

Confirm against a real failed CPI pull (none in the mainnet sample yet).

Credit outcome policy v1

Grace window, revocation with outstanding usage, scaling by amounts.

Usage-history schema

Replace the open 0.1 schema with fields agreed with the underwriting developer.

Reputation band policy

Decide bands and which cross-partner evidence to expose.

Obligation edge states

Recovered after default, disputes, restructuring.

Published API reference

Generated from the API itself, once the API is finalized.

Deferred by decision#

ItemStatus today
Double-financing detectionInvoice fingerprint is written; detection logic later
Production document retentionLegal/compliance decision; policy is configurable once decided
Real information schemaOpen schema 0.1 until the field set is agreed
Real band taxonomyinvoice_risk/draft-1 is a placeholder
KYBidentity_status stays unverified until an identity provider is integrated

Later#

API surface
  • POST /v1/underwriting_requests/{id}/cancel (the canceled state already exists)
  • List endpoints for underwriting requests and obligations, if partners ask (GET /v1/events covers reconciliation today)
  • PATCH /v1/businesses/{id}
Self-serve & auth
  • Self-serve API keys and webhooks (with the dashboard)
  • OAuth client credentials
  • Wallet-signed consent grants instead of partner-attested consent
Operations
  • Metrics export and alert routing
  • A worker health endpoint