Stripe-like payment stack for ADI Chain. Price in fiat (AED/USD), settle in ADI on-chain.
- Hosted PayDI app (main): https://paydi.vercel.app/
- Example PayDI app (test store): https://paydi-test.vercel.app/
adistripe/
├── packages/contracts/ # Foundry contracts (PaymentProcessor)
├── packages/api/ # Bun + Hono API (sessions, auth, pricing)
├── packages/dashboard/ # Next.js merchant dashboard
├── packages/widget/ # React checkout widget package (paydi-widget)
└── packages/testsite/ # Next.js demo storefront using paydi-widget
| Network | Chain ID | RPC |
|---|---|---|
| Testnet | 99999 |
https://rpc.ab.testnet.adifoundation.ai/ |
| Mainnet | 36900 |
https://rpc.adifoundation.ai/ |
- Install workspace dependencies
bun install- Configure and run API
cp packages/api/.env.example packages/api/.env
bun run --cwd packages/api devSet at least these values in packages/api/.env:
PAYMENT_PROCESSOR_ADDRESSPRIVATE_KEYCORS_ORIGINS
- Run dashboard
bun run --cwd packages/dashboard dev- Run demo storefront (widget integration)
bun run --cwd packages/testsite devcd packages/contracts
forge build
forge script script/Deploy.s.sol --rpc-url https://rpc.ab.testnet.adifoundation.ai/ --broadcast --private-key $PRIVATE_KEYAfter deploy, copy the contract address into packages/api/.env as PAYMENT_PROCESSOR_ADDRESS.
The checkout widget is published from packages/widget as paydi-widget.
bun run build:widgetWidget docs: packages/widget/README.md.
Auth:
GET /auth/noncePOST /auth/verifyPOST /auth/logout
Merchant:
GET /merchants/mePUT /merchants/config
Payments:
POST /payments/sessionsGET /payments/sessions/:idGET /payments/sessions
Prices:
GET /prices/ADIGET /prices/_cache
System:
GET /health
- Testnet:
https://explorer.ab.testnet.adifoundation.ai/ - Mainnet:
https://explorer.adifoundation.ai/