Build on Esplanda
POS partner program: keep 100% of your first $1M
Build on a public REST API over each store's register, purchasing, pricing and reporting, and keep 85% after your first $1,000,000.
No listing fee, no annual reset and no paid tier for getting featured. The sandbox and API access are free.
In short
The Esplanda POS partner program pays developers 100% of their first $1,000,000 in lifetime marketplace revenue, then 85%. The threshold is cumulative and per developer, not per app and not per year, and there is no listing fee.
You build against a public REST API over the live catalog behind each merchant's register, purchasing, pricing and reporting, with OAuth 2.0 scoped grants, signed webhooks, idempotent writes and a free sandbox.
- REST API
- OAuth 2.0 scopes
- Webhooks
- Free sandbox
- Idempotent writes
- Visible rate limits
The API
The live catalog, not a nightly export
The merchant's register, purchase orders, price rules and margin reports all read one set of records, and so does your app. A bottle sold at 7pm shows up against the same row purchasing forecasts on.
Public REST API
Catalog, inventory, orders, customers, suppliers and purchase orders. JSON over HTTPS, cursor pagination, predictable error shapes.
OAuth 2.0 with scoped grants
Authorization code flow. Declare your scopes at registration; tokens are issued per merchant and per location, so one store can be granted without the chain.
Webhooks
Signed deliveries for sales, inventory movements, catalog changes and purchase order state, with retry and backoff.
A free sandbox
A store seeded with products, suppliers, price rules and transaction history. Drive the full OAuth flow and fire test events before any merchant is involved.
Idempotent writes
Send an idempotency key on writes. A retried request returns the original result instead of writing a second purchase order. Build the key from something stable in your own records, never a timestamp.
Rate limits you can see
Standard rate-limit headers on every response, published per endpoint, so you back off before you are throttled.
Merchants on another register? Esplanda bridges to Square, Clover, Lightspeed and KORONA through POS integration, and your app reads the unified catalog either way: no register adapters to write.
Scopes and consent
Every scope becomes a sentence an owner reads
The consent screen renders each scope you declare in plain language. Owners approve the set or walk away, so declare what you call, and nothing else.
| You declare | The owner reads |
|---|---|
catalog:read | Read your product list |
orders:read | See your sales, item by item |
purchase_orders:write | Create purchase orders to your suppliers |
customers:read | Read your customer names and email addresses |
- Scope tightly from the start. Each extra scope is one more sentence a store owner accepts at ten at night. Asking for customers:read when you only reprice bottles costs installs, and it is the most common reason an app is sent back at review.
- One declared set. Merchants accept your set or decline it, so build the app to do its whole job on exactly the scopes it declares.
- Uninstall is immediate. Tokens are revoked at that moment and calls return an authorization error. Handle the revocation event, stop your jobs, and keep only what your own terms allow. The merchant data commitments are on why Esplanda is safe to trust.
Building an app
From sandbox to paid, in seven steps
The first four need no merchant at all: you can reach a working OAuth round trip on seeded store data in an afternoon.
Design note: Esplanda's POS system keeps selling with a dead connection, so events arrive late and out of order. Read the offline POS system page before you assume real-time ordering.
Create a developer account and a sandbox store
Seeded with products, suppliers, price rules and transaction history.
Register the app and declare your scopes
Each one becomes a plain-language sentence on the merchant consent screen.
Implement the OAuth 2.0 authorization code flow
Exchange the code for access and refresh tokens; store them per merchant and per location.
Build against the REST API with idempotent writes
Catalog, inventory, orders and purchase orders, with an idempotency key on every write.
Subscribe to webhooks rather than polling
Verify the signature, queue the work, return fast, and keep handlers idempotent because deliveries retry.
Submit for review
A plain-language listing, your pricing and a test account. Review checks that every declared scope is used and that uninstall is handled.
Publish and get paid
100% of your first $1,000,000 in lifetime marketplace revenue, 85% after that.
Built for
Apps that need one catalog
Independent retailers on Esplanda run one catalog across register, purchasing and pricing, so an app reads real depletion instead of a nightly export.
Built for
- Apps that act on stock and margin: reordering, repricing, delivery routing, labels and loyalty.
- Private apps a store hires a developer to build, kept off the public list.
- Developers who want the whole store through one API, whatever register the merchant keeps.
How review works
- People review every app, in days, checking each declared scope against the code.
- Sent back most often for scopes the app never calls, broken uninstall handling, or a listing that describes something the app does not do.
- That check is what makes the plain-language consent screen mean something to an owner.
Questions
Questions developers ask
What does the Esplanda POS partner program take from my app revenue?
Nothing on your first $1,000,000 of lifetime marketplace revenue, then 15%. The threshold is per developer and cumulative, not annual, so it never resets and you never drop back into a fee band after a slow year.
How does authentication work?
OAuth 2.0 authorization code flow with scoped grants. You declare the scopes your app needs at registration, the merchant sees them in plain language on the consent screen, and you exchange the authorization code for an access token and a refresh token. Tokens are scoped per merchant and per location, so a merchant can grant one store without granting the chain.
Can I build and test without a live merchant?
Yes. The sandbox gives you a store seeded with products, suppliers, price rules and transaction history, and it is free. You can drive the full OAuth flow, fire test webhooks and write to the catalog without touching anyone's real inventory.
What happens to my tokens when a merchant uninstalls?
They are revoked immediately, and later API calls return an authorization error. That is by design: a merchant who uninstalls has withdrawn consent at that moment. Handle the revocation event and stop your background jobs rather than retrying into a wall.
Are there webhooks, or do I have to poll?
There are webhooks, and you should use them. Subscribe to the events you care about, such as sales, inventory movements, catalog changes and purchase order state, verify the signature on every delivery, and return quickly rather than doing the work inline. Deliveries retry with backoff, so your handler needs to be idempotent.
What are the rate limits?
Limits are published per endpoint in the developer documentation, and every response carries standard rate-limit headers so you can back off before you are throttled. Read endpoints are more generous than writes. If you are polling hard enough to hit a limit, the answer is almost always a webhook subscription rather than a limit increase.
What happens to my app when a merchant's store goes offline?
The register keeps ringing sales locally and syncs when the connection returns, and your app catches up then. From your side that looks like a quiet period followed by a burst of webhook deliveries with older timestamps, so design for events that arrive late and out of order.
How long does app review take, and what gets sent back?
Review is done by people, so it takes days rather than minutes. The most common reason an app is sent back is declaring scopes it never calls, because every scope you declare becomes a sentence a store owner has to accept. Broken uninstall handling and listings that describe something the app does not do are the other two.
Build for stores that run one catalog
Start free today, or book a demo and we'll set you up with a sandbox store, the REST reference and the scope list.
The sandbox and API access are free. The revenue share is 0% until you have earned your first million.