AgentaOS Transactions API
The unified activity feed: every inbound payment and outbound send, across every rail, in one list.
The unified activity feed: every inbound payment and outbound send, across every rail, in one list.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/agentaos-ai:agentaos-ai-transactions-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Agentaos Ai Transactions API
version: 1.0.0
contact:
name: AgentaOS
url: https://agentaos.ai
license:
name: Proprietary
url: https://agentaos.ai
description: 'Operations tagged Transactions across 2 of this provider''s published API definitions: agentaos-ai-openapi.json, openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.agentaos.ai/api/v1
description: Production
security:
- ApiKeyAuth: []
tags:
- name: Transactions
description: 'The unified activity feed: every inbound payment and outbound send, across every rail, in one list.'
paths:
/gateway/transactions/{id}/refund-request:
post:
tags:
- Transactions
operationId: requestRefund
summary: Ask for a refund
description: 'Asks AgentaOS to refund a sale in full. Works in test and live; the key you sign with decides the mode. The request moves no money: AgentaOS reviews it within 2 business days, usually the same day, and either refunds the whole amount, VAT included, or declines it with a note. While the request is open the sale is held out of your payouts. There is no webhook for the outcome: the sale''s `mor_status` becomes `refunded`. A refund does not cancel a subscription. There is no request body. Calling it again while a request is open returns that same request, not an error; a declined request can be asked again. A sale still `held` can be refunded. Returns `400` with the message `This sale cannot be refunded: `, where the reason is `already_refunded`, `disputed`, `status_not_refundable` or `not_mor_capture`; `403` when your user is not a member of the business; and `404` (`Sale not found`) when the sale is not yours in this mode.'
parameters:
- name: id
in: path
required: true
description: 'The sale''s transaction `id`: from the transactions list, or a `checkout.session.completed` event''s id without the `evt_` prefix.'
schema:
type: string
format: uuid
responses:
'201':
description: The request as recorded, or the request already open for this sale.
content:
application/json:
schema:
$ref: '#/components/schemas/RefundRequest'
example:
captureId: 8c7d6e5f-4a3b-2c1d-0e9f-8a7b6c5d4e3f
status: requested
requestedAt: '2026-10-20T10:31:05.609Z'
decidedAt: null
note: null
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
servers:
- url: https://api.agentaos.ai/api/v1
description: Production
/gateway/all-transactions:
get:
tags:
- Transactions
operationId: listTransactions
summary: List transactions
description: 'One unified list of everything that moved money on your account: inbound payments (from checkouts and payment links) and outbound sends, across every rail (card, SEPA bank transfer, stablecoins on-chain), in one feed. Only `confirmed` rows are returned: a pending or failed attempt never appears here; `status` on each item is always `confirmed`.'
parameters:
- name: direction
in: query
required: false
schema:
type: string
enum:
- all
- inbound
- outbound
default: all
- $ref: '#/components/parameters/From'
- $ref: '#/components/parameters/To'
- $ref: '#/components/parameters/FiatCurrency'
- $ref: '#/components/parameters/NetworksFilter'
- $ref: '#/components/parameters/Limit5000'
- $ref: '#/components/parameters/Offset'
responses:
'200':
description: A page of transactions.
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionListResponse'
examples:
default:
$ref: '#/components/examples/TransactionListExample'
'401':
$ref: '#/components/responses/Unauthorized'
servers:
- url: https://api.agentaos.ai/api/v1
description: Production
components:
parameters:
FiatCurrency:
name: fiatCurrency
in: query
required: false
description: Filter to rows settled/presented in this fiat currency.
schema:
type: string
enum:
- EUR
- USD
Limit5000:
name: limit
in: query
required: false
description: Items per page. Capped server-side at 5000.
schema:
type: integer
default: 20
minimum: 1
maximum: 5000
From:
name: from
in: query
required: false
description: ISO 8601 date or datetime, inclusive lower bound.
schema:
type: string
NetworksFilter:
name: networks
in: query
required: false
description: Comma-separated CAIP-2 network IDs to filter by, e.g. `eip155:8453,eip155:84532`. Ignored if your API key is network-scoped.
schema:
type: string
To:
name: to
in: query
required: false
description: ISO 8601 date or datetime, inclusive upper bound.
schema:
type: string
Offset:
name: offset
in: query
required: false
description: Number of items to skip, for the next page.
schema:
type: integer
default: 0
minimum: 0
responses:
NotFound:
description: Resource not found (or not visible to your key; the two are not distinguished).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
statusCode: 404
message: Payment link not found
timestamp: '2026-08-06T12:00:00.000Z'
Unauthorized:
description: Missing or invalid `x-api-key`.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
statusCode: 401
message: Invalid API key
timestamp: '2026-08-06T12:00:00.000Z'
BadRequest:
description: A required field is missing, out of range, or the wrong type. `ValidationPipe` also rejects any field not in the documented schema.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
statusCode: 400
message: amount is required when creating a session without a link
timestamp: '2026-08-06T12:00:00.000Z'
schemas:
Transaction:
type: object
additionalProperties: true
description: '`status` is always `confirmed`. Where the sale''s money stands is `mor_status`, with `disputed_at`, `charged_back_at` and `refunded_at` saying when. Any other field not listed here is internal: treat it as forward-compatible and safe to ignore.'
properties:
mor_status:
type:
- string
- 'null'
enum:
- held
- available
- paid_out
- refunded
- disputed
- charged_back
- null
description: 'Where the sale''s money stands: `held` until the hold period ends, `available` when payable, `paid_out` once paid to you, `refunded` after a refund, `disputed` while a dispute is open, `charged_back` when a dispute was lost. A won dispute returns the sale to `refunded` if it was refunded, `paid_out` if it had been paid to you, and `available` otherwise. `null` for a sale that is not a card or bank-transfer sale. A lost dispute and a refund send no webhook; this field is where you see them.'
disputed_at:
type:
- string
- 'null'
format: date-time
description: When a dispute was opened on this sale. It stays set after the dispute is won. Null if the sale was never disputed.
dispute_won_at:
type:
- string
- 'null'
format: date-time
description: When a dispute on this sale was won, or a bank inquiry about it closed without a chargeback. Null otherwise.
charged_back_at:
type:
- string
- 'null'
format: date-time
description: When a dispute on this sale was lost and the money reversed. Null otherwise.
refunded_at:
type:
- string
- 'null'
format: date-time
description: When the sale was refunded. Null otherwise.
id:
type: string
format: uuid
direction:
type: string
enum:
- inbound
- outbound
amount:
type: number
description: Presentment amount, currency units, in payment_token/settlement_token.
payment_token:
type: string
description: What the buyer paid with, e.g. EURC, card.
settlement_token:
type: string
description: What settled to your balance.
status:
type: string
const: confirmed
description: Always confirmed on this endpoint.
payment_method:
type:
- string
- 'null'
enum:
- card
- sepa
- bank_transfer
- bridge
- wallet
- null
description: How the buyer actually paid, independent of network.
payer_type:
type: string
enum:
- human
- agent
payer_address:
type:
- string
- 'null'
description: On-chain payer wallet. null for card/bank rails.
tx_hash:
type:
- string
- 'null'
description: null for card/bank rails, use vendor_reference there instead.
vendor_reference:
type:
- string
- 'null'
description: Off-chain audit reference (card-processor payment reference, bank reference). Mutually exclusive with tx_hash.
network:
type: string
description: '`card` for a card payment, `bank_transfer` for a bank transfer, or a CAIP-2 network ID such as `eip155:8453` for a stablecoin payment.'
seller_of_record:
type: string
enum:
- aristokrates_ou
- merchant
description: aristokrates_ou for a Merchant of Record card sale, merchant for everything else.
invoice_id:
type:
- string
- 'null'
format: uuid
description: The matching invoice, joined for convenience. null for outbound rows.
payment_link_id:
type:
- string
- 'null'
format: uuid
session_id:
type:
- string
- 'null'
description:
type:
- string
- 'null'
created_at:
type: string
format: date-time
money:
$ref: '#/components/schemas/TransactionMoney'
required:
- id
- direction
- amount
- payment_token
- settlement_token
- status
- payment_method
- payer_type
- payer_address
- tx_hash
- vendor_reference
- network
- seller_of_record
- invoice_id
- payment_link_id
- session_id
- description
- created_at
- money
Error:
type: object
description: Every non-2xx response is JSON in this shape. Every response (success or error) also carries an `x-request-id` response header; send that header on your request to have your own id echoed back, otherwise the server mints one. On errors the same id is repeated in the `requestId` body field.
properties:
statusCode:
type: integer
description: Same as the HTTP status code.
code:
type: string
description: 'Present on some refusals: a stable machine-readable reason, e.g. `live_key_required`.'
message:
description: Human-readable. A validation failure (400) returns an array of per-field messages instead of one string.
anyOf:
- type: string
- type: array
items:
type: string
errors:
type: array
description: 'Present on 400 validation failures: one entry per invalid field. The flat human-readable strings stay in `message` for back-compat; this is the machine-readable, per-field view.'
items:
type: object
properties:
field:
type: string
description: Name of the invalid field, dot-notated for nested properties (e.g. `checkoutFields.0.type`).
message:
type: string
description: Validation messages for that field, joined with `, `.
required:
- field
- message
requestId:
type: string
description: Correlation id, identical to the `x-request-id` response header. Include it when contacting support. On success it is available on the header only, not the body.
timestamp:
type: string
format: date-time
required:
- statusCode
- message
- timestamp
TransactionListResponse:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Transaction'
total:
type: integer
hasMore:
type: boolean
required:
- items
- total
- hasMore
RefundRequest:
type: object
properties:
captureId:
type: string
format: uuid
description: The sale the request is about.
status:
type: string
enum:
- requested
- executed
- declined
description: '`requested` while AgentaOS reviews it, `executed` once the buyer was refunded, `declined` with a note.'
requestedAt:
type: string
format: date-time
decidedAt:
type:
- string
- 'null'
format: date-time
note:
type:
- string
- 'null'
description: AgentaOS's reason on a decline, shown to you. Null otherwise.
required:
- captureId
- status
- requestedAt
- decidedAt
- note
TransactionMoney:
type: object
description: Render-ready breakdown, computed server-side so you never sum this yourself. All values integer minor units in money.currency.
properties:
currency:
type: string
description: ISO 4217, upper-case.
grossMinor:
type: integer
description: Your ex-VAT sale base (feeMinor + netMinor). The buyer paid grossMinor + vatMinor.
feeMinor:
type: integer
description: AgentaOS's commission alone, 0 when none. Never includes VAT.
vatMinor:
type: integer
description: Destination VAT AgentaOS collected and remits as Merchant of Record. On top of grossMinor, never your revenue.
netMinor:
type: integer
description: What actually reaches your balance (grossMinor - feeMinor).
required:
- currency
- grossMinor
- feeMinor
- vatMinor
- netMinor
examples:
TransactionListExample:
value:
items:
- id: 8c7d6e5f-4a3b-2c1d-0e9f-8a7b6c5d4e3f
payment_link_id: 3f1a2b4c-5d6e-7f8a-9b0c-1d2e3f4a5b6c
session_id: mZrESFyR7RC9RPsJfZCVkg
org_id: 9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
direction: inbound
payer_address: null
payer_type: human
amount: 49.99
payment_token: EURC
settlement_token: EURC
status: confirmed
tx_hash: null
vendor_reference: pi_3P...
network: card
to_address: null
recipient_label: null
description: 'Order #123'
payment_method: card
seller_of_record: aristokrates_ou
invoice_id: b2c3d4e5-f6a7-8b9c-0d1e-2f3a4b5c6d7e
created_at: '2026-08-06T12:05:00.000Z'
environment: live
money:
currency: EUR
grossMinor: 4999
feeMinor: 215
vatMinor: 0
netMinor: 4784
total: 214
hasMore: true
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: 'Your secret key, from app.agentaos.ai -> Settings -> Developers -> API Keys. The key''s prefix is both its identity and its environment: `sk_test_...` (sandbox, free, no verification) or `sk_live_...` (real money, requires business verification). A missing or invalid key returns 401.'
x-refined-from:
- agentaos-ai-openapi.json
- openapi.json