Inspiration

Teams live in Slack, but invoicing still means switching to Stripe — a founder billing after a DM, a freelancer invoicing from a project channel, finance checking if a client paid. SlackInvoice brings billing into the chat, inspired by the Slack Agent Builder Challenge and built with MCP (Model Context Protocol) so Stripe logic is a reusable service, not locked inside one bot.

What it does

DM or @mention SlackInvoice in plain English:

  • "show me all customers"
  • "invoice Acme Corp, ap@acme.com, for $1,500 — Q1 consulting" (company name, email, amount, and description for new customers)
  • "show open invoices" / "how much have we collected?"

It returns natural Slack replies with invoice IDs and payable Stripe links (test mode). New users get a welcome intro on first open; in-thread progress updates while the agent works.

How we built it

Slack bot (Bolt, Socket Mode) → LangChain + Groq (classify → parse → format) → MCP clientFastMCP server (8 Stripe tools) → Stripe test API.

Two processes on one Linux VM; bot uses MCP_URL=http://127.0.0.1:8000/mcp. No public inbound ports — Socket Mode connects outbound to Slack.

Challenges we ran into

  • Stripe invoices need line items attached to a specific draft invoice before finalize
  • NL parsing must map "3 hours at $150" → structured fields (Pydantic + prompts)
  • Cross-platform deps (pywin32 in a Windows pip freeze broke Linux installs)
  • Slack Bolt handler wiring — handlers had to register on the real app instance
  • Scope: focused on create, list, status, search, void, revenue — not a full billing suite

Accomplishments that we're proud of

  • Full create → finalize → payment link flow from a Slack message
  • Reusable MCP server testable without Slack (test_tools.py, test_nl.py)
  • Socket Mode demo on a single VM — simple for judges to run
  • Open source: github.com/zhuwensh/slack-invoice

Track: New Slack Agent · Tech: MCP server integration

What we learned

MCP cleanly separates UX from billing APIs. A classify → parse → format pipeline kept billing actions reliable while replies still feel conversational. Socket Mode is ideal for hackathon demos. Stripe’s invoicing API has non-obvious edges worth reading the docs for.

What's next for Slack Invoice

  • Let teams deploy their own SlackInvoice instance with their Stripe and LLM API keys — billing stays in their account while the agent stays in Slack.
  • Add support for PayPal and other billing platforms via additional MCP servers, so Slack remains the interface regardless of payment provider.

Built With

  • agent
  • ai-agent
  • api-integration
  • billing
  • langchain
  • llm
  • mcp
  • pydantic
  • python
  • slack
  • slack-api
  • slack-bolt
  • socket-mode
  • stripe
Share this project:

Updates