Skip to content

Accountants

One account, multiple client entities. Switch between clients seamlessly.

How It Works

Accounting firm multi-client structure
┌───────────────────────────────────────────────┐
│          Accounting Firm Dashboard            │
├───────────────┬───────────────┬───────────────┤
│   Client A    │   Client B    │   Client C    │
│  entity_123   │  entity_456   │  entity_789   │
├───────────────┼───────────────┼───────────────┤
│  Invoices     │  Invoices     │  Invoices     │
│  Tax Reports  │  Tax Reports  │  Tax Reports  │
│  Documents    │  Documents    │  Documents    │
│  Exports      │  Exports      │  Exports      │
└───────────────┴───────────────┴───────────────┘

Switch Between Clients

Switch clienttypescript
// title: Switch between clients
// Get all clients (entities) for the accountant
const clients = await sdk.entities.list();

// Select a client and fetch their invoices
const selectedClientId = clients.data[0].id;
const invoices = await sdk.invoices.list({ entity_id: selectedClientId });

Bulk Operations

Bulk operationstypescript
// title: Bulk export for tax reporting
// Export all invoices for a period
const exportResult = await sdk.exports.exportDocuments({
  entity_id: client.entityId,
  type: "invoice",
  format: "xlsx",
  dateFrom: "2024-01-01",
  dateTo: "2024-12-31",
});

Give Clients Access (Optional)

Simple approach — Use entity API keys for full access:

Dashboard simpletypescript
// title: Embedded dashboard for client (simple)
const token = await sdk.entityUsers.generateToken(client.entityId, client.userId);

// Redirect client to their dashboard
window.location.href = `https://app.spaceinvoices.com/embed?token=${token}`;

With roles — Use user-based access for controlled permissions:

Dashboard userstypescript
// title: Embedded dashboard for client (with users)
// Add client user to their entity
await sdk.entityUsers.add(client.entityId, {
  email: client.email,
  role: "member",
});

// Generate magic link for client
const token = await sdk.entityUsers.generateToken(client.entityId, client.userId);
const dashboardUrl = `https://app.spaceinvoices.com/embed?token=${token}`;

See User Access Guide for detailed comparison.

Key Benefits

  • Multi-client management — All clients in one place
  • Client isolation — Data stays separate
  • Compliance per client — Each client’s country settings apply
  • Export ready — PDF and data exports for accounting
  • Optional client access — Clients can view or self-serve

Common Workflows

TaskAPI
List all clientssdk.entities.list()
Create invoice for clientsdk.invoices.create({...}, { entity_id })
Get client’s invoicessdk.invoices.list({}, { entity_id })
Export PDFssdk.invoices.renderPdf(id)

Workflow

Accounting firm workflow
┌──────────────┐     ┌─────────────────┐     ┌──────────────┐
│   Client     │     │   Accounting    │     │    Space     │
│   Onboards   │────▶│   Platform      │────▶│   Invoices   │
└──────────────┘     └─────────────────┘     └──────────────┘
                            │                       │
                            │  1. Create entity     │
                            │─────────────────────▶│
                            │                       │
                            │  2. Manage documents  │
                            │─────────────────────▶│
                            │                       │
                            │  3. Generate reports  │
                            │─────────────────────▶│
                            │                       │

Next Steps