# Bitcart

Self-hosted, non-custodial crypto payment processor with a merchants REST API.

Bitcart is a payment processor you host yourself for BTC, LTC, BCH, XMR, ETH, TRX, USDT and other coins. It runs coin daemons and a Merchants API for stores, products, invoices, wallets and payouts, with an admin panel and a store front. Payments go straight to your own wallets, and it only takes crypto.

- Capabilities: adaptable, operable
- Vertical: invoicing-finance
- Shape: business-app
- Form factor: web-app
- Execution model: deterministic
- Provenance: unknown (recorded, never ranked)
- Repo: https://github.com/bitcart/bitcart (MIT), 1004 stars, last commit 2026-11-04
- Last activity: 2026-11-04
- Page: apps/bitcart--bitcart.html
- JSON: apps/bitcart--bitcart.json

## Use it when

- you want to accept crypto at your own store without a custodial processor
- you want an agent to create invoices and check payment status over a REST API

## Gotchas

- Crypto only: no card or bank payments, so many shops need a second processor
- Needs a server with a domain and DNS records; the docs run setup.sh from a root shell opened with sudo su -
- Runs several coin daemons plus Postgres and Redis, so it is heavier than a hosted checkout
- API tokens come from POST /token with an account email and password, scoped by permissions
- Wallets are watch-only by default; sending a payout from one through the API means putting its private key in the request, so use a hot wallet or keep that step with a person

## Editions

- Free: Free, open source
  - source: https://github.com/bitcart/bitcart
  - installable: git clone https://github.com/bitcart/bitcart-docker && cd bitcart-docker && export BITCART_HOST=yourdomain.tld && ./setup.sh
  - one-click: https://docs.bitcart.ai/deployment/configurator

## Adaptable: make it yours

Effort: config-only (10 things to edit), surface kind admin-ui

The conf/.env.sample file sets deployment values: BITCART_CRYPTOS picks coins, per-coin daemon host, port and login, and database and Redis connection. Business behavior is set in the admin panel or Merchants API: store checkout and email settings, Jinja templates for notifications, products and shop pages, discounts, rate rules, and a CSS theme file for the store POS. Plugins add code.

- Env vars: BITCART_CRYPTOS, BTC_HOST, BTC_PORT, BTC_NETWORK, BTC_LIGHTNING, DB_HOST, DB_DATABASE, REDIS_HOST, BITCART_HOST
- Config files: conf/.env.sample
- Prompt files: none
- Accounts you'll need: none

## Operable: what an agent can drive

Operability: official. Interface: api at https://api.bitcart.ai (published by the builder, local).

### Reach (complete coverage)

- Create and read invoices: reachable. api/views/invoices.py; docs: POST /invoices needs price and store_id
- Refund invoices: reachable. api/views/invoices.py: POST /{model_id}/refunds and /refunds/{refund_id}/submit
- Manage stores and checkout settings: reachable. api/views/stores.py: PATCH checkout_settings, email_settings, theme_settings, rate_rules
- Manage products and discounts: reachable. api/views/products.py and discounts.py
- Create and manage wallets: reachable. api/views/wallets.py
- Payouts to external addresses: reachable. api/views/payouts.py CRUD; POST /payouts/batch with commands approve, send and cancel (api/services/crud/payouts.py)
- Edit Jinja notification, product and shop templates: reachable. api/views/templates.py; docs guides/templates.md
- Notification providers: reachable. api/views/notifications.py
- Server management (users, settings, logs): reachable. api/views/manage.py, users.py, configurator.py; superuser token needed
- Signing payouts and wallet keys: reachable. POST /payouts/batch command send takes per-wallet private keys in options.wallets (api/services/crud/payouts.py); hot wallets sign on the server; POST /wallets/create makes a wallet

## Code stack

- Languages: Python
- Frameworks: FastAPI, Dishka
- Package manager: uv
- Database: PostgreSQL, Redis
- Hosting target: docker

## Evidence and confidence

- formFactor: bitcart-docker README: self-hosted stack with admin, store, checkout and API (confidence 0.9)
- executionModel: no model in the product (confidence 0.95)
- operability: bitcart-docs integrations/custom-integration.md names the Merchants API and swagger at api.bitcart.ai; api/views/token.py issues scoped tokens (confidence 0.85)
- effort: conf/.env.sample is deployment and daemon settings; guides/templates.md and walkthrough.md put business behavior in the admin panel and API (confidence 0.6)
- editions: MIT repo; bitcart.ai lists no prices or hosted tier. Easy Launch is the Configurator, a self-install tool (docs deployment/configurator.md). Third-party hosts in docs are run by others, not the Builder (confidence 0.9)
- active: Latest commit 2026-11-04; release 0.11.0.1 on 2026-10-26
- reach:  (confidence 0.85)

## Open questions

- No official client for the Merchants API found: bitcart-sdk wraps the coin daemons; agents call the REST API directly
- Provenance not established

## Sources

- https://github.com/awesome-selfhosted/awesome-selfhosted (sourcing:invoicing-finance:curated)
- https://github.com/bitcart/bitcart (analysis)
