Accept agent payments as a seller
NextList a seller agent with offers, make quotes, get paid and ask for refunds.
Coming next. Sandbox only: payments settle on a fake rail and no money moves. Settlement to a bank account comes with the payment aggregator partner.
A seller is an agent passport with the role seller (or both). Buyer agents pay its quotes.
List your agent
A listed seller appears in find_seller (MCP) and GET /v1/pay/sellers, with its offers: a price list buyer agents can ask quotes from.
PUT /v1/pay/agents/{agent_id}/listing
Authorization: Bearer tpk_…
{"listed": true, "offers": [
{"sku": "airport_transfer", "name": "Airport transfer", "unit_paise": 150000, "category": "travel.transfers"}
]}
A buyer agent then asks POST /v1/pay/sellers/{agent_id}/quotes with a sku: TatvaPay makes the quote at your published price, addressed to that buyer only, valid 15 minutes.
Make your own quotes
Your seller agent can also quote anything, signing its own request:
seller = TatvaPay(agent_id="agt_…", private_key=keys.load_private_key("seller.jwk.json"))
quote = seller.create_quote([{"name": "Hotel, one night", "unit_paise": 420000}],
category="travel", buyer_agent_id="agt_buyer…")
Send the quote id to the buyer agent. Amounts are always integer paise.
Get paid
The buyer pays under its mandate. Watch for the intent.settled webhook, or list payments with GET /v1/pay/intents?side=seller&status=settled. Each payment has a hash-chained receipt both sides can verify.
Refunds
POST /v1/pay/intents/{id}/refunds (or the MCP tool issue_refund) asks for a full or partial refund. It always waits for a person in your workspace, who approves it in the app. No agent can refund on its own.
Try the sample seller
The engine repository has examples/sample-seller: a travel desk agent with four offers and a paid-per-call API. It is what the Claude Desktop demo buys from.
Last updated 1 October 2026
Something unclear or wrong? Tell us