{{ avatar.company }} {{ avatar.role }} {{ avatar.contract }} Container{{ avatar.container }} Next deadline{{ avatar.deadline }} Security{{ avatar.twofa }}
{{ c.sep }}
{{ hero.eyebrow }}

{{ h.text }}

{{ hero.lede }}

Two ways to buy.

Green by the container, or a retail solution ready to sell — the shelves are the same six positions either way. Pick a track and the rest follows.

New here

How the portal works

1
Browse the six positions.Each names a flavour, its quality band and how deep the pool runs.
2
Open one for its lots, scores and a free sample.No account needed.
3
Register in three questions to stage volume, see calendars and build a container.
What opens, and when
PublicPositions, bands and municipalities
RegisteredVolumes, harvest calendars and the container tools
Counterparty checkHoldings, differentials and full passports
Each step you clear opens the one below
You're on the Public level now — registering opens the next.

The shelves, open to everyone.

Each card names what the position tastes like, the quality band it holds and how deep the pool behind it runs. Open one for its lots, its calendar and a sample request.

Container consolidation

Share a container. Ship the volume you actually need.

Several buyers take their slots in one box. Nothing is blended and nothing is renamed — every unit still resolves to its own plot, so you move the volume you need without taking a whole container alone.

How it ships

No importer or customs broker of your own to line up — we handle the logistics and the customs clearance, and the coffee arrives ready to sell.

A full container needs roughly 19–26 tonnes; below that, several buyers share one box. Door-to-door delivery is arranged with our logistics partner for confirmed counterparties, by agreement — exact freight follows with your quote.

{{ consolPreview.capLabel }} {{ consolPreview.bagsLabel }}
{{ b.label }}{{ b.bags }}
{{ consolPreview.stepLabel }} {{ consolPreview.pctLabel }}
Your container

{{ crateName }} · {{ crateSummary.bagsLabel }}

{{ consol.spillNote }}

{{ bx.name }} {{ bx.role }} {{ bx.band }}
{{ s.label }}
{{ bx.bagsLabel }} · {{ bx.pctLabel }} {{ bx.roomLabel }} {{ bx.costLabel }}
Nearest dates
{{ d.label }} {{ d.when }}
Ordering a position, not a one-off lot

Everyone sells you a lot. We sell you the same cup next season.

Whatever you actually judge a purchase on — the landed price and the date it reaches your warehouse — a spot list makes you chase it after the fact. A shelf publishes it up front: one landed number, a delivery window, and every check behind the coffee recorded and open to you.

The usual way
You buy the lot, then spend the year replacing it.
{{ c.k }} {{ c.spot }}
On a LONTARI shelf
You contract the position, and the lots rotate underneath it.
{{ c.k }} {{ c.shelf }}
What it all comes down to
Full transparency and full auditability. Every price, delivery date, quality check and custody step is recorded by our platform and open to you — so nothing about the coffee, or how it reaches you, is left to trust.
Your quotes

{{ member.headline }}

{{ member.lede }}

Positions in your quote
Next steps {{ readiness.label }}
{{ r.k }} {{ r.v }}
{{ one.origin }} {{ one.process }} · {{ one.tier }} · {{ one.mode }}

{{ one.name }}

{{ one.character }}

Flavour signature

{{ one.sigNote }}

{{ n.label }} {{ n.share }}

The envelope

{{ s.k }}
{{ s.v }}

Lots holding this position

{{ one.lotNote }}

Availability through the year

{{ one.calNote }}

{{ m.label }}
{{ m.mark }}

Request a sample

{{ sampleLede }}

{{ sampleTerms }}
{{ sampleClosedNote }}
{{ sampleNote }}

Trade portal

{{ portalNote }}

Add in
{{ rowSummary }}
{{ gateSummary }}
{{ portalStagedNote }}
Lot
Shelf
Origin
Q
Volume
Arrival
{{ stageHead }}
{{ r.cup }}
{{ r.shelf }}
{{ r.origin }}
{{ r.score }}
{{ r.volume }}
{{ r.arrival }}
{{ r.draftNote }}
Your container
{{ crateSummary.bagsLabel }}
{{ crateSummary.boxLine }}
{{ crateSummary.saveLine }}
{{ gateTitle }}
{{ gateBody }}
Step {{ reg.step }} of three · {{ reg.stepName }}

