Quick Start

Welcome to Crane Ledger! This guide will get you up and running in minutes. We'll walk through creating your organization, setting up billing, and recording your first transaction.

Prerequisites

Before you start, you'll need:

  • GitHub Account: For user authentication
  • Email Address: For billing and notifications
  • Basic Accounting Knowledge: Understanding of debits, credits, and double-entry bookkeeping

Step 1: Create Your Organization

Sign Up for Crane Ledger

Visit craneledger.ai and sign up using your GitHub account.

# This will be handled through the web interface
# You'll be redirected to GitHub for authentication

Create Master Organization

After authentication, create your master organization:

POST https://api.craneledger.ai/accounts/master
Content-Type: application/json

{
  "organization_name": "My Business LLC",
  "user_github_id": "12345678",
  "user_email": "owner@mybusiness.com",
  "base_currency_code": "USD",
  "domain": "mybusiness.com",
  "tax_number": "US123456789",
  "fiscal_year_start": 1
}

Response:

{
  "id": "org_1234567890abcdef",
  "object": "organization",
  "name": "My Business LLC",
  "domain": "mybusiness.com",
  "tax_number": "US123456789",
  "fiscal_year_start": 1,
  "base_currency": {
    "code": "USD",
    "name": "US Dollar",
    "symbol": "$",
    "decimal_places": 2
  },
  "is_root": true,
  "parent_organization_id": null,
  "stripe_customer_id": "cus_xxxxxxxxxxxxxxxx",
  "created_at": "2024-01-15T10:30:00Z"
}

What you get:

  • Organization ID: org_1234567890abcdef (save this!)
  • 500 Free Credits: Enough for initial setup and testing
  • Stripe Customer Account: For billing management

Step 2: Set Up Billing

Check Your Credits

Verify your credit balance:

GET https://api.craneledger.ai/organizations/org_1234567890abcdef/billing
Authorization: Bearer cl_test_your_test_key_here

Response:

{
  "organization_id": "org_1234567890abcdef",
  "credits_remaining": 500,
  "credits_total": 500,
  "auto_recharge_enabled": false,
  "billing_email": "owner@mybusiness.com"
}

Purchase Credit Package

For production use, purchase a credit package:

POST https://api.craneledger.ai/api/billing/purchase-package
Authorization: Bearer cl_live_your_live_key_here
Content-Type: application/json

{
  "package": "builder",
  "organization_id": "org_1234567890abcdef"
}

This returns a Stripe checkout URL. Complete the payment to add 5,000 credits ($50.00).

Prevent service interruptions:

PUT https://api.craneledger.ai/organizations/org_1234567890abcdef/billing
Authorization: Bearer cl_live_your_live_key_here
Content-Type: application/json

{
  "auto_recharge_enabled": true
}

Auto-recharge behavior:

  • Triggers when credits drop below $4.00 (400 credits)
  • Adds credits to reach $20.00 balance (2,000 credits)
  • Sends email notification
  • No service interruption

Step 3: Create API Keys

Generate Your API Key

Create an API key for programmatic access:

POST https://api.craneledger.ai/organizations/org_1234567890abcdef/api-keys
Authorization: Bearer cl_live_your_live_key_here
Content-Type: application/json

{
  "name": "Production Application",
  "permissions": ["read", "write"]
}

Response:

{
  "id": "key_1234567890abcdef",
  "organization_id": "org_1234567890abcdef",
  "name": "Production Application",
  "key_prefix": "cl_live_1a2b3c",
  "permissions": ["read", "write"],
  "created_at": "2024-01-15T10:35:00Z"
}

⚠️ Important: The full API key is only shown once! Save it securely.

Test Your API Key

Verify your key works:

GET https://api.craneledger.ai/organizations/org_1234567890abcdef
Authorization: Bearer cl_live_1a2b3c4d5e6f...

Expected Response:

{
  "id": "org_1234567890abcdef",
  "name": "My Business LLC",
  "base_currency": {
    "code": "USD",
    "name": "US Dollar",
    "symbol": "$",
    "decimal_places": 2
  }
}

Step 4: Set Up Chart of Accounts

Create Essential Accounts

Set up your basic chart of accounts:

# Cash Account
POST https://api.craneledger.ai/organizations/org_1234567890abcdef/accounts
Authorization: Bearer cl_live_1a2b3c4d5e6f...
Content-Type: application/json

{
  "code": "1001",
  "name": "Operating Cash",
  "type": "asset",
  "description": "Primary checking account"
}
# Accounts Receivable
POST https://api.craneledger.ai/organizations/org_1234567890abcdef/accounts
Authorization: Bearer cl_live_1a2b3c4d5e6f...
Content-Type: application/json

{
  "code": "1101",
  "name": "Accounts Receivable",
  "type": "asset",
  "description": "Money owed by customers"
}
# Sales Revenue
POST https://api.craneledger.ai/organizations/org_1234567890abcdef/accounts
Authorization: Bearer cl_live_1a2b3c4d5e6f...
Content-Type: application/json

{
  "code": "4001",
  "name": "Sales Revenue",
  "type": "revenue",
  "description": "Income from product sales"
}

Verify Account Creation

List your accounts:

GET https://api.craneledger.ai/organizations/org_1234567890abcdef/accounts
Authorization: Bearer cl_live_1a2b3c4d5e6f...

Response:

