Hevn Inc Transactions API
The Transactions API from Hevn Inc — 9 operation(s) for transactions.
The Transactions API from Hevn Inc — 9 operation(s) for transactions.
openapi: 3.1.0
info:
title: HEVN 2FA Transactions API
description: Backend API for HEVN mobile neobank
version: 0.1.2
servers:
- url: https://api.hevn.finance
description: Production
tags:
- name: Transactions
paths:
/api/v1/transactions/export:
get:
tags:
- Transactions
summary: Export transactions
description: Export transactions as CSV or XLSX file.
operationId: export_transactions_api_v1_transactions_export_get
security:
- HTTPBearer: []
parameters:
- name: format
in: query
required: false
schema:
$ref: '#/components/schemas/TransactionExportFormat'
default: csv
- name: type
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated transaction types
title: Type
description: Comma-separated transaction types
- name: incomeOnly
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
title: Incomeonly
- name: tag
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated tags
title: Tag
description: Comma-separated tags
- name: status
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated unified statuses
title: Status
description: Comma-separated unified statuses
- name: contactId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated contact UUIDs
title: Contactid
description: Comma-separated contact UUIDs
- name: bank_account_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated bank account UUIDs
title: Bank Account Id
description: Comma-separated bank account UUIDs
- name: bankAccountId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated bank account UUIDs
title: Bankaccountid
description: Comma-separated bank account UUIDs
- name: cardId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated Card UUIDs
title: Cardid
description: Comma-separated Card UUIDs
- name: fromDate
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Fromdate
- name: toDate
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Todate
- name: q
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.
title: Q
description: Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/transactions:
get:
tags:
- Transactions
summary: Get user transactions
description: Get latest user transactions sorted by time.
operationId: get_transactions_api_v1_transactions_get
security:
- HTTPBearer: []
parameters:
- name: limit
in: query
required: false
schema:
type: integer
maximum: 200
minimum: 1
default: 50
title: Limit
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
default: 0
title: Offset
- name: sortBy
in: query
required: false
schema:
$ref: '#/components/schemas/TransactionSortBy'
default: date
- name: sortOrder
in: query
required: false
schema:
$ref: '#/components/schemas/SortOrder'
default: desc
- name: type
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated transaction types
title: Type
description: Comma-separated transaction types
- name: incomeOnly
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
title: Incomeonly
- name: tag
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated tags
title: Tag
description: Comma-separated tags
- name: status
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated unified statuses
title: Status
description: Comma-separated unified statuses
- name: contactId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated contact UUIDs
title: Contactid
description: Comma-separated contact UUIDs
- name: bank_account_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated bank account UUIDs
title: Bank Account Id
description: Comma-separated bank account UUIDs
- name: bankAccountId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated bank account UUIDs
title: Bankaccountid
description: Comma-separated bank account UUIDs
- name: cardId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated Card UUIDs
title: Cardid
description: Comma-separated Card UUIDs
- name: fromDate
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Fromdate
- name: toDate
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Todate
- name: q
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.
title: Q
description: Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedTransactionListResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/transactions/breakdown:
get:
tags:
- Transactions
summary: Transaction volume breakdown
description: Volume + count grouped by tag or type, with the same filters as the list.
operationId: get_transactions_breakdown_api_v1_transactions_breakdown_get
security:
- HTTPBearer: []
parameters:
- name: groupBy
in: query
required: true
schema:
$ref: '#/components/schemas/TransactionGroupBy'
description: Group by tag or type
description: Group by tag or type
- name: type
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated transaction types
title: Type
description: Comma-separated transaction types
- name: incomeOnly
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
title: Incomeonly
- name: tag
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated tags
title: Tag
description: Comma-separated tags
- name: status
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated unified statuses
title: Status
description: Comma-separated unified statuses
- name: contactId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated contact UUIDs
title: Contactid
description: Comma-separated contact UUIDs
- name: bank_account_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated bank account UUIDs
title: Bank Account Id
description: Comma-separated bank account UUIDs
- name: bankAccountId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated bank account UUIDs
title: Bankaccountid
description: Comma-separated bank account UUIDs
- name: cardId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated Card UUIDs
title: Cardid
description: Comma-separated Card UUIDs
- name: fromDate
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Fromdate
- name: toDate
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Todate
- name: q
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.
title: Q
description: Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionBreakdownResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/transactions/breakdown/series:
get:
tags:
- Transactions
summary: Transaction volume breakdown over time
description: 'Volume + count grouped by tag or type, split into time buckets across the fromDate..toDate range. Granularity is auto-picked: >6 months → month, >30 days → week, otherwise day. Empty periods are returned as zero-filled buckets so the frontend gets a complete x-axis. Same filter set as /transactions and /transactions/breakdown. `fromDate` and `toDate` are required.'
operationId: get_transactions_breakdown_series_api_v1_transactions_breakdown_series_get
security:
- HTTPBearer: []
parameters:
- name: groupBy
in: query
required: true
schema:
$ref: '#/components/schemas/TransactionGroupBy'
description: Group by tag or type
description: Group by tag or type
- name: type
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated transaction types
title: Type
description: Comma-separated transaction types
- name: incomeOnly
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
title: Incomeonly
- name: tag
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated tags
title: Tag
description: Comma-separated tags
- name: status
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated unified statuses
title: Status
description: Comma-separated unified statuses
- name: contactId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated contact UUIDs
title: Contactid
description: Comma-separated contact UUIDs
- name: bank_account_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated bank account UUIDs
title: Bank Account Id
description: Comma-separated bank account UUIDs
- name: bankAccountId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated bank account UUIDs
title: Bankaccountid
description: Comma-separated bank account UUIDs
- name: cardId
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated Card UUIDs
title: Cardid
description: Comma-separated Card UUIDs
- name: fromDate
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Fromdate
- name: toDate
in: query
required: false
schema:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Todate
- name: q
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.
title: Q
description: Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionBreakdownSeriesResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/transactions/{transaction_id}/details:
get:
tags:
- Transactions
summary: Get transaction details
description: Authenticated owners get the full UX (status auto-sync, document download links, crypto→internal repair). Unauthenticated callers must pass `?key=` with a share key issued by `POST /transactions/{id}/share`. Without auth and without a valid key the endpoint returns 401.
operationId: get_transaction_details_endpoint_api_v1_transactions__transaction_id__details_get
security:
- HTTPBearer: []
parameters:
- name: transaction_id
in: path
required: true
schema:
type: string
title: Transaction Id
- name: key
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Key
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionDetailResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/transactions/{transaction_id}/share:
post:
tags:
- Transactions
summary: Create a share link for a transaction
description: Owner-only. Creates a temp access key scoped to this transaction_id. Pass the raw key back to `GET /transactions/{id}/details?key=<key>` to fetch the receipt without auth.
operationId: create_transaction_share_link_api_v1_transactions__transaction_id__share_post
security:
- HTTPBearer: []
parameters:
- name: transaction_id
in: path
required: true
schema:
type: string
title: Transaction Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionShareLinkResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/transactions/{transaction_id}/tag:
post:
tags:
- Transactions
summary: Set transaction tag
description: Set or clear a tag on a transaction.
operationId: set_transaction_tag_api_v1_transactions__transaction_id__tag_post
security:
- HTTPBearer: []
parameters:
- name: transaction_id
in: path
required: true
schema:
type: string
title: Transaction Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TagUpdateRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TagUpdateResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/transactions/{transaction_id}/memo:
put:
tags:
- Transactions
summary: Set transaction memo
description: Set or clear a memo (description) on a transaction.
operationId: set_transaction_memo_api_v1_transactions__transaction_id__memo_put
security:
- HTTPBearer: []
parameters:
- name: transaction_id
in: path
required: true
schema:
type: string
title: Transaction Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MemoUpdateRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/MemoUpdateResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/transactions/{transaction_id}/attachments:
post:
tags:
- Transactions
summary: Attach a document to a transaction
description: Append an already-uploaded document (by id) to the transaction's attachments. The document must belong to the same user. Idempotent — re-attaching an existing id is a no-op. Returns the full updated list with signed download links.
operationId: attach_document_to_transaction_api_v1_transactions__transaction_id__attachments_post
security:
- HTTPBearer: []
parameters:
- name: transaction_id
in: path
required: true
schema:
type: string
title: Transaction Id
- name: x-api-key
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Api-Key
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/app__schemas__routers__transactions__transaction__AttachDocumentRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TransactionAttachment'
title: Response Attach Document To Transaction Api V1 Transactions Transaction Id Attachments Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
TransactionBreakdownItem:
properties:
key:
type: string
title: Key
volumeUsd:
type: number
title: Volumeusd
count:
type: integer
title: Count
type: object
required:
- key
- volumeUsd
- count
title: TransactionBreakdownItem
description: One bucket in a breakdown — volume + count for a tag/type value.
app__schemas__base__ContactRelationship:
type: string
enum:
- charity
- commercial_investment
- corporate_card
- credit_card
- dividend
- family
- financial_services
- good_sold
- goods_bought
- government
- insurance
- intergroup_transfer
- intra_group_dividends
- information_technology
- leasing
- loan_charges
- merchant_settlement
- mobile_wallet
- none
- non_resident_transfer_between_accounts
- pension
- personal_expenses
- prepaid_cards
- professional
- rental
- resident_transfer_between_accounts
- salaries
- telecommunications
- travel
- utility_bill
title: ContactRelationship
description: 'Unified contact relationship / transfer purpose.
Values match Align AlignTransferPurpose (the more granular set).
Mapped to Swipelux AccountHolderRelationship via ``swipelux_relationship``.'
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
TransactionStatus:
type: string
enum:
- pending
- success
- failed
- refunded
title: TransactionStatus
description: Unified transaction status.
TransactionAmountDetail:
properties:
currency:
type: string
title: Currency
amount:
type: number
title: Amount
usdRate:
anyOf:
- type: number
- type: 'null'
title: Usdrate
source:
anyOf:
- type: string
- type: 'null'
title: Source
type: object
required:
- currency
- amount
title: TransactionAmountDetail
description: Currency / amount / rate leg of a transaction.
TransactionSortBy:
type: string
enum:
- date
- amount
title: TransactionSortBy
description: Field to sort the transaction list by.
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
TransactionSummary:
properties:
inflowUsd:
type: number
title: Inflowusd
inflowCount:
type: integer
title: Inflowcount
outflowUsd:
type: number
title: Outflowusd
outflowCount:
type: integer
title: Outflowcount
pendingInflowUsd:
type: number
title: Pendinginflowusd
pendingInflowCount:
type: integer
title: Pendinginflowcount
pendingOutflowUsd:
type: number
title: Pendingoutflowusd
pendingOutflowCount:
type: integer
title: Pendingoutflowcount
type: object
required:
- inflowUsd
- inflowCount
- outflowUsd
- outflowCount
- pendingInflowUsd
- pendingInflowCount
- pendingOutflowUsd
- pendingOutflowCount
title: TransactionSummary
description: 'Aggregate volumes and counts over the filtered transaction set.
Computed without LIMIT/OFFSET — represents the entire filtered scope,
not just the current page. Returned only on the first page (offset=0);
subsequent pages omit it since it doesn''t change with pagination.'
TransactionGroupBy:
type: string
enum:
- tag
- type
title: TransactionGroupBy
description: Field to group breakdown analytics by.
MemoUpdateResponse:
properties:
onchainTransactionId:
type: string
title: Onchaintransactionid
memo:
anyOf:
- type: string
- type: 'null'
title: Memo
type: object
required:
- onchainTransactionId
title: MemoUpdateResponse
description: Response for memo update.
MemoUpdateRequest:
properties:
memo:
anyOf:
- type: string
- type: 'null'
title: Memo
type: object
title: MemoUpdateRequest
description: Request to update a transaction memo (description).
TransactionDetailResponse:
properties:
onchainTransactionId:
type: string
title: Onchaintransactionid
type:
type: string
title: Type
status:
$ref: '#/components/schemas/TransactionStatus'
time:
type: string
format: date-time
title: Time
isIncome:
type: boolean
title: Isincome
from:
$ref: '#/components/schemas/TransactionAmountDetail'
to:
anyOf:
- $ref: '#/components/schemas/TransactionAmountDetail'
- type: 'null'
fee:
anyOf:
- $ref: '#/components/schemas/TransactionAmountDetail'
- type: 'null'
walletFrom:
anyOf:
- $ref: '#/components/schemas/TransactionWalletDetail'
- type: 'null'
walletTo:
anyOf:
- $ref: '#/components/schemas/TransactionWalletDetail'
- type: 'null'
ibanFrom:
anyOf:
- $ref: '#/components/schemas/IBANAccountDetails-Output'
- $ref: '#/components/schemas/USExternalAccountDetails-Output'
- $ref: '#/components/schemas/SwiftAccountDetails-Output'
- type: 'null'
title: Ibanfrom
ibanTo:
anyOf:
- $ref: '#/components/schemas/IBANAccountDetails-Output'
- $ref: '#/components/schemas/USExternalAccountDetails-Output'
- $ref: '#/components/schemas/SwiftAccountDetails-Output'
- type: 'null'
title: Ibanto
txHash:
anyOf:
- type: string
- type: 'null'
title: Txhash
originChainId:
anyOf:
- type: string
- type: 'null'
title: Originchainid
destinationChainId:
anyOf:
- type: string
- type: 'null'
title: Destinationchainid
explorerUrl:
anyOf:
- type: string
- type: 'null'
title: Explorerurl
description:
anyOf:
- type: string
- type: 'null'
title: Description
card:
anyOf:
- $ref: '#/components/schemas/TransactionCardDetail'
- type: 'null'
contact:
anyOf:
- $ref: '#/components/schemas/TransactionContactDetail'
- type: 'null'
userFrom:
anyOf:
- $ref: '#/components/schemas/UserPreview'
- type: 'null'
userTo:
anyOf:
- $ref: '#/components/schemas/UserPreview'
- type: 'null'
approvedBy:
anyOf:
- $ref: '#/components/schemas/UserPreview'
- $ref: '#/components/schemas/ApiKeyListResponse'
- type: 'null'
title: Approvedby
providerTrId:
anyOf:
- type: string
- type: 'null'
title: Providertrid
invoice:
anyOf:
- $
# --- truncated at 32 KB (55 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hevn-inc/refs/heads/main/openapi/hevn-inc-transactions-api-openapi.yml