open source · MIT · the rail under NFTeria

Clone Access0x1 — everything you get.

Every payment on NFTeria settles through Access0x1, and the whole rail lives in one public repo: 20 production contracts + 2 libraries, the web app, the React SDK, the docs, and 1,392 green tests. This page is the inventory — each claim tagged with the repo file it comes from.

Access0x1 is deployed to public testnets only. There is no mainnet deployment and none is claimed — every mainnet target in the Makefile is audit-gated and refuses to broadcast until a third-party security audit is complete.

Get it

Three commands, three depths.

The full monorepo, the standalone starter, or a local node where you can watch a USD-priced payment settle with no keys at all — each path is copy-paste from the repo’s own README.

Clone the whole rail

git clone https://github.com/Access0x1/Access0x1.git
cd Access0x1
make install && make test

Contracts, web app, SDK, and docs in one checkout. `make install` wires submodules + npm + web + SDK; `make test` proves the 1,392 tests green.

Just the starter — no monorepo

npx degit Access0x1/Access0x1/templates/starter my-checkout
cd my-checkout
npm run setup

A pre-wired checkout app with your own Foundry contracts. No registry involved — degit copies the template straight from GitHub, by design.

See money move locally — no keys

make anvil          # terminal 1 — local node
make deploy-local   # terminal 2 — the full wired surface
make drive-local    # register → quote in USD → pay

A complete USD-priced payment on a local node: register a merchant, quote, pay — net + fee == gross, zero custody. No keystore, no faucet.

The 1%

The platform fee is a default — not a lock.

Open-source means the fee policy is yours too. The rate, the cap, the treasury — all public on-chain values anyone can read before a single payment, exactly as documented in the repo’s PLATFORM-FEE disclosure.

1% is the default, not a lock

platformFeeBps ships at 100 bps (1%). It is a parameter, not a protocol constant: whoever owns a router deployment sets it with setPlatformFee. Clone the repo, deploy your own router, and the fee is yours — including 0%.

docs/PLATFORM-FEE.md

Hard-capped at 10%, for anyone

MAX_FEE_BPS = 1000 bps. No owner — us or you — can ever set a confiscatory rate, and a merchant surcharge is trimmed at pay time so a buyer's total fee never exceeds the cap.

docs/PLATFORM-FEE.md

Read live, on-chain

platformFeeBps() and platformTreasury() are public getters, and every change emits an event. The rate that settles is read inside the pay transaction — never a baked-in copy, never a stale quote.

docs/PLATFORM-FEE.md

Refunds are never fee'd

A refund returns the full deposit — no fee is ever taken on a refund leg, and the split arithmetic (net + fees == gross, exactly) leaves any rounding dust with the merchant, never the platform.

docs/PLATFORM-FEE.md
The money spine

USD-priced onchain payments, zero custody

One shared router settles every merchant. You price in dollars; the conversion happens on-chain, inside the settlement transaction — and the contract never holds anyone's funds.

Access0x1Router — the spine

One multi-tenant, zero-custody router: settlement is a single atomic pull → split → push, so the router's steady-state balance is zero. It never holds merchant funds.

src/Access0x1Router.sol

USD pricing inside the pay tx

quote() reads a Chainlink token/USD feed through a staleness guard in the settlement transaction itself — the price that settles is the on-chain price, not an off-chain quote you have to trust.

src/libraries/OracleLib.sol

Permissionless merchant onboarding

registerMerchant is one call from any wallet — no per-merchant contract, no approval queue. The caller owns the config, and a payment to merchant A can never mutate merchant B.

src/Access0x1Router.sol

One signature, gasless pay-in

GaslessPayIn settles a buyer's first payment from ONE off-chain signature (EIP-2612 / EIP-3009 / ERC-7597). On Arc Testnet, USDC is the native gas token, so USDC checkout runs with no separate gas coin.

src/GaslessPayIn.sol

Receipts you can always pull

PaymentLanes credits settled value as ERC-6909 receipts; the merchant claims the underlying whenever they want, and a lane only ever releases the asset that funded it.

src/PaymentLanes.sol
Commerce, ready-made

The primitives a real business runs on

Each composes the router rather than re-implementing it: lifecycle logic lives in the primitive, every money leg settles through the audited spine, and every USD price is read in-tx.

Subscriptions

Recurring, USD-priced, tiered billing. A subscription is a budget-scoped SessionGrant: the subscriber signs once and every renewal debits that budget — hard-reverting past the cap.

src/Access0x1Subscriptions.sol

Bookings

Deposit escrow with confirm / expire / cancel / no-show lifecycle under an immutable policy snapshot — and a refund that can never be blocked, by construction.

src/Access0x1Bookings.sol

Invoices

A USD-priced, pay-once payment request — optionally locked to one payer with a due date. OPEN → PAID | VOID is one-way, so a replayed payment reverts.

src/Access0x1Invoices.sol

Gift cards + coupons

