ERPNext
INTEGRATIONS · EXPERTINI ATS

ERPNext

Connect your own ERPNext or Frappe instance and push new hires to HR and draft Sales Invoices — live today with your own API token pair.

2 min read · Updated July 2026 · Expertini Editorial

The ERPNext ATS integration is live in Expertini ATS today. Teams running ERPNext — or any Frappe-based instance — connect with their own API key and secret pair and get two working pushes: accepted hires flow into ERPNext HR as employee records, and client placements create draft Sales Invoices in accounts. It is the open-source ERP answer to the placement-to-invoice and hired-to-onboarded gaps.

ERPNext users tend to run their own infrastructure precisely because they want control, and the integration respects that: your instance URL, your token pair, your data — no middleware in between. The commission figure on each draft invoice comes from Expertini's native Client CRM, which tracks placements and fees as part of the standard subscription. Sign up and connect from the in-app hub.

Watch the 30-second overview — no sign-up needed

01Two live pushes: HR and Sales Invoices

For in-house hiring, the HR push means a new starter exists in ERPNext the day the offer is accepted — no waiting for someone to re-type the record. For agencies, the invoicing push turns a recorded placement into a draft Sales Invoice carrying the tracked commission, ready for your accounts team to review and submit.

02Built for self-hosted, open-source stacks

Authentication uses ERPNext's standard API key and API secret pair, generated for a user in your own instance, so access is governed by the permissions you grant. Drafts are never auto-submitted: tax templates, naming series, and approval flows stay under your ERPNext configuration.

03Two-way: customers, employees, and the candidate database

Reads are as useful as writes here. Import brings your ERPNext Customers into Expertini's Client CRM as prospect clients — matched by name, safe to re-run — and export creates your ATS clients as Customer records, deduplicated against your instance, so the ERP and the recruiting desk stop drifting apart. "Import your people" reads the Employee doctype into the ATS candidate database, where the same CV parsing and resume scoring that grade applicants apply to your own workforce — internal mobility with actual tooling behind it. Everything is button-triggered, per-run reported, activity-logged, and scoped by the ERPNext permissions of the token pair you issued.

04Everything upstream ships natively

The data being pushed — candidates, offers, placements, commissions — is produced by workflow that ships on every plan: offer PDFs, audit reports, the hiring pipeline, and Client CRM. The ERPNext connector itself is part of the Business plan, with no per-seat fees or usage surcharges on top.

Engineering notes

Platform architecture & operations

A1Connection architecture

This is a direct connection to a system you host or key yourself: the form takes your instance URL and credential, verifies them with a live call before anything is saved, and stores secrets encrypted at rest. Connection pages show presence ("connected", "saved ✓"), never the values themselves.

Because the credential is yours, rotation is in your hands: replace the key in your own system, paste the new one here, and the live verification confirms it before the old one is overwritten. Disconnecting removes the stored credential immediately.

A2Write semantics and data flow

Every data movement is an explicit action with a logged result. Writes happen on your click — or automatically only where you enabled a rule (auto-push on hire is off by default, per-provider). Reads — imports of people, accounts, or files — run when you press Import, deduplicate against what you already have (clients by name, people by email), skip rather than overwrite, and report created-versus-skipped honestly, which is why re-running any import is safe by design.

Each action writes a row to the app-activity journal (ats_app_activity): what ran, when, for which record, and the outcome — including the vendor's own error text verbatim when something fails. Usage reporting inside the ATS aggregates that same journal, so integration reporting and integration reality cannot diverge.

Anything that leaves the request path — notification fan-out, webhook delivery, activity journalling, mail — runs in fire-and-forget background threads. A slow external endpoint can never make the interface hang, and a failed side effect is logged rather than silently retried into inconsistency.

A3Operational considerations

Connections are organisation-level and gated to owner and admin roles; recruiters use the features a connection powers but cannot connect, disconnect, or reconfigure. Disconnecting removes stored credentials immediately and stops the dependent features visibly, not silently. Data already imported stays yours and editable.

Imported people arrive marked as imported with conservative privacy defaults — no consent is assumed for anyone who never filled in your application form, and retention defaults apply. Everything written is yours to take: CSV exports and the Data Export app cover the same stores the product itself reads. The exit is as open as the entrance — by design, not concession.

A4Placement in the integration topology

This integration is live in the registry today. One connection per provider unlocks every feature it powers, and the topology grid below shows the neighbouring connectors in the same capability area — statuses come from the same registry that drives the in-app hub, so this page can never claim more than the product does. For anything the catalogue does not cover, Webhooks and Zapier are the generic, documented escape hatch.

Dependency map

Connection typedirect — your instance URL + credential, verified live before save
Secrets at restencrypted; UI shows presence flags, never values
Action journalats_app_activity — one row per action, vendor errors verbatim
Auto-push rulesoff by default, per-provider, every run logged
Registry statuslive

Interface blueprint

Structural schematic of the surface — panels, hierarchy, and interaction affordances. A contract, not a screenshot.
Connection card
● connected — presence flag
scopes: minimum required disconnect
Actions
push — explicit clickimport — deduplicated
Activity journal
Fig. 1 — ERPNext: structural interface schematic. Panels and states are the contract; data shown is placeholder.

Interaction flow — states, validations, feedback

Every state below is enforced server-side; the interface reports it, it doesn't decide it.
Enter URL + credentialyour own instance, your own key
Live verificationa real call must succeed before anything is stored
Encrypted storesecrets at rest; presence-flag display
Explicit actionspush / import / invoice on your click
Journalper-action row, vendor errors verbatim
Verification fails → the vendor's own response is shown; nothing savedCredential rotated → paste the new one; verified before overwriteDisconnect → credential removed immediately
Fig. 2 — interaction flow: navy = states, gold = server-enforced gates, green = confirmed outcomes; tags list the edge cases and their feedback.

Neighbouring connectors — Enterprise Resource Planning

Odoolive ERPNextthis page SAP S/4HANAlive
Statuses come from the live registry — browse the full catalogue →

Frequently asked questions

Is the ERPNext integration live?
Yes. Connect your instance from the in-app hub after signing in, using an API key and secret generated in your ERPNext or Frappe instance.
Does it work with self-hosted Frappe instances?
Yes — the connection targets your instance URL directly with your token pair, so self-hosted and managed Frappe deployments both work.
Are Sales Invoices submitted automatically?
No. Invoices are created as drafts so your accounts team reviews and submits them under your normal ERPNext workflow.
What permissions does the API user need?
Access is governed entirely by the ERPNext user whose token pair you supply — grant it the HR and invoicing permissions you are comfortable with.

At a glance

  • Live today — your instance, your API token pair
  • Push accepted hires into ERPNext HR
  • Import Customers as clients · export clients back — deduplicated
  • Employee doctype imports into the scoreable candidate database
  • Draft Sales Invoices for client placements
  • Works with ERPNext and Frappe-based instances
  • Drafts only — your approval workflow is untouched
  • No middleware, no integration surcharge

See erpnext on your own hiring.

Bring a real job description to a 30-minute demo — free trial included.

Book a demo
Expertini AI
Online now
Hi! I'm Expertini's AI Product Expert. Ask me anything about our solutions, get guidance on any of our Hiring Tools, or just tell me what you're trying to do — I'll point you in the right direction. For account-specific issues, email support@expertini.com.