Get started

From a test key to your first Float assessment in four calls

Credit infrastructure that proves itself.

Float underwrites receivables, records the obligations you finance, and turns on-chain repayments into portable business reputation. You keep the capital and every decision.

What Float gives you#

Warning

Float is not a lender, pool, custodian or payment processor. It never holds or moves funds.

Explore by product#

The default flow (kind: invoice). You submit a receivable, Float returns an assessment, you decide and finance.

StepCallYou get
1POST /v1/businessesbiz_…, created or linked
2POST /v1/underwriting_requestsuwr_… with status pending
3GET /v1/underwriting_requests/{id}An assessment once completed
4POST /v1/obligationsobl_… plus a repayment_reference
TipThere is no approve/decline field and no price in an assessment. That decision is yours.

Quickstart#

  1. Grab a test key

    Test keys start with fk_test_ and only ever touch test data. There is no self-serve signup yet, so see Environments and access for how to get one.

    export FLOAT_API_KEY=fk_test_…
  2. Create a business
    curl -X POST https://api.float.xyz/v1/businesses \
      -H "Authorization: Bearer $FLOAT_API_KEY" \
      -H "Content-Type: application/json" \
      -H "Idempotency-Key: $(uuidgen)" \
      -d '{"external_id":"acct_8842","display_name":"Lagos Freight Ltd","country":"NG"}'
  3. Submit an invoice

    Underwriting is asynchronous: you get 202 and status pending.

    curl -X POST https://api.float.xyz/v1/underwriting_requests \
      -H "Authorization: Bearer $FLOAT_API_KEY" \
      -H "Content-Type: application/json" \
      -H "Idempotency-Key: $(uuidgen)" \
      -d '{
        "business": "biz_01J…",
        "invoice": {
          "invoice_number": "INV-2026-0091",
          "amount": { "amount": "4500000", "currency": "USD" },
          "issue_date": "2026-09-01",
          "due_date": "2026-11-30",
          "debtor": { "name": "Acme Retail Plc", "country": "NG" }
        }
      }'
  4. Read the assessment

    Poll the request, or follow GET /v1/events. A completed request embeds the assessment.

    "assessment": {
      "band": { "key": "moderate_risk", "label": "Moderate risk", "ordinal": 2, "of": 3 },
      "confidence": { "level": "medium" },
      "verification": { "invoice": "verified", "debtor": "partially_verified", "business": "unverified" },
      "reasons": [{ "code": "DEBTOR_PAYMENT_HISTORY_LIMITED", "direction": "negative" }]
    }

Sandbox#

With a fk_test_ key, an invoice-number suffix picks the outcome. Try INV-0091-SBX-REJECT.

SuffixOutcome
(none)completed, band moderate_risk
-SBX-BAND-<key>completed with that band (low_risk, high_risk, …)
-SBX-REJECTrejected
-SBX-INFOrequires_information; any information push completes it
-SBX-FAILfailed
-SBX-SILENTstays processing until the SLA timeout
-SBX-UNAVAILABLEretried, then failed / underwriting_dispatch_failed
InfoSandbox assessments carry engine.name: "float-sandbox" and a SANDBOX_RESULT reason. They are not real assessments.

Explore by role#