- Home
- Apps
- SaaS Tools
- Stripe POS Terminal for ERPNext
Illustrative previewA build-to-order Frappe app that connects Stripe Terminal card readers (BBPOS WisePOS E,
M2) and Tap to Pay to ERPNext POS, so in-person and online card payments settle to one unified ledger.
ECOSIRE scopes, builds, installs, and supports it — no marketplace download.
What is Stripe POS Terminal for ERPNext?
A build-to-order Frappe app that connects Stripe Terminal card readers (BBPOS WisePOS E, M2) and Tap to Pay to ERPNext POS, so in-person and online card payments settle to one unified ledger. ECOSIRE scopes, builds, installs, and supports it — no marketplace download. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your ERPNext.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- ERPNext Compatibility
- —
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- MariaDB 10.6+
About this Product
Omnichannel ERPNext retailers hit a wall the moment they try to take a physical card. ERPNext POS handles cash, cheque, and manual "credit card" mode-of-payment lines, but it has no concept of a certified card-present terminal: no reader pairing, no EMV/contactless capture, no card-present pricing, and no automatic reconciliation of the swipe back to the POS Invoice. Staff end up keying totals into a separate Stripe or bank terminal and then re-typing the result into ERPNext, which produces mismatched settlements, orphaned refunds, and a POS ledger nobody trusts at month-end. Stripe's card-present rails (Terminal) solve the hardware and compliance side, but nothing in ERPNext core speaks to them.
We build a proper Frappe app — installable with bench get-app and bench install-app — that makes Stripe Terminal a first-class ERPNext payment method. The app ships a custom Stripe Terminal Settings single DocType for API keys and location config, a Stripe Reader DocType to register and manage BBPOS WisePOS E and M2 devices, and a Stripe Terminal Payment transaction DocType that stores the PaymentIntent id, capture method, card brand, last4, and reconciliation state. Whitelisted server methods (@frappe.whitelist()) expose connection-token minting and PaymentIntent create/capture/cancel to the POS front end without ever exposing your secret key to the browser, since the Stripe Terminal JS/SDK requires a server-issued connection token. A client script extends the ERPNext POS payment screen with a "Pay at Reader" action that drives the physical terminal, then writes results back through the REST API.
Under the hood we wire the flow through hooks.py document events and scheduler hooks: on_submit of the POS Invoice triggers capture and stamps the Stripe reference, a Stripe webhook endpoint (a whitelisted guest method with signature verification) receives payment_intent.succeeded, charge.refunded, and terminal.reader.action_* events to keep ERPNext authoritative, and a scheduler_events hourly job reconciles any in-flight PaymentIntents against Stripe so a dropped Wi-Fi connection can't leave a sale in limbo. Refunds initiated from the reader or from ERPNext create a linked Payment Entry and reverse the charge, and card-present transactions carry the 3DS liability shift so you get the lower card-present pricing and exemptions rather than online rates. Tap to Pay on iPhone and supported Android devices runs through the same PaymentIntent path for retailers who don't want dedicated hardware. Role-based permissions (a dedicated POS Terminal Manager role profile) gate settings, refunds, and reader registration.
Because this is build-to-order, nothing ships until we agree on scope. We start with a short scoping call, confirm your ERPNext version (v15 or v16), your Stripe account and target regions, the reader models and store count, and your reconciliation and refund rules. We then build against a staging copy of your bench, run UAT with your team, and only cut over to production once you sign off. You receive the full source as a versioned Frappe app in a git repo you own, plus documentation, training, and a defined post-go-live support window — not a black-box marketplace binary.
What you get
- Installable source code for your commissioned version as a versioned Frappe app (DocTypes, server scripts, client scripts, hooks, webhook handler)
- Installation and configuration on your bench, including Stripe keys, Locations, reader registration, and Mode of Payment wiring
- Technical documentation: app architecture, DocType schema, whitelisted methods, webhook events, and scheduler jobs
- End-user guide plus a live training session for cashiers and POS managers on reader pairing, taking payments, and refunds
- UAT on a staging copy of your site with a documented test plan and a rollback plan before production cutover
- Post-go-live support window for bug fixes and configuration adjustments after launch
- Git repository handover so you own the source and can maintain or extend it independently
- Stripe account configuration guidance: Terminal Locations, webhook endpoint registration, and card-present settings
Who this is for
Omnichannel ERPNext retailer
Runs both an online store and physical locations on ERPNext and needs card-present checkout that settles to the same ledger as web orders, with one reconciliation at day-end instead of two disconnected systems.
Multi-store operations manager
Oversees several branches and wants Stripe Locations mapped to POS Profiles, per-store reader management, and consistent refund and reconciliation rules enforced by role permissions across every till.
ERPNext implementation partner or in-house Frappe team
Needs a clean, well-documented Frappe app with real DocTypes, whitelisted methods, and hooks — not brittle site customizations — that they can hand off, extend, and keep compatible across v15/v16 upgrades.
Finance / controller stakeholder
Cares that every card-present sale, refund, and payout reconciles to a Payment Entry in the GL, that dropped-connection sales can't go missing, and that card-present pricing and 3DS liability shift are actually captured.
How Stripe POS Terminal for ERPNext Compares
| Criterion | ECOSIRE | Custom Build | Competitor | ERPNext Native |
|---|---|---|---|---|
| Delivery model | Build-to-order Frappe app, one working week from confirmed scope | Fully bespoke, timeline depends on your team's bandwidth | Instant download, generic to all buyers | Nothing to deliver — no card-present support exists |
| Card readers (WisePOS E, M2) | Certified reader pairing and capture built in | You integrate the Terminal SDK yourself | May support one reader model, often US-only | Not supported — manual card mode only |
| Tap to Pay (iPhone/Android) | Same PaymentIntent path, no extra hardware | Additional SDK work on your side | Rarely included | Not available |
| Unified online + in-person ledger | Both settle to Payment Entry, single reconciliation | You design the reconciliation logic | Often a standalone log, weak GL linkage | Separate systems, manual re-keying |
| Reconciliation resilience | Hourly scheduler sweep + signature-verified webhooks | Must build webhook and recovery yourself | Basic or webhook-only, no recovery job | None |
| Refunds at the reader | Reader/ERPNext refund reverses charge + Payment Entry | Hand-built refund flow | Sometimes online-only refunds | Not applicable |
| Source ownership & docs | Full git repo handover + technical docs + training | You own it, docs depend on your team | Closed binary, vendor-locked | N/A |
| v15/v16 compatibility & support | Tested on your bench + post-go-live support window | Self-maintained across upgrades | Depends on vendor's release cadence | N/A |
Frequently Asked Questions about Stripe POS Terminal
Is this a Frappe Cloud Marketplace app I can download and install right now?
No. This is build-to-order. ECOSIRE scopes, builds, installs, and supports a Frappe app tailored to your ERPNext version, Stripe account, reader models, and reconciliation rules. You request a quotation, we confirm scope, then we build — there is no instant download.
How long does delivery take?
Typical delivery is one working week from confirmed scope, depending on store count, reader models, and how many reconciliation and refund rules are involved. The timeline starts once we've agreed the specification on the scoping call, not from the day you enquire.
Which ERPNext versions and readers are supported?
We build for ERPNext and Frappe v15 and v16, tested against your exact bench before cutover. On hardware we support BBPOS WisePOS E and M2 readers plus Tap to Pay on iPhone and supported Android devices, all through Stripe Terminal's certified card-present rails.
How does support and future updates work?
Every build includes a defined post-go-live support window for bug fixes and configuration adjustments. Because you receive the full source in a git repo you own, you can maintain it yourself or contract ECOSIRE for version upgrades and enhancements later. We can also quote an ongoing maintenance retainer covering ERPNext v15-to-v16 upgrade compatibility.
Does it keep online and in-person payments in one ledger?
Yes. Both e-commerce charges and in-person Terminal captures resolve to a Mode of Payment and Payment Entry in ERPNext, so your cash-up and GL reconciliation are single-source. An hourly scheduler job and signature-verified Stripe webhooks keep ERPNext authoritative even if a reader drops connection mid-sale.
Do we get lower card-present pricing and 3DS handling?
Yes. Because transactions run through Stripe Terminal PaymentIntents with the card-present method, they carry the 3DS liability shift and card-present exemptions, so they qualify for card-present pricing rather than online card rates. Refunds can be issued at the reader or from ERPNext and reverse the charge with a linked Payment Entry.
Is our Stripe secret key exposed to the POS browser?
No. The Terminal SDK requires a server-issued connection token, so the front end only ever receives a short-lived connection token minted by a whitelisted server method. Your secret key stays in the `Stripe Terminal Settings` DocType using Frappe's encrypted password fieldtype and never reaches the client.
Related Modules

