API reference

Expenses and bills

Expense claims, vendors and vendor bills, and the input tax and MSMED reports.

List vendors

GET /expenses/vendors Expenses and bills: read

Example

curl https://app.msmepulse.com/api/v1/expenses/vendors \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

Add a vendor

POST /expenses/vendors Expenses and bills: read and write

Request body

FieldTypeRequiredNotes
namestringYes2–150 characters
email"" or string
phonestringup to 30 characters
countrystringdefault "IN"
statestringup to 2 characters
gstin"" or string
pan"" or string
udyamNumber"" or string
msmeCategory"none" | "micro" | "small" | "medium"default "none"
uenstringup to 20 characters
gstRegisteredbooleandefault false
agreedPaymentDaysinteger or null0 to 365
defaultCategorystringup to 30 characters
notesstringup to 1000 characters

Example

curl -X POST https://app.msmepulse.com/api/v1/expenses/vendors \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Nova Retail Pvt Ltd"}'

Answers 200 with the same data the MSMEPulse web app shows for it.

Update a vendor

PUT /expenses/vendors/{id} Expenses and bills: read and write

id

Request body

FieldTypeRequiredNotes
namestringYes2–150 characters
email"" or string
phonestringup to 30 characters
countrystringdefault "IN"
statestringup to 2 characters
gstin"" or string
pan"" or string
udyamNumber"" or string
msmeCategory"none" | "micro" | "small" | "medium"default "none"
uenstringup to 20 characters
gstRegisteredbooleandefault false
agreedPaymentDaysinteger or null0 to 365
defaultCategorystringup to 30 characters
notesstringup to 1000 characters

Example

curl -X PUT https://app.msmepulse.com/api/v1/expenses/vendors/{id} \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Nova Retail Pvt Ltd"}'

Answers 200 with the same data the MSMEPulse web app shows for it.

Archive a vendor

POST /expenses/vendors/{id}/archive Expenses and bills: read and write

id

Example

curl -X POST https://app.msmepulse.com/api/v1/expenses/vendors/{id}/archive \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

List expenses (view=company or mine)

GET /expenses Expenses and bills: read

Example

curl https://app.msmepulse.com/api/v1/expenses \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

Record an expense

POST /expenses Expenses and bills: read and write

Request body

FieldTypeRequiredNotes
datestringYesformat ^\d{4}-\d{2}-\d{2}$
categorystringYesat least 1 characters
descriptionstringYes2–300 characters
vendorIdstring or null
vendorNamestringup to 150 characters
vendorGstin"" or string
projectIdstring or null
billablebooleandefault false
markupBpsinteger0 to 10000 · default 0
currencystringYes
amountintegerYes1 to …
taxRateBpsinteger0 to 2800 · default 0
sgTaxCode"TX" | "IM" | "ZP" | "EP" | "OP" | "NR"default "OP"
taxOverrideinteger or null0 to …
paidBy"company" | "employee"default "company"
paymentMethodstringup to 30 characters
referencestringup to 80 characters

Example

curl -X POST https://app.msmepulse.com/api/v1/expenses \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-10-26","category":"category value","description":"Rollout support","currency":"INR","amount":100000}'

Answers 200 with the same data the MSMEPulse web app shows for it.

Get an expense

GET /expenses/item/{id} Expenses and bills: read

id

Example

curl https://app.msmepulse.com/api/v1/expenses/item/{id} \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

Update an expense

PUT /expenses/item/{id} Expenses and bills: read and write

id

Request body

FieldTypeRequiredNotes
datestringYesformat ^\d{4}-\d{2}-\d{2}$
categorystringYesat least 1 characters
descriptionstringYes2–300 characters
vendorIdstring or null
vendorNamestringup to 150 characters
vendorGstin"" or string
projectIdstring or null
billablebooleandefault false
markupBpsinteger0 to 10000 · default 0
currencystringYes
amountintegerYes1 to …
taxRateBpsinteger0 to 2800 · default 0
sgTaxCode"TX" | "IM" | "ZP" | "EP" | "OP" | "NR"default "OP"
taxOverrideinteger or null0 to …
paidBy"company" | "employee"default "company"
paymentMethodstringup to 30 characters
referencestringup to 80 characters

Example

curl -X PUT https://app.msmepulse.com/api/v1/expenses/item/{id} \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-10-26","category":"category value","description":"Rollout support","currency":"INR","amount":100000}'

Answers 200 with the same data the MSMEPulse web app shows for it.

Delete a draft expense

DELETE /expenses/item/{id} Expenses and bills: read and write

id

Example

curl -X DELETE https://app.msmepulse.com/api/v1/expenses/item/{id} \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

Submit a claim for approval

POST /expenses/item/{id}/submit Expenses and bills: read and write

id

Example

curl -X POST https://app.msmepulse.com/api/v1/expenses/item/{id}/submit \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

Attach a receipt

POST /expenses/item/{id}/receipts Expenses and bills: read and write

id

Request body

A file upload (multipart/form-data) in the field file.

Example

curl -X POST https://app.msmepulse.com/api/v1/expenses/item/{id}/receipts \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN" \
  -F "file=@receipt.pdf"

Answers 200 with the same data the MSMEPulse web app shows for it.

Download a receipt

GET /expenses/attachments/{aid} Expenses and bills: read

aid

Example

