Platform
Chatbot Builder Bulk Messaging Team Inbox Mini CRM API & Webhooks AI Integration WhatsApp Flows
Industries
E-commerce & D2C Real Estate Education Healthcare Finance & BFSI Logistics Hospitality Retail
Integrations
Learn
Learning Hub Help & Docs Connect Guides Automation Codex Blog Message Templates
Pricing Start Free Trial →
HomeConnect › Connect Invoice Ninja to WhatsApp
Invoice Ninja Integration Guide · Invoicing / Open-Source

Connect Invoice Ninja to WhatsApp

Invoice Ninja is free, open-source invoicing popular with Indian freelancers and small businesses. The simplest auth model in this series: one static token, no OAuth, no expiry. Webhooks deliver the full payload so a follow-up GET is never needed.

Published 23 June 2026  ·  6 min read  ·  Invoicing / Open-Source
The simplest auth in this series: one static token, no expiry

Invoice Ninja uses a permanent X-Api-Token header. No OAuth flow, no refresh tokens, no 30-minute or 1-hour expiry. Generate the token once in Settings and use it indefinitely. This makes Invoice Ninja the quickest accounting integration to set up.

Webhooks include the full payload: no follow-up GET needed

Unlike Xero (which sends metadata only), Invoice Ninja webhooks include the complete entity: invoice number, amounts, due date, and client contact details including phone number. Map directly from the webhook payload without making a second API call.

Step 1: Generate your API token

1
In Invoice Ninja, go to Settings → Account Management → Integrations → API Tokens.
2
Click Add Token, give it a name, and click Save.
3
Copy the token value. Use it as the X-Api-Token header on every API call. The token does not expire.
API token header — the only auth you need
# All Invoice Ninja API calls use this header:
X-Api-Token: YOUR_API_TOKEN

# Example — test the connection:
GET https://invoicing.co/api/v1/ping
X-Api-Token: YOUR_API_TOKEN

# Response:
{"data": "pong"}

# For self-hosted, replace invoicing.co with your domain:
GET https://your-ninja.example.com/api/v1/ping
Official docs

Invoice Ninja API: api-docs.invoicing.co

Direction A: Invoice Ninja webhook fires a WhatsApp

Set up the webhook

1
In Invoice Ninja, go to Settings → Account Management → API Webhooks.
2
Click New Webhook. Set Event Type to the event you want (see table below).
3
Set Target URL to your WA.Expert automation webhook URL (from the Inbound Webhook trigger in WA.Expert).
4
Set REST Method to POST. Save. Invoice Ninja will now POST the full entity JSON to your URL when the event fires.
Event typeWhen it firesWhatsApp to send
create_invoiceInvoice is createdInvoice alert: 'Your invoice INV-0142 for Rs. 48,500 has been raised.'
sent_invoiceInvoice is marked as SentInvoice sent notification with payment link or due date.
paid_invoiceInvoice is fully paidPayment confirmation: 'Thanks! Invoice INV-0142 has been marked as paid.'
create_paymentA payment is recordedPayment received alert: amount, invoice reference, remaining balance.
create_clientNew client is createdInternal team alert: new client added.
create_quoteA quote is sentQuote notification to client with amount and expiry date.

Use paid_invoice (not create_payment) for customer-facing payment confirmations.

Invoice Ninja webhook payload — create_invoice (full data included)
POST to your WA.Expert webhook URL:

{
  "entity_type": "invoice",
  "event_id":    "create_invoice",
  "data": {
    "id":             "ABC123",
    "number":         "INV-0142",
    "status_id":      "2",
    "amount":         48500.00,
    "balance":        48500.00,
    "due_date":       "2026-07-07",
    "client": {
      "id":      "CLIENT456",
      "name":    "Priya Textiles",
      "phone":   "9820012345"
    }
  }
}

Map to WA.Expert variables:
  data.number          -> invoice_number
  data.amount          -> invoice_amount
  data.due_date        -> due_date
  data.client.name     -> party_name
  "+91" + data.client.phone -> wa_phone   <- PREPEND +91 if needed

Direction B: Query Invoice Ninja for payment reminders

Use WA.Expert's External API Request step to pull unpaid invoices from Invoice Ninja and send WhatsApp reminders to each client.

GET unpaid invoices — payment reminder automation
GET https://invoicing.co/api/v1/invoices
    ?client_status=unpaid
    &sort=due_date|asc
X-Api-Token: YOUR_API_TOKEN

