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
- In EaseDesk, open Settings → Webhooks and make a webhook for opportunities, quotations or invoices.
- Copy its URL and signing secret. They are shown once; renew the webhook if you lose them.
- 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.
- 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
-
RazorpayPayment links, recorded when paid
-
UPIQR code on every invoice
-
e-Invoice portalUpload file out, IRN and QR back
-
e-Way Bill portalUpload file from the invoice
-
Your emailSend from your own address
-
ExcelImport and export
-
Your websiteEnquiries and orders by webhook
-
TallyImport (coming soon)
Coming next
- API keys you can limit to parts of EaseDesk Coming soon
- More outgoing events, such as stock changed Coming soon
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.