How much does a custom Moodle plugin cost? Our prices by plugin type
Real prices for custom Moodle plugins, by type: blocks, reports, enrolment, SSO, themes, question types, activity modules. What pushes a quote up, what you get for it, and how to spend less.
Most Moodle developers don’t publish prices. You send a description, wait a few days, and get a number with no way to tell if it’s fair. We think that wastes everyone’s time, so here are ours.
These are the prices our quote tool gives today for real scopes. They come from the same code that prices every quote on this site, not from a marketing table. Every quote is still built from your actual scope, so treat this as a guide to what to expect, not a fixed menu.
First: check if you need a custom plugin at all
Before paying anyone, search the Moodle Marketplace. It lists about 2,800 plugins, and a lot of “custom” requests are already solved there. If a plugin does 80% of what you want, paying to extend it is often cheaper than starting from nothing.
Custom work makes sense when nothing fits, when the plugin you found is abandoned and breaks on your Moodle version, or when the work touches your own systems: your student records, your payment provider, your single sign-on.
Prices by plugin type
Three columns, because every quote we send has three options:
- From: the Essentials option for a small scope. Only the features you must have, with unit tests and continuous integration.
- Typical: the Complete option for a plugin with two to four features. Full test suite and docs included. This is the one most clients pick.
- Larger builds: more features, an outside system, a big institution where a failure is public, and a Marketplace submission pack.
| Plugin type | From | Typical | Larger builds | Typical delivery |
|---|---|---|---|---|
| Text filter, availability condition | $149 | $149 to $160 | about $950 | 2 to 3 days |
| Block, editor (TinyMCE) button | $149 | $210 | about $1,000 | 3 days |
| Local plugin (custom pages, rules, automation) | $180 | $260 | about $1,100 | 4 days |
| Report | $200 | $290 | about $1,150 | 4 days |
| Web service or outside integration | $280 | $390 | about $1,150 | 5 days |
| Payment gateway | $300 | $420 | about $1,200 | 5 days |
| Enrolment method | $320 | $440 | about $1,200 | 5 days |
| AI provider or AI placement | $320 | $420 | about $1,200 | 5 days |
| Authentication (SSO, OAuth) | $360 | $490 | about $1,300 | 6 days |
| Course format | $320 | $440 | about $1,400 | 5 days |
| Theme (based on Boost) | $340 | $470 | about $1,400 | 5 days |
| Question type | $460 | $620 | about $1,650 | 7 days |
| Activity module | $600 | $860 | about $2,000 | 9 days |
| Several plugins working together | $1,160 | $1,590 | about $3,000 | 15 days |
Delivery is counted in business days from the start of work.
A few things the table shows that surprise people:
- Small plugins are cheap. A filter, a block or an availability rule is a well known shape with well known tests. There is no reason to pay $1,000 for one.
- Activity modules cost the most. A real activity has its own tables, grading, completion, backup and restore, and a privacy provider. The Moodle Marketplace won’t approve an activity without backup and restore. Skipping those parts is how cheap activity modules end up costing more later.
- Integrations cost more than features. Every outside system (a student records system, a payment provider, an identity provider) brings its own documentation, test accounts and surprises.
What pushes a quote up
The table assumes a clear scope. These are the things that move a real quote above it:
- More features, or bigger ones. A report with one table is small. A report with filters, charts, scheduled exports and per-role views is four features.
- Outside systems. Each one adds work, and an undocumented or flaky API adds more.
- Who uses it and what happens if it fails. A plugin for one department is not the same job as one that runs enrolment for 40,000 students. The bigger the cost of a failure, the more testing and care it gets.
- Finishing someone else’s code. If you already tried a freelancer or an AI tool and have half a plugin, we review it, fix it and finish it. That’s a line on the quote, and usually cheaper than starting over.
- The Moodle app. Making a plugin work in the Moodle mobile app is separate work.
- Moodle older than 4.1. Old versions need their own code paths and test runs. If you’re on one, read what breaks when you upgrade first: upgrading may be the better spend.
- Moving your existing data in.
- A hard deadline. Rush delivery is available and costs more.
Most quotes land inside the table. Work with vague or changing requirements, or a lot of risk, lands above it. Above $25,000 we stop quoting online and book a call.
What you get for the price
Every option includes:
- A plugin that installs from a zip on your Moodle version and passes the same automated checks the Moodle Marketplace runs.
- Unit tests and continuous integration on every supported Moodle and PHP version.
- The source code. It’s yours, under the GPL like Moodle itself.
- Free fixes for bugs found in the first 30 days after handover.
The Complete option adds the full test suite (Behat, end-to-end, coverage, mutation and security tests), admin, user and developer docs, and a demo video. Testing Moodle plugins explains why we test this much.
Complete + care adds the first three months of the care plan: Moodle upgrades, bug fixes and four hours of changes a month. After that, care is $149 a month.
If you want to see what that looks like on a real plugin, Autoflow is our open source workflow plugin. The code, tests and CI reports are all public.
How payment works
- Under $1,500: paid in full when you accept the quote.
- $1,500 and above: half to start, half before we hand over the final code.
- You approve a written scope before any work starts. Changes after that are quoted separately, so the price you accepted doesn’t move.
How to spend less
- Pick Essentials for an internal tool. If only your own staff use it, the full test suite and docs matter less.
- Split the work. Ship the must-have features first and add the rest when you know you need them.
- Write down what you want. A one page description with an example (“when a student does X, Y should happen”) is the cheapest way to cut a quote. Vague scopes get priced for the risk.
- Upgrade Moodle first if you’re far behind. Building for an old version costs more now and again at the next upgrade. The Moodle 5.3 and 4.5 requirements post lists what you need.
Get your own price
Describe your plugin on the quote page and you get the three options with prices and a delivery date in a few minutes. No call needed, and no commitment until you pay. If you’d rather talk to a developer first, the Moodle developer page explains how we work.
Need a Moodle plugin built or rescued?
Tell the scoping assistant what you need. You get a fixed price and a timeline in a few minutes, and an engineer reviews it within one business day.
Get a fixed quote