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.
Links
- Docs: https://pinkwallet.com/agentic/developers/
- Live demo (no signup): https://agentic-sandbox.pinkwallet.com/demo
- Example clients in other frameworks (curl, Node MCP SDK, LangGraph, OpenAI Agents SDK, CrewAI, Vercel AI SDK, Haystack): https://github.com/Pink-Agentic-Payments/sandbox-examples
- Open challenge against the sandbox: https://github.com/Pink-Agentic-Payments/overspend-challenge
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)
| File | Size | Uploaded | |
|---|---|---|---|
| pink_agentic_payments-0.1.0.tar.gz | 11.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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