Skip to content

Claim the business and connect your bank

Claim the Startup with your identity and your bank, and get a verified Stripe account, operating and reserve accounts, a card balance and daily payouts.

For developers

You claim a Startup once. Stripe verifies who you are and connects your own bank for payouts, and the Startup's operating and reserve accounts open with their own routing numbers.

For developers

Needs Startup

What you get

  • 1payment account, verified onceCompany
  • 2operating and reserve accounts with routing numbersAccount
  • 1card balance, held apart for company cardsCard
  • 1daily payout of available cash to your bankTransaction
  • 1feed of every money movement, matched to your booksTransaction
  • 1Treasurer agent that keeps a minimum cash balanceRole

Your agent does

Startup.claim
You, to your agent

Claim Leaseline and connect my bank.

Connect our bank to the business.

Claim the startup and verify who we are.

# Look up the Startup: Startup.list
RUN=$(uuidgen)  # once per request; reuse it only to retry this request
STARTUP_MATCHES=$(curl "https://api.sb/leaseline.app/startups?limit=2" \
  -H "Authorization: Bearer $SB_TOKEN")
[ "$(echo "$STARTUP_MATCHES" | jq '.startups | length')" = 1 ] || { echo "Ask the founder which Startup"; exit 1; }
STARTUP=$(echo "$STARTUP_MATCHES" | jq -r '.startups[0]["$id"] | split("/") | last')

# Startup.claim
curl -X POST https://api.sb/leaseline.app/startups/$STARTUP/claim \
  -H "Authorization: Bearer $SB_TOKEN" \
  -H "Idempotency-Key: claim-and-connect-your-bank-leaseline.app-$RUN-1" \
  -H "Content-Type: application/json" \
  -d '{"claimToken":"claim_7hq2x"}'
RUN=$(uuidgen)  # once per request; reuse it only to retry this request
STARTUP_MATCHES=$(npx startup-builder do Startup.list --data '{"limit":2}' --json)
[ "$(echo "$STARTUP_MATCHES" | jq '.startups | length')" = 1 ] || { echo "Ask the founder which Startup"; exit 1; }
STARTUP=$(echo "$STARTUP_MATCHES" | jq -r '.startups[0]["$id"] | split("/") | last')
npx startup-builder do Startup.claim --data '{"startup":"'"$STARTUP"'","claimToken":"claim_7hq2x"}' --idempotency-key claim-and-connect-your-bank-leaseline.app-$RUN-1
{
  "name": "do",
  "arguments": {
    "code": "const startupMatches = await $.Startup.list({ limit: 2 })\nif (startupMatches.length !== 1) throw new Error(`Ask the founder which Startup: ${startupMatches.length} match`)\nconst [startup] = startupMatches\nreturn await $.Startup.claim({ startup: startup.$id, claimToken: 'claim_7hq2x' })",
    "idempotencyKey": "claim-and-connect-your-bank-leaseline.app-<run>"
  }
}
import { $ } from 'startup-builder'

const run = crypto.randomUUID() // once per request; reuse it only to retry this request
const startupMatches = await $.Startup.list({ limit: 2 })
if (startupMatches.length !== 1) throw new Error(`Ask the founder which Startup: ${startupMatches.length} match`)
const [startup] = startupMatches
await $.Startup.claim({ startup: startup.$id, claimToken: 'claim_7hq2x' }, { idempotencyKey: `claim-and-connect-your-bank-leaseline.app-${run}-1` })

Change it

  • Keep three months of spend in operating and sweep the rest to reserve.
  • Pay out weekly instead of daily.
  • Connect the bank account we already have.

Under the hood

Systems
Treasury, Ledger
Nouns
Startup, Company, Transaction, Entry
Events
Startup.claimed, Transaction.reconciled
Stripe objects
Account, Person, Treasury Financial Account, Issuing Balance, Payout

Every Startup is one Stripe connected account. Its cash sits in four places: the payments balance, the card balance, the operating and reserve accounts, and your bank. Each move between them is a Transaction that Treasury reconciles to the Ledger within a day.