Skip to main content

pink-agentic-payments

Pink Agentic AI Payments lets AI agents pay within spending rules you set: every payment is checked against per-agent budgets, caps, payee allow-lists and approval rules before a single-use credential is issued.

This is the Python client for Pink Agentic AI Payments by PinkWallet, published by the Pink team. Version 0.1 targets the public sandbox. The sandbox is free, needs no signup, uses test money only, and is meant for building and demoing agent integrations. Production is early access; see the waitlist at pinkwallet.com/agentic.

JavaScript/TypeScript: https://github.com/Pink-Agentic-Payments/pink-agentic-payments-js

Design partners wanted: free hands-on setup and early access during the design-partner period, at agentic-sandbox.pinkwallet.com/demo. Reach us at support@pinkwallet.com or open an issue titled "Design partner" in this repo.

Other ways to use Pink: MCP server, Vercel AI SDK tools, LangChain/LangGraph tools, n8n node, JS/TS client — see the packages table.

Install

pip install pink-agentic-payments

Or install straight from GitHub:

pip install git+https://github.com/Pink-Agentic-Payments/pink-agentic-payments-python

Quickstart

This really runs against the live sandbox (no signup, no API key to request in advance):

from pink_agentic_payments import create_sandbox_workspace, PinkClient, PinkPolicyDenied, PinkApprovalPending

# 1. Spin up a free sandbox workspace (test money, seeded with agents/payees/rules)
workspace = create_sandbox_workspace(company="My Test Co", template="coffee")
agent_key = workspace["agents"][0]["key"]  # e.g. "Purchasing AI"
print("workspace:", workspace["workspace_id"])

client = PinkClient(agent_key)

# 2. Dry-run a payment (no spend, no side effects)
check = client.check_policy(amount=420, payee_id="p_cc", purpose="beans")
print(check["decision"], "-", check["reason"])  # would_allow - Small supply orders go through

# 3. Make a real (sandbox) payment
try:
    result = client.request_payment(amount=420, payee_id="p_cc", purpose="beans")
    print("allowed, credential:", result["credential"]["type"])
except PinkApprovalPending as e:
    print("pending human approval:", e.payload["who"])
except PinkPolicyDenied as e:
    print("blocked:", e.payload["rule"])

The three outcomes

Every payment request resolves to one of three decisions, each a different HTTP status from the sandbox:

Decision HTTP What happens Client behavior
allowed 201 A one-time sandbox credential (card or bank transfer) is issued immediately request_payment() returns the result
pending_human 202 A human must approve in /console or via the admin API request_payment() raises PinkApprovalPending
blocked 403 No credential, ever, for this exact request request_payment() raises PinkPolicyDenied

Real sandbox output captured while building this package (run examples/quickstart.py to reproduce it):

allowed:  payment_id=pay_... decision=allowed credential.type=bank_transfer
blocked:  payment_id=pay_... decision=blocked rule="Never: gift cards, cash-like, crypto"
pending:  payment_id=pay_... decision=pending_human who="Maya Chen (Owner)"

Using it as an MCP server instead

The same sandbox is also a remote MCP server at /mcp, with tools pink.get_budget, pink.list_payees, pink.list_rules, pink.check_policy, pink.request_payment, pink.get_credential, pink.report_receipt. Get a ready-to-paste client config:

from pink_agentic_payments import print_mcp_config
print(print_mcp_config(agent_key))
{
  "mcpServers": {
    "pink-agentic-payments-sandbox": {
      "type": "streamableHttp",
      "url": "https://agentic-sandbox.pinkwallet.com/mcp",
      "headers": { "Authorization": "Bearer pk_sandbox_agent_..." },
      "disabled": false,
      "autoApprove": []
    }
  }
}

This is the remote-MCP-over-HTTP config shape documented for Cline; Claude Desktop and Cursor accept the same url + headers shape for remote MCP servers.

Sandbox vs. production

  • Everything this client talks to is the public sandbox: test credentials (pk_sandbox_agent_... / pk_sandbox_admin_...), seeded fake balances, one-time fake cards/transfers. No real money ever moves.
  • Production for Pink Agentic AI Payments is early access (waitlist, not yet generally available): pinkwallet.com/agentic.
  • Workspaces and keys created in the sandbox can appear/disappear without notice; do not rely on them for anything but development and demos.

Development

pip install -e . pytest
pytest
python examples/quickstart.py  # hits the live sandbox, creates one workspace

License

MIT, see LICENSE.

Metadata

Release files for pink-agentic-payments 0.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 pink-agentic-payments 0.1.0
File Size Uploaded
pink_agentic_payments-0.1.0.tar.gz 11.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pink-agentic-payments 0.1.0
File Interpreter ABI Platform
pink_agentic_payments-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.6 kB

Release files / pink_agentic_payments-0.1.0.tar.gz

Download URL pink_agentic_payments-0.1.0.tar.gz
Size 11.2 kB
Tags Source
SHA-256 checksum
How to use checksums
76164dbc899eafb7a9a5255ca42c0c7098e37e71d037153a169161104e102c59
BLAKE2b-256 checksum
How to use checksums
50eecdbe73531aa06c3c385d5061db65d0bde86db8ac459d9fd7aadbadcc01d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release files / pink_agentic_payments-0.1.0-py3-none-any.whl

Download URL pink_agentic_payments-0.1.0-py3-none-any.whl
Size 10.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b665d0c51560e83d8c6904c7f24267f56b0c31956f577b93d023a64566f797f5
BLAKE2b-256 checksum
How to use checksums
0d32629bfff28d45f8f005723603a47ee3cc195de764d963fc37e8e455a779f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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