How do you collect receipts and employee expense reports in chat?
An employee sends a receipt to the bot, an accountant approves the expense with a button, and at month end the bot compiles the expense reports and sends them for signature.
Bot
Megan paid for a taxi to a client and messages the Expenses bot. Click "Add expense," check the form and submit it.
Why handle receipts, expense reports and reimbursements in your team chat
Receipts usually reach the accountant as photos in personal messaging apps and email, employees fill out an expense report form from memory at the end of the month, and everyone asks about their reimbursement in a DM. In the Team expenses chat, every receipt is a card with an amount and a date, and the bot compiles the expense report on its own.
- Receipts don’t get lost. The receipt photo is attached to the expense card in the accounting chat instead of sitting in a personal messaging app or an inbox. Six months later, you can find it by expense number, last name or amount.
- No forms for employees. They fill out a short form on the day of purchase, and the bot compiles the expense report from the approved expenses. Nobody has to remember at month’s end where they went and how much they paid.
- Accountants see expenses the day they happen. The card arrives right away, not as a stack of receipts on the 30th. Questions about a receipt go in the thread while the employee still remembers what they paid for and where.
- Reimbursement status in a direct message. The bot tells the employee when the expense is approved and which paycheck the reimbursement comes with. No need to ask the accountant in a DM.
- Managers see the whole picture. One chat shows who spent how much on taxis, client lunches and office supplies this month, without exports from the accounting system.
- Grows with you. Today it’s a receipt and a report. Tomorrow it’s category limits, automatic receipt checks by QR code through the ФНС receipt verification service and a payment register exported to 1С.
How to set it up
30 minutes in Pachca plus a handler: n8n with no code, or a couple of days of a developer's time. You'll need administrator rights in Pachca.
In Pachca
- 1
Create a Team expenses chat and an accounting tag
+ next to search Chat. Add your accountant and team leads. Then go to Members table view the tag icon: create an "Accounting" tag. An @Accounting mention in an expense thread reaches everyone who approves receipts. - 2
Create the Expenses bot
Automations Integrations Webhook +. Make it a bot for multiple chats and turn on the Public toggle, so employees can find the bot in search and message it directly. Copy the token from the API tab: your handler will need it. - 3
Add the bot to the chat
Chat settings Add members the Integrations tab Expenses. Only an administrator or the chat's creator can do this. - 4
Turn on the outgoing webhook
Bot settings the Outgoing webhook tab. Paste your handler's address from option B or C below into the Webhook URL field, then select the New messages event with the /start command and Button clicks. Send the bot /start: it should reply with an Add expense button.
Expense handler
The receipt form, the card with buttons and the expense report compilation all come from a handler that receives the bot's events. Pick one of three options, depending on your setup.
- A
No handler yet: receipts posted from a template
Pin a template in the chat and ask everyone to send their receipt on the day of purchase:
The accountant reacts with ✅ when a receipt is approved, asks questions in the thread and compiles the expense reports by hand once a month. You don't get the form and buttons from the demo, but setup takes five minutes.Receipt: photo What was paid for: taxi to the client, North Wind meeting Amount: 1,240 ₽ Date: 24.09.2026 - B
No code with n8n
Start from the time-off bot workflow: it already has /start, a button, a form and a card with buttons. Swap the fields for "What was paid for," "Amount," "Date," "Category" and "Receipt," the buttons for Approve and Clarify, and write approved expenses to a table. A second workflow on a Schedule Trigger runs on the last business day of the month, groups approved expenses by employee, fills in a docx report template and drops the files in the thread. Paste the first workflow's Production URL into step 4. Installing n8n and the Pachca node is covered in the n8n article in our Help Center. - C
Your own code: form, reports, КЭДО and 1С
Give this skill to Claude, ChatGPT or Cursor. It covers the bot setup, a form with a receipt upload, a card with Approve and Clarify buttons, a direct message to the employee, scheduled report compilation from a docx template, sending to КЭДО, a payment register for 1С, receipt checks by QR code and where to host the handler. The skill itself is in Russian.
With your team
- 5
Agree on a receipt deadline
Receipts go in on the day of purchase. The accountant approves or asks a question the same day, with questions going in the thread via an @mention. Anything not approved by the 25th goes into next month's report. Deadlines and receipt requirements come from your company's accounting policy, and the bot doesn't replace it.
The bot brings files and statuses, and expense reports get signed in КЭДО: the signature stays there, and Pachca only shows the status. Check the report template and category limits with your accountant before launch. Our Help Center explains how forms, bot buttons and outgoing webhooks work.
Troubleshooting
- The bot doesn't reply to /start: New messages isn't selected in the outgoing webhook, or the handler is off. n8n needs the Production URL, not the Test URL.
- The button doesn't open the form, or Approve doesn't work: Button clicks isn't selected in the outgoing webhook.
- The receipt isn't attached to the card: the handler passed only the file name instead of uploading the file through the Pachca files API. The upload flow is in the files section on dev.pachca.com.