[
  {
    "id": "act_1234567890abcdef",
    "code": "1001",
    "name": "Operating Cash",
    "type": "asset",
    "balance": {
      "debit": 0.00,
      "credit": 0.00,
      "net": 0.00
    }
  },
  {
    "id": "act_2345678901bcdef0",
    "code": "1101",
    "name": "Accounts Receivable",
    "type": "asset",
    "balance": {
      "debit": 0.00,
      "credit": 0.00,
      "net": 0.00
    }
  },
  {
    "id": "act_3456789012cdef01",
    "code": "4001",
    "name": "Sales Revenue",
    "type": "revenue",
    "balance": {
      "debit": 0.00,
      "credit": 0.00,
      "net": 0.00
    }
  }
]

Step 5: Record Your First Transaction

Cash Opening Balance

Record your starting cash balance:

POST https://api.craneledger.ai/organizations/org_1234567890abcdef/transactions
Authorization: Bearer cl_live_1a2b3c4d5e6f...
Content-Type: application/json

{
  "description": "Opening cash balance",
  "transaction_date": "2024-01-15",
  "entries": [
    {
      "account_id": "act_1234567890abcdef",
      "entry_type": "debit",
      "amount": 10000.00
    },
    {
      "account_id": "act_3456789012cdef01",
      "entry_type": "credit",
      "amount": 10000.00
    }
  ]
}

Understanding this transaction:

  • Debit Cash: Increases your cash balance (+$10,000)
  • Credit Sales Revenue: Records the source of funds (+$10,000 revenue)
  • Result: Balanced transaction (debits = credits)

Verify Transaction

Check that your transaction was recorded:

GET https://api.craneledger.ai/organizations/org_1234567890abcdef/transactions
Authorization: Bearer cl_live_1a2b3c4d5e6f...

Response:

[
  {
    "id": "txn_1234567890abcdef",
    "description": "Opening cash balance",
    "status": "posted",
    "amount": 10000.00,
    "total_debits": 10000.00,
    "total_credits": 10000.00,
    "entries": [
      {
        "account_id": "act_1234567890abcdef",
        "entry_type": "debit",
        "amount": 10000.00
      },
      {
        "account_id": "act_3456789012cdef01",
        "entry_type": "credit",
        "amount": 10000.00
      }
    ]
  }
]

Check Account Balances

Verify balances updated:

GET https://api.craneledger.ai/organizations/org_1234567890abcdef/accounts
Authorization: Bearer cl_live_1a2b3c4d5e6f...

Response:

[
  {
    "id": "act_1234567890abcdef",
    "code": "1001",
    "name": "Operating Cash",
    "type": "asset",
    "balance": {
      "debit": 10000.00,
      "credit": 0.00,
      "net": 10000.00
    }
  },
  {
    "id": "act_2345678901bcdef0",
    "code": "1101",
    "name": "Accounts Receivable",
    "type": "asset",
    "balance": {
      "debit": 0.00,
      "credit": 0.00,
      "net": 0.00
    }
  },
  {
    "id": "act_3456789012cdef01",
    "code": "4001",
    "name": "Sales Revenue",
    "type": "revenue",
    "balance": {
      "debit": 0.00,
      "credit": 10000.00,
      "net": 10000.00
    }
  }
]

Step 6: Generate Your First Report

Trial Balance

Check your accounting equation:

GET https://api.craneledger.ai/organizations/org_1234567890abcdef/reports/trial-balance
Authorization: Bearer cl_live_1a2b3c4d5e6f...

Response:

{
  "generated_at": "2024-01-15T10:45:00Z",
  "accounts": [
    {
      "account_code": "1001",
      "account_name": "Operating Cash",
      "debit_balance": 10000.00,
      "credit_balance": 0.00,
      "net_balance": 10000.00
    },
    {
      "account_code": "4001",
      "account_name": "Sales Revenue",
      "debit_balance": 0.00,
      "credit_balance": 10000.00,
      "net_balance": -10000.00
    }
  ],
  "total_debits": 10000.00,
  "total_credits": 10000.00,
  "in_balance": true
}

Perfect! Your trial balance is in balance (debits = credits).

Step 7: Next Steps

Continue Building

Now that you have the basics set up:

  1. Add More Accounts: Create expense accounts, liability accounts, etc.
  2. Record Transactions: Log sales, expenses, payments
  3. Create Customers: Set up customer records for invoicing
  4. Generate Invoices: Bill your customers
  5. Bank Reconciliation: Match bank statements to transactions

Useful Resources

  • API Reference: Complete endpoint documentation
  • Core Concepts: Learn double-entry bookkeeping principles
  • Guides: Integration patterns and best practices
  • SDKs: Official client libraries for your language

Troubleshooting

Common Issues

"Authentication failed"

  • Check your API key is correct and has proper permissions
  • Ensure you're using the right key type (live vs test)

"Transaction does not balance"

  • Verify debits equal credits
  • Check account types are correct
  • Ensure amounts are positive numbers

"Organization not found"

  • Verify the organization ID in your API calls
  • Check that you're using the correct organization

"Insufficient credits"

  • Check your credit balance
  • Purchase more credits or enable auto-recharge
  • Use test keys for development

Congratulations! You've successfully set up Crane Ledger and recorded your first transaction. Your accounting system is now ready for business operations. 🚀


Need help?

Create a free account to access our support portal. Once signed in, use the Support tab in your dashboard to submit a support ticket — our team typically responds within 24 hours.