Skip to content

API Methods

The SDK provides methods for all Space Invoices API endpoints, organized by resource.

Invoices

MethodDescription
invoices.list(params?)List invoices with filtering and pagination
invoices.get({ id })Get invoice by ID
invoices.create({ entityId, body })Create new invoice
invoices.update({ id, body })Update invoice
invoices.delete({ id })Delete invoice
invoices.renderPdf({ id })Render invoice as PDF
invoices.send({ id, body })Send invoice via email
Invoice Methodstypescript
// List invoices
const _invoices = await sdk.invoices.list({
  entityId: "ent_123",
  limit: 20,
});

// Get single invoice
const _invoice = await sdk.invoices.get({ id: "inv_123" });

// Create invoice
const _newInvoice = await sdk.invoices.create({
  entityId: "ent_123",
  body: {
    date: "2024-01-15",
    items: [{ name: "Service", price: 100 }],
  },
});

// Update invoice
await sdk.invoices.update({
  id: "inv_123",
  body: { dueDate: "2024-02-15" },
});

// Delete invoice
await sdk.invoices.delete({ id: "inv_123" });

Customers

MethodDescription
customers.list(params?)List customers
customers.get({ id })Get customer by ID
customers.create({ entityId, body })Create customer
customers.update({ id, body })Update customer
customers.delete({ id })Delete customer
Customer Methodstypescript
// List customers
const _customers = await sdk.customers.list({
  entityId: "ent_123",
});

// Get customer
const _customer = await sdk.customers.get({ id: "cust_123" });

// Create customer
const _newCustomer = await sdk.customers.create({
  entityId: "ent_123",
  body: {
    name: "Acme Corp",
    email: "billing@acme.com",
    address: "123 Business St",
    city: "New York",
    country: "US",
  },
});

// Update customer
await sdk.customers.update({
  id: "cust_123",
  body: { email: "new-email@acme.com" },
});

Items

MethodDescription
items.list(params?)List items/products
items.get({ id })Get item by ID
items.create({ entityId, body })Create item
items.update({ id, body })Update item
items.delete({ id })Delete item
Item Methodstypescript
// List items
const _items = await sdk.items.list({
  entityId: "ent_123",
});

// Create item
const _item = await sdk.items.create({
  entityId: "ent_123",
  body: {
    name: "Consulting Hour",
    unit: "hour",
    price: 150,
    taxIds: ["tax_123"],
  },
});

// Update item
await sdk.items.update({
  id: "item_123",
  body: { price: 175 },
});

Business Units

MethodDescription
businessUnits.list(params?)List business units
businessUnits.get(id, params?)Get business unit by ID
businessUnits.create(body)Create business unit
businessUnits.update(id, body)Update business unit
businessUnits.delete(id)Archive business unit

Financial Categories

MethodDescription
financialCategories.list(params?)List financial categories
financialCategories.create(body)Create financial category
financialCategories.update(id, body)Update financial category
financialCategories.delete(id)Archive financial category
financialCategories.getRevenueByFinancialCategory(params)Get revenue summary grouped by category
financialCategories.updateDocumentItemFinancialCategory(id, body)Update a saved document line category
financialCategories.updateDocumentItemFinancialCategories(body)Batch update saved document line categories

Exports & Reporting

MethodDescription
exports.exportDocuments(params)Export documents to CSV or XLSX
exports.exportSalesPerItem(params)Export sales per item for a period
exports.exportRevenueByCategory(params)Export accrued revenue by category for a period
exports.startPdfExport(body)Start async bulk PDF export
exports.downloadPdfExport(jobId)Download completed PDF export archive
exports.startEslogExport(body)Start async bulk e-SLOG export
exports.downloadEslogExport(jobId)Download completed e-SLOG export archive

Payments

MethodDescription
payments.list(params?)List payments
payments.get({ id })Get payment by ID
payments.create({ documentId, body })Record payment
payments.delete({ id })Delete payment
Payment Methodstypescript
// List payments for a document
const _payments = await sdk.payments.list({
  documentId: "inv_123",
});

// Record a payment
const _payment = await sdk.payments.create({
  documentId: "inv_123",
  body: {
    amount: 500,
    date: "2024-01-20",
    method: "bank_transfer",
  },
});

// Delete payment
await sdk.payments.delete({ id: "pay_123" });

Entities

MethodDescription
entities.list(params?)List entities
entities.get({ id })Get entity by ID
entities.create({ body })Create entity
entities.update({ id, body })Update entity
Entity Methodstypescript
// List entities
const _entities = await sdk.entities.list();

// Get entity
const _entity = await sdk.entities.get({ id: "ent_123" });

// Create entity (for multi-tenant platforms)
const _newEntity = await sdk.entities.create({
  body: {
    name: "New Business",
    email: "contact@business.com",
    country: "US",
  },
});

// Update entity
await sdk.entities.update({
  id: "ent_123",
  body: { name: "Updated Business Name" },
});

Taxes

MethodDescription
taxes.list(params?)List tax rates
taxes.get({ id })Get tax by ID
taxes.create({ entityId, body })Create tax rate
taxes.update({ id, body })Update tax rate
taxes.delete({ id })Delete tax rate

Other Documents

The SDK also supports:

  • estimates — Estimates and proforma invoices
  • creditNotes — Credit notes
  • advanceInvoices — Advance invoices
  • recurringInvoices — Recurring invoices

All follow the same pattern as invoices.

Pagination

All list methods support cursor-based pagination:

Paginationtypescript
// First page
const page1 = await sdk.invoices.list({
  entityId: "ent_123",
  limit: 20,
});

// Next page using cursor
if (page1.cursor) {
  const _page2 = await sdk.invoices.list({
    entityId: "ent_123",
    limit: 20,
    cursor: page1.cursor,
  });
}

Filtering

Filter results using query parameters:

Filteringtypescript
// Filter by date range
const _invoices = await sdk.invoices.list({
  entityId: "ent_123",
  dateFrom: "2024-01-01",
  dateTo: "2024-01-31",
});

// Filter by status
const _unpaid = await sdk.invoices.list({
  entityId: "ent_123",
  status: "unpaid",
});

// Filter customers by search
const _customers = await sdk.customers.list({
  entityId: "ent_123",
  search: "acme",
});

Error Handling

The SDK throws errors for failed requests:

Error Handlingtypescript
try {
  const _invoice = await sdk.invoices.get("invalid_id");
} catch(error) {
  if (error.status === 404) {
  } else if (error.status === 401) {
  } else {
  }
}

Next Steps