Skerry/ Reference/ Agents paying
Agent payments create
post/agent-payments
Send the agent's request to a merchant and, when it answers 402, pay one offer and send the request once more. Returns the merchant's status, an excerpt of its body and what was paid. max_amount is a ceiling in US cents; the merchant's exact amount is what is paid. Under the agent's mandates and the customer's controls: it may be refused, or held for approval (202). Pays at most once per key. Needs an Idempotency-Key.
Before you call
- Credential
Authorization: Bearer $KEY- Scope
agent-payments:write- Moves money
yes- Idempotency
required- Untrusted
response.body, reason, merchant.url, external_ref
Parameters
- Idempotency-KeystringrequiredHeader. A repeat with the same key and body returns the first answer instead of acting twice.
Request bodyapplication/json, required
- agent_idstringrequiredThe registered agent that pays. At most 100 characters.
- wallet_idstringThe agent's wallet to sign from. Left out, its newest active wallet is used. At most 100 characters.
- urlstring (uri)requiredThe merchant's address: public, https, a host name. At most 2000 characters.
- methodstringOne of: GET, POST, PUT, PATCH, DELETE.
- headersobjectHeaders sent to the merchant. The ones a payment is carried in may not be set.
- bodystring or objectSent to the merchant as it is; an object is sent as JSON. Up to 64 KB.
- max_amountintegerrequiredThe most that may be paid, in US cents. What is paid is the merchant's exact amount. At least 1.
- currencystringrequiredOne of: usd.
- payment_method_idstringA saved payment method a delegated payment token is issued on, for a merchant that takes one. At most 200 characters.
- external_refstringThe document this belongs to in your own system. At most 200 characters.
- external_kindstringOne of: invoice, bill, order, booking, other.
- dry_runbooleanCheck the request and report what would happen, without doing it.
Responses
- 200Success.
- 202requires_approval — Not an error: the operation is held for a person. The body names the approval.
- 400price_below_minimum — The price is below the smallest single payment for a method (
detail.method,detail.minimum), or has a part of a cent. Setcredit_only, raise the price, or drop the method. - 401dpop_invalid — The token is bound to a key and the DPoP proof was missing, wrong for this request, or already used.
- 402payment_failed — The payer's bank or card refused.
detail.reasonsays why in plain terms. - 403agent_payment_over_max — The merchant asks for more than
max_amount. Nothing was signed.detail.asked_minoris the lowest price asked, in US cents. - 404not_found — No such object in this project — including one that belongs to somebody else.
- 409token_not_issued — A delegated payment token could not be issued ready to use, for instance because the payer would have to act. Nothing was sent to the merchant.
- 429too_many_waiters — This key already has as many requests waiting (
?wait=) as it may. Let one finish, or read without wait. - 500internal_error — Ours. Quote the
request_idand we can find the call. - 502platform_error — A provider failed. Safe to retry with the same Idempotency-Key.
- 503oauth_unavailable — The authorisation server's keys could not be read, so tokens cannot be checked. API keys still work.