Skip to main content

ZeroInvoice API

Base URL: https://zeroinvoice.ainative.studio
API Prefix: /api
Auth: JWT Bearer (httpOnly cookie or Authorization: Bearer <token>)
Source: github.com/AINative-Studio/ZeroInvoice

ZeroInvoice is a full invoice management platform with Stripe payments, QuickBooks sync, semantic search via ZeroDB, real-time WebSocket notifications, customer portals, and 2FA support.

Health Check
curl https://zeroinvoice.ainative.studio/api/health
# {"status":"healthy","service":"ZeroInvoice API"}

Authentication

ZeroInvoice uses OAuth2 password flow — login is form-encoded (not JSON).

Register

POST /api/auth/register
Content-Type: application/json

{"email": "user@example.com", "password": "securepassword", "full_name": "Jane Dev"}

Login

curl -X POST https://zeroinvoice.ainative.studio/api/auth/login \
-F "username=user@example.com" \
-F "password=securepassword"

Returns a JWT token. Pass it as Authorization: Bearer <token> on subsequent requests.

Auth Endpoints

MethodPathDescription
POST/api/auth/registerRegister new user
POST/api/auth/loginLogin (form-encoded username + password)
POST/api/auth/logoutLogout
POST/api/auth/refreshRefresh JWT
GET/api/auth/meCurrent user profile
POST/api/auth/request-password-resetInitiate password reset
POST/api/auth/reset-passwordComplete password reset
POST/api/auth/forgot-passwordSend reset email
GET/api/auth/ainative/authorizeOAuth 2.0 redirect (AINative SSO)
GET/api/auth/ainative/callbackOAuth 2.0 callback

Two-Factor Authentication

MethodPathDescription
POST/api/auth/2fa/setupInitialize 2FA (returns QR code)
POST/api/auth/2fa/verifyVerify TOTP code
POST/api/auth/2fa/disableDisable 2FA
POST/api/auth/2fa/backup-codesGenerate backup codes
POST/api/auth/2fa/verify-backupVerify backup code

Clients

MethodPathDescription
GET/api/clients/List clients
POST/api/clients/Create client
GET/api/clients/{client_id}Get client
PUT/api/clients/{client_id}Update client
DELETE/api/clients/{client_id}Delete client
GET/api/clients/searchSemantic client search
GET/api/clients/{client_id}/payment-settingsGet payment settings
PATCH/api/clients/{client_id}/payment-settingsUpdate payment settings
GET/api/clients/{client_id}/analyticsClient revenue analytics
POST/api/clients/mergeMerge duplicate clients
POST/api/clients/merge/undoUndo client merge
GET/api/clients/{client_id}/merge-historyMerge history

Create Client:

{
"name": "Acme Corp",
"email": "billing@acme.com",
"phone": "+1-555-0100",
"address": "123 Main St, San Francisco, CA 94102",
"currency": "USD"
}

Invoices

MethodPathDescription
GET/api/invoices/List invoices
POST/api/invoices/Create invoice
GET/api/invoices/{invoice_id}Get invoice
PUT/api/invoices/{invoice_id}Update invoice
DELETE/api/invoices/{invoice_id}Delete invoice
PATCH/api/invoices/{invoice_id}/statusUpdate status
GET/api/invoices/searchSemantic invoice search
GET/api/invoices/client/{client_id}Invoices by client
GET/api/invoices/overdueList overdue invoices

Status values: draftsentpaid / overdue / cancelled

Create Invoice:

{
"client_id": "uuid",
"line_items": [
{"description": "API integration", "quantity": 10, "unit_price": 150.00}
],
"due_date": "2026-06-01",
"currency": "USD",
"notes": "Net 30"
}

Customers (Extended Client Data)

These endpoints extend the /api/clients/ resource with deeper customer management.

Contact Persons

MethodPathDescription
POST/api/customers/{id}/contactsAdd contact person
GET/api/customers/{id}/contactsList contacts
GET/api/customers/{id}/contacts/{contact_id}Get contact
PUT/api/customers/{id}/contacts/{contact_id}Update contact
DELETE/api/customers/{id}/contacts/{contact_id}Delete contact
PATCH/api/customers/{id}/contacts/{contact_id}/primarySet primary contact

Bank Accounts

MethodPathDescription
POST/api/customers/{id}/bank-accountsAdd bank account (encrypted)
GET/api/customers/{id}/bank-accountsList bank accounts
PATCH/api/customers/{id}/bank-accounts/{account_id}Update bank account
DELETE/api/customers/{id}/bank-accounts/{account_id}Delete bank account

Credits

MethodPathDescription
GET/api/customers/{id}/creditsList credits
POST/api/customers/{id}/creditsIssue credit
GET/api/customers/{id}/credits/{credit_id}Get credit
POST/api/customers/{id}/credits/{credit_id}/applyApply credit to invoice
POST/api/customers/{id}/credits/{credit_id}/refundRefund credit
GET/api/customers/{id}/credits/balance/totalTotal credit balance

