Documentation
Documentation
https://docs.hifi.com/guides/quickstart
APIReference
https://docs.hifi.com/api-reference
openapi: 3.0.0
info:
title: Hifi Account API
version: 2.0.0
description: API documentation for Hifi
servers:
- url: https://production.hifibridge.com
description: Production server
- url: https://sandbox.hifibridge.com
description: Sandbox server
security:
- bearerAuth: []
tags:
- name: Account
description: Account endpoints
paths:
/v2/users/{userId}/accounts:
post:
summary: Create an account
description: 'Create an onramp or offramp account for different account types by providing your bank account information.
'
tags:
- Account
parameters:
- $ref: '#/components/parameters/UserIdPathParameter'
requestBody:
$ref: '#/components/requestBodies/CreateAccountBody'
responses:
'200':
$ref: '#/components/responses/CreateAccountResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'500':
$ref: '#/components/responses/InternalServerErrorResponse'
get:
summary: List all accounts
description: List all accounts associated with a user under your organization.
tags:
- Account
parameters:
- $ref: '#/components/parameters/UserIdPathParameter'
- $ref: '#/components/parameters/AccountRailOptionalParameter'
- $ref: '#/components/parameters/AccountTypeOptionalParameter'
- $ref: '#/components/parameters/CurrencyAnyOptionalParameter'
- $ref: '#/components/parameters/LimitParameter'
- $ref: '#/components/parameters/CreatedBeforeParameter'
- $ref: '#/components/parameters/CreatedAfterParameter'
responses:
'200':
$ref: '#/components/responses/GetAllAccountsResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'500':
$ref: '#/components/responses/InternalServerErrorResponse'
/v2/users/{userId}/accounts/{accountId}:
get:
summary: Retrieve an account
description: Get an existing onramp or offramp account detail.
tags:
- Account
parameters:
- $ref: '#/components/parameters/UserIdPathParameter'
- $ref: '#/components/parameters/AccountIdPathParameter'
responses:
'200':
$ref: '#/components/responses/GetAccountResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'500':
$ref: '#/components/responses/InternalServerErrorResponse'
delete:
summary: Delete an account
description: Delete an existing onramp or offramp account.
tags:
- Account
parameters:
- $ref: '#/components/parameters/UserIdPathParameter'
- $ref: '#/components/parameters/AccountIdPathParameter'
responses:
'200':
$ref: '#/components/responses/DeleteAccountResponse'
'401':
$ref: '#/components/responses/UnauthorizedResponse'
'404':
$ref: '#/components/responses/NotFoundResponse'
'500':
$ref: '#/components/responses/InternalServerErrorResponse'
components:
schemas:
UsAccountObject:
type: object
title: Account Object (US)
properties:
id:
type: string
description: Account ID
userId:
type: string
description: User ID
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
accountHolder:
$ref: '#/components/schemas/UsAccountHolder'
isValid:
type: boolean
description: Indicates if the account is valid
reason:
type: string
description: Reason for invalidity, if applicable
us:
type: object
properties:
accountType:
type: string
enum:
- Checking
- Savings
description: 'The type of account.
'
accountNumber:
type: string
description: 'The account number of the account.
'
routingNumber:
type: string
description: 'The routing number of the account.
'
iban:
type: string
description: 'Only one of `accountNumber` or `iban` can be provided.
'
swiftCode:
type: string
description: 'The SWIFT code of the bank where the account is held. Required if `transferType` is `swift`.
'
bankName:
type: string
description: 'The name of the bank where the account is held.
'
bankAddress:
type: object
description: Address of the bank. Required if `transferType` is `swift`.
$ref: '#/components/schemas/Address'
currency:
type: string
enum:
- usd
description: 'The currency of the account.
'
rail:
type: object
properties:
currency:
type: string
enum:
- usd
description: 'The currency of the account.
'
railType:
type: string
enum:
- offramp
paymentRail:
type: string
CreateArgentinaAccount:
type: object
title: Argentina Offramp Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- argentina
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/AccountHolder'
argentina:
type: object
description: Argentina account.
$ref: '#/components/schemas/ArgentinaAccount'
required:
- rail
- type
- accountHolder
- argentina
CreateChinaGlobalNetworkAccountIndividual:
type: object
title: China Global Network Individual Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- chinaGlobalNetwork
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/GlobalNetworkIndividualAccountHolder'
chinaGlobalNetwork:
type: object
description: China Global Network account.
$ref: '#/components/schemas/ChinaGlobalNetworkAccount'
required:
- rail
- type
- accountHolder
- chinaGlobalNetwork
CreateAccount:
type: object
title: Account
properties:
rail:
type: string
enum:
- onramp
- offramp
type:
$ref: '#/components/schemas/AccountTypeEnum'
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/AccountHolder'
us:
type: object
description: US account.
$ref: '#/components/schemas/UsAccount'
brazil:
type: object
description: Brazil account.
$ref: '#/components/schemas/BrazilAccount'
colombia:
type: object
description: Colombia account.
$ref: '#/components/schemas/ColombiaAccount'
argentina:
type: object
description: Argentina account.
$ref: '#/components/schemas/ArgentinaAccount'
mexico:
type: object
description: Mexico account.
$ref: '#/components/schemas/MexicoAccount'
africa:
type: object
description: Africa account.
$ref: '#/components/schemas/AfricaAccount'
brazilGlobalNetwork:
type: object
description: Brazil Global Network account.
$ref: '#/components/schemas/BrazilGlobalNetworkAccount'
nigeriaGlobalNetwork:
type: object
description: Nigeria Global Network account.
$ref: '#/components/schemas/NigeriaGlobalNetworkAccount'
mexicoGlobalNetwork:
type: object
description: Mexico Global Network account.
$ref: '#/components/schemas/MexicoGlobalNetworkAccount'
hongKongGlobalNetwork:
type: object
description: Hong Kong Global Network account.
$ref: '#/components/schemas/HongKongGlobalNetworkAccount'
singaporeGlobalNetwork:
type: object
description: Singapore Global Network account.
$ref: '#/components/schemas/SingaporeGlobalNetworkAccount'
required:
- rail
- type
UsAccountHolder:
type: object
title: Account Holder
properties:
type:
type: string
enum:
- individual
- business
name:
type: string
description: 'The name of the account holder.
`individual`: first name and last name seperated by space.
`business`: legal name of the business.
'
address:
type: object
description: Address of the accountHolder.
$ref: '#/components/schemas/Address'
required:
- type
- name
- address
CreateChinaGlobalNetworkAccountBusiness:
type: object
title: China Global Network Business Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- chinaGlobalNetwork
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/GlobalNetworkBusinessAccountHolder'
chinaGlobalNetwork:
type: object
description: China Global Network account.
$ref: '#/components/schemas/ChinaGlobalNetworkAccount'
required:
- rail
- type
- accountHolder
- chinaGlobalNetwork
GlobalNetworkIndividualAccountHolder:
type: object
description: account holder information.
properties:
name:
type: string
description: Full name of the account holder
type:
type: string
enum:
- individual
description: Type of account holder
address:
type: object
properties:
city:
type: string
country:
type: string
postalCode:
type: string
addressLine1:
type: string
addressLine2:
type: string
stateProvinceRegion:
type: string
required:
- city
- country
- postalCode
- addressLine1
- stateProvinceRegion
dateOfBirth:
type: string
format: date
description: Date of birth in YYYY-MM-DD format
idNumber:
type: string
description: Government issued ID number
nationality:
type: string
description: Three-letter country code (ISO 3166-1 alpha-3)
required:
- name
- type
- address
- dateOfBirth
- idNumber
- nationality
AccountHolder:
type: object
title: Account Holder
properties:
type:
type: string
enum:
- individual
- business
name:
type: string
description: 'The name of the account holder.
`individual`: first name and last name seperated by space.
`business`: legal name of the business.
'
email:
type: string
format: email
phone:
type: string
address:
type: object
description: Address of the accountHolder.
$ref: '#/components/schemas/Address'
idType:
type: string
enum:
- CC
- CE
- NIT
- PASS
- PEP
description: 'The type of ID document provided by the account holder.
`CC`: Citizenship ID
`CE`: Foreign ID
`NIT`: National ID
`PASS`: Passport
`PEP`: Special Stay Permit
'
idNumber:
type: string
description: 'The ID number of the account holder.
'
required:
- type
- name
NigeriaGlobalNetworkAccount:
type: object
title: Nigeria Global Network Account
properties:
bankName:
type: string
description: Bank name for the account
accountNumber:
type: string
description: Bank account number
currency:
type: string
enum:
- ngn
description: The currency for the account
required:
- currency
CreateUsAccount:
type: object
title: US Offramp Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- us
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/UsAccountHolder'
us:
type: object
description: US account.
$ref: '#/components/schemas/UsAccount'
required:
- rail
- type
- accountHolder
- us
CreateNigeriaGlobalNetworkAccountIndividual:
type: object
title: Nigeria Global Network Individual Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- nigeriaGlobalNetwork
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/GlobalNetworkIndividualAccountHolder'
nigeriaGlobalNetwork:
type: object
description: Nigeria Global Network account.
$ref: '#/components/schemas/NigeriaGlobalNetworkAccount'
required:
- rail
- type
- accountHolder
- nigeriaGlobalNetwork
AfricaAccountHolder:
type: object
title: Account Holder
properties:
type:
type: string
enum:
- individual
- business
name:
type: string
description: 'The name of the account holder.
`individual`: first name and last name seperated by space.
`business`: legal name of the business.
'
email:
type: string
format: email
phone:
type: string
address:
type: object
description: Address of the accountHolder.
$ref: '#/components/schemas/Address'
idType:
type: string
enum:
- CC
- CE
- NIT
- PASS
- PEP
description: 'The type of ID document provided by the account holder.
`CC`: Citizenship ID
`CE`: Foreign ID
`NIT`: National ID
`PASS`: Passport
`PEP`: Special Stay Permit
'
idNumber:
type: string
description: 'The ID number of the account holder.
'
required:
- type
- name
- phone
UsAccount:
type: object
title: Account Info
properties:
transferType:
type: string
enum:
- ach
- wire
- swift
description: 'The type of transfer this account facilitates. `rtp` will come shortly.
'
accountType:
type: string
enum:
- Checking
- Savings
description: 'The type of account.
'
accountNumber:
type: string
description: 'The account number of the account.
'
routingNumber:
type: string
description: 'The routing number of the account.
'
iban:
type: string
description: 'Only one of `accountNumber` or `iban` can be provided.
'
swiftCode:
type: string
description: 'The SWIFT code of the bank where the account is held. Required if `transferType` is `swift`.
'
bankName:
type: string
description: 'The name of the bank where the account is held.
'
bankAddress:
type: object
description: Address of the bank.
$ref: '#/components/schemas/Address'
currency:
type: string
enum:
- usd
description: 'The currency of the account.
'
required:
- transferType
- accountType
- bankName
- currency
CreateMexicoGlobalNetworkAccountBusiness:
type: object
title: Mexico Global Network Business Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- mexicoGlobalNetwork
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/GlobalNetworkBusinessAccountHolder'
mexicoGlobalNetwork:
type: object
description: Mexico Global Network account.
$ref: '#/components/schemas/MexicoGlobalNetworkAccount'
required:
- rail
- type
- accountHolder
- mexicoGlobalNetwork
ArgentinaAccount:
type: object
title: Account Info
properties:
accountType:
type: string
enum:
- CVU
- CBU
- ALIAS
description: 'The type of account.
'
accountNumber:
type: string
description: 'The account number of the account.
'
currency:
type: string
enum:
- ars
description: 'The currency of the account.
'
required:
- accountType
- accountNumber
- currency
CreateSingaporeGlobalNetworkAccountBusiness:
type: object
title: Singapore Global Network Business Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- singaporeGlobalNetwork
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/GlobalNetworkBusinessAccountHolder'
singaporeGlobalNetwork:
type: object
description: Singapore Global Network account.
$ref: '#/components/schemas/SingaporeGlobalNetworkAccount'
required:
- rail
- type
- accountHolder
- singaporeGlobalNetwork
MexicoAccount:
type: object
title: Account Info
properties:
speiProtocol:
type: string
enum:
- clabe
- debitcard
- phonenum
description: 'The SPEI protocol of the account.
'
speiInstitutionCode:
type: string
description: 'The institution code of the account. Required only if `speiProtocol` is `debitcard` or `phonenum`.
'
speiClabe:
type: string
currency:
type: string
enum:
- mxn
description: 'The currency of the account.
'
required:
- speiProtocol
- speiClabe
- currency
CreateBrazilGlobalNetworkAccountBusiness:
type: object
title: Brazil Global Network Business Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- brazilGlobalNetwork
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/GlobalNetworkIndividualAccountHolder'
brazilGlobalNetwork:
type: object
description: Brazil Global Network account.
$ref: '#/components/schemas/BrazilGlobalNetworkAccount'
required:
- rail
- type
- accountHolder
- brazilGlobalNetwork
InternalServerError:
type: object
properties:
error:
type: string
example: Unexpected error happened
CreateBrazilGlobalNetworkAccountIndividual:
type: object
title: Brazil Global Network Individual Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- brazilGlobalNetwork
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/GlobalNetworkIndividualAccountHolder'
brazilGlobalNetwork:
type: object
description: Brazil Global Network account.
$ref: '#/components/schemas/BrazilGlobalNetworkAccount'
required:
- rail
- type
- accountHolder
- brazilGlobalNetwork
CreateAfricaOnrampAccount:
type: object
title: Africa Onramp Account
properties:
rail:
type: string
enum:
- onramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- africa
africa:
type: object
description: Africa account.
$ref: '#/components/schemas/AfricaAccount'
required:
- rail
- type
- africa
CreateAccountObject:
type: object
properties:
status:
type: string
message:
type: string
id:
type: string
CreateMexicoAccount:
type: object
title: Mexico Offramp Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- mexico
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/AccountHolder'
mexico:
type: object
description: Mexico account.
$ref: '#/components/schemas/MexicoAccount'
required:
- rail
- type
- accountHolder
- mexico
Address:
type: object
properties:
addressLine1:
type: string
addressLine2:
type: string
city:
type: string
stateProvinceRegion:
type: string
description: "The second part of the [ISO 3166-2 subdivision code](https://en.wikipedia.org/wiki/ISO_3166-2). This must be provided if the country has subdivisions.\n\nAn ISO 3166-2 code consists of two parts, separated by a hyphen (`-`):\n 1. The first part is the ISO 3166-1 alpha-2 code of the country (e.g., `US`, `CA`, `BR`);\n 2. The second part is a string of up to three alphanumeric characters representing a specific subdivision (e.g., state, province). This is typically based on national standards or developed by ISO.\n\n Only provide the second part of the code (e.g., `CA` for California in `US-CA`, or `SP` for São Paulo in `BR-SP`).\n"
postalCode:
type: string
description: Must be supplied for countries that use postal codes.
country:
type: string
description: Three-letter alpha-3 country code as defined in the [ISO 3166-1 spec](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3).
required:
- addressLine1
- city
- stateProvinceRegion
- postalCode
- country
BrazilAccount:
type: object
title: Account Info
properties:
pixKey:
type: string
description: 'The PIX key of the account.
'
currency:
type: string
enum:
- brl
description: 'The currency of the account.
'
required:
- pixKey
- currency
CreateBrazilAccount:
type: object
title: Brazil Offramp Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- brazil
brazil:
type: object
description: Brazil account.
$ref: '#/components/schemas/BrazilAccount'
required:
- rail
- type
- brazil
SingaporeGlobalNetworkAccount:
type: object
title: Singapore Global Network Account
properties:
bankName:
type: string
description: Bank name for the account
accountNumber:
type: string
description: Bank account number
swiftCode:
type: string
description: Bank code
currency:
type: string
enum:
- usd
- sgd
description: The currency for the account
required:
- currency
AccountTypeEnum:
type: string
description: The type of account.
enum:
- us
- brazil
- colombia
- argentina
- mexico
- africa
- brazilGlobalNetwork
- nigeriaGlobalNetwork
- mexicoGlobalNetwork
- hongKongGlobalNetwork
- chinaGlobalNetwork
- singaporeGlobalNetwork
ColombiaAccountHolder:
type: object
title: Account Holder
properties:
type:
type: string
enum:
- individual
- business
name:
type: string
description: 'The name of the account holder.
`individual`: first name and last name seperated by space.
`business`: legal name of the business.
'
email:
type: string
format: email
phone:
type: string
address:
type: object
description: Address of the accountHolder.
$ref: '#/components/schemas/Address'
idType:
type: string
enum:
- CC
- CE
- NIT
- PASS
- PEP
description: 'The type of ID document provided by the account holder.
`CC`: Citizenship ID
`CE`: Foreign ID
`NIT`: National ID
`PASS`: Passport
`PEP`: Special Stay Permit
'
idNumber:
type: string
description: 'The ID number of the account holder.
'
required:
- type
- name
- email
- idType
- idNumber
CreateAfricaOfframpAccount:
type: object
title: Africa Offramp Account
properties:
rail:
type: string
enum:
- offramp
type:
type: string
description: 'The type of account to create. The value of this field should match the acount info object field submitted. eg. if the type is `us`, only the `us` account object should be filled.
'
enum:
- africa
accountHolder:
type: object
description: account holder information.
$ref: '#/components/schemas/AfricaAccountHolder'
africa:
type: object
description: Africa account.
$ref: '#/components/schemas/AfricaAccount'
required:
- rail
- type
- accountHolder
- africa
AfricaAccount:
type: object
title: Account Info
properties:
financialInstitute:
type: string
description: 'The financial institute of the account. Financial institue type has to match the accountType. eg. accountType of bank requires financialInstitute of bank.
Look at the list of supported combination of `country`, `currency`, and `financialInstitute` [here](https://docs.google.com/spreadsheets/d/1QxAWGoZMznB6_Ts4mzFcFD49ZOMUZNdNiR6wlr8NDL0/edit?gid=293141391#gid=293141391).
Make sure the `financialInstitute` enum is supported under the `country` and `currency`.
'
accountType:
type: string
enum:
- momo
- bank
description: 'The type of account.
'
accountNumber:
type: string
description: 'The account number of the account. Not required for `rail`: "onramp" with `accountType`: "bank". Required otherwise.
'
currency:
type: string
description: 'The currency of the account.
Look at the list of supported combination of `country`, `currency`, and `financialInstitute` [here](https://docs.google.com/spreadsheets/d/1QxAWGoZMznB6_Ts4mzFcFD49ZOMUZNdNiR6wlr8NDL0/edit?gid=293141391#gid=293141391).
Make sure the `currency` enum is supported under the `country` and `financialInstitute`.
'
country:
type: string
description: 'The country code of the account.
Look at the list of supported combination of `country`, `currency`, and `financialInstitute` [here](https://docs.google.com/spreadsheets/d/1QxAWGoZMznB6_Ts4mzFcFD49ZOMUZNdNiR6wlr8NDL0/edit?gid=293141391#gid=293141391).
Make sure the `country` enum is supported under the `currency` and `financialInstitute`.
'
required:
- financialInstitut
# --- truncated at 32 KB (54 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hifi/refs/heads/main/openapi/hifi-account-api-openapi.yml