{{ reg.title }}

Pick the positions you want quoted. This decides what opens first inside the portal.

Annual volume
Volumes and delivery calendars open immediately. Holding names, differentials and full passports open once we confirm you are a trading counterparty — usually the same working day.
{{ reg.error }}
{{ reg.doneTitle }}
{{ reg.doneBody }}
{{ reg.hint }}
My account

Your container, kept between visits.

{{ savedNote }} Set the quantity lot by lot, pick the packing and the box; when either the volume or the payload runs out, the load opens a second container by itself.

{{ accountHome }}

{{ g.head }}

{{ acctTitle }}

{{ accountName }}
{{ t.k }}
{{ t.v }}
{{ t.note }}
{{ accountName }}
Next up
{{ n.k }} {{ n.v }}
My positions
Annual volume drawn Each contracted position carries an annual volume in 70 kg sacks; staged volume counts against it the moment it goes firm.
{{ volumeNote }}
{{ o.name }} {{ o.cls }} {{ o.takenLabel }}
{{ o.pct }} drawn{{ o.leftLabel }}
Your contract What the contract decides is who chooses the lots — and whether the position is refilled for you at all.
Managed · before the next consolidation
{{ managed.head }}
{{ managed.deadline }}
{{ managed.note }}
{{ shareLabel }}
A consolidation sheet was generated — a frozen snapshot you can send or print.
Individual share link — this container is listed in the open pool. Send this to the desk or a co-loader.
Packing
Container
{{ consol.bindNote }}
{{ consol.floorNote }}
Shipping {{ consol.shipNote }}
{{ bx.name }} {{ bx.role }} {{ bx.band }}
{{ s.label }}
{{ bx.bagsLabel }} · {{ bx.pctLabel }} {{ bx.roomLabel }} {{ bx.costLabel }}
Volume · {{ bx.volLabel }}
Payload · {{ bx.massLabel }}
{{ bx.bindLabel }}
One square is one unit · {{ consol.capLabel }} · {{ consol.spillNote }}
Lots inside · set the quantity {{ consol.bagsLabel }}
Nothing inside yet. Add a lot from the list below, or set a quantity on any row in the trade portal — what you set is what gets quoted.
{{ l.title }} {{ l.shareLabel }}
{{ l.meta }}
{{ l.bagsLabel }}
{{ consol.saveLabel }} {{ consol.saveNote }} {{ consol.roomLabel }} {{ consol.valueLabel }}
{{ consol.limitNote }}
{{ consol.costNote }}
Shared consolidation
One link, several buyers, one box
Publish a link to the box you are filling. Anyone holding it sees the positions inside, the room left and the deadline, then commits their own volume — interest first, held to the deadline, firm on signature.
{{ share.url }} {{ share.opensLabel }} Download CSV
Generated links
{{ s.token }} {{ s.when }} {{ s.opens }} {{ s.state }}
{{ share.totalLabel }} {{ share.firmLabel }} {{ share.roomLabel }} {{ share.deadline }}
{{ share.initiator }} {{ share.myBagsLabel }} · {{ share.myShare }}
{{ share.emptyNote }}
{{ c.who }} · {{ c.city }} {{ c.bagsLabel }}
{{ c.stageLabel }} · {{ c.stageNote }}
{{ share.anonNote }}
Interest — visible to you, withdrawable by them at any time.
Soft commit — volume reserved until the deadline, then they convert or lapse.
Firm — countersigned, priced, and written into the manifest.
{{ share.lockNote }}
Invitations and access codes
Anyone with the link can see the box. Once you issue a code, committing volume through the link needs one — each invited company gets its own, so a commitment always names whose code was used, and revoking one invite leaves the others working.
{{ v.who }} {{ v.code }} {{ v.opensLabel }}
Lifetime · {{ security.linkTtl }} Opens allowed per code · {{ security.linkMax }}
Add a lot {{ consol.roomLabel }}
Consolidation passport
{{ consol.passport.id }}
{{ p.k }}{{ p.v }}
The passport is written once the container holds something: containers used, lots inside, positions, municipalities, and the line that says every unit still resolves to its own plot. Exports as CSV.
My positions
Samples requested {{ sampleCount }}
Nothing requested yet. Open a position and ask for three hundred grams — it appears here with its status and the lot reference.
{{ d.k }} {{ d.note }}
{{ security.watermark }}
Three roles inside your company. A Buyer stages and commits up to a per-operation ceiling; anything above the company threshold waits for an Owner's second signature.
{{ inviteNote }}
{{ m.name }} {{ m.mail }}
{{ m.def }}
{{ m.limitLabel }}
Two-factor authentication {{ security.twofaLabel }}
Recovery codes · {{ security.recoveryLabel }}
Second signature threshold
{{ security.threshold }} indicative USD
{{ security.thresholdNote }}
{{ security.identSession }}
{{ s.device }} {{ s.where }} {{ s.when }} {{ s.mark }}
Shared-link policy
opens allowed per code {{ security.linkMax }}
Sign-in and export journal Nothing recorded in this browser yet. Every commitment, export and policy change lands here — and in the operator's journal, hashed against the entry before it.
{{ j.text }} {{ j.when }}
Deadlines that move money or lose a lot, in the order they arrive.
{{ n.k }} {{ n.v }}

