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
// 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
// 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:
// 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:
// 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
| Task | API |
|---|---|
| List all clients | sdk.entities.list() |
| Create invoice for client | sdk.invoices.create({...}, { entity_id }) |
| Get client’s invoices | sdk.invoices.list({}, { entity_id }) |
| Export PDFs | sdk.invoices.renderPdf(id) |
Workflow
Accounting firm workflow
┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ Client │ │ Accounting │ │ Space │
│ Onboards │────▶│ Platform │────▶│ Invoices │
└──────────────┘ └─────────────────┘ └──────────────┘
│ │
│ 1. Create entity │
│─────────────────────▶│
│ │
│ 2. Manage documents │
│─────────────────────▶│
│ │
│ 3. Generate reports │
│─────────────────────▶│
│ │Next Steps
- User Access Guide — Give clients direct access
- Multi-Tenancy Guide — Entity management
- Rendering Guide — PDF exports