Skip to main content

aifinpay-agent (Python)

Stable 2.0.0 release. Native auth now requires a request-bound v2 challenge from the coordinated backend update. auth_headers() refuses the retired unbound proof, and legacy paid call() settlement is disabled; free provider responses still pass through. Python does not yet expose Node's verified v1.3 fetchPaid executor.

Non-custodial multi-facilitator x402 payment client for autonomous AI agents on AiFinPay — canonical domain aifinpay.io (the legacy aifinpay.company host is retired). SDK wallet derivation supports EVM and Solana identities; a wallet address alone does not mean a payment route is enabled.

agent.pay(url) works against:

  • AiFinPay native flow (Solana Seat PDA + Ed25519)
  • Coinbase x402 spec — detection + parsing today; on-chain settlement coming in 0.3.x

The Ed25519 keypair is generated locally and never leaves your process. The SDK auto-detects the facilitator flavor on a 402 response and builds the right auth payload (three-headers for AiFinPay, base64 PAYMENT-SIGNATURE for Coinbase x402).

Install

# install stable
pip install aifinpay-agent

Development setup

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt -e .

Quick start

from aifinpay import Agent, PayOptions

# Generate a fresh keypair locally — never transmitted
agent = Agent.new()
print("Fund this address:", agent.address)
print("Save this secret:", agent.secret_b58)  # store securely!

# Wait until the wallet has at least $0.01 worth on-chain
agent.wait_for_funding(min_usd_cents=1)

# Request an invoice for a Seat (USDC on Solana)
invoice = agent.reserve_seat_invoice(amount_usd=1.00, asset="USDC")
print("Invoice:", invoice.raw)
# Build + sign + submit the Solana transaction with @solana/web3.js, anchorpy,
# or solana-py — the invoice contains program_id, treasury_vault, mints, etc.

# Generic x402 — auto-detects facilitator, signs, retries
resp = agent.pay("https://aifinpay.io/api/stats")
print(resp.json())

# Pay any third-party x402 endpoint (e.g. Coinbase x402-protected API)
resp = agent.pay(
    "https://api.example.com/v1/data",
    method="POST",
    json={"q": "hello"},
    options=PayOptions(max_amount_usd=0.10),  # refuse if cost > $0.10
)

Loading an existing keypair

# from solana-keygen JSON file
agent = Agent.from_keypair_file("~/agent-wallet.json")

# from base58 secret string
agent = Agent.from_secret_b58("3RvZm7Gw...")

How x402 auth works under the hood

agent.pay(url):

  1. Sends the request unauthenticated.
  2. On 402, inspects the response and picks a facilitator adapter:
    • AiFinPayprotocol: "AiFinPay vX" field in JSON body, or agreement_hash + treasury_vault fingerprint
    • Coinbase x402PAYMENT-REQUIRED HTTP header
  3. Builds the right auth payload:
    • AiFinPay → reads x-nonce from the 402 body (no extra round-trip), computes SHA-256("AiFinPay-x402:{nonce}:{pubkey}"), signs with Ed25519, sets x-agent-pubkey, x-nonce, x-signature headers
    • Coinbase x402 → builds a PaymentPayload, base64-encodes, sets PAYMENT-SIGNATURE (settlement coming in 0.3)
  4. Retries the original request with the auth attached.

The server verifies the signature, checks the agent's on-chain payment proof (Seat PDA for AiFinPay, settled tx for Coinbase x402), and serves the resource.

Privacy

  • The server never sees your private key. Period.
  • Nonces are consumed on use; replay-resistant.
  • All transactions are public and on-chain — Solana + Polygon mainnet.

License

MIT.

Release files for aifinpay-agent 2.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aifinpay-agent 2.1.0
File Size Uploaded
aifinpay_agent-2.1.0.tar.gz 49.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aifinpay-agent 2.1.0
File Interpreter ABI Platform
aifinpay_agent-2.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 86.5 kB

Release files / aifinpay_agent-2.1.0.tar.gz

Download URL aifinpay_agent-2.1.0.tar.gz
Size 49.0 kB
Tags Source
SHA-256 checksum
How to use checksums
64d802f60976e3f88d2b79c3f7245d1b0f991395a8882abb90c85396b069e5d5
BLAKE2b-256 checksum
How to use checksums
77684e2a702b66ee4c4193dcfc25c6b0d7a8474f8a1ee54ea5431b607e0c63f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release files / aifinpay_agent-2.1.0-py3-none-any.whl

Download URL aifinpay_agent-2.1.0-py3-none-any.whl
Size 37.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9811adcb8f08f1d5dfd2ec66b7793cf0c52d4dbdd80eda3cb5067657d85bd086
BLAKE2b-256 checksum
How to use checksums
27c311ffede8a76b68c1aab20a0396a09596058f5215b4fd0b297bff76788a5f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page