Open containers

Containers other buyers listed with room left. Joining one moves your lots into their sailing; identity per unit is unaffected — the consolidation passport simply lists two owners.

{{ p.id }} {{ p.closes }}
{{ p.owner }}
{{ d.label }}
{{ p.bagsLabel }}
Taste graph

Where the assortment sits on the flavour wheel.

Descriptors are grouped into families, families into a wheel, and every lot is placed by its leading note. What the wheel leaves empty is as useful as what it fills — that is the part of a menu this origin cannot build for you.

The wheel, with lots on orbit

Two axes at once: a family's share of the wheel is how often it recurs, and how far its band reaches out is how much body the lots carrying it have.

{{ a.k }} {{ a.v }}
{{ famHint }}
{{ w.label }} Harvest slice Colombia slice
{{ famSel.name }} {{ famSel.lotsLabel }} · {{ famSel.shelvesLabel }}
{{ sh.label }}

Coverage by family

The same tally read as a list: how often each family recurs, how many lots carry it and how many positions it reaches.

{{ missingNote }}
{{ c.label }} {{ c.lotsLabel }} · {{ c.shelvesLabel }}

Lot cards

A fan of the lot's descriptors above the ten SCA axes it was scored on. The total is the exporter's declared figure; the per-axis fan is an illustration of the descriptors, not a re-cupping.

{{ f.shelf }}
{{ f.title }}
{{ f.meta }}
{{ w.label }}
{{ s.k }}
{{ s.v }}
Total {{ f.total }}

Position × family

Which families each position can actually deliver. A dense cell is a family the position leans on; an empty one is a promise it should not make.

Position
{{ c.label }}
{{ r.trade }} {{ r.name }}
{{ c.mark }}
Retail department · roasted & ready to sell

Finished coffee, by the case.

{{ productLede }}

