Metadata-Version: 2.4
Name: l402kit
Version: 1.7.0
Summary: Add Bitcoin Lightning pay-per-call to any API in 3 lines. L402 protocol for FastAPI and Flask. 0.3% fee, zero config.
Project-URL: Homepage, https://l402kit.com
Project-URL: Documentation, https://l402kit.com/docs
Project-URL: Repository, https://github.com/ShinyDapps/l402-kit
Project-URL: npm package, https://npmjs.com/package/l402-kit
License: MIT
Keywords: ai-agent,api,api-billing,api-gateway,api-monetization,bitcoin,bitcoin-wallet,blink,blockchain,bolt11,btc,cripto,criptomoeda,crypto,crypto-wallet,cryptocurrency,dapp,dapps,decentralized,decentralized-app,defi,defi-payment,developer,developer-tools,fastapi,flask,http402,l2,l402,layer-2,layer2,lightning,lightning-network,lightning-wallet,llm,lnbits,lnurl,machine-learning,metered-api,micropayments,middleware,monetize,opennode,pay-per-call,payment-gateway,paywall,satoshi,sats,sdk,tools,wallet,web3
Requires-Python: >=3.11
Requires-Dist: httpx>=0.27
Provides-Extra: dev
Requires-Dist: fastapi>=0.110; extra == 'dev'
Requires-Dist: httpx>=0.27; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Provides-Extra: fastapi
Requires-Dist: fastapi>=0.110; extra == 'fastapi'
Provides-Extra: flask
Requires-Dist: flask>=3.0; extra == 'flask'
Description-Content-Type: text/markdown

# 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](https://img.shields.io/pypi/v/l402kit?color=3776ab&label=pypi)](https://pypi.org/project/l402kit)
[![PyPI downloads](https://img.shields.io/pepy/dt/l402kit?color=3776ab&label=total%20downloads)](https://pypi.org/project/l402kit)
[![Python](https://img.shields.io/pypi/pyversions/l402kit?color=3776ab)](https://pypi.org/project/l402kit)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/ShinyDapps/l402-kit/blob/main/LICENSE)

```bash
pip install l402kit
```

📖 **Docs / Documentação / Documentation:**

[🇺🇸 English](https://l402kit.com/docs) · [🇧🇷 Português](https://l402kit.com/docs/pt/introduction) · [🇪🇸 Español](https://l402kit.com/docs/es/introduction) · [🇨🇳 中文](https://l402kit.com/docs/zh/introduction) · [🇮🇳 हिंदी](https://l402kit.com/docs/hi/introduction) · [🇸🇦 العربية](https://l402kit.com/docs/ar/introduction) · [🇫🇷 Français](https://l402kit.com/docs/fr/introduction) · [🇩🇪 Deutsch](https://l402kit.com/docs/de/introduction) · [🇷🇺 Русский](https://l402kit.com/docs/ru/introduction) · [🇯🇵 日本語](https://l402kit.com/docs/ja/introduction) · [🇮🇹 Italiano](https://l402kit.com/docs/it/introduction)

---

## 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)

```python
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

```python
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

```bash
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

```python
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

```python
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.

```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

```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": "Pagamento confermato."}
```

### Flask — avvio rapido

```python
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 | Sì | **Impossibile** |
| Supporto agenti IA | No | **Sì** |
| Globale | No (~50 paesi bloccati) | **Sì — 0 frontiere** |

---

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

```python
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
```

- Anti-replay: each preimage works exactly once
- Expiry: tokens expire after 1 hour
- Open source: [github.com/ShinyDapps/l402-kit](https://github.com/ShinyDapps/l402-kit)

---

## 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](https://dashboard.blink.sv) (free, no credit card) and use `BlinkProvider` with your API key.

---

## Links

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

---

## License

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

<p align="center">Built with ⚡ by <a href="https://github.com/ShinyDapps">ShinyDapps</a></p>
