Introducing the Billify API: Connect Billify to Anything
Today we're launching one of the most-requested features from Billify customers: a public REST API and outbound webhooks. If you've ever wanted Billify data to flow into your CRM, your point-of-sale, your data warehouse, or a no-code automation tool like Zapier, n8n, or Make — you can now build that connection in minutes.
This unlocks a whole category of workflows that used to require manual data entry, spreadsheets, or "wait until the next quarterly export." Now your invoicing, expenses, customers, and payments can talk to anything that speaks HTTP.
What's included
The launch ships two complementary pieces.
1. REST API
Token-authenticated endpoints with full CRUD support for the resources you work with every day:
- Customers (Donors for NGO, Members for Cooperatives)
- Invoices (Donation Receipts for NGO, Bills for Cooperatives)
- Products and line items
- Expenses, including fund_id for NGO restricted-fund accounting
- Payments
- Projects with time tracking
Every endpoint returns clean JSON. List endpoints support filtering, search, and pagination. Standard HTTP status codes (200, 201, 422, 429, 403) make error handling straightforward.
2. Outbound Webhooks
Don't poll — subscribe. The moment something happens in Billify, we POST a signed JSON payload to your URL. Eight events are available at launch:
- invoice.created, invoice.updated, invoice.paid, invoice.deleted
- payment.created
- expense.created, expense.updated
- customer.created
Each delivery is signed with HMAC-SHA256 so your backend can verify it actually came from Billify. Failed deliveries automatically retry up to five times with exponential backoff (30 seconds, 2 minutes, 10 minutes, 30 minutes, 1 hour) — and every attempt is logged in the dashboard so you can debug without guesswork.
What can you actually build?
A few patterns we've seen customers excited about:
- CRM sync - Subscribe to invoice.paid and update the matching opportunity in HubSpot, Salesforce, or your CRM the moment a customer pays.
- Point-of-sale to invoice - Push transactions from your POS into Billify as invoices and payments. No double entry, no end-of-day reconciliation.
- Slack notifications - Wire expense.created to a Slack channel for instant approval workflows, or invoice.paid for celebration emojis.
- Data warehouse - Stream every invoice, expense, and payment into BigQuery or Snowflake for unified reporting alongside the rest of your business data.
- Mobile app - Build a native iOS or Android app on top of your Billify data without touching the web app.
- No-code automation - Plug into Zapier, n8n, or Make. Standard webhooks plus REST mean any automation platform can consume Billify events and call its endpoints — no custom plugin needed.
How to get started
If you're on the Pro or Premium plan, three steps:
- Click your avatar in the top-right of the dashboard, then API Tokens.
- Give your token a memorable name (e.g. "Zapier production"), click Generate Token, and copy it. The token is shown once - store it somewhere safe.
- Make your first request. Every authenticated call needs three headers: Authorization with your bearer token, X-Business-Id pointing at the business you want to operate on, and Accept set to application/json.
Don't memorize business IDs — hit GET /api/user first and the response lists every business you can access along with its id, currency, timezone, and segment.
Then call any v1 resource. For example, to list invoices that have been sent but not yet paid, GET /api/v1/invoices?status=sent with your three headers.
Webhooks setup
If you'd rather react to events than poll for changes:
- Open Account menu → Webhooks.
- Click Add Endpoint and paste the URL on your side that should receive notifications.
- Tick the events you care about (or use * for everything).
- Copy the signing secret shown once and store it server-side.
- On your endpoint, verify the X-Billify-Signature header before trusting any payload.
The Webhooks page also shows recent deliveries with their response status, so debugging is just a refresh away.
Plan availability and rate limits
API access is available on the Pro and Premium plans. The Free plan is limited to in-app use — if you're on Free and want to integrate, you can upgrade in a couple of clicks (and the 30-day Pro trial means you can prototype before committing).
Rate limits are tiered and bucketed per token, so different integrations don't starve each other:
- Pro: 60 requests per minute, per token
- Premium: 300 requests per minute, per token
- Login (POST /api/login): 5 attempts per minute per IP — strict by design, to deter brute-force.
Hit a limit and you'll get a standard 429 Too Many Requests with a Retry-After header.
NGO and Cooperative coverage
The same endpoints serve all three Billify segments — SME, NGO, and Cooperative. The data shapes are identical; only the labels differ in the UI ("Invoice" / "Donation Receipt" / "Bill"). NGO customers also get fund_id support on expenses, so you can track restricted-fund accounting through the API just like you would in the dashboard.
Security and reliability
A few things we built in from day one because we know integrations need them:
- Bearer-token authentication via Laravel Sanctum — industry-standard, revocable from the dashboard at any time.
- Per-business authorization — every request validates that your token has access to the X-Business-Id you target. You can't accidentally read or write data from a business you don't belong to.
- HMAC-signed webhooks — never trust a webhook payload without verifying the signature.
- Endpoint auto-disable — if a webhook URL fails 20 times in a row, we pause it automatically so we're not hammering a broken receiver.
- Full audit trail — token usage and webhook deliveries are both logged and visible in the dashboard.
Where to go from here
The full reference — every endpoint, every response field, signature verification snippets in Node, PHP, and Python — lives in the API Documentation page in your dashboard sidebar (or under Help Center → API & Integrations for a step-by-step walkthrough).
If you build something cool, we'd love to hear about it. And if there's a specific event, endpoint, or integration you'd like us to add next, drop us a line — this launch is the foundation, not the destination.
---
Quick links: Generate an API token at /settings/api-tokens · Set up webhooks at /settings/webhooks · Full API reference at /api-docs · Learn more at /solutions/api.