Skip to main content

Add Bitcoin Lightning pay-per-call to any API in 3 lines. L402 protocol for FastAPI and Flask. 0.3% fee, zero config.

Project description

l402kit

🇺🇸 Charge for your API in Bitcoin Lightning. 3 lines of code. 🇧🇷 Monetize sua API com Bitcoin Lightning. 3 linhas de código. 🇪🇸 Monetiza tu API con Bitcoin Lightning. 3 líneas de código. 🇨🇳 用 3 行代码,通过比特币闪电网络收费。 🇮🇳 अपने API को Bitcoin Lightning से 3 लाइनों में मोनेटाइज़ करें। 🇸🇦 اكسب من API الخاص بك عبر Bitcoin Lightning. 3 أسطر فقط. 🇫🇷 Monétisez votre API en Bitcoin Lightning. 3 lignes de code. 🇩🇪 Monetarisiere deine API mit Bitcoin Lightning. 3 Zeilen Code. 🇷🇺 Монетизируй свой API через Bitcoin Lightning. 3 строки кода. 🇯🇵 Bitcoin Lightningで APIを3行で収益化。 🇮🇹 Monetizza la tua API con Bitcoin Lightning. 3 righe di codice.

PyPI version PyPI downloads Python License: MIT

pip install l402kit

📖 Docs / Documentação / Documentation:

🇺🇸 English · 🇧🇷 Português · 🇪🇸 Español · 🇨🇳 中文 · 🇮🇳 हिंदी · 🇸🇦 العربية · 🇫🇷 Français · 🇩🇪 Deutsch · 🇷🇺 Русский · 🇯🇵 日本語 · 🇮🇹 Italiano


English

Add pay-per-call Bitcoin Lightning payments to any Python API. Works with FastAPI and Flask. No account. No bank. No chargebacks.

How it works

Client calls your API
  → Returns 402 + Lightning invoice
  → Client pays (< 1 second)
  → Client sends cryptographic proof
  → SHA256(preimage) == paymentHash ✓
  → API responds 200 + data

Money flow (managed mode):
  Payment → ShinyDapps → 99.7% to your Lightning Address
                       → 0.3% fee to ShinyDapps

FastAPI quickstart (Managed — 0.3% fee, no node needed)

from fastapi import FastAPI, Request
from l402kit import l402_required, ManagedProvider

app = FastAPI()
lightning = ManagedProvider.from_address("you@yourdomain.com")

@app.get("/")
async def root():
    return {"message": "Try GET /premium"}

# Costs 100 sats (~$0.10) per call — 99.7% goes directly to your Lightning address
@app.get("/premium")
@l402_required(price_sats=100, lightning=lightning)
async def premium(request: Request):
    return {"data": "Payment confirmed. Here is your data."}

Flask quickstart

from flask import Flask, jsonify
from l402kit import l402_required, ManagedProvider

app = Flask(__name__)
lightning = ManagedProvider.from_address("you@yourdomain.com")

@app.get("/premium")
@l402_required(price_sats=100, lightning=lightning)
def premium():
    return jsonify({"data": "Payment confirmed."})

Test it

uvicorn main:app --reload

# First call — payment challenge
curl http://localhost:8000/premium
# → { "error": "Payment Required", "invoice": "lnbc1u...", "macaroon": "eyJ..." }

# Pay invoice with any Lightning wallet, then:
curl http://localhost:8000/premium \
  -H "Authorization: L402 <macaroon>:<preimage>"
# → { "data": "Payment confirmed." }

Why not Stripe?

Stripe l402kit
Minimum fee $0.30 < 1 sat (~$0.001)
Settlement 2–7 days < 1 second
Chargebacks Yes Impossible
Requires account Yes No
AI agent support No Yes — native
Countries blocked ~50 0 — global

Português

Adicione pagamentos por chamada via Bitcoin Lightning em qualquer API Python. Funciona com FastAPI e Flask. Sem conta. Sem banco. Sem chargeback.

FastAPI — início rápido

from fastapi import FastAPI, Request
from l402kit import l402_required, ManagedProvider

app = FastAPI()
lightning = ManagedProvider.from_address("você@seudominio.com")

@app.get("/premium")
@l402_required(price_sats=100, lightning=lightning)
async def premium(request: Request):
    return {"data": "Pagamento confirmado."}

Flask — início rápido

from flask import Flask, jsonify
from l402kit import l402_required, ManagedProvider

app = Flask(__name__)
lightning = ManagedProvider.from_address("você@seudominio.com")