Receivables & Portal

MethodPathDescription
GET/api/customers/{id}/receivablesReceivables dashboard
POST/api/customers/{id}/portal/inviteSend portal invitation
POST/api/customers/{id}/portal/resend-inviteResend invitation
PATCH/api/customers/{id}/portal/statusEnable/disable portal access
GET/api/customers/{id}/portal/access-logsPortal access log

Payments

MethodPathDescription
GET/api/payments/List payments
POST/api/payments/Record payment
GET/api/payments/{payment_id}Get payment
PUT/api/payments/{payment_id}Update payment
DELETE/api/payments/{payment_id}Delete payment
GET/api/payments/searchSearch payments
GET/api/payments/invoice/{invoice_id}Payments for invoice
GET/api/payments/client/{client_id}Payments by client
GET/api/payments/invoice/{invoice_id}/totalTotal paid on invoice
GET/api/payments/summaryPayment analytics

MethodPathDescription
GET/api/payment-links/List payment links
POST/api/payment-links/Create payment link
GET/api/payment-links/{id}Get payment link
GET/api/payment-links/{id}/statsPayment link stats
PUT/api/payment-links/{id}Update payment link
DELETE/api/payment-links/{id}Delete payment link

Estimates

MethodPathDescription
GET/api/estimates/List estimates
POST/api/estimates/Create estimate
GET/api/estimates/{id}Get estimate
PUT/api/estimates/{id}Update estimate
DELETE/api/estimates/{id}Delete estimate
PATCH/api/estimates/{id}/statusUpdate status
GET/api/estimates/client/{client_id}Estimates by client
GET/api/estimates/status/expiredExpired estimates
POST/api/estimates/convert-to-invoiceConvert estimate to invoice
GET/api/estimates/analytics/summaryEstimate analytics
POST/api/estimates/templatesCreate estimate template
GET/api/estimates/templatesList estimate templates
PATCH/api/estimates/bulk/statusBulk status update

Recurring Invoices

MethodPathDescription
GET/api/recurring-invoices/List recurring invoices
POST/api/recurring-invoices/Create recurring invoice
GET/api/recurring-invoices/{id}Get recurring invoice
PUT/api/recurring-invoices/{id}Update recurring invoice
DELETE/api/recurring-invoices/{id}Delete recurring invoice
PATCH/api/recurring-invoices/{id}/statusPause / resume
POST/api/recurring-invoices/{id}/generateGenerate next invoice now
POST/api/recurring-invoices/bulk-generateBulk generate due invoices
GET/api/recurring-invoices/due-for-generationList due recurring invoices
GET/api/recurring-invoices/{id}/previewPreview next invoice
GET/api/recurring-invoices/{id}/generated-invoicesHistory of generated invoices
GET/api/recurring-invoices/analytics/summaryRecurring invoice analytics
GET/api/recurring-invoices/analytics/revenue-forecastRevenue forecast
GET/api/recurring-invoices/client/{client_id}Recurring invoices by client

Frequency values: weekly, monthly, quarterly, annually


Time Tracking

MethodPathDescription
POST/api/time-tracking/timer/startStart timer
POST/api/time-tracking/timer/{id}/stopStop timer
POST/api/time-tracking/timer/{id}/pausePause timer
GET/api/time-tracking/timer/runningGet running timers
POST/api/time-tracking/entriesCreate time entry
GET/api/time-tracking/entriesList time entries
GET/api/time-tracking/entries/{id}Get time entry
PUT/api/time-tracking/entries/{id}Update time entry
DELETE/api/time-tracking/entries/{id}Delete time entry
PUT/api/time-tracking/entries/bulkBulk update entries
GET/api/time-tracking/reportTime report
POST/api/time-tracking/convert-to-invoiceConvert time entries to invoice
GET/api/time-tracking/analytics/by-clientTime analytics by client
GET/api/time-tracking/analytics/by-projectTime analytics by project
GET/api/time-tracking/suggestionsAI-powered entry suggestions

Expenses

MethodPathDescription
GET/api/expenses/List expenses
POST/api/expenses/Create expense
GET/api/expenses/{id}Get expense
PUT/api/expenses/{id}Update expense
DELETE/api/expenses/{id}Delete expense
GET/api/expenses/categoriesList expense categories
GET/api/expenses/vendorsList vendors
POST/api/expenses/{id}/receiptUpload receipt
POST/api/expenses/{id}/approveApprove expense
POST/api/expenses/{id}/rejectReject expense
POST/api/expenses/{id}/submitSubmit for approval
POST/api/expenses/{id}/mark-reimbursedMark reimbursed
GET/api/expenses/reports/summaryExpense summary report
GET/api/expenses/reports/by-categoryBreakdown by category
GET/api/expenses/reports/by-vendorBreakdown by vendor

Projects

MethodPathDescription
GET/api/projectsList projects
POST/api/projectsCreate project
GET/api/projects/{id}Get project
PUT/api/projects/{id}Update project
DELETE/api/projects/{id}Delete project
GET/api/projects/client/{client_id}Projects by client
GET/api/projects/summaryProject summary

