Hevn Inc Banks API
The Banks API from Hevn Inc — 14 operation(s) for banks.
The Banks API from Hevn Inc — 14 operation(s) for banks.
openapi: 3.1.0
info:
title: HEVN 2FA Banks API
description: Backend API for HEVN mobile neobank
version: 0.1.2
servers:
- url: https://api.hevn.finance
description: Production
tags:
- name: Banks
paths:
/api/v1/bank/{rail}/pre-approve:
post:
tags:
- Banks
summary: Pre-approve a bank rail
description: Read-only KYC info for the rail. Does not mutate Bank rows.
operationId: pre_approve_bank_api_v1_bank__rail__pre_approve_post
security:
- HTTPBearer: []
parameters:
- name: rail
in: path
required: true
schema:
$ref: '#/components/schemas/BankRail'
- 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/BankPreApproveResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/bank/{rail}/activate:
post:
tags:
- Banks
summary: Activate a bank rail
description: Create or upsert a Bank row for the given rail. Idempotent.
operationId: activate_bank_api_v1_bank__rail__activate_post
security:
- HTTPBearer: []
parameters:
- name: rail
in: path
required: true
schema:
$ref: '#/components/schemas/BankRail'
- 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/BankResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/banks/payin/quote:
post:
tags:
- Banks
summary: Get a pooled bank payin quote
description: Create a Swipelux quote for paying into the user's custodial wallet via a pooled bank rail.
operationId: create_bank_payin_quote_api_v1_banks_payin_quote_post
security:
- HTTPBearer: []
parameters:
- 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/BankPayinQuoteRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BankPayinQuoteResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/banks/payin/quote/submit:
post:
tags:
- Banks
summary: Submit a pooled bank payin quote
description: Execute a Swipelux payin quote and return payment instructions.
operationId: submit_bank_payin_quote_api_v1_banks_payin_quote_submit_post
security:
- HTTPBearer: []
parameters:
- 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/BankPayinQuoteSubmitRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BankPayinQuoteSubmitResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/banks/payin/quote/{quote_id}/cancel:
post:
tags:
- Banks
summary: Cancel a locally tracked bank payin quote
description: Mark the local FiatTransfer created from a Swipelux payin quote as canceled.
operationId: cancel_bank_payin_quote_api_v1_banks_payin_quote__quote_id__cancel_post
security:
- HTTPBearer: []
parameters:
- name: quote_id
in: path
required: true
schema:
type: string
title: Quote 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/BankPayinQuoteCancelResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/banks/activate:
post:
tags:
- Banks
summary: Activate multiple bank rails
description: Create or upsert Bank rows for multiple rails in one request. Returns a per-rail result so one pending or failed rail does not abort the batch.
operationId: activate_banks_api_v1_banks_activate_post
security:
- HTTPBearer: []
parameters:
- 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/BankActivateRailsRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BankActivateRailsResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/banks:
get:
tags:
- Banks
summary: List all bank rails
description: Return every supported bank rail. Rails the user has activated come from the Bank table (with status / iban_data); rails the user has not activated are returned from the static BANK_INFO registry with status=not_started and iban_data=None. If a rail's provider KYC is APPROVED but no ACTIVE Bank row exists yet, syncs lazily from Swipelux / Align before returning.
operationId: list_banks_api_v1_banks_get
security:
- HTTPBearer: []
parameters:
- 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/BanksListResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/accounts/bank/{rail}/pre-approve:
post:
tags:
- Banks
summary: Pre-approve a bank rail
description: Read-only KYC info for the rail. Does not mutate Bank rows.
operationId: pre_approve_bank_package_alias_api_v1_accounts_bank__rail__pre_approve_post
security:
- HTTPBearer: []
parameters:
- name: rail
in: path
required: true
schema:
$ref: '#/components/schemas/BankRail'
- 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/BankPreApproveResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/accounts/bank/{rail}/activate:
post:
tags:
- Banks
summary: Activate a bank rail
description: Create or upsert a Bank row for the given rail. Idempotent.
operationId: activate_bank_package_alias_api_v1_accounts_bank__rail__activate_post
security:
- HTTPBearer: []
parameters:
- name: rail
in: path
required: true
schema:
$ref: '#/components/schemas/BankRail'
- 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/BankResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/accounts/banks/payin/quote:
post:
tags:
- Banks
summary: Get a pooled bank payin quote
description: Create a Swipelux quote for paying into the user's custodial wallet via a pooled bank rail.
operationId: create_bank_payin_quote_package_alias_api_v1_accounts_banks_payin_quote_post
security:
- HTTPBearer: []
parameters:
- 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/BankPayinQuoteRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BankPayinQuoteResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/accounts/banks/payin/quote/submit:
post:
tags:
- Banks
summary: Submit a pooled bank payin quote
description: Execute a Swipelux payin quote and return payment instructions.
operationId: submit_bank_payin_quote_package_alias_api_v1_accounts_banks_payin_quote_submit_post
security:
- HTTPBearer: []
parameters:
- 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/BankPayinQuoteSubmitRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BankPayinQuoteSubmitResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/accounts/banks/payin/quote/{quote_id}/cancel:
post:
tags:
- Banks
summary: Cancel a locally tracked bank payin quote
description: Mark the local FiatTransfer created from a Swipelux payin quote as canceled.
operationId: cancel_bank_payin_quote_package_alias_api_v1_accounts_banks_payin_quote__quote_id__cancel_post
security:
- HTTPBearer: []
parameters:
- name: quote_id
in: path
required: true
schema:
type: string
title: Quote 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/BankPayinQuoteCancelResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/accounts/banks/activate:
post:
tags:
- Banks
summary: Activate multiple bank rails
description: Create or upsert Bank rows for multiple rails in one request. Returns a per-rail result so one pending or failed rail does not abort the batch.
operationId: activate_banks_package_alias_api_v1_accounts_banks_activate_post
security:
- HTTPBearer: []
parameters:
- 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/BankActivateRailsRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BankActivateRailsResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/accounts/banks:
get:
tags:
- Banks
summary: List all bank rails
description: Return every supported bank rail. Rails the user has activated come from the Bank table (with status / iban_data); rails the user has not activated are returned from the static BANK_INFO registry with status=not_started and iban_data=None. If a rail's provider KYC is APPROVED but no ACTIVE Bank row exists yet, syncs lazily from Swipelux / Align before returning.
operationId: list_banks_package_alias_api_v1_accounts_banks_get
security:
- HTTPBearer: []
parameters:
- 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/BanksListResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
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``.'
BankPayinQuoteRequest:
properties:
amount:
anyOf:
- type: number
exclusiveMinimum: 0
- type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Amount
bankAccountId:
type: string
format: uuid
title: Bankaccountid
memo:
anyOf:
- type: string
maxLength: 500
- type: 'null'
title: Memo
type: object
required:
- amount
- bankAccountId
title: BankPayinQuoteRequest
description: Request a Swipelux payin quote for a pooled bank rail.
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
BankRequestedRails:
properties:
us:
$ref: '#/components/schemas/BankRequestedRailSettings'
swift:
$ref: '#/components/schemas/BankRequestedRailSettings'
eu:
$ref: '#/components/schemas/BankRequestedRailSettings'
uae:
$ref: '#/components/schemas/BankRequestedRailSettings'
type: object
title: BankRequestedRails
description: Rails the user is interested in opening.
BankRequestedRailSettings:
properties:
pooled:
type: boolean
title: Pooled
default: false
named:
type: boolean
title: Named
default: false
type: object
title: BankRequestedRailSettings
description: User interest in a bank rail group.
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
BankPayinQuoteSubmitRequest:
properties:
quoteId:
type: string
title: Quoteid
type: object
required:
- quoteId
title: BankPayinQuoteSubmitRequest
description: Submit a previously created Swipelux bank payin quote.
BankActivateRailsRequest:
properties:
rails:
items:
$ref: '#/components/schemas/BankRail'
type: array
title: Rails
type: object
required:
- rails
title: BankActivateRailsRequest
description: Bulk bank activation request.
FiatPaymentType:
type: string
enum:
- sepa
- swift
- ach
- uaefts
- fedwire
title: FiatPaymentType
description: 'Canonical fiat payment rail used for ``account_type`` discrimination,
bank-rail methods, and contact/transaction type alignment.'
BankPayinQuoteResponse:
properties:
quoteId:
type: string
title: Quoteid
provider:
$ref: '#/components/schemas/FiatProvider'
default: swipelux
bankAccountId:
type: string
format: uuid
title: Bankaccountid
rail:
$ref: '#/components/schemas/BankRail'
paymentRail:
type: string
title: Paymentrail
fromAmount:
type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Fromamount
fromCurrency:
type: string
title: Fromcurrency
toAmount:
type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
title: Toamount
toCurrency:
type: string
title: Tocurrency
default: USDC
feeAmount:
anyOf:
- type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
- type: 'null'
title: Feeamount
feeCurrency:
anyOf:
- type: string
- type: 'null'
title: Feecurrency
rate:
anyOf:
- type: string
pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
- type: 'null'
title: Rate
expiresAt:
type: string
format: date-time
title: Expiresat
type: object
required:
- quoteId
- bankAccountId
- rail
- paymentRail
- fromAmount
- fromCurrency
- toAmount
- expiresAt
title: BankPayinQuoteResponse
description: Swipelux payin quote response normalized for bank payins.
BankResponse:
properties:
rail:
$ref: '#/components/schemas/BankRail'
bankName:
type: string
title: Bankname
country:
type: string
title: Country
currency:
type: string
title: Currency
type:
$ref: '#/components/schemas/FiatPaymentType'
method:
$ref: '#/components/schemas/FiatPaymentType'
methods:
items:
$ref: '#/components/schemas/FiatPaymentType'
type: array
title: Methods
pooled:
type: boolean
title: Pooled
compliance:
type: integer
title: Compliance
bankIcon:
type: string
title: Bankicon
depositFee:
type: number
title: Depositfee
timeToOpen:
$ref: '#/components/schemas/BankTimeToOpen'
status:
$ref: '#/components/schemas/IBANStatus'
accountHolderBusinessName:
anyOf:
- type: string
- type: 'null'
title: Accountholderbusinessname
accountHolderFirstName:
anyOf:
- type: string
- type: 'null'
title: Accountholderfirstname
accountHolderLastName:
anyOf:
- type: string
- type: 'null'
title: Accountholderlastname
ibanData:
anyOf:
- $ref: '#/components/schemas/IBANAccountDetails-Output'
- $ref: '#/components/schemas/USExternalAccountDetails-Output'
- $ref: '#/components/schemas/SwiftAccountDetails-Output'
- type: 'null'
title: Ibandata
id:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Id
externalAccountId:
anyOf:
- type: string
- type: 'null'
title: Externalaccountid
createdAt:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Createdat
type: object
required:
- rail
- bankName
- country
- currency
- type
- method
- methods
- pooled
- compliance
- bankIcon
- depositFee
- timeToOpen
- status
title: BankResponse
description: 'Bank row as returned to clients.
Merges static rail metadata (from BANK_INFO) with per-user state. For rails
the user hasn''t activated yet, ``id`` / ``external_account_id`` / ``created_at``
are ``None`` and ``status`` is ``not_started``.'
USExternalAccountDetails-Output:
properties:
bankName:
type: string
title: Bankname
bankAddress:
anyOf:
- type: string
- type: 'null'
title: Bankaddress
currency:
anyOf:
- type: string
- type: 'null'
title: Currency
accountHolderType:
$ref: '#/components/schemas/AlignAccountHolderType'
accountHolderFirstName:
anyOf:
- type: string
- type: 'null'
title: Accountholderfirstname
accountHolderLastName:
anyOf:
- type: string
- type: 'null'
title: Accountholderlastname
accountHolderBusinessName:
anyOf:
- type: string
- type: 'null'
title: Accountholderbusinessname
accountHolderAddress:
anyOf:
- $ref: '#/components/schemas/UserAddress'
- type: 'null'
relationship:
anyOf:
- $ref: '#/components/schemas/app__schemas__base__ContactRelationship'
- type: 'null'
paymentReference:
anyOf:
- type: string
- type: 'null'
title: Paymentreference
accountType:
type: string
enum:
- ach
- fedwire
title: Accounttype
default: ach
us:
$ref: '#/components/schemas/USAccountDetails'
beneficiaryName:
anyOf:
- type: string
- type: 'null'
title: Beneficiaryname
description: Frontend-only alias derived from account holder fields.
readOnly: true
type: object
required:
- bankName
- accountHolderType
- us
- beneficiaryName
title: USExternalAccountDetails
description: US domestic (ACH) external account.
BankPayinQuoteCancelResponse:
properties:
transferId:
type: string
format: uuid
title: Transferid
quoteId:
type: string
title: Quoteid
status:
type: string
title: Status
type: object
required:
- transferId
- quoteId
- status
title: BankPayinQuoteCancelResponse
description: Response after canceling a locally tracked bank payin quote.
BankActivateRailsResponse:
properties:
results:
items:
$ref: '#/components/schemas/BankActivateRailResult'
type: array
title: Results
type: object
required:
- results
title: BankActivateRailsResponse
description: Bulk bank activation response.
USAccountDetails:
properties:
accountNumber:
type: string
title: Accountnumber
routingNumber:
type: string
title: Routingnumber
type: object
required:
- accountNumber
- routingNumber
title: USAccountDetails
description: US domestic account details (ACH).
BanksListResponse:
properties:
banks:
items:
$ref: '#/components/schemas/BankResponse'
type: array
title: Banks
allOptions:
items:
$ref: '#/components/schemas/BankResponse'
type: array
title: Alloptions
rails:
$ref: '#/components/schemas/BankRequestedRails'
type: object
required:
- banks
- rails
title: BanksListResponse
description: List bank rails plus user's requested rail preferences.
AlignAccountHolderType:
type: string
enum:
- individual
- business
title: AlignAccountHolderType
description: Account holder type.
SwiftDetails:
properties:
accountNumber:
type: string
title: Accountnumber
routingNumber:
anyOf:
- type: string
- type: 'null'
title: Routingnumber
bic:
type: string
title: Bic
type: object
required:
- accountNumber
- bic
title: SwiftDetails
description: SWIFT (international wire) account details.
UserAddress:
properties:
streetAddress:
anyOf:
- type: string
- type: 'null'
title: Streetaddress
addressLine2:
anyOf:
- type: string
- type: 'null'
title: Addressline2
city:
anyOf:
- type: string
- type: 'null'
title: City
state:
anyOf:
- type: string
- type: 'null'
title: State
country:
anyOf:
- $ref: '#/components/schemas/CountryCode'
- type: 'null'
zip:
anyOf:
- type: string
- type: 'null'
title: Zip
type: object
title: UserAddress
description: 'Address schema for user.
Canonical field names: street_address, address_line_2, city, state, country, zip.
Accepts legacy Align/IBAN field names (street_line_1, street_line_2, postal_code)
for backward compatibility with existing JSONB data.'
IBANAccountDetails-Output:
properties:
bankName:
type: string
title: Bankname
bankAddress:
anyOf:
- type: string
- type: 'null'
title: Bankaddress
currency:
anyOf:
- type: string
- type: 'null'
title: Currency
accountHolderType:
$ref: '#/components/schemas/AlignAccountHolderType'
accountHolderFirstName:
anyOf:
- type: string
- type: 'null'
title: Accountholderfirstname
accountHolderLastName:
anyOf:
- type: string
- type: 'null'
title: Accountholderlastname
accountHolderBusinessName:
anyOf:
- type: string
- type: 'null'
title: Accountholderbusinessname
accountHolderAddress:
anyOf:
- $ref: '#/components/schemas/UserAddress'
- type: 'null'
relationship:
anyOf:
- $ref: '#/components/schemas/app__schemas__base__ContactRelationship'
- type: 'null'
paymentReference:
anyOf:
- type: string
- type: 'null'
title: Paymentreference
accountType:
type: string
enum:
- sepa
- uaefts
title: Accounttype
default: sepa
ibanNumber:
type: string
title: Ibannumber
bic:
anyOf:
- type: string
- type: 'null'
title: Bic
beneficiaryName:
anyOf:
- type: string
- type: 'null'
title: Beneficiaryname
description: Frontend-only alias derived from account holder fields.
readOnly: true
type: object
required:
- bankName
- accountHolderType
- ibanNumber
- beneficiaryName
title: IBANAccountDetails
description: IBAN (SEPA) external account.
BankActivateRailResult:
properties:
rail:
$ref: '#/components/schemas/BankRail'
ok:
type: boolean
title: Ok
bank:
anyOf:
- $ref: '#/components/schemas/BankResponse'
- type: 'null'
error:
anyOf:
- $ref: '#/components/schemas/BankActivateRailError'
- type: 'null'
type: object
required:
- rail
- ok
title: BankActivateRailResult
description: Per-rail bulk activation result.
BankActivateRailError:
properties:
statusCode:
type: integer
title: Statuscode
message:
type: string
title: Message
detail:
anyOf:
- {}
- type: 'null'
title: Detail
type: object
required:
- statusCode
- message
title: BankActivateRailError
description: Per-rail bulk activation error.
BankPayinQuoteSubmitResponse:
properties:
quoteId:
type: string
title: Quoteid
bankAccountId:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Bankaccountid
resource:
anyOf:
- type: string
- type: 'null'
title: Resource
recipientDetails:
any
# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hevn-inc/refs/heads/main/openapi/hevn-inc-banks-api-openapi.yml