@app.get("/premium")
@l402_required(price_sats=100, lightning=lightning)
def premium():
    return jsonify({"data": "Pagamento confirmado."})

Por que não Pix / Stripe?

Stripe Pix l402kit
Taxa mínima R$1,50 R$0,01 < 1 sat
Liquidação 2–7 dias Instante < 1 segundo
Chargeback Sim Não Impossível
Funciona pra IA Não Não Sim
Global Não Só Brasil Sim — 0 fronteiras

Español

Agrega pagos por llamada en Bitcoin Lightning a cualquier API Python.

from fastapi import FastAPI, Request
from l402kit import l402_required, ManagedProvider

app = FastAPI()
lightning = ManagedProvider.from_address("tu@tudominio.com")

@app.get("/premium")
@l402_required(price_sats=100, lightning=lightning)
async def premium(request: Request):
    return {"data": "Pago confirmado."}

Italiano

Aggiungi pagamenti pay-per-call in Bitcoin Lightning a qualsiasi API Python. Funziona con FastAPI e Flask.

FastAPI — avvio rapido

from fastapi import FastAPI, Request
from l402kit import l402_required, ManagedProvider

app = FastAPI()
lightning = ManagedProvider.from_address("tu@tudominio.com")

@app.get("/premium")
@l402_required(price_sats=100, lightning=lightning)
async def premium(request: Request):
    return {"data": "Pagamento confermato."}

Flask — avvio rapido

from flask import Flask, jsonify
from l402kit import l402_required, ManagedProvider

app = Flask(__name__)
lightning = ManagedProvider.from_address("tu@tudominio.com")

@app.get("/premium")
@l402_required(price_sats=100, lightning=lightning)
def premium():
    return jsonify({"data": "Pagamento confermato."})

Perché non Stripe?

Stripe l402kit
Commissione minima €0,25 < 1 sat
Liquidazione 2–7 giorni < 1 secondo
Chargeback Impossibile
Supporto agenti IA No
Globale No (~50 paesi bloccati) Sì — 0 frontiere

Sovereign mode — bring your own Lightning wallet (0% fee)

import os
from fastapi import FastAPI, Request
from l402kit import l402_required, BlinkProvider

app = FastAPI()

lightning = BlinkProvider(
    api_key=os.environ["BLINK_API_KEY"],
    wallet_id=os.environ["BLINK_WALLET_ID"],
)

@app.get("/premium")
@l402_required(price_sats=100, lightning=lightning)
async def premium(request: Request):
    return {"data": "Payment confirmed."}

Security

Every payment is cryptographically verified — impossible to fake:

SHA256(preimage) == paymentHash

Get started in seconds

Managed mode — just pass your Lightning address. l402kit.com handles invoices and routes 99.7% to you. 0.3% flat fee.

Sovereign mode (0% fee) — sign up at dashboard.blink.sv (free, no credit card) and use BlinkProvider with your API key.


Links

Docs (11 languages) l402kit.com/docs
PyPI pypi.org/project/l402kit
Python SDK docs l402kit.com/docs/sdk/python
GitHub github.com/ShinyDapps/l402-kit
GitHub github.com/ShinyDapps/l402-kit
Lightning shinydapps@blink.sv

License

MIT — use freely, build freely. Bitcoin has no borders.

Built with ⚡ by ShinyDapps

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

l402kit-1.7.0.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

l402kit-1.7.0-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file l402kit-1.7.0.tar.gz.

File metadata

  • Download URL: l402kit-1.7.0.tar.gz
  • Upload date:
  • Size: 25.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for l402kit-1.7.0.tar.gz
Algorithm Hash digest
SHA256 b1a989846eae78c390beb809798d91cb2e77f4c0c1e62c0f0ea4e36167bc52c0
MD5 8920763be39a1bdf250003c877a5af46
BLAKE2b-256 e4ba846c0e4e58e37aef383ac044c9a2046b7cc907cc810af006409bc09fe402

See more details on using hashes here.

File details

Details for the file l402kit-1.7.0-py3-none-any.whl.

File metadata

  • Download URL: l402kit-1.7.0-py3-none-any.whl
  • Upload date:
  • Size: 20.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for l402kit-1.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 86e89df375d2e7177c98a5f7eb4caff793efb8214c0b167225cebd9c9556aa6f
MD5 44fe174367860678ef4d1a0abb3c25ac
BLAKE2b-256 eb0d7838941047b4e150ac5dfff39e91788d20185dd7e9e0f530b6cc707156d3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page