Response:
{
  "data": [
    {
      "id":       "ABC123",
      "number":   "INV-0142",
      "balance":  48500.00,
      "due_date": "2026-07-07",
      "client": {
        "name":  "Priya Textiles",
        "phone": "9820012345"
      }
    }
  ]
}

For each invoice in data[]:
  wa_phone = "+91" + invoice.client.phone
  Send WhatsApp payment reminder.

Invoice Ninja vs the other accounting tools

Invoice NinjaZoho BooksXeroERPNextTally
AuthStatic token, no expiryOAuth, 1-hr tokenOAuth, 30-min tokenColon tokenXML + bridge
Webhook payloadFull data includedFull dataMetadata onlyFull dataN/A (polling)
CostFree (self-host)Paid plansPaid plansFree (self-host)Paid licence
Best forFreelancers, small bizIndian SMEsMid-marketTech-led businessesIndian SMEs/CAs

Invoice Ninja is the easiest to connect and the cheapest to run for simple invoicing needs.

Worked example: invoice creation to WhatsApp

Full flow — new Invoice Ninja invoice to client WhatsApp
1. You create invoice INV-0142 for Priya Textiles in Invoice Ninja.

2. Invoice Ninja fires create_invoice webhook to WA.Expert:
   {entity_type:'invoice', data:{number:'INV-0142',
    amount:48500, due_date:'2026-07-07',
    client:{name:'Priya Textiles', phone:'9820012345'}}}

3. WA.Expert maps:
   wa_phone  = '+91' + '9820012345' = '+919820012345'
   invoice_number = 'INV-0142'
   invoice_amount = '48,500'
   due_date  = '7 July 2026'

4. WA.Expert sends Priya Textiles WhatsApp:
   'Hi Priya Textiles! Invoice INV-0142 for Rs. 48,500
    has been raised. Payment due: 7 July 2026.
    Reply to this message for any queries.'

Troubleshooting

SymptomLikely causeFix
401 UnauthorizedWrong header name or tokenThe header must be X-Api-Token (not Authorization, not X-Ninja-Token). Regenerate the token from Settings if lost.
Webhook not firingWebhook not saved or wrong event typeCheck the webhook record in Invoice Ninja. Confirm the Event Type matches the action you are taking. Trigger a test by creating an invoice manually.
Phone number missing from payloadNot set on client recordOpen the client record in Invoice Ninja and enter the phone number. Prepend +91 for Indian mobile numbers in the automation mapping.
404 on API calls (self-hosted)Wrong base URLReplace invoicing.co with your own domain. Confirm the path is /api/v1/ (v5). Do not use the v4 path /api/v1/ from old documentation.
Duplicate WhatsApp on same invoiceWebhook fired multiple timesInvoice Ninja may retry failed webhooks. Add deduplication logic on the invoice ID in your WA.Expert automation.
Self-hosted webhook not reaching WA.ExpertHTTPS requiredInvoice Ninja only fires webhooks to HTTPS endpoints. WA.Expert webhook URLs are always HTTPS, so this should work automatically.

Common questions

Is Invoice Ninja free?
+
Free and open-source to self-host. invoicing.co has a free plan. No per-API-call cost. Popular with Indian freelancers as a Tally/Zoho alternative.
What is the token format?
+
X-Api-Token: YOUR_TOKEN. Static, no expiry. Generate in Settings > Account Management > API Tokens.
Does the webhook include full invoice data?
+
Yes. Unlike Xero (metadata-only), Invoice Ninja includes the full entity: amounts, dates, and client phone. No follow-up GET needed.
What webhook events are available?
+
create_invoice, sent_invoice, paid_invoice, create_payment, create_quote, create_client. Paid_invoice is best for customer-facing payment confirmations.
Does this work with self-hosted Invoice Ninja?
+
Yes. Replace invoicing.co with your domain. Token auth, webhooks, and REST API work identically.
Does this incur extra WA.Expert charges?
+
Each WhatsApp uses a message credit: Rs. 0.14 on Starter (utility). Invoice Ninja is free to self-host with no API costs.

Connect Zoho Books to WhatsApp

Zoho Books: cloud accounting, OAuth, India domain, invoice workflow webhooks.

Read guide

Connect Xero to WhatsApp

Xero: OAuth 2.0, signed webhooks, overdue invoice queries.

Read guide

Connect Tally to WhatsApp

TallyPrime: the XML-over-HTTP gateway guide for India's most-used accounting software.

Read guide

Connect Invoice Ninja to WhatsApp today

Free trial, no credit card. If you get stuck, we answer live on WhatsApp.

Start Free Trial → Book a Demo
1