Stripe Connect Marketplace Payouts for ERPNext
A build-to-order ERPNext application that connects your multi-vendor marketplace to Stripe Connect for onboarding, split payments, application fees, and automated seller payouts. ECOSIRE builds it to your exact vendor and settlement model, then installs and supports it.

Stripe Payments Pro for ERPNext
A production-grade Stripe payment gateway for ERPNext with Payment Intents, SCA/3-D Secure 2, Apple Pay and Google Pay, subscription billing, and webhook-driven auto-reconciliation. ECOSIRE builds, installs, and supports it for your specific ERPNext deployment after a quotation.

Supermarket & Grocery POS for ERPNext
A high-speed grocery checkout for ERPNext with weight-embedded (EAN-13) barcode parsing, live weighing-scale integration and fast multi-item scanning. ECOSIRE builds, installs and supports it on your bench after we agree the scope.

Switzerland QR-Bill & Accounting for ERPNext
A build-to-order ERPNext app that adds Swiss QR-bill generation with QR-IBAN, camt.054 bank reconciliation, and pain.001 payment file export, plus a Swiss chart of accounts and MWST/VAT setup. ECOSIRE scopes, builds, installs, and supports it for your v15/v16 site.
Stripe POS Terminal
A build-to-order Frappe app that connects Stripe Terminal card readers (BBPOS WisePOS E, M2) and Tap to Pay to ERPNext POS, so in-person and online card payments settle to one unified ledger. ECOSIRE scopes, builds, installs, and supports it — no marketplace download.
- Custom Frappe app installable via `bench get-app` / `bench install-app`, packaged as a dedicated module with its own DocTypes rather than site customizations
- `Stripe Terminal Settings` single DocType holding publishable/secret keys, Stripe Location id, and capture-method config, with secret stored via Frappe's password fieldtype
- `Stripe Reader` DocType to register, label, and manage BBPOS WisePOS E and M2 devices, including reader status and location binding
- `Stripe Terminal Payment` transaction DocType storing PaymentIntent id, card brand, last4, capture state, and link back to the POS Invoice