A prepaid USD balance the holder controls, plus a merchant-scoped coupon registry. A debit can never drive a balance negative — that's a hard revert, not a policy.

src/Access0x1GiftCards.sol

Onchain marketplace

List an ERC-721 at a USD price; payment and transfer settle atomically in the same transaction. The contract never holds a payment token.

src/Access0x1Nft.sol

Escrow + refunds

Conditional settlement — a deposit held until release or refunded in full — plus time-boxed, merchant-authorized refunds keyed by orderId that the buyer claims as a pull, never a push that can fail.

src/Access0x1Escrow.sol · src/Refunds.sol

Revenue splits

One USD payment fans out to N payees by basis points — seller, platform, affiliate, creator, tax — with the shares summing to the gross exactly.

src/SplitSettler.sol

Tokenized receivables

An open invoice mints a transferable ERC-721: whoever holds it is the creditor and receives the settlement. Sell the token to factor the invoice.

src/Receivables.sol

Your own house token

A business deploys its OWN ERC-20 (loyalty, credit, closed-loop) and keeps the keys and the full supply — the factory never holds either.

src/HouseTokenFactory.sol
Agents + automation

Budgeted software spend, built in

Authorize an agent once, cap what it can spend, revoke any time — and let permissionless automation do the recurring work. None of it ever touches the money path it doesn't own.

SessionGrant — sign once, spend inside a budget

ERC-7702 + ERC-6492 agent sessions: an owner authorizes a delegate to spend up to a budget until an expiry, no per-spend co-sign. Pure authorization ledger — it never holds funds, and revoke() is instant.

src/SessionGrant.sol

Metered AI endpoints

Bind one API key to a SessionGrant and the endpoint pays per request over x402. A $1.00 budget at $0.001/call is exactly 1,000 calls — then the key cuts off. Owner-revocable, time-bounded, testnet-settled.

docs/CONNECT-AI-API.md · web/app/api/ai/

Auto-renewing billing, no cron

A permissionless Chainlink Automation keeper renews due subscriptions — zero custody, zero privilege, and one failed renewal never blocks the batch.

src/AutomationGateway.sol

Notified-settlement audit trail

A Chainlink CRE consumer writes an immutable audit entry per settlement — off the money path by construction, so a revert there can never touch a payment.

src/Access0x1Receiver.sol

Code provenance, on-chain

A developer claims a repo, anchors a Merkle snapshot of the tree, then anchors each release — the “it deploys from my GitHub, provably” registry.

src/Access0x1ProvenanceRegistry.sol
The app + SDK

You don't start from a bare contract

The same product surface that runs the rail ships in the repo — clone it and you have a working dashboard, checkout, SDK, and starter on day one.

The whole web app

A Next.js app with the operator dashboard, onboarding, hosted checkout, verify, and ask surfaces — the same app the rail's own deployments run.

web/app/

@access0x1/react

PayButton plus usePayment / useMerchant / usePaymentLanes / useCredential hooks, chain helpers, and clear-signing support. Git-distributed — "@access0x1/react": "github:Access0x1/Access0x1#main" — no npm registry needed, by design.

packages/react/

A pre-wired starter

degit the starter and you have a checkout app + one-tag embed + your own Foundry contracts running locally in minutes, with a scaffolding CLI if you want the placeholders filled for you.

templates/starter/ · packages/create-access0x1/

Docs that go to the bottom

QUICKSTART → GETTING-STARTED → ARCHITECTURE → INVARIANTS → GAS → SDK-REFERENCE, plus copy-paste walkthroughs for every contract — 20+ deep docs in the same checkout.

docs/
Proof + ops

You can verify every claim yourself

The gate that keeps the rail honest ships with it: the tests, the analyzers, the deploy scripts, and the records of what is actually on-chain — nothing claimed that isn't.

1,392 tests, green

Unit, attack, invariant, and scenario suites — with 98% line / 100% function coverage on the router. That's the repo's own snapshot; `make test` prints the live number on your checkout.

test/ · README.md

Static analysis + audit trail

slither and aderyn wired as make targets, the documented invariants, and the internal audit pass with its findings — all committed.

audit/ · docs/INVARIANTS.md

One-command testnet deploys

make deploy-<chain> broadcasts the whole wired surface in one go. Committed deployment records live in deployments/, and the live testnets share one CREATE3-mirrored address.

script/DeployAll.s.sol · deployments/

Testnet only — and it says so

No mainnet deployment exists and none is claimed. Every mainnet target is audit-gated in the Makefile and refuses to broadcast until a third-party audit is complete.

Makefile · README.md

MIT, all the way down

20 production contracts + 2 libraries, the web app, the SDK, the starter, and the docs — one permissive license, no enterprise tier, no gated core.

LICENSE

It’s your rail now.

Clone it, read it, deploy it, change the fee — or just use it the way NFTeria does. Either way, nothing on this page is a promise: it’s a folder listing.