curl https://app.msmepulse.com/api/v1/expenses/attachments/{aid} \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

List vendor bills

GET /expenses/bills Expenses and bills: read

Example

curl https://app.msmepulse.com/api/v1/expenses/bills \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

Record a vendor bill

POST /expenses/bills Expenses and bills: read and write

Request body

FieldTypeRequiredNotes
vendorIdstringYesat least 1 characters
billNumberstringYes1–40 characters
billDatestringYesformat ^\d{4}-\d{2}-\d{2}$
acceptedOnstring or nullformat ^\d{4}-\d{2}-\d{2}$
dueDatestring or nullformat ^\d{4}-\d{2}-\d{2}$
currencystringYes
linesarray of objectYesat most 100 items
lines[].descriptionstringYes1–300 characters
lines[].categorystringat least 1 characters · default "other"
lines[].amountintegerYes0 to …
lines[].taxRateBpsinteger0 to 2800 · default 0
lines[].sgTaxCode"TX" | "IM" | "ZP" | "EP" | "OP" | "NR"default "TX"
lines[].projectIdstring or null
notesstringup to 1000 characters

Example

curl -X POST https://app.msmepulse.com/api/v1/expenses/bills \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"vendorId":"65f0c2a1b4e8d9f0a1b2c3d4","billNumber":"billNumber value","billDate":"2026-10-26","currency":"INR","lines":[{"description":"Rollout support","amount":100000}]}'

Answers 200 with the same data the MSMEPulse web app shows for it.

Get a vendor bill

GET /expenses/bills/{id} Expenses and bills: read

id

Example

curl https://app.msmepulse.com/api/v1/expenses/bills/{id} \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

Update a vendor bill

PUT /expenses/bills/{id} Expenses and bills: read and write

id

Request body

FieldTypeRequiredNotes
vendorIdstringYesat least 1 characters
billNumberstringYes1–40 characters
billDatestringYesformat ^\d{4}-\d{2}-\d{2}$
acceptedOnstring or nullformat ^\d{4}-\d{2}-\d{2}$
dueDatestring or nullformat ^\d{4}-\d{2}-\d{2}$
currencystringYes
linesarray of objectYesat most 100 items
lines[].descriptionstringYes1–300 characters
lines[].categorystringat least 1 characters · default "other"
lines[].amountintegerYes0 to …
lines[].taxRateBpsinteger0 to 2800 · default 0
lines[].sgTaxCode"TX" | "IM" | "ZP" | "EP" | "OP" | "NR"default "TX"
lines[].projectIdstring or null
notesstringup to 1000 characters

Example

curl -X PUT https://app.msmepulse.com/api/v1/expenses/bills/{id} \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"vendorId":"65f0c2a1b4e8d9f0a1b2c3d4","billNumber":"billNumber value","billDate":"2026-10-26","currency":"INR","lines":[{"description":"Rollout support","amount":100000}]}'

Answers 200 with the same data the MSMEPulse web app shows for it.

Void a vendor bill

POST /expenses/bills/{id}/void Expenses and bills: read and write

id

Request body

FieldTypeRequiredNotes
reasonstringYes3–300 characters

Example

curl -X POST https://app.msmepulse.com/api/v1/expenses/bills/{id}/void \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"reason":"Duplicate charge"}'

Answers 200 with the same data the MSMEPulse web app shows for it.

Record a payment to a vendor (with TDS in India)

POST /expenses/bills/{id}/payments Expenses and bills: read and write

id

Request body

FieldTypeRequiredNotes
datestringYesformat ^\d{4}-\d{2}-\d{2}$
amountintegerYes0 to …
tdsAmountinteger0 to … · default 0
tdsSectionstringup to 20 characters
method"bank_transfer" | "upi" | "paynow" | "cheque" | "cash" | "card" | "other"Yes
referencestringup to 80 characters

Example

curl -X POST https://app.msmepulse.com/api/v1/expenses/bills/{id}/payments \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-10-26","amount":100000,"method":"bank_transfer"}'

Answers 200 with the same data the MSMEPulse web app shows for it.

Remove a vendor payment

DELETE /expenses/bills/{id}/payments/{pid} Expenses and bills: read and write

id · pid

Example

curl -X DELETE https://app.msmepulse.com/api/v1/expenses/bills/{id}/payments/{pid} \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

Attach the bill document

POST /expenses/bills/{id}/receipts Expenses and bills: read and write

id

Request body

A file upload (multipart/form-data) in the field file.

Example

curl -X POST https://app.msmepulse.com/api/v1/expenses/bills/{id}/receipts \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN" \
  -F "file=@receipt.pdf"

Answers 200 with the same data the MSMEPulse web app shows for it.

Input tax (GST paid on purchases) for a period

GET /expenses/reports/input-tax Expenses and bills: read

Example

curl https://app.msmepulse.com/api/v1/expenses/reports/input-tax \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

MSMED Act: payments due to micro and small suppliers

GET /expenses/reports/msmed Expenses and bills: read

Example

curl https://app.msmepulse.com/api/v1/expenses/reports/msmed \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.

Spending by category and project

GET /expenses/reports/summary Expenses and bills: read

Example

curl https://app.msmepulse.com/api/v1/expenses/reports/summary \
  -H "Authorization: Bearer $MSMEPULSE_TOKEN"

Answers 200 with the same data the MSMEPulse web app shows for it.