Developers

Send enquiries and orders into EaseDesk from any system.

Your website, online store or form tool can create opportunities, draft quotations and draft invoices in EaseDesk with a signed webhook. Nothing is issued without your team seeing it first.

What a webhook can create

Opportunity

An enquiry from your website or a landing page becomes an opportunity, with the enquirer added to your Directory as a lead if they are new.

Quotation (draft)

A cart or a request for a quote becomes a draft quotation for your team to check and send.

Tax invoice (draft)

An order from your online store becomes a draft invoice, ready to review and issue.

Set it up

  1. In EaseDesk, open Settings → Webhooks and make a webhook for opportunities, quotations or invoices.
  2. Copy its URL and signing secret. They are shown once; renew the webhook if you lose them.
  3. From your system, POST the JSON with the two headers below. The body uses the same fields as the EaseDesk screen, and is checked the same way.
  4. Every request appears in the webhook’s log in EaseDesk, with the record it made or the reason it was refused.

The rules

Method
POST, JSON body, up to 256 KB
Address
The URL shown once in Settings → Webhooks (it contains its own token)
Signature
X-EaseDesk-Signature: sha256=<hex HMAC-SHA256 of "<timestamp>.<raw body>">
Timestamp
X-EaseDesk-Timestamp: <Unix seconds>, within 5 minutes of the server clock
Rate limit
60 requests a minute for each webhook
Success
201 with { "entityType", "id" } of the record made
Errors
Problem JSON with a title and, for invalid fields, the field errors

Example: an enquiry from your website

{
  "newProfile": {
    "name": "Mehta Hardware",
    "contactName": "Rakesh Mehta",
    "mobile": "9820012345",
    "email": "rakesh@example.com",
    "city": "Pune",
    "stateCode": "27"
  },
  "title": "Website enquiry: 200 LED panels",
  "source": "website"
}

Signing and sending it (Node.js)

import { createHmac } from 'node:crypto';

const body = JSON.stringify(lead);
const timestamp = Math.floor(Date.now() / 1000).toString();
const signature = createHmac('sha256', process.env.EASEDESK_WEBHOOK_SECRET)
  .update(`${timestamp}.${body}`)
  .digest('hex');

await fetch(process.env.EASEDESK_WEBHOOK_URL, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-EaseDesk-Timestamp': timestamp,
    'X-EaseDesk-Signature': `sha256=${signature}`,
  },
  body,
});

MCP server: connect an AI assistant

EaseDesk speaks MCP (Model Context Protocol), so Claude, ChatGPT, Cursor and other assistants that support it can read your organisation’s data and, where you allow, prepare and post entries. Each tool runs the same checks as the EaseDesk screens. What it does for your business.

Address
https://www.easedesk.com/api/mcp (MCP over Streamable HTTP; each request is answered directly as JSON)
Sign in
A token (edm_…) made under Settings → Organisation → AI connections, sent as "Authorization: Bearer", or OAuth 2.1 with PKCE and dynamic client registration ("Connect" in the assistant)
Levels
Read (more than 180 tools), Prepare (drafts, customers, items, tasks), Post (issue, receipts, payments, vouchers, stock) and Send (emails, links, e-invoices); a connection gets its level and those below
Scope
One organisation, the permissions of the member who made the connection, and only the parts of the business ticked for it
Limits
60 calls a minute and 5,000 a day for a connection; the organisation sets its own total a day
Safety
Tools that cancel ask twice; a requestId makes a retry return the first result; every change is in the audit trail under the connection’s name
Never a tool
Team and roles, tokens and webhooks, the EaseDesk plan, closing the organisation, year close, deleting issued records, settings (except setting up a new business)

With a token (Cursor and other assistants)

{
  "mcpServers": {
    "easedesk": {
      "url": "https://www.easedesk.com/api/mcp",
      "headers": { "Authorization": "Bearer edm_your_token" }
    }
  }
}

Claude Code

claude mcp add --transport http easedesk https://www.easedesk.com/api/mcp --header "Authorization: Bearer edm_your_token"

Signup by AI assistants and agents

An assistant helping someone choose business software can start their EaseDesk free trial, set the business up and connect itself, all in the conversation. The person stays in charge: nothing is made until they give the assistant the 6-digit code EaseDesk emails them, no password passes through the assistant, and any connection it gets can read and prepare drafts only, until the person removes it.

MCP, no sign-in
https://www.easedesk.com/api/mcp/signup: about_easedesk, start_free_trial, finish_free_trial, resend_signup_code
HTTP
POST https://www.easedesk.com/api/v1/auth/agent-signup with name, email, organisation and agent (the assistant’s own name); the person is emailed a code; send the same body with "code"
Set-up
"business": legal name, constitution, GSTIN (or null and the state) and address, as the person gives them; the business is ready to invoice at first sign-in
Connection
"connect": true gives the assistant a Prepare connection (read and drafts, 30 days) to https://www.easedesk.com/api/mcp; get_setup_status and set_up_business work there
Signing in
The person signs in with a code sent to their email, or Google; they can set a password later
POST https://www.easedesk.com/api/v1/auth/agent-signup
{ "name": "Meena Iyer", "email": "meena@example.com", "organisation": "Iyer Traders",
  "agent": "Claude" }
→ 202: a code was emailed to meena@example.com

POST https://www.easedesk.com/api/v1/auth/agent-signup
{ ...the same, "code": "123456", "connect": true,
  "business": { "legalName": "Iyer Traders Private Limited", "constitution": "private_limited",
                "gstin": "27AAPFU0939F1ZV", "addressLine1": "12 MG Road", "city": "Pune",
                "pincode": "411001" } }
→ 201: the trial, setUp: true, the connection's token, and what to tell the person next

Also available

API keys
For your own programs: a key acts as the member who made it, in your organisation only. Make one under Settings → Organisation → Webhooks & API; the API is described at /api/docs.
Outgoing webhooks
A signed POST to your address when an invoice is issued or cancelled, money is received or a vendor is paid.

What EaseDesk connects to

  • Razorpay
    Payment links, recorded when paid
  • UPI
    QR code on every invoice
  • e-Invoice portal
    Upload file out, IRN and QR back
  • e-Way Bill portal
    Upload file from the invoice
  • Your email
    Send from your own address
  • Excel
    Import and export
  • Your website
    Enquiries and orders by webhook
  • Tally
    Import (coming soon)

Coming next

Building something with EaseDesk? Tell us what you need: support@easedesk.com.

Start free today. Then ₹490 a month.

Try every feature free for 14 days with up to 5 users. No card, no payment and nothing to install; import your customers and items from Excel and send your first invoice today.

  • ₹0 to start: 14-day free trial
  • ₹490 a month for the first user, billed yearly
  • ₹290 a month for each additional user
  • ₹0 for your CA’s login

Prices before GST. Nothing is charged unless you choose to subscribe.