Metadata-Version: 2.1
Name: agent-payment-sdk
Version: 0.5.0
Summary: Payment infrastructure SDK for AI agents — crypto, card, and ACH in one SDK
Home-page: https://agentpayment.network
Author: AgentPayment.Network
Author-email: support@agentpayment.network
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Office/Business :: Financial
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.28.0
Provides-Extra: crypto
Requires-Dist: web3>=6.0.0; extra == "crypto"
Requires-Dist: eth-account>=0.9.0; extra == "crypto"

# agent-payment-sdk

Python SDK for [AgentPayment Network](https://agentpayment.network) — the only hybrid crypto + fiat payment infrastructure built for autonomous AI agent-to-agent transactions.

## Installation
```bash
pip install agent-payment-sdk
```

## Quick Start
```python
from agent_payment_sdk import AgentPaymentClient

client = AgentPaymentClient(
    api_key="your_api_key",
    base_url="https://agentpayment.network"
)

# Send a payment
payment = client.send_payment(
    from_agent_id="your_agent_id",
    to_agent_id="receiver_agent_id",
    amount=10.00,
    payment_method="crypto"  # "crypto", "stripe_card", or "ach"
)
print(payment)
```

Get your API key by signing up at [agentpayment.network](https://agentpayment.network).

## Payment Rails

### Crypto (ETH on Base Mainnet)
```python
payment = client.send_payment(
    from_agent_id="agent_123",
    to_agent_id="agent_456",
    amount=5.00,
    payment_method="crypto"
)
```

### Stripe Card
```python
payment = client.send_payment(
    from_agent_id="agent_123",
    to_agent_id="agent_456",
    amount=25.00,
    payment_method="stripe_card",
    payment_method_id="pm_your_stripe_pm_id"
)
```

### ACH Bank Transfer
```python
payment = client.send_payment(
    from_agent_id="agent_123",
    to_agent_id="agent_456",
    amount=100.00,
    payment_method="ach",
    payment_method_id="your_plaid_payment_method_id"
)
```

## Agent-to-Agent Billing

Provider agents can autonomously invoice consumer agents. Consumer agents can set auto-approval rules so payments execute instantly with no human required.

### Create an Invoice (Provider Agent)
```python
invoice = client.create_invoice(
    from_agent_id="provider_agent",
    to_agent_id="consumer_agent",
    amount=15.00,
    currency="USD",
    payment_rail="crypto",
    description="API usage fee - 1000 requests"
)
print(f"Invoice ID: {invoice['invoice_id']}")
print(f"Status: {invoice['status']}")
```

### Set Auto-Approval Rule (Consumer Agent)
```python
rule = client.set_billing_rule(
    agent_id="consumer_agent",
    approved_provider_id="provider_agent",
    max_amount=50.00,
    payment_rail="crypto"
)
# Now any invoice from provider_agent under $50 will auto-pay instantly
```

### Pay an Invoice Manually
```python
result = client.approve_invoice(
    invoice_id="invoice_uuid",
    agent_id="consumer_agent"
)
print(f"Paid: {result['status']}")
```

### List Invoices
```python
invoices = client.list_invoices(agent_id="your_agent_id")
for inv in invoices:
    print(f"{inv['invoice_id']} — ${inv['amount']} — {inv['status']}")
```

## Webhooks

Subscribe to payment events so your agent gets notified instantly.
```python
# Register a webhook endpoint
webhook = client.create_webhook(
    url="https://your-agent.com/webhooks",
    events=["payment.completed", "payment.failed", "invoice.paid"]
)
print(f"Webhook secret: {webhook['secret']}")
```

Verify incoming webhooks with HMAC-SHA256:
```python
import hmac, hashlib

def verify_webhook(payload: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(secret.encode(), payload, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature)
```

## Error Handling
```python
from agent_payment_sdk import PaymentError, NetworkError

try:
    payment = client.send_payment(
        from_agent_id="agent_123",
        to_agent_id="agent_456",
        amount=10.00,
        payment_method="crypto"
    )
except PaymentError as e:
    print(f"Payment failed: {e}")
except NetworkError as e:
    print(f"Network error: {e}")
```

## Resources

- **Docs**: [agentpayment.network/docs](https://agentpayment.network/docs)
- **Live Demo**: [agentpayment.network/demo](https://agentpayment.network/demo)
- **PyPI**: [pypi.org/project/agent-payment-sdk](https://pypi.org/project/agent-payment-sdk/)
- **Support**: support@agentpayment.network

## License

MIT

## Sandbox vs Live

Every account gets a **sandbox twin agent** automatically on signup. Use it for testing — no real money moves.
```python
# Test with sandbox (from your welcome email)
client = AgentPaymentClient(api_key="your_sandbox_api_key")

payment = client.send_payment(
    from_agent_id="sandbox_youragentid",  # sandbox_ prefix
    to_agent_id="sandbox_receiveragentid",
    amount=10.00,
    payment_method="crypto"
)
# Simulated transaction — no real ETH spent

# Switch to live when ready
client = AgentPaymentClient(api_key="your_live_api_key")
```

Sandbox agents start with $1,000 simulated balance. Sandbox and live agents cannot interact — mixing them returns a `sandbox_live_mismatch` error.

## Fees

AgentPayment charges only our margin — third-party fees (Stripe, gas) are separate.

| Plan | Crypto | Card | ACH |
|------|--------|------|-----|
| Free | 0.5% | 0.5% | 0.5% |
| Pro | 0.3% | 0.3% | 0.3% |
| Business | 0.2% | 0.2% | 0.2% |
| Enterprise | Custom | Custom | Custom |

Stripe processing fees (2.9% + $0.30 card, 0.8% ACH) and gas fees (~$0.01) are charged separately.

## Hosted Setup Pages

No frontend? Use our hosted pages to set up payment methods:

**Card setup:**
```
https://agentpayment.network/setup-card.html?agent_id=YOUR_AGENT_ID&api_key=YOUR_API_KEY&callback_url=YOUR_CALLBACK
```

**Bank account setup:**
```
https://agentpayment.network/setup-bank.html?agent_id=YOUR_AGENT_ID&api_key=YOUR_API_KEY&callback_url=YOUR_CALLBACK
```

After completion, your `callback_url` receives `?status=success&payment_method_id=xxx&agent_id=xxx`.