Invoice Templates

MethodPathDescription
GET/api/invoice-templatesList templates
POST/api/invoice-templatesCreate template
GET/api/invoice-templates/defaultGet default template
GET/api/invoice-templates/{id}Get template
PUT/api/invoice-templates/{id}Update template
DELETE/api/invoice-templates/{id}Delete template
POST/api/invoice-templates/{id}/previewPreview rendered template
POST/api/invoice-templates/{id}/set-defaultSet as default
POST/api/invoice-templates/upload-logoUpload logo

MethodPathDescription
GET/api/dashboard/metricsKPIs: MRR, outstanding, paid count
POST/api/search/Global semantic search
POST/api/search/invoicesSearch invoices
POST/api/search/clientsSearch clients
POST/api/search/line-itemsSearch line items
GET/api/search/suggestionsSearch suggestions

Notifications

MethodPathDescription
GET/api/notificationsList notifications
GET/api/notifications/{id}Get notification
POST/api/notifications/sendSend notification
POST/api/notifications/{id}/retryRetry failed notification
GET/api/notifications/templatesList templates
POST/api/notifications/templatesCreate template
PUT/api/notifications/templates/{id}Update template
DELETE/api/notifications/templates/{id}Delete template
POST/api/notifications/templates/initializeInitialize default templates
WS/api/notifications/wsReal-time WebSocket feed

Event triggers:

MethodPathDescription
POST/api/notifications/trigger/invoice-createdFire invoice-created event
POST/api/notifications/trigger/invoice-sentFire invoice-sent event
POST/api/notifications/trigger/invoice-paidFire invoice-paid event
POST/api/notifications/trigger/payment-receivedFire payment-received event
POST/api/notifications/trigger/reminder-sentFire reminder-sent event

Reminders

MethodPathDescription
POST/api/reminders/check-and-sendRun reminder check cycle
POST/api/reminders/send-immediate/{invoice_id}Send reminder immediately
GET/api/reminders/overdue-summaryOverdue invoice summary
GET/api/reminders/scheduleGet reminder schedule config
PUT/api/reminders/scheduleUpdate reminder schedule
GET/api/reminders/statusReminder system status
POST/api/reminders/test-reminder/{invoice_id}Send test reminder
GET/api/reminders/historyReminder history
DELETE/api/reminders/{id}Delete reminder

Tasks (Scheduler)

MethodPathDescription
POST/api/tasks/start-schedulerStart background scheduler
POST/api/tasks/stop-schedulerStop scheduler
GET/api/tasks/scheduler-statusScheduler status
POST/api/tasks/trigger-reminder-checkTrigger reminder check now
GET/api/tasks/next-scheduled-runNext scheduled run time
GET/api/tasks/task-historyTask execution history

Reports & Export

MethodPathDescription
GET/api/reports/tax-summaryTax summary
GET/api/reports/tax-by-clientTax breakdown by client
GET/api/reports/tax-exportExport tax data
GET/api/reports/receivables-agingAging receivables report
GET/api/export/invoicesExport invoices (CSV/PDF)
GET/api/export/clientsExport clients
GET/api/export/paymentsExport payments

Tax Reports

MethodPathDescription
GET/api/tax-reportsList tax reports
POST/api/tax-reports/generateGenerate tax report
GET/api/tax-reports/{id}Get tax report
GET/api/tax-reports/{id}/downloadDownload tax report
GET/api/tax-reports/verify-sequenceVerify invoice sequence (gap analysis)
DELETE/api/tax-reports/{id}Delete tax report

Import

MethodPathDescription
POST/api/import/invoices/validateValidate invoice import file
POST/api/import/invoicesImport invoices
POST/api/import/clients/validateValidate client import file
POST/api/import/clientsImport clients

Audit

MethodPathDescription
GET/api/audit/logsFull audit log
GET/api/audit/searchSearch audit log
GET/api/audit/user/{user_id}/activityActivity by user
GET/api/audit/resource/{type}/{id}/historyResource change history
GET/api/audit/statisticsAudit statistics
GET/api/audit/my-activityCurrent user activity
GET/api/audit/compliance-reportCompliance report

Activity Timeline

MethodPathDescription
GET/api/activityActivity feed
GET/api/activity/ws-statsWebSocket connection stats
POST/api/activity/track/invoice-createdTrack invoice-created event
POST/api/activity/track/payment-receivedTrack payment-received event

Client Portal

MethodPathDescription
GET/api/client-portal/...Client-facing portal endpoints

QuickBooks Integration

MethodPathDescription
GET/api/integrations/quickbooks/statusQuickBooks sync status
POST/api/integrations/quickbooks/syncTrigger bidirectional sync
POST/api/integrations/quickbooks/webhookQuickBooks webhook handler

Public Endpoints (No Auth)

MethodPathDescription
GET/public/quotes/{token}View public quote/estimate
GET/api/healthHealth check