Send a payment to be checked, with an idempotency key. Axiom checks it against the policy you granted
and returns an accepted response or an error before any payment provider/bank handoff. Every request
carries a request_id you can use to look up its audit trail.
The concepts
The core concepts behind the first developer workflow.
payment request
A request to move money
An agent prepares a payment request with an owned agent_id, an amount in minor units, merchant identifiers, and the authority you delegated. Nothing executes until Axiom checks it.
Idempotency-Key
Safe to retry
Send an idempotency key with each request. Retrying with the same key returns the original decision instead of creating a duplicate.
response
accepted or error
Axiom verifies identity, permission, merchant and amount controls. A successful response is accepted; policy denials and verification failures return an error response with its own request_id.
request_id
One ID, full trace
Every request returns a request_id. Use it to look up the audit trail for what was checked and decided.
Quickstart
Three calls: send a payment to be checked, inspect the immediate response, and look up the audit trail. Examples use $AXIOM_API_BASE as a placeholder for the API base URL provided during pilot setup.
1 · create-payment.sh
# Auth/session transport is issued during pilot onboardingcurl -X POST "$AXIOM_API_BASE/v1/payments" \ -H "Idempotency-Key: req_3f29a1c4" \ -H "Content-Type: application/json" \ -d '{ "agent_id": "a6064a27-3705-4f25-a5f4-2c6a5a58173d", "amount_minor": 24800, "currency": "GBP", "merchant_id": "merchant.amazon.co.uk", "merchant_ref": "ord_123" }'
2a · response — accepted
{"status": "accepted","payment_id": "pay_sbx_4f8fa65b8d7f0e5ec3ca0f07","request_id": "req_3f29a1c4",}# Accepted = handed to the payment provider/bank for# execution. Not settled, not final.
2b · response — policy deny
{"request_id": "req_88c0d1e2","error_code": "payment_policy_violation","message": "payment policy violation: limit_exceeded"}# Blocked before any payment provider/bank handoff.# The reason is recorded as evidence.
3 · look-up-audit-trail.sh
# Follow any request from action to decision by request_idcurl"$AXIOM_API_BASE/v1/audit/requests/req_3f29a1c4" \# → the trace: what was checked, the decision, the reason,# and payment provider/bank dispatch visibility. No secrets are included.
Endpoints
The surfaces available today. Stripe-first payment-control workflows. The base URL is issued during onboarding, so examples keep it abstract.
POST/v1/paymentsSend a payment to be checked before execution
GET/v1/audit/requests/{request_id}Look up the audit trail for a request
GET/v1/agentsList delegated agents and their granted policy
What this is, and is not. Axiom checks payment requests before execution and records the audit trail.
Accepted means the request passed policy and was handed to the payment provider/bank; it does
not mean the payment is settled or final. Evidence shows what Axiom checked, what it decided,
and what happened next where available.