For Cafés, shops and offices buying roasted coffee to sell or serve — not green beans by the container.
How it differs The trading positions sell unroasted lots by the sack; this sells the same flavour profiles, roasted, in retail formats.
You get back A quote with pricing, minimum order and lead time — usually the same working day.
Registered buyers only Register to open the order tool. Retail orders carry pricing, minimums and lead times we only quote to a named account. It is three questions — company, email, country — and the configurator opens the same session, with the basket and your requests kept on the account.
What opens {{ g.name }} Each profile as drip, capsules, whole bean or filter grind.
Configure your order Pick a profile, choose formats, build the basket — no commitment.
How our clients buy each profile tap a profile flavour profile product
Tap a profile: the lit edges are the formats our clients love it in. A dimmed format simply shines elsewhere — a delicate Geisha is at its best as filter or whole bean, a bold natural sings as a capsule or drip. Whole bean fits every profile.
1 · Flavour profile
{{ productActive.name }} {{ productActive.tier }} {{ productActive.family }} {{ productActive.character }} {{ n.label }}
2 · Formats
Your basket {{ basketLabel }} {{ b.label }}{{ b.name }} Approximate volume · optional Nothing here yet. Pick a flavour profile and one or more formats, then Add to basket. {{ productNote }} Indicative retail formats against the exporter's own flavour profiles. The desk replies with pricing, minimum order and lead time. Green-coffee volumes stay on the trading positions.
Origins

{{ originsHead }}

A shelf survives a bad month because it draws on several holdings and two harvest windows rather than one farm's luck.

{{ o.region }}
{{ o.meta }}
{{ o.body }}
{{ sh.label }}
Platform

The shelves are the shop window. This is the machinery behind them.

One graph of typed objects — plots, farms, lots, contracts, containers, laboratory measurements, roasting batches, passports. Users read it through queries and write through auditable actions, and every property traces back to its source document or instrument.

Four modules, one core.

{{ m.tag }}
{{ m.title }}
{{ m.body }}
Common core — dynamic ontology, append-only journal, time travel, invariants as health checks, tenant isolation.
Replacement protocol

How we select lots

{{ walk.intro }}

{{ g.n }} · {{ g.tab }} {{ g.statusLabel }}
{{ g.claim }}
{{ fct.k }} {{ fct.v }}
{{ g.body }}
{{ g.verdict }}

Go deeper

{{ deep.tag }}

{{ deep.title }}

{{ deep.lede }}

{{ b.h }}
{{ b.p }}
About

Palm leaves bound into one scroll.

Indonesian lontar manuscripts bound separate palm leaves into a single body of knowledge. We do the same with a supply chain: scattered claims, measurements and documents become one connected record, and a roaster reads it as eight positions they can buy.

A person recognises the pattern, the machine holds the volume. Nothing here forecasts a harvest or a price — it records what happened and computes what follows.

Straight answers

{{ f.q }}
{{ f.a }}
Legal

What this site is, and what it is not.

The plainest version: prices you see before you ask are indicative, like any list; the requests you send are real and reach the desk, and every commitment is made in writing on a signed order with the exporter.

{{ l.h }}
{{ l.p }}
{{ lot.counter }}
{{ lot.shelfName }} · {{ lot.shelfCls }} · {{ lot.shelfTrade }} {{ lot.id }}

{{ lot.title }}

{{ lot.envelope.label }} {{ lot.envelope.note }}
The lot as recorded {{ lot.holding }}
{{ fc.k }} {{ fc.v }}
{{ n.label }} {{ n.family }}
{{ m.label }}
{{ w.label }}
SCA total {{ lot.total }}
{{ sc.k }}{{ sc.v }}
In the cup {{ lot.cupWord }} {{ lot.cupText }} {{ lot.cupNote }}
Physical analysis
{{ p.k }} {{ p.v }}
The plot
{{ p.k }} {{ p.v }}
Processing protocol
{{ p.k }} {{ p.v }}
Custody
{{ c.k }} {{ c.v }}
Compliance record
{{ c.k }} {{ c.v }} {{ c.mark }}
Statements here support the operator's own EUDR obligations. LONTARI does not certify compliance and is not a verification body.
{{ lot.siblingsHead }}
Into your container
sacks
{{ lot.staged }}
{{ lot.gateNote }}
Sample {{ lot.sampleNote }}

Six positions on an Andean harvest slice, contracted for a season and refilled under a published protocol.

{{ s.k }} {{ s.v }}
The six positions
Trading
Platform
{{ footAccountHead }}
Lots are a working exporter catalogue; positions, containers and consolidation are the platform's own records. Prices shown are indicative until quoted. Positions, bands and municipalities are public; holdings and measured values open to confirmed counterparties.
© 2026 LONTARI