openapi: 3.1.0
info:
title: Fin.com API
version: 1.0.0
description: A simple API specificationFo
servers:
- url: https://sandbox.api.fin.com
description: Sandbox server
- url: https://api.fin.com
description: Production server
tags:
- name: Authentication
description: A modified OAuth 2.0 Client Credential Flow
- name: Customers
description: Customer management and document upload operations
- name: Balances
description: Retrieve wallet balance information
- name: Catalogue
description: |
A set of endpoints to retrieve contextual data to assemble requests
to fin.com's API
- name: Beneficiaries
description: Manage beneficiary accounts for payments and transfers
- name: Transactions
description: Transaction history and management for beneficiaries
- name: Virtual Accounts
description: Create and manage virtual accounts for USD to USDC conversions
- name: Fees & FX Rates
description: Retrieve fees and foreign exchange rates
paths:
/v1/oauth/token:
post:
summary: Issue a Token
description: Generate an access token using client credentials
x-mint:
content: |
Grab your `client_id` and `client_secret` from the
[API Keys](https://orchestration.fin.com/api-keys) section
of the [Orchestration Dashboard](https://orchestration.fin.com/)
The TTLs returned from this API are actually the time
that the the token will expire; i.e. not validity in number of seconds
since creation.
The timestamps, i.e. TTLs returned from this endpoint are NOT
in ISO 8601 format. Rather it is in the format
`YYYY-MM-DD HH:MM:SS+00`
tags:
- Authentication
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- client_id
- client_secret
properties:
client_id:
type: string
description: Client ID
client_secret:
type: string
description: Client Secret
format: password
responses:
'200':
description: Token issued successfully
content:
application/json:
schema:
$ref: '#/components/schemas/TokenResponse'
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/oauth/refresh-token:
post:
summary: Refresh a Token
description: Generate a new token pair based on a refresh token.
x-mint:
content: >
Exchanges a `refresh_token` received from the [Issue
Token](/api-reference/authentication/issue-a-token) endpoint for a new
pair of `access_token` and `refresh_token`
The TTLs returned from this API are actually the time
that the the token will expire; i.e. not validity in number of seconds
since creation.
The timestamps, i.e. TTLs returned from this endpoint are NOT
in ISO 8601 format. Rather it is in the format
`YYYY-MM-DD HH:MM:SS+00`
tags:
- Authentication
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- refresh_token
properties:
refresh_token:
type: string
description: >-
The refresh_token received from the [Issue a
token](https://developer.fin.com/api-reference/authentication/issue-a-token)
endpoint.
responses:
'200':
description: Token issued successfully
content:
application/json:
schema:
$ref: '#/components/schemas/TokenResponse'
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v2/customers:
get:
summary: List Customers V2
description: Retrieve a list of customers filtered by type
tags:
- Customers
security:
- bearerAuth: []
parameters:
- name: type
in: query
description: Filter customers by type
required: true
schema:
type: string
enum:
- INDIVIDUAL
- BUSINESS
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/CurrentPageParam'
responses:
'200':
description: List of customers retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
pagination:
type: object
properties:
current_page:
type: integer
example: 1
per_page:
type: integer
example: 40
total_page:
type: integer
example: 1
total:
type: integer
example: 4
customers:
type: array
items:
oneOf:
- type: object
title: Individual Customer
properties:
customer_id:
type: string
format: uuid
example: 56c41b8e-e650-4f55-94f6-26a888a9b64d
type:
type: string
enum:
- INDIVIDUAL
first_name:
type: string
example: John
last_name:
type: string
example: Doe
email:
type: string
format: email
example: john.doe@example.com
phone:
type: string
example: '+14155551234'
country_of_residence:
type: string
example: USA
customer_status:
type: string
example: INCOMPLETE
tos_policies_url:
type: string
format: uri
example: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=56c41b8e-e650-4f55-94f6-26a888a9b64d&tos_policies_value=e9414388-fbdf-4407-b5c2-bc39eae3645b
created_at:
type: string
format: date-time
example: '2026-04-01T12:03:03Z'
updated_at:
type: string
format: date-time
example: '2026-04-01T12:03:03Z'
- type: object
title: Business Customer
properties:
customer_id:
type: string
format: uuid
example: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
type:
type: string
enum:
- BUSINESS
business_name:
type: string
example: Fin.com
email:
type: string
format: email
example: m@tech.com
phone:
type: string
example: '+8801529876543'
country_of_incorporation:
type: string
example: BGD
customer_status:
type: string
example: IN_COMPLIANCE
tos_policies_url:
type: string
format: uri
example: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06&tos_policies_value=6955e70b-f9f3-4076-b1ce-5c897085dd24
created_at:
type: string
format: date-time
example: '2026-04-13T11:38:57Z'
updated_at:
type: string
format: date-time
example: '2026-04-13T11:40:51Z'
examples:
OK:
summary: OK
value:
data:
pagination:
current_page: 1
per_page: 40
total_page: 1
total: 2
customers:
- customer_id: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
type: BUSINESS
business_name: Fin.com
email: m@tech.com
phone: '+8801529876543'
country_of_incorporation: BGD
customer_status: IN_COMPLIANCE
tos_policies_url: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06&tos_policies_value=6955e70b-f9f3-4076-b1ce-5c897085dd24
created_at: '2026-04-13T11:38:57Z'
updated_at: '2026-04-13T11:40:51Z'
- customer_id: 56c41b8e-e650-4f55-94f6-26a888a9b64d
type: INDIVIDUAL
first_name: John
last_name: Doe
email: john.doe@example.com
phone: '+14155551234'
country_of_residence: USA
customer_status: INCOMPLETE
tos_policies_url: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=56c41b8e-e650-4f55-94f6-26a888a9b64d&tos_policies_value=e9414388-fbdf-4407-b5c2-bc39eae3645b
created_at: '2026-04-01T12:03:03Z'
updated_at: '2026-04-01T12:03:03Z'
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/customers:
get:
summary: List Customers
description: Retrieve a list of customers filtered by type
x-mint:
content: |
This endpoint was deprecated on May 20, 2026. Use [List Customers V2](https://developer.fin.com/api-reference/customers/list-customers-v2) instead.
tags:
- Customers
security:
- bearerAuth: []
parameters:
- name: type
in: query
description: Filter customers by type
required: true
schema:
type: string
enum:
- INDIVIDUAL
- BUSINESS
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/CurrentPageParam'
responses:
'200':
description: List of customers retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
pagination:
type: object
properties:
current_page:
type: integer
example: 1
per_page:
type: integer
example: 10
total_page:
type: integer
example: 1
total:
type: integer
example: 2
customers:
type: array
items:
oneOf:
- type: object
properties:
customer_id:
type: string
format: uuid
example: 56c41b8e-e650-4f55-94f6-26a888a9b64d
type:
type: string
enum:
- INDIVIDUAL
first_name:
type: string
example: John
last_name:
type: string
example: Doe
email:
type: string
format: email
example: john.doe@example.com
phone:
type: string
example: '+14724480512'
country_of_residence:
type: string
example: USA
customer_status:
type: string
example: INCOMPLETE
tos_policies_url:
type: string
format: uri
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
- type: object
properties:
customer_id:
type: string
format: uuid
example: 94e6b847-4e19-49e3-b3ab-ffa95872eda9
type:
type: string
enum:
- BUSINESS
business_name:
type: string
example: Acme Corp Ltd
email:
type: string
format: email
example: contact@acmecorp.com
phone:
type: string
example: '+14155552671'
country_of_incorporation:
type: string
example: USA
customer_status:
type: string
example: INCOMPLETE
tos_policies_url:
type: string
format: uri
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v2/customers/{customer_id}:
get:
summary: Get Customer Details V2
description: Retrieve detailed information for a specific customer
x-mint:
content: |
Use this endpoint to fetch business customer details. For individual customer details, use [Get Customer Details](https://developer.fin.com/api-reference/customers/get-customer-details).
tags:
- Customers
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
format: uuid
example: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
responses:
'200':
description: Customer details retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
oneOf:
- $ref: '#/components/schemas/IndividualCustomerDetailV2'
- $ref: '#/components/schemas/BusinessCustomerDetailV2'
examples:
Business:
summary: Business customer
value:
data:
customer_id: 671536f8-ddc5-4b1e-bd6f-27d0ed07a27c
type: BUSINESS
business_name: Fin.com
email: contact@fin.com
phone: '+14155552671'
country_of_incorporation: USA
verification_type: STANDARD
customer_status: ACTION_REQUIRED
tos_policies_url: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=671536f8-ddc5-4b1e-bd6f-27d0ed07a27c&tos_policies_value=4e0e505a-36f0-4c9e-8eb1-3916410f227c
associated_parties:
- id: 2e719a54-cdef-43f9-a5ac-f6ef679ea1dc
type: INDIVIDUAL
ownership_percent: 60
email: jane.smith@acmecorp.com
verification:
status: REJECTED
reason:
for_customer: null
for_developer: null
updated_at: '2026-05-04T12:36:42Z'
- id: 4ef045ea-c7a7-46dc-84a0-9a3d83186971
type: INDIVIDUAL
ownership_percent: 40
email: robert.chen@acmecorp.com
verification:
status: APPROVED
reason:
for_customer: null
for_developer: null
updated_at: '2026-05-04T12:29:47Z'
created_at: '2026-05-04T12:11:27Z'
updated_at: '2026-05-04T12:34:03Z'
last_status_updated_at: '2026-05-04T12:32:34.47927Z'
rejection_reason:
applicant:
moderation_comment: ''
reject_labels:
- LOW_QUALITY
- UNFILLED_ID
- DOCUMENT_TEMPLATE
- NOT_DOCUMENT
documents:
- uri: /ZuyUaH3a_testdoc1.png
category: SUPPORTING_DOCUMENTS
moderation_comment: |-
This document is not accepted.
- The document should be of good quality.
reject_labels:
- LOW_QUALITY
- uri: /ZuyUaH3a_testdoc1.png
category: OWNERSHIP_DOCUMENTS
moderation_comment: |-
This document is not accepted.
- The document is not authentic
reject_labels:
- UNFILLED_ID
- uri: /ZuyUaH3a_testdoc1.png
category: OWNERSHIP_DOCUMENTS
moderation_comment: |-
This document is not accepted.
- The uploaded file appears to be a document template.
reject_labels:
- DOCUMENT_TEMPLATE
- uri: /ZuyUaH3a_testdoc1.png
category: SUPPORTING_DOCUMENTS
moderation_comment: |-
This document is not accepted.
- The file is not a document
reject_labels:
- NOT_DOCUMENT
associated_parties:
- id: 2e719a54-cdef-43f9-a5ac-f6ef679ea1dc
applicant:
moderation_comment: ''
reject_labels:
- EXPIRATION_DATE
documents:
- uri: /OUkUie0z_approved_passport_sumsub.jpg
category: PROOF_OF_IDENTITY
moderation_comment: >-
Your identity document must be valid for at
least 2 month(s) from the date of submission.
reject_labels:
- EXPIRATION_DATE
request_for_information:
- scope: ASSOCIATED_PARTY
associated_party_id: 2e719a54-cdef-43f9-a5ac-f6ef679ea1dc
section: identifying_documents
categories:
- document_type: PASSPORT
fields:
- field_name: type
data_type: ENUM
status: INVALID
options: []
- field_name: expiry_date
data_type: DATE
status: INVALID
options: []
- field_name: issue_date
data_type: DATE
status: INVALID
options: []
- field_name: files
data_type: URI
status: INVALID
reason: >-
User identity document is not valid for at
least 2 month(s) from the date of
submission.
options: []
- scope: CUSTOMER
section: formation_documents
categories:
- document_type: EVIDENCE_OF_DIRECTORS_AND_CONTROLLERS
fields:
- field_name: type
data_type: ENUM
status: INVALID
options: []
- field_name: files
data_type: URI
status: INVALID
reason: Unacceptable document.
options: []
- scope: CUSTOMER
section: supporting_documents
categories:
- document_type: PROOF_OF_SOURCE_OF_FUNDS
fields:
- field_name: type
data_type: ENUM
status: INVALID
options: []
- field_name: files
data_type: URI
status: INVALID
reason: Unacceptable document.
options: []
- scope: CUSTOMER
section: ownership_documents
categories:
- document_type: PROOF_OF_SIGNATORY_AUTHORITY
fields:
- field_name: type
data_type: ENUM
status: INVALID
options: []
- field_name: files
data_type: URI
status: INVALID
reason: Document appears to be corrupted
options: []
Individual:
summary: Individual customer
value:
data:
customer_id: 1f45e58d-0420-4ad8-a790-413169bfab28
type: INDIVIDUAL
first_name: John
last_name: Doe
email: atkeyafahmida290@gmail.com
phone: '+8801748386269'
country_of_residence: BGD
verification_type: STANDARD
customer_status: ACTION_REQUIRED
tos_policies_url: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=1f45e58d-0420-4ad8-a790-413169bfab28&tos_policies_value=ffefb0cd-4f0a-4585-ad1c-f4ea76ba41b8
created_at: '2026-05-04T12:40:03Z'
updated_at: '2026-05-04T12:47:50Z'
last_status_updated_at: '2026-05-04T12:44:42.707598Z'
rejection_reason:
applicant:
moderation_comment: ''
reject_labels:
- EXPIRATION_DATE
- PROBLEMATIC_APPLICANT_DATA
documents:
- uri: /SuElNZpi_approved_passport_sumsub.jpg
category: PROOF_OF_IDENTITY
moderation_comment: >-
Your identity document has expired and can't be
used for verification. Please upload a different
identity document.
reject_labels:
- EXPIRATION_DATE
request_for_information:
- scope: CUSTOMER
section: proof_of_identity
categories:
- document_type: PASSPORT
fields:
- field_name: type
data_type: ENUM
status: INVALID
options: []
- field_name: expiry_date
data_type: DATE
status: INVALID
options: []
- field_name: issue_date
data_type: DATE
status: INVALID
options: []
- field_name: files
data_type: URI
status: INVALID
reason: >-
Expired Identity document. A new document
has been requested.
options: []
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/customers/{customer_id}:
get:
summary: Get Customer Details
description: Retrieve detailed information for a specific customer
x-mint:
content: |
Use this endpoint to fetch individual customer details. For business customer details, use [Get Customer Details V2](https://developer.fin.com/api-reference/customers/get-customer-details-v2).
tags:
- Customers
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
format: uuid
example: 55bd6b4e-c20a-4cc8-9535-91d5557a67d9
responses:
'200':
description: Customer details retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
oneOf:
- $ref: '#/components/schemas/IndividualCustomerDetail'
- $ref: '#/components/schemas/BusinessCustomerDetail'
examples:
Individual Customer:
summary: Individual Customer
value:
data:
customer_id: 56c41b8e-e650-4f55-94f6-26a888a9b64d
type: INDIVIDUAL
first_name: John
last_name: Doe
email: john.doe@fin.com
phone: '+14724480512'
country_of_residence: USA
verification_type: STANDARD
customer_status: ON_HOLD
tos_policies_url: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=56c41b8e-e650-4f55-94f6-26a888a9b64d&tos_policies_value=e9414388-fbdf-4407-b5c2-bc39eae3645b
created_at: '2026-04-15T11:49:27Z'
updated_at: '2026-04-15T11:52:48Z'
last_status_updated_at: '2026-04-15T11:52:48Z'
capabilities:
on_ramp:
- currency: USD
status: false
methods:
- ACH
- FEDWIRE
reason:
for_customer: null
for_developer: null
off_ramp:
- currency: USD
status: false
methods:
- ACH
- FEDWIRE
- ACH_SAME_DAY
reason:
for_customer: null
for_developer: Customer is under review
- currency: EUR
status: false
methods:
- BANK
reason:
for_customer: null
for_developer: Customer is under review
- currency: BDT
status: false
methods:
- BANK
- E_WALLET
reason:
for_customer: null
for_developer: Customer is under review
- currency: AUD
status: false
methods:
- BANK
reason:
for_customer: null
for_developer: Customer is under review
- currency: INR
status: false
methods:
- BANK
reason:
for_customer: null
for_developer: Customer is under review
- currency: JPY
status: false
methods:
- BANK
reason:
for_customer: null
for_developer: Customer is under review
- currency: NPR
status: false
methods:
- BANK
reason:
for_customer: null
for_developer: Customer is under review
- currency: CAD
status: false
methods:
- BANK
reason:
for_customer: null
for_developer: Customer is under review
- currency: PKR
status: false
methods:
- BANK
reason:
for_customer: null
for_developer: Customer is under review
- currency: PHP
status: false
methods:
- BANK
reason:
for_customer: null
for_developer: Customer is under review
- currency: SGD
status: false
methods:
- BANK
reason:
for_customer: null
for_developer: Customer is under review
- currency: GBP
status: false
methods:
- BANK
reason:
for_customer: null
for_developer: Customer is under review
rejection_reason: null
request_for_information: []
Business Customer:
summary: Business Customer
value:
data:
customer_id: 94e6b847-4e19-49e3-b3ab-ffa95872eda9
type: BUSINESS
business_name: Fin.com
email: contact@fin.com
phone: '+6591234567'
country_of_incorporation: SGP
verification_type: STANDARD
customer_status: APPROVED
tos_policies_url: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=94e6b847-4e19-49e3-b3ab-ffa95872eda9&tos_policies_value=6955e70b-f9f3-4076-b1ce-5c897085dd24
associated_parties:
- id: 42daffd3-09a0-4d48-8e73-2680a953d0e1
type: INDIVIDUAL
ownership_percent: 10
email: john.doe@fin.com
verification:
status: APPROVED
reason:
for_customer: null
for_developer: null
updated_at: '2026-04-15T11:29:08Z'
created_at: '2026-04-15T11:26:12Z'
updated_at: '2026-04-15T11:31:18Z'
last_status_updated_at: '2026-04-15T11:29:09Z'
capabilities:
on_ramp:
- currency: USD
status: false
methods:
- ACH
- FEDWIRE
reason:
for_customer: null
for_developer: null
off_ramp:
- currency: USD
status: false
methods:
- ACH
- FEDWIRE
- ACH_SAME_DAY
reason:
for_customer: null
for_developer: Unsupported at the moment
- currency: EUR
status: true
methods:
- BANK
reason:
for_customer: null
for_developer: null
- currency: BDT
status: true
methods:
- BANK
- E_WALLET
reason:
for_customer: null
for_developer: null
- currency: AUD
status: true
methods:
- BANK
reason:
for_customer: null
for_developer: null
- currency: INR
status: true
methods:
- BANK
reason:
for_customer: null
for_developer: null
- currency: JPY
status: true
methods:
- BANK
reason:
for_customer: null
for_developer: null
- currency: NPR
status: true
methods:
- BANK
reason:
for_customer: null
for_developer: null
- currency: CAD
status: true
methods:
- BANK
reason:
for_customer: null
for_developer: null
- currency: PKR
status: true
methods:
- BANK
reason:
for_customer: null
for_developer: null
- currency: PHP
status: true
methods:
- BANK
reason:
for_customer: null
for_developer: null
- currency: SGD
status: true
methods:
- BANK
reason:
for_customer: null
for_developer: null
- currency: GBP
status: true
methods:
- BANK
reason:
for_customer: null
for_developer: null
rejection_reason: null
request_for_information: []
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
description: Customer not found
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Customer not found
'422':
$ref: '#/components/responses/ValidationError'
patch:
summary: Update Customer
description: >-
Submit an RFI response for an individual or business customer. You must
pass only the fields and documents specified in the RFI. Submitting data
that was not requested will trigger an error.
x-mint:
content: |
Only submit the fields explicitly listed in the RFI. Sending unrequested
fields will result in an error.
The request body accepts the same fields as the following endpoints:
- Attach Documents to Individual Customer
- Attach Documents to Business Customer
- Attach Documents to Business Customer V2
- Attach Document To Associated Party
- Attach Document To Associated Party V2
tags:
- Customers
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
format: uuid
description: Unique identifier of the customer to update
example: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- title: Individual Customer
type: object
properties:
proof_of_identity:
type: object
properties:
type:
type: string
example: PASSPORT
number:
type: string
example: A12345678
country:
type: string
example: USA
issue_date:
type: string
format: date
example: '2020-01-15'
expiry_date:
type: string
format: date
example: '2030-01-15'
files:
type: array
items:
type: object
properties:
uri:
type: string
example: /AbAcQ4hn_0652746727637.pdf
side:
type: string
enum:
- FRONT
- BACK
example: FRONT
proof_of_address:
type: object
description: >-
The proof of address document must not be older than
three months.
properties:
type:
type: string
example: UTILITY_BILL
country:
type: string
example: USA
files:
type: array
items:
type: object
properties:
uri:
type: string
example: /AbAcQ4hn_0652746727638.pdf
- title: Business Customer
type: object
properties:
ownership_documents:
type: array
description: >-
Ownership documents for the business customer (e.g.
shareholder registry, proof of signatory authority)
items:
type: object
properties:
type:
type: string
example: PROOF_OF_SIGNATORY_AUTHORITY
description:
type: string
example: Shareholder Registry
files:
type: array
items:
type: object
properties:
uri:
type: string
example: /AbAcQ4hn_0652746727639.pdf
formation_documents:
type: array
description: >-
Formation documents for the business customer (e.g.
certificate of incorporation, registration document)
items:
type: object
properties:
type:
type: string
example: REGISTRATION_DOCUMENT
description:
type: string
example: Certificate of Incorporation
files:
type: array
items:
type: object
properties:
uri:
type: string
example: /AbAcQ4hn_0652746727637.pdf
supporting_documents:
type: array
description: Supporting documents for the customer
items:
type: object
properties:
type:
type: string
example: PROOF_OF_SOURCE_OF_FUNDS
description:
type: string
example: Proof of source of funds doc
files:
type: array
items:
type: object
properties:
uri:
type: string
example: /PoAdef45_0652746727640.pdf
associated_party_attachments:
type: array
description: >-
Document attachments for associated parties of a
business customer
items:
type: object
properties:
associated_party_id:
type: string
format: uuid
description: ID of the associated party
example: f6b13e01-044a-4f74-a70b-d5f66b6449af
identifying_documents:
type: array
items:
type: object
properties:
type:
type: string
enum:
- PASSPORT
- NATIONAL_ID
- DRIVERS_LICENSE
- RESIDENCE_PERMIT
number:
type: string
country:
type: string
issue_date:
type: string
format: date
expiry_date:
type: string
format: date
files:
type: array
items:
type: object
properties:
side:
type: string
enum:
- FRONT
- BACK
uri:
type: string
address_documents:
type: array
items:
type: object
properties:
type:
type: string
files:
type: array
items:
type: object
properties:
uri:
type: string
supporting_documents:
type: array
items:
type: object
examples:
Business Customer:
value:
ownership_documents:
- type: PROOF_OF_SIGNATORY_AUTHORITY
description: Shareholder Registry
files:
- uri: /AbAcQ4hn_0652746727639.pdf
formation_documents:
- type: REGISTRATION_DOCUMENT
description: Certificate of Incorporation
files:
- uri: /AbAcQ4hn_0652746727637.pdf
supporting_documents:
- type: PROOF_OF_SOURCE_OF_FUNDS
description: Proof of source of funds doc
files:
- uri: /PoAdef45_0652746727640.pdf
associated_party_attachments:
- associated_party_id: f6b13e01-044a-4f74-a70b-d5f66b6449af
identifying_documents:
- type: PASSPORT
number: A12345678
country: USA
issue_date: '2020-01-15'
expiry_date: '2030-01-15'
files:
- uri: /AbAcQ4hn_0652746727637.pdf
- type: DRIVERS_LICENSE
number: DL987654321
country: USA
issue_date: '2019-06-01'
expiry_date: '2029-06-01'
files:
- side: FRONT
uri: /AbAcQ4hn_0652746727645.pdf
- side: BACK
uri: /AbAcQ4hn_0652746727646.pdf
address_documents:
- type: BANK_STATEMENT
files:
- uri: /AbAcQ4hn_0652746727638.pdf
supporting_documents: []
- associated_party_id: f71dc19f-b9a0-49fb-bd2d-5add3c01626e
identifying_documents:
- type: NATIONAL_ID
number: NID-987654
country: USA
issue_date: '2021-03-10'
expiry_date: '2031-03-10'
files:
- side: FRONT
uri: /XyZ123mn_0652746727650.pdf
- side: BACK
uri: /XyZ123mn_0652746727651.pdf
address_documents:
- type: UTILITY_BILL
files:
- uri: /XyZ123mn_0652746727652.pdf
Individual Customer:
value:
proof_of_identity:
type: PASSPORT
number: A12345678
country: USA
issue_date: '2020-01-15'
expiry_date: '2030-01-15'
files:
- uri: /AbAcQ4hn_0652746727637.pdf
side: FRONT
proof_of_address:
type: UTILITY_BILL
country: USA
files:
- uri: /AbAcQ4hn_0652746727638.pdf
responses:
'200':
description: Customer updated successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
customer_id:
type: string
format: uuid
example: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
example:
data:
customer_id: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
'400':
description: Validation failed
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
message:
type: string
example: Validation failed
data:
type: object
additionalProperties:
type: string
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
'422':
$ref: '#/components/responses/ValidationError'
/v2/customers/{customer_id}/wallets:
post:
summary: Create Customer Wallets
description: >-
Provisions one or more crypto wallets for a customer across supported
chains and tokens.
x-mint:
content: |
Fin.com issued crypto wallets require pre-configuration. Contact support to learn more.
Wallets start with a status of `PENDING`. They move to `ACTIVE` (or
`INACTIVE`) asynchronously once the wallet address has been issued,
so creation is not synchronous. Poll [Get Customer
Wallets](/api-reference/crypto-orchestration/get-customer-wallets)
to check on status.
Supported rails and currencies:
| Rail | Currency |
| -------- | -------- |
| POLYGON | USDC |
| ETHEREUM | USDC |
| SOLANA | USDC |
If any requested wallet (same `rail` + `currency` pair) already
exists for the customer, the request fails with a `409` and lists
the colliding pairs; none of the requested wallets are created.
tags:
- Customers
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
example: 765d498e-a267-4154-9d2f-9e411a0b50dd
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- wallets
properties:
wallets:
type: array
minItems: 1
description: Wallets to provision, one entry per rail.
items:
type: object
required:
- rail
- currency
properties:
rail:
type: string
description: Blockchain network to provision the wallet(s) on.
example: SOLANA
currency:
type: array
minItems: 1
description: Token(s) to provision a wallet for on this rail.
items:
type: string
example:
- USDC
example:
wallets:
- rail: SOLANA
currency:
- USDC
- rail: ETHEREUM
currency:
- USDC
responses:
'200':
description: >-
Wallet creation request accepted for processing. Note the nested
`data`: the outer envelope wraps a `message` plus the inner `data`
array of wallets being provisioned.
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
message:
type: string
example: Request is being processed
data:
type: array
items:
$ref: '#/components/schemas/CustomerWallet'
example:
data:
message: Request is being processed
data:
- id: b1e2c3d4-4d5e-6f70-8a90-1b2c3d4e5f60
rail: SOLANA
currency: USDC
status: PENDING
- id: d3a4e5f6-4d5e-6f70-8a90-1b2c3d4e5f62
rail: ETHEREUM
currency: USDC
status: PENDING
'401':
$ref: '#/components/responses/AuthenticationError'
'409':
description: >-
One or more of the requested wallets already exist for this
customer.
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: one or more wallets already exist for this customer
collisions:
type: array
items:
type: object
properties:
rail:
type: string
example: SOLANA
currency:
type: string
example: USDC
example:
message: one or more wallets already exist for this customer
collisions:
- rail: SOLANA
currency: USDC
'422':
$ref: '#/components/responses/ValidationError'
get:
summary: Get Customer Wallets
description: >-
Returns all crypto wallets linked to a customer across supported chains
and tokens.
x-mint:
content: >
Fin.com issued crypto wallets require pre-configuration. Contact support to learn more.
Upon approval, the customer is provisioned wallet addresses for the
following rails and currencies:
| Rail | Currency |
| -------- | -------- |
| POLYGON | USDC |
| ETHEREUM | USDC |
| SOLANA | USDC |
`address` is `null` until the wallet finishes provisioning (see
`status` on [Create Customer
Wallets](/api-reference/crypto-orchestration/create-customer-wallets)).
tags:
- Customers
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
example: 765d498e-a267-4154-9d2f-9e411a0b50dd
responses:
'200':
description: Customer wallets retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CustomerWallet'
example:
data:
- id: 27dbc0f2-e5ae-444b-b4ab-0764252aedf6
status: ACTIVE
currency: USDC
rail: ETHEREUM
address: '0xc42a5f7083c7e8f1d9820c7660867277289cd998'
balance: 10.000001
- id: e1dcce59-0309-43de-ab6c-a0bd3497b9c3
status: ACTIVE
currency: USDC
rail: SOLANA
address: BCSZEokfpVsSpUuuZJMScLiUpYjvvUmrrAJkNbrTTnng
balance: 25.000001
- id: c92dfe1d-220e-4446-a5e4-cd7d46031ba5
status: PENDING
currency: USDC
rail: POLYGON
address: null
balance: 0
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
/v2/customers/{customer_id}/capabilities:
get:
summary: Get Customer Capabilities
description: >-
Returns the on-ramp and off-ramp capabilities available for a customer,
including the supported rails and their activation status for each
currency and corridor.
tags:
- Customers
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
format: uuid
example: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
responses:
'200':
description: Customer capabilities retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
on_ramp:
type: array
items:
type: object
properties:
currency:
type: string
example: USD
rail:
type: string
example: ACH
status:
type: boolean
example: true
off_ramp:
type: array
items:
type: object
properties:
corridor:
type: string
example: BGD
currency_wise_rail:
type: array
items:
type: object
properties:
currency:
type: string
example: BDT
rails:
type: array
items:
type: object
properties:
rail:
type: string
example: LOCAL
status:
type: boolean
example: true
examples:
OK:
summary: OK
value:
data:
on_ramp:
- currency: USD
rail: ACH
status: false
- currency: USD
rail: FEDWIRE
status: true
- currency: USD
rail: SWIFT
status: true
off_ramp:
- corridor: BGD
currency_wise_rail:
- currency: BDT
rails:
- rail: LOCAL
status: true
- currency: USD
rails:
- rail: SWIFT
status: true
- corridor: AUS
currency_wise_rail:
- currency: USD
rails:
- rail: SWIFT
status: true
- corridor: GBR
currency_wise_rail:
- currency: USD
rails:
- rail: SWIFT
status: true
- currency: GBP
rails:
- rail: LOCAL
status: true
- corridor: CAN
currency_wise_rail:
- currency: USD
rails:
- rail: SWIFT
status: true
- corridor: DEU
currency_wise_rail:
- currency: USD
rails:
- rail: SWIFT
status: true
- currency: EUR
rails:
- rail: LOCAL
status: true
- corridor: POL
currency_wise_rail:
- currency: USD
rails:
- rail: SWIFT
status: true
- corridor: IND
currency_wise_rail:
- currency: USD
rails:
- rail: SWIFT
status: true
- currency: INR
rails:
- rail: LOCAL
status: true
- corridor: PAK
currency_wise_rail:
- currency: USD
rails:
- rail: SWIFT
status: true
- corridor: NPL
currency_wise_rail:
- currency: USD
rails:
- rail: SWIFT
status: true
- corridor: PHL
currency_wise_rail:
- currency: USD
rails:
- rail: SWIFT
status: true
- corridor: SGP
currency_wise_rail:
- currency: USD
rails:
- rail: SWIFT
status: true
- currency: SGD
rails:
- rail: LOCAL
status: true
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
'422':
$ref: '#/components/responses/ValidationError'
/v2/customers/individual:
post:
summary: Create Individual Customer V2
description: >-
Create a new individual customer with verification details, basic info,
address, and financial profile.
tags:
- Customers
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateIndividualCustomerV2Input'
example:
verification_type: STANDARD
basic_info:
first_name: Maria
middle_name: Elena
last_name: Garcia
dob: '1990-04-15'
email: maria.garcia@example.com
phone: '+14155552671'
country_of_residence: USA
primary_nationality: USA
secondary_nationality: MEX
gender: FEMALE
tax_info:
- country_code: USA
document_type: SSN
document_id: 123-45-6789
address:
street_line_1: 123 Market Street
street_line_2: Apt 4B
city: San Francisco
subdivision_code: US-CA
postal_code: '94103'
country: USA
financial_profile:
employment_status: EMPLOYED
occupation_id: 42
purpose_id: 3
purpose_remarks: Personal remittances to family
source_of_funds_description: Monthly salary from employment
source_of_fund_ids:
- 1
- 5
monthly_volume_usd: 5000
meta_data:
reference: client-ref-abc-001
responses:
'200':
description: Individual customer created successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
customer_id:
type: string
format: uuid
example: 0ca13984-63f3-45d7-99a7-52b9133f0259
tos_policies_url:
type: string
format: uri
description: >-
URL for the customer to accept Terms of Service. Parse
the tos_policies_value query parameter for later use.
example: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=0ca13984-63f3-45d7-99a7-52b9133f0259&tos_policies_value=7e8873f7-519b-43d7-9565-c81befc52dd6
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
'423':
description: Locked. RELIANCE verification is not available for your client.
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: RELIANCE is not available for your client
/v1/customers/individual:
post:
summary: Create Individual Customer
description: Create a new individual customer with verification details
x-mint:
content: >
Only English (Latin) characters are allowed as inputs for all fields.
## Important Requirements
- **Email Address**: Must be all lowercase or you will receive a
validation error
- **RELIANCE Verification**: If you attempt to use `RELIANCE`
verification type but it's not enabled for your client, you will
receive a 423 error with message: "RELIANCE is not available for your
client"
tags:
- Customers
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateIndividualCustomerInput'
responses:
'200':
description: Individual customer created successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
customer_id:
type: string
format: uuid
example: 55bd6b4e-c20a-4cc8-9535-91d5557a67d9
tos_policies_url:
type: string
format: uri
example: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=55bd6b4e-c20a-4cc8-9535-91d5557a67d9&tos_policies_value=e9414388-fbdf-4407-b5c2-bc39eae3645b
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
'423':
description: Locked. RELIANCE verification is not available for your client.
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: RELIANCE is not available for your client
/v2/customers/business:
post:
summary: Create Business Customer V2
description: >-
Create a new business customer with full KYB profile, associated parties
(UBOs/directors), compliance data, and optionally holding structure and
public listing details.
x-mint:
content: >
## Important Requirements
- **Email Address**: Must be all lowercase or you will receive a
validation error
- **RELIANCE Verification**: If you attempt to use `RELIANCE`
verification type but it's not enabled for your client, you will
receive a 423 error with message: "RELIANCE is not available for your
client"
- **Non-ASCII characters**: If any input field contains non-ASCII
characters, you must provide a transliterated (Latin) value in the
corresponding `_en` field (e.g., `legal_name_en`, `street_line_1_en`,
`first_name_en`)
- **Third-party Fund Usage**: The `third_party_fund_usage` field
indicates whether this customer will be moving other people's money
- **Ownership Percentages**: The total ownership percentages of all
associated parties must add up to more than 0 and less than 100
- **Reference Data**: `purpose_id`, `source_of_fund_ids` and
`source_of_wealth_ids` are integer foreign keys. Fetch valid values
from [List Account
Purposes](https://developer.fin.com/api-reference/catalogue/list-account-purposes)
, [List Source of
Funds](https://developer.fin.com/api-reference/catalogue/list-source-of-funds)
and [List Source of
Wealth](https://developer.fin.com/api-reference/catalogue/list-source-of-wealth)
- **subdivision_code**: Pass the ISO 3166-2 code. For example for CA,
pass US-CA.
tags:
- Customers
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBusinessCustomerV2Input'
example:
verification_type: STANDARD
industry_codes:
- '541512'
- '522390'
basic_info:
legal_name: Fin.com
legal_name_en: Fin.com
trade_name: Toronggo
trade_name_en: Toronggo
description: >-
Bangladesh-based technology company providing cross-border B2B
payment and financial technology services to enterprise
clients
entity_type: LIMITED_LIABILITY_COMPANY
email: m@tech.com
phone: '+8801529876543'
incorporation_date: '2018-06-15'
country_of_incorporation: BGD
registration_number: C-123456/2018
is_dao: false
tax_info:
- country_code: BGD
document_type: TIN
document_id: '123456789012'
websites:
- https://fin.com
financial_profile:
purpose_id: 3
purpose_remarks: Cross-border B2B payments for international suppliers
source_of_fund_ids:
- 1
- 4
source_of_funds_description: Revenue from software licensing and technology services
source_of_wealth_ids:
- 2
estimated_annual_revenue_usd: 5000000
expected_monthly_deposits_usd: 400000
expected_monthly_withdrawals_usd: 350000
expected_transaction_value_usd: 50000
expected_monthly_transaction_count: 20
third_party_fund_usage: false
addresses:
is_incorporated_address_same: false
incorporated_address:
street_line_1: House 12, Road 4, Dhanmondi
city: Dhaka
state: BD-13
subdivision_code: BD-13
postal_code: '1205'
country: BGD
physical_address:
street_line_1: Level 5, 45 Gulshan Avenue
city: Dhaka
state: BD-13
subdivision_code: BD-13
postal_code: '1212'
country: BGD
associated_parties:
- ref: owner-001
basic_info:
first_name: Fatima
last_name: Rahman
dob: '1990-05-15'
email: fatima.rahman22@acmecorp.com.bd
phone: '+8801711223344'
country_of_residence: BGD
primary_nationality: BGD
tax_info:
- country_code: BGD
document_type: TIN
document_id: '1234567890123'
address:
street_line_1: House 12, Road 4, Dhanmondi
city: Dhaka
state: BD-13
subdivision_code: BD-13
postal_code: '1205'
country: BGD
roles:
- shareholder
ownership_info:
designation: CEO & Founder
percentage_of_ownership: 60
relationship_establishment_date: '2018-06-15'
has_control: true
is_signer: true
is_director: true
- ref: owner-002
basic_info:
first_name: Karim
last_name: Islam
dob: '1992-08-22'
email: karim.islam22@acmecorp.com.bd
phone: '+8801822334455'
country_of_residence: BGD
primary_nationality: BGD
tax_info:
- country_code: BGD
document_type: TIN
document_id: '9876543210123'
address:
street_line_1: Flat 3B, 78 Mirpur Road
city: Dhaka
state: BD-13
subdivision_code: BD-13
postal_code: '1216'
country: BGD
roles:
- ubo
ownership_info:
designation: CTO & Co-Founder
percentage_of_ownership: 40
relationship_establishment_date: '2018-06-15'
has_control: false
is_signer: false
is_director: false
holding_structure:
has_material_intermediary_ownership: true
corporate_shareholders:
- entity_name: Toronggo Ventures Limited
entity_name_en: Toronggo Ventures Limited
registration_country_code: BGD
ownership_percentage: 0
registration_number: C-987654/2015
entity_type: LIMITED_LIABILITY_COMPANY
incorporation_date: '2015-03-01'
compliance:
operates_in_prohibited_countries: false
additional_description_for_compliance_screening: We do not operate in any OFAC-sanctioned jurisdictions.
risk_profile:
high_risk_activities:
- adult_entertainment
high_risk_activities_explanation: >-
We facilitate cross-border B2B payments, subject to enhanced
due diligence.
conducts_money_services: true
conducts_money_services_via_fin: false
conducts_money_services_description: >-
Licensed payment service provider offering international
transfer services.
regulated_activity:
description: >-
Licensed payment service provider under Bangladesh Bank
regulation
primary_authority_country_code: BGD
primary_authority_name: Bangladesh Bank
license_number: PSP-2019-00123
aml:
supervisory_authority_name: Bangladesh Financial Intelligence Unit
license_number: PSP-2019-00123
has_appointed_mlro: true
customer_risk_split:
low_risk: 70
medium_risk: 25
high_risk: 5
prohibits_anonymous_or_fictitious_accounts: true
prohibits_accounts_for_unlicensed_or_shell_customers: true
customer_identity_verification:
method: automated
system: Jumio
pep_and_sanctions_screening:
method: automated
system: Dow Jones Risk & Compliance
sanction_lists:
- OFAC
- EU
- UN
- HMT
customer_risk_classification_from_due_diligence: true
enhanced_due_diligence_process: true
transaction_monitoring:
method: automated
system: Actimize
procedures_for_transaction_monitoring: true
subject_to_ml_or_tf_investigation: none
subject_to_regulatory_enforcement_past_2_years: none
confirms_no_service_to_sanctioned_countries: true
client_funds_accessibility: closed_loop
aml_ctf_audit_completed: true
planned_audit_date: '2026-12-01'
meta_data:
reference: REF-20250123-TORONGGO
responses:
'201':
description: Business customer created successfully
content:
application/json:
schema:
type: object
properties:
customer_id:
type: string
format: uuid
description: Unique identifier for the created customer
example: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
tos_policies_url:
type: string
format: uri
description: >-
URL for customer to accept Terms of Service. Parse the
tos_policies_value query parameter and pass it when
attaching business documents.
example: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06&tos_policies_value=6955e70b-f9f3-4076-b1ce-5c897085dd24
'400':
description: Validation failed
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
message:
type: string
example: Validation failed
data:
type: object
additionalProperties:
type: string
example:
basic_info.email: Must be a valid email address
associated_parties[0].basic_info.dob: Party must be at least 18 years old
addresses.physical_address: Required when is_incorporated_address_same is false
'401':
$ref: '#/components/responses/AuthenticationError'
'423':
description: Locked. RELIANCE verification is not available for your client.
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 423
message:
type: string
example: RELIANCE is not available for your client
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 500
message:
type: string
example: Internal server error
/v1/customers/business:
post:
summary: Create Business Customer
description: >-
Create a new business customer with verification details, addresses, and
associated parties
x-mint:
content: >
This endpoint was deprecated on May 20, 2026. Use [Create Business Customer V2](https://developer.fin.com/api-reference/customers/create-business-customer-v2) instead.
## Important Requirements
- **Email Address**: Must be all lowercase or you will receive a
validation error
- **RELIANCE Verification**: If you attempt to use `RELIANCE`
verification type but it's not enabled for your client, you will
receive a 423 error with message: "RELIANCE is not available for your
client"
- **Third-party Fund Usage**: The `third_party_fund_usage` field
indicates whether this customer will be moving other people's money
- **Ownership Percentages**: The total ownership percentages of all
associated parties must add up to more than 0 and less than 100
tags:
- Customers
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBusinessCustomerInput'
responses:
'200':
description: Business customer created successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
customer_id:
type: string
format: uuid
description: Unique identifier for the created customer
example: 2d0a9df3-e1e5-4955-9759-ce0522e0ddc9
tos_policies_url:
type: string
format: uri
description: URL for customer to accept Terms of Service policies
example: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=2d0a9df3-e1e5-4955-9759-ce0522e0ddc9&tos_policies_value=f11e77c6-8dc0-4d4b-a3f2-ed84c8ccfc69
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
'423':
description: Locked. RELIANCE verification is not available for your client.
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: RELIANCE is not available for your client
/v1/customers/upload:
post:
summary: Upload Document
description: >-
Upload customer documents using multipart/form-data. Files can be
uploaded with arbitrary field names (e.g., poa, poi, passport, file1,
etc.)
x-mint:
content: |
## Allowed File Types
- `PDF`
- `JPG` / `JPEG`
- `PNG`
Files should be uploaded as separate form fields with arbitrary names.
You can use any field name for files (e.g., `passport`, `poa`, `poi`, `file1`, `document1`, etc.).
The field name you use will be returned as the key in the response.
tags:
- Customers
security:
- bearerAuth: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
customer_id:
type: string
format: uuid
example: 55bd6b4e-c20a-4cc8-9535-91d5557a67d9
passport:
type: string
format: binary
poa:
type: string
format: binary
poi:
type: string
format: binary
responses:
'200':
description: Documents uploaded successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
files:
type: array
items:
type: object
additionalProperties:
type: string
example:
- passport: /CwW9PHhP_Germany-passport.jpg
- poa: /KVdLfqjR_germany-poa-green.jpg
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v2/customers/{customer_id}/individual/attach:
post:
summary: Attach Documents to Individual Customer V2
description: >-
Attach identifying and address documents to an existing v2 individual
customer. Replaces the v1 proof_of_identity / proof_of_address structure
with separate identifying_documents and address_documents arrays.
Documents are processed asynchronously.
tags:
- Customers
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
format: uuid
description: Unique identifier for the individual customer
example: 55bd6b4e-c20a-4cc8-9535-91d5557a67d9
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttachDocumentsToIndividualCustomerV2Input'
example:
identifying_documents:
- type: SELFIE
files:
- uri: /AbAcQ4hn_0652746727637.pdf
- type: DRIVERS_LICENSE
number: DL987654321
country: USA
state: US-CA
issue_date: '2019-06-01'
expiry_date: '2029-06-01'
files:
- side: FRONT
uri: /AbAcQ4hn_0652746727638.pdf
- side: BACK
uri: /XyZ123mn_0652746727639.pdf
address_documents:
- type: BANK_STATEMENT
country: USA
files:
- uri: /PoAdef45_0652746727640.pdf
tos_policies_value: e9414388-fbdf-4407-b5c2-bc39eae3645b
responses:
'200':
description: Request validated and queued for asynchronous processing
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
customer_id:
type: string
format: uuid
example: 55bd6b4e-c20a-4cc8-9535-91d5557a67d9
meta:
type: object
nullable: true
example: null
'400':
description: Malformed JSON or unparseable payload
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
message:
type: string
example: Malformed request body
'401':
$ref: '#/components/responses/AuthenticationError'
'403':
description: >-
Customer not owned by the client, wrong api_version, or not in an
allowed status, or a file URI does not belong to the customer
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: forbidden
message:
type: string
example: Customer is not eligible for this operation
'404':
$ref: '#/components/responses/NotFoundError'
'409':
description: Another attach for this customer is already in flight
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: conflict
message:
type: string
example: >-
An attach request is already in progress for this
customer
'422':
$ref: '#/components/responses/ValidationError'
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 500
message:
type: string
example: Internal server error
/v1/customers/individual/attach:
post:
summary: Attach Documents to Individual Customer
description: >-
Attach proof of identity and proof of address documents to an existing
individual customer
x-mint:
content: |
Before calling this endpoint, upload documents using the [Upload document](https://developer.fin.com/api-reference/customers/upload-document) endpoint
to obtain the URIs needed for the `files` arrays.
The `tos_policies_value` should be parsed from the `tos_policies_url` query parameter
returned from the Create Individual Customer endpoint.
tags:
- Customers
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttachDocumentForIndividualCustomerInput'
responses:
'200':
description: Documents attached successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
customer_id:
type: string
format: uuid
example: 55bd6b4e-c20a-4cc8-9535-91d5557a67d9
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/customers/associated-parties/individual/attach:
post:
summary: Attach Document To Associated Party
description: >-
Attach proof of identity and proof of address documents to associated
parties of an existing customer
x-mint:
content: |
This endpoint was deprecated on May 20, 2026. Use [Attach Documents to Associated Party V2](https://developer.fin.com/api-reference/customers/attach-documents-to-associated-party-v2) instead.
Before calling this endpoint, upload documents using the [Upload document](https://developer.fin.com/api-reference/customers/upload-document) endpoint
to obtain the URIs needed for the `files` arrays.
This endpoint allows attaching documents for multiple associated parties in a single request.
tags:
- Customers
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttachDocumentToAssociatedPartyInput'
responses:
'200':
description: Documents attached successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
description: Generic response object
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/customers/business/attach:
post:
summary: Attach Documents to Business Customer
description: >-
Attach ownership structure, company details, and legal presence
documents to an existing business customer
x-mint:
content: |
This endpoint was deprecated on May 20, 2026. Use [Attach Documents to Business Customer V2](https://developer.fin.com/api-reference/customers/attach-documents-to-business-customer-v2) instead.
- Before calling this endpoint, upload documents using the [Upload document](https://developer.fin.com/api-reference/customers/upload-document) endpoint to obtain the URIs needed for the `files` arrays.
- The `tos_policies_value` should be parsed from the `tos_policies_url` query parameter returned from the Create Business Customer endpoint.
tags:
- Customers
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttachDocumentsToBusinessCustomerInput'
responses:
'200':
description: Documents attached successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
description: Generic response object
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/customers/enable-preference:
post:
summary: Enable USD Features
description: Enable USD features for an existing customer
x-mint:
content: |
This endpoint is deprecated and will be removed in a future release. Do not use it in new integrations. You can skip this step entirely and call [Create Virtual Account V2](https://developer.fin.com/api-reference/virtual-accounts/create-virtual-account-v2) directly, which handles USD feature enablement as part of account creation.
tags:
- Customers
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- customer_id
properties:
customer_id:
type: string
format: uuid
example: 55bd6b4e-c20a-4cc8-9535-91d5557a67d9
responses:
'200':
description: USD features enabled successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
description: Generic response object
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v2/customers/{customer_id}/business/attach:
post:
summary: Attach Documents to Business Customer V2
description: >-
Attach formation, ownership, and supporting documents to an existing
business customer. Documents are categorised into three arrays:
formation_documents, ownership_documents, and supporting_documents,
replacing the v1 ownership_structure / company_details / legal_presence
structure.
x-mint:
content: >
- Upload files first using the [Upload document](https://developer.fin.com/api-reference/customers/upload-document) endpoint to obtain URIs, then reference them here.
- Parse `tos_policies_value` from the `tos_policies_url` returned by `POST /v2/customers/business` and include it in this request.
## Document Type Reference
See [Entity-wise document
requirement](https://developer.fin.com/guides/compliance-and-regulatory/entity-wise-document-requirement)
for all valid `type` values per
category and entity type.
tags:
- Customers
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
format: uuid
description: Unique identifier for the business customer
example: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttachDocumentsToBusinessCustomerV2Input'
example:
formation_documents:
- type: EVIDENCE_OF_DIRECTORS_AND_CONTROLLERS
description: Certificate of Incorporation
files:
- uri: /AbAcQ4hn_0652746727637.pdf
- type: REGISTRATION_DOCUMENT
description: Business registration doc
files:
- uri: /AbAcQ4hn_0652746727638.pdf
ownership_documents:
- type: PROOF_OF_SIGNATORY_AUTHORITY
description: Shareholder Registry
files:
- uri: /XyZ123mn_0652746727639.pdf
supporting_documents:
- type: PROOF_OF_SOURCE_OF_FUNDS
files:
- uri: /PoAdef45_0652746727640.pdf
- type: PROOF_OF_ADDRESS
files:
- uri: /PoAdef45_0652746727641.pdf
tos_policies_value: 6955e70b-f9f3-4076-b1ce-5c897085dd24
responses:
'200':
description: Documents attached successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
description: Generic response object
'400':
description: Validation failed
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
message:
type: string
example: Validation failed
data:
type: object
additionalProperties:
type: string
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
'422':
$ref: '#/components/responses/ValidationError'
/v2/customers/{customer_id}/associated-parties/individual/attach:
post:
summary: Attach Documents to Associated Party V2
description: >-
Attach identifying documents and address documents for one or more
associated parties of a business customer. Replaces the v1
proof_of_identity / proof_of_address structure with separate
identifying_documents and address_documents arrays, allowing multiple ID
documents per party.
x-mint:
content: |
Upload files first using [Upload document](https://developer.fin.com/api-reference/customers/upload-document) to obtain URIs,
then reference them here.
The `associated_party_id` for each party is returned in the
[Get Customer Details V2](https://developer.fin.com/api-reference/customers/get-customer-details-v2) response.
## Identity Document Side Requirements
| Type | Sides Required |
|------|---------------|
| `PASSPORT` | No (single image) |
| `NATIONAL_ID` | Yes: `FRONT` + `BACK` |
| `DRIVERS_LICENSE` | Yes: `FRONT` + `BACK` |
| `RESIDENCE_PERMIT` | No (single image) |
tags:
- Customers
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
format: uuid
description: Unique identifier for the business customer
example: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttachDocumentsToAssociatedPartyV2Input'
example:
associated_party_attachments:
- associated_party_id: f6b13e01-044a-4f74-a70b-d5f66b6449af
identifying_documents:
- type: PASSPORT
number: A12345678
country: USA
issue_date: '2020-01-15'
expiry_date: '2030-01-15'
files:
- uri: /AbAcQ4hn_0652746727637.pdf
- type: DRIVERS_LICENSE
number: DL987654321
country: USA
issue_date: '2019-06-01'
expiry_date: '2029-06-01'
files:
- side: FRONT
uri: /AbAcQ4hn_0652746727645.pdf
- side: BACK
uri: /AbAcQ4hn_0652746727646.pdf
address_documents:
- type: BANK_STATEMENT
files:
- uri: /AbAcQ4hn_0652746727638.pdf
supporting_documents: []
- associated_party_id: f71dc19f-b9a0-49fb-bd2d-5add3c01626e
identifying_documents:
- type: NATIONAL_ID
number: NID-987654
country: USA
issue_date: '2021-03-10'
expiry_date: '2031-03-10'
files:
- side: FRONT
uri: /XyZ123mn_0652746727650.pdf
- side: BACK
uri: /XyZ123mn_0652746727651.pdf
address_documents:
- type: UTILITY_BILL
files:
- uri: /XyZ123mn_0652746727652.pdf
responses:
'200':
description: Documents attached successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
description: Generic response object
'400':
description: Validation failed
content:
application/json:
schema:
type: object
properties:
status:
type: integer
example: 400
message:
type: string
example: Validation failed
data:
type: object
additionalProperties:
type: string
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/beneficiaries/countries:
get:
summary: List Available Countries
description: >-
Retrieve a list of countries supported for beneficiary creation with
available payment methods and phone validation rules
tags:
- Beneficiaries
security:
- bearerAuth: []
responses:
'200':
description: Countries list retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: integer
example: 4
code:
type: string
example: AUS
name:
type: string
example: Australia
currency_code:
type: string
example: AUD
phone:
type: object
properties:
code:
type: string
example: '+61'
max_length:
type: integer
example: 9
min_length:
type: integer
example: 9
available_methods:
type: array
items:
type: string
enum:
- BANK
- E_WALLET
example:
- BANK
flag:
type: string
format: uri
example: https://flagcdn.com/au.svg
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/beneficiaries/methods:
get:
summary: List Bank Identifiers
description: >-
Retrieve a list of available banks or e-wallet providers for a specific
country and method type
tags:
- Beneficiaries
security:
- bearerAuth: []
parameters:
- name: country_code
in: query
required: true
schema:
type: string
example: BGD
- name: method
in: query
required: true
schema:
type: string
enum:
- BANK
- E_WALLET
responses:
'200':
description: Bank/method identifiers retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: integer
example: 1461
name:
type: string
example: AB BANK LTD.
method:
type: string
enum:
- BANK
- E_WALLET
example: BANK
has_branch:
type: boolean
example: true
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/beneficiaries/methods/{method_id}/branches:
get:
summary: List Bank Branch Identifiers
description: >-
Retrieve a list of available branches for a specific bank or payment
method
tags:
- Beneficiaries
security:
- bearerAuth: []
parameters:
- name: method_id
in: path
required: true
schema:
type: string
example: '1472'
responses:
'200':
description: Branch identifiers retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: integer
example: 21513
name:
type: string
example: SITAKUNDA
branch_code:
type: string
example: '020157391'
'401':
$ref: '#/components/responses/AuthenticationError'
/v3/beneficiaries:
post:
summary: Create Beneficiary V3
description: >-
Create a new beneficiary for payments and transfers. Supports bank
accounts, e-wallets, and external crypto wallets as destination types.
x-mint:
content: >
The beneficiary will be ready for transactions only when its `status` is `APPROVED` and `active` is true.
## De-Duplication Logic
| Destination Type | Fields
Checked
|
| ----------------------- |
-------------------------------------------------------------------------------------------------------
|
| Bank Account | `bank_account.scheme`,
`bank_account.number`, `bank_routing.scheme`,
`bank_routing.number` |
| E-Wallet | `e_wallet.scheme`,
`e_wallet.number`
|
| External Crypto Wallet | `destination_wallet.address`,
`destination_wallet.rail`
|
tags:
- Beneficiaries
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
allOf:
- type: object
required:
- customer_id
- country
- currency
- counter_party
- account_holder
- account_holder_address
- receiver_meta_data
- developer_fee
properties:
customer_id:
type: string
format: uuid
example: 6fa1ccd4-ffbd-4b20-a113-ccc286b35443
country:
type: string
pattern: ^[A-Z]{3}$
example: BGD
currency:
type: string
example: BDT
counter_party:
type: string
enum:
- FIRST_PARTY
- THIRD_PARTY
example: FIRST_PARTY
account_holder:
oneOf:
- title: Individual
type: object
required:
- type
- first_name
- last_name
- email
- phone
properties:
type:
type: string
enum:
- INDIVIDUAL
first_name:
type: string
example: John
last_name:
type: string
example: Doe
email:
type: string
format: email
example: john.doe@example.com
phone:
type: string
example: '+8801912244626'
- title: Business
type: object
required:
- type
- business_name
- email
- phone
properties:
type:
type: string
enum:
- BUSINESS
business_name:
type: string
example: Acme Corp
email:
type: string
format: email
example: contact@acmecorp.com
phone:
type: string
example: '+8801912244626'
account_holder_address:
type: object
required:
- street_line_1
- city
- state
- postcode
- country
properties:
street_line_1:
type: string
example: 42 Wallaby Way
city:
type: string
example: Dhaka
state:
type: string
description: >-
State or province. Required. Must be an ISO 3166-2
subdivision code (e.g. US-CA, BD-13).
example: BD-13
postcode:
type: string
example: '1212'
country:
type: string
pattern: ^[A-Z]{3}$
example: BGD
receiver_meta_data:
type: object
required:
- transaction_purpose_id
- relationship
- nationality
properties:
nationality:
type: string
pattern: ^[A-Z]{3}$
example: AUS
transaction_purpose_id:
type: integer
example: 1
transaction_purpose_remarks:
type: string
nullable: true
example: null
occupation_id:
type: integer
example: 5
occupation_remarks:
type: string
example: Software Engineer
relationship:
type: string
enum:
- EMPLOYEE
- FREELANCER
- GIG_WORKER
- AFFILIATE
- CUSTOMER
- FAMILY_MEMBER
- FRIEND
- SELF
- OTHER
- SUPPLIER
- VENDOR
- SERVICE_PROVIDER
- MERCHANT
- CONTRACTOR
- SUBSIDIARY
- PARENT_COMPANY
- AFFILIATE_BUSINESS
- BANK_ACCOUNT
- BROKER
- EXCHANGE
- WALLET
example: FAMILY_MEMBER
relationship_remarks:
type: string
example: Family & Friends
govt_id_number:
type: string
example: JG1121316A
govt_id_issue_date:
type: string
format: date
example: '2024-12-30'
govt_id_expire_date:
type: string
format: date
example: '2027-12-30'
developer_fee:
type: object
required:
- fixed
- percentage
properties:
fixed:
type: number
example: 0.02
percentage:
type: number
example: 0.01
- oneOf:
- title: Bank Account
type: object
required:
- bank_account
- bank_address
- bank_routing
- deposit_instruction
- refund_instruction
properties:
bank_account:
type: object
required:
- bank_name
- number
- scheme
- type
properties:
bank_name:
type: string
example: Commonwealth Bank of Australia
number:
type: string
example: '1234572211'
scheme:
type: string
enum:
- LOCAL
- SWIFT
example: LOCAL
type:
type: string
enum:
- CHECKING
- SAVINGS
- CURRENT
example: SAVINGS
bank_address:
type: object
required:
- street_line_1
- city
- state
- postcode
- country
properties:
street_line_1:
type: string
example: Ground Floor Tower 1, 201 Sussex Street
city:
type: string
example: Dhaka
state:
type: string
description: >-
State or province. Required. Must be an ISO
3166-2 subdivision code (e.g. US-CA, BD-13).
example: BD-13
postcode:
type: string
example: '1212'
country:
type: string
pattern: ^[A-Z]{3}$
example: BGD
bank_routing:
type: array
description: >-
For country-specific routing validation rules, see
[Bank Account and Routing Validation
Rules](https://developer.fin.com/bank-account-and-routing-validation-rules).
items:
type: object
required:
- scheme
- number
properties:
scheme:
type: string
enum:
- ACH
- BANK_CODE
- BANK_IDENTIFIER
- BRANCH_CODE
- BRANCH_IDENTIFIER
- BSB
- IBAN
- IFSC
- SWIFT
- TRANSIT_NUMBER
- WIRE
example: SWIFT
number:
oneOf:
- type: string
- type: integer
example: CLNOUS66BRX
deposit_instruction:
type: object
required:
- currency
- rail
properties:
currency:
type: string
enum:
- USDC
example: USDC
rail:
type: string
enum:
- POLYGON
example: POLYGON
refund_instruction:
type: object
required:
- wallet_address
- currency
- rail
properties:
wallet_address:
type: string
example: '0x1b577931C1cC2765024bFbafad97bCe14FF2e87F'
currency:
type: string
enum:
- USDC
example: USDC
rail:
type: string
enum:
- POLYGON
example: POLYGON
settlement_config:
type: object
properties:
auto_settlement:
type: boolean
example: true
- title: E Wallet
type: object
required:
- e_wallet
- deposit_instruction
- refund_instruction
properties:
e_wallet:
type: object
required:
- scheme
- number
properties:
scheme:
type: string
example: BKASH
number:
type: string
example: '+8801688502814'
deposit_instruction:
type: object
required:
- currency
- rail
properties:
currency:
type: string
enum:
- USDC
example: USDC
rail:
type: string
enum:
- POLYGON
example: POLYGON
refund_instruction:
type: object
required:
- wallet_address
- currency
- rail
properties:
wallet_address:
type: string
example: '0x1b577931C1cC2765024bFbafad97bCe14FF2e87F'
currency:
type: string
enum:
- USDC
example: USDC
rail:
type: string
enum:
- POLYGON
example: POLYGON
settlement_config:
type: object
properties:
auto_settlement:
type: boolean
example: true
- title: External Crypto Wallet
type: object
required:
- destination_wallet
properties:
destination_wallet:
type: object
required:
- address
- rail
- currency
properties:
address:
type: string
description: On-chain wallet address of the recipient.
example: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
rail:
type: string
enum:
- POLYGON
- ETHEREUM
- SOLANA
description: >-
Blockchain network for the destination wallet.
Supported values are POLYGON, ETHEREUM, and
SOLANA.
example: POLYGON
currency:
type: string
enum:
- USDC
description: >-
Token to be sent to the destination wallet.
Currently only USDC is supported.
example: USDC
examples:
Bank / Ewallet:
summary: Bank or e-wallet beneficiary
value:
customer_id: 6fa1ccd4-ffbd-4b20-a113-ccc286b35443
country: BGD
currency: BDT
counter_party: FIRST_PARTY
account_holder:
type: INDIVIDUAL
first_name: John
last_name: Doe
email: john.doe@example.com
phone: '+8801912244626'
bank_account:
bank_name: Commonwealth Bank of Australia
number: '1234572211'
scheme: LOCAL
type: SAVINGS
bank_address:
street_line_1: Ground Floor Tower 1, 201 Sussex Street
city: Dhaka
state: BD-13
postcode: '1212'
country: BGD
account_holder_address:
street_line_1: 42 Wallaby Way
city: Dhaka
state: BD-13
postcode: '1212'
country: BGD
receiver_meta_data:
nationality: AUS
transaction_purpose_id: 1
occupation_id: 5
relationship: FAMILY_MEMBER
relationship_remarks: Family & Friends
bank_routing:
- scheme: SWIFT
number: CLNOUS66BRX
- scheme: BANK_IDENTIFIER
number: 160
- scheme: BRANCH_IDENTIFIER
number: 8
developer_fee:
fixed: 0.02
percentage: 0.01
deposit_instruction:
currency: USDC
rail: POLYGON
refund_instruction:
wallet_address: '0x1b577931C1cC2765024bFbafad97bCe14FF2e87F'
currency: USDC
rail: POLYGON
settlement_config:
auto_settlement: true
External Crypto Wallet:
summary: External crypto wallet beneficiary
value:
customer_id: '{{customer_id}}'
counter_party: THIRD_PARTY
currency: USDC
country: BGD
account_holder:
type: INDIVIDUAL
first_name: Daphne
last_name: Elliot
email: daphneelliot@email.com
phone: '+8801646767354'
account_holder_address:
street_line_1: 42 Chamelibag Shantinagar
city: Dhaka
state: BD-13
postcode: '1217'
country: BGD
destination_wallet:
address: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
rail: POLYGON
currency: USDC
developer_fee:
fixed: 0
percentage: 0
receiver_meta_data:
nationality: BGD
transaction_purpose_id: 7
transaction_purpose_remarks: POLYGON USDC test
occupation_id: 8
relationship: FAMILY_MEMBER
relationship_remarks: Family and Friends
responses:
'200':
description: Beneficiary created successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
beneficiary_id:
type: string
format: uuid
example: 0254b433-e47d-412e-844b-b735c4bbba74
examples:
OK:
summary: OK
value:
data:
beneficiary_id: 0254b433-e47d-412e-844b-b735c4bbba74
'400':
description: Bad Request - Invalid input format
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
message:
type: string
example: Validation failed!
'401':
$ref: '#/components/responses/AuthenticationError'
'409':
description: >-
Conflict - A beneficiary with the same account details already
exists
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: >-
A beneficiary with the same account details already
exists.
error:
type: object
properties:
beneficiary_id:
type: string
format: uuid
example: 0254b433-e47d-412e-844b-b735c4bbba74
'422':
$ref: '#/components/responses/ValidationError'
/v2/beneficiaries:
post:
summary: Create Beneficiary
description: Create a new beneficiary account for payments and transfers
x-mint:
content: >
This endpoint was deprecated on May 20, 2026. Use [Create Beneficiary V3](https://developer.fin.com/api-reference/beneficiaries/create-beneficiary-v3) instead.
## Rules
- Beneficiary creation requires the customer to be in the `APPROVED`
status.
- Two beneficiaries with the same destination are not allowed.
## De-Duplication Logic
For _bank accounts_, the system checks: `bank_account.scheme`,
`bank_account.number`, `bank_routing.scheme`, `bank_routing.number`.
For _e-wallets_: `e_wallet.scheme`, `e_wallet.number`.
## Country-Specific Validation
### GBR (United Kingdom)
- **Bank account number**: Must match `^[0-9]{4,9}$` for both `LOCAL`
and `SWIFT` schemes.
tags:
- Beneficiaries
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
allOf:
- type: object
required:
- customer_id
- country
- currency
- account_holder
- account_holder_address
- receiver_meta_data
- developer_fee
- deposit_instruction
- refund_instruction
properties:
customer_id:
type: string
example: cust_123456
country:
type: string
example: USA
pattern: ^[A-Z]{3}$
currency:
type: string
example: USD
counter_party:
type: string
enum:
- FIRST_PARTY
- THIRD_PARTY
description: >-
Indicates whether the beneficiary is a first-party or
third-party account. Optional.
example: FIRST_PARTY
account_holder:
oneOf:
- title: Individual
type: object
required:
- type
- first_name
- last_name
- email
- phone
properties:
type:
type: string
enum:
- INDIVIDUAL
first_name:
type: string
example: John
last_name:
type: string
example: Doe
email:
type: string
format: email
example: john.doe@example.com
phone:
type: string
example: '+1234567890'
- title: Business
type: object
required:
- type
- business_name
- email
- phone
properties:
type:
type: string
enum:
- BUSINESS
business_name:
type: string
example: Acme Corp
email:
type: string
format: email
example: contact@acmecorp.com
phone:
type: string
example: '+1234567890'
account_holder_address:
type: object
required:
- street_line_1
- city
- state
- postcode
- country
properties:
street_line_1:
type: string
example: 456 Main Street
street_line_2:
type: string
example: Apt 5B
city:
type: string
example: Brooklyn
state:
type: string
description: >-
State or province. Required. Must be an ISO 3166-2
subdivision code (e.g. US-CA, BD-13).
example: US-NY
postcode:
type: string
example: '11201'
country:
type: string
example: USA
pattern: ^[A-Z]{3}$
receiver_meta_data:
type: object
required:
- transaction_purpose_id
- occupation_remarks
- relationship
- nationality
properties:
transaction_purpose_id:
type: integer
example: 1
transaction_purpose_remarks:
type: string
example: Monthly salary payment
occupation_id:
type: integer
example: 5
occupation_remarks:
type: string
example: Software Engineer
relationship:
type: string
enum:
- EMPLOYEE
- FREELANCER
- GIG_WORKER
- AFFILIATE
- CUSTOMER
- FAMILY_MEMBER
- FRIEND
- SELF
- OTHER
- SUPPLIER
- VENDOR
- SERVICE_PROVIDER
- MERCHANT
- CONTRACTOR
- SUBSIDIARY
- PARENT_COMPANY
- AFFILIATE_BUSINESS
- BANK_ACCOUNT
- BROKER
- EXCHANGE
- WALLET
relationship_remarks:
type: string
example: Long-term contractor
nationality:
type: string
example: USA
pattern: ^[A-Z]{3}$
govt_id_number:
type: string
example: JG1121316A
govt_id_issue_date:
type: string
format: date
example: '2024-12-30'
govt_id_expire_date:
type: string
format: date
example: '2027-12-30'
developer_fee:
type: object
required:
- fixed
- percentage
properties:
fixed:
type: number
example: 5
percentage:
type: number
example: 2.5
deposit_instruction:
type: object
required:
- currency
- rail
properties:
currency:
type: string
enum:
- USDC
rail:
type: string
enum:
- POLYGON
refund_instruction:
type: object
required:
- wallet_address
- currency
- rail
properties:
wallet_address:
type: string
example: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb'
currency:
type: string
enum:
- USDC
rail:
type: string
enum:
- POLYGON
settlement_config:
type: object
required:
- auto_settlement
properties:
auto_settlement:
type: boolean
example: true
- oneOf:
- title: Bank Account
type: object
required:
- bank_account
- bank_routing
- bank_address
properties:
bank_account:
type: object
required:
- bank_name
- number
- scheme
- type
properties:
bank_name:
type: string
example: Chase Bank
number:
type: string
example: '1234567890'
scheme:
type: string
enum:
- LOCAL
- SWIFT
type:
type: string
enum:
- CHECKING
- SAVINGS
- CURRENT
bank_routing:
type: array
items:
type: object
required:
- scheme
- number
properties:
scheme:
type: string
enum:
- ACH
- BANK_CODE
- BANK_IDENTIFIER
- BRANCH_CODE
- BRANCH_IDENTIFIER
- BSB
- IBAN
- IFSC
- SWIFT
- TRANSIT_NUMBER
- WIRE
number:
oneOf:
- type: string
- type: integer
example: '021000021'
bank_address:
type: object
required:
- street_line_1
- city
- state
- postcode
- country
properties:
street_line_1:
type: string
example: 123 Bank Street
street_line_2:
type: string
example: Suite 100
city:
type: string
example: New York
state:
type: string
description: >-
State or province. Required. Must be an ISO
3166-2 subdivision code (e.g. US-CA, BD-13).
example: US-NY
postcode:
type: string
example: '10001'
country:
type: string
example: USA
pattern: ^[A-Z]{3}$
- title: E Wallet
type: object
required:
- e_wallet
properties:
e_wallet:
type: object
required:
- scheme
- number
properties:
scheme:
type: string
example: BKASH
number:
type: string
example: '+8801688502814'
responses:
'200':
description: Beneficiary created successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
example: ben_123456
status:
type: string
example: active
'400':
description: Bad Request - Invalid input format
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
message:
type: string
example: Validation failed!
'401':
$ref: '#/components/responses/AuthenticationError'
'409':
description: >-
Conflict - A beneficiary with the same account details already
exists
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: >-
A beneficiary with the same account details already
exists.
error:
type: object
properties:
beneficiary_id:
type: string
format: uuid
example: d9868585-78ba-4723-b0af-8f5b1cc5f9e2
'422':
$ref: '#/components/responses/ValidationError'
/v1/customers/{customer_id}/beneficiaries:
get:
summary: List Beneficiaries For a Customer
description: Retrieve all beneficiaries associated with a specific customer
tags:
- Beneficiaries
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
format: uuid
example: ad41fac1-e406-445b-aea4-69381c39ca5d
responses:
'200':
description: Beneficiaries list retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
example: f653e109-6c62-4aa4-869c-418c874e0a6c
customer_id:
type: string
format: uuid
example: ad41fac1-e406-445b-aea4-69381c39ca5d
active:
type: boolean
example: true
country_code:
type: string
example: AUS
business_name:
type: string
example: Investment bank
type:
type: string
enum:
- INDIVIDUAL
- BUSINESS
example: BUSINESS
nationality:
type: string
example: AUS
email:
type: string
format: email
example: michael.oconnor@example.com
phone:
type: string
example: '+61412345678'
method:
type: string
enum:
- BANK
- E_WALLET
example: BANK
currency:
type: string
example: AUD
account_number:
type: string
example: '*****6789'
refund_wallet_address:
type: string
example: '0x1b577931C1cC2765024bFbafad97bCe14FF2e87F'
developer_fee_fixed:
type: number
example: 1.25
developer_fee_percentage:
type: number
example: 0.45
liquidation_address:
type: string
example: '0x185571d849dcfefff449bd1e9f847b1322f22834'
auto_settlement:
type: boolean
example: false
source_currency:
type: string
example: USDC
source_chain:
type: string
example: POLYGON
created_at:
type: string
format: date-time
example: '2025-12-09T14:56:47.916263Z'
updated_at:
type: string
format: date-time
example: '2025-12-09T14:56:49.1308Z'
'401':
$ref: '#/components/responses/AuthenticationError'
/v2/beneficiaries/details:
get:
summary: Fetch Beneficiary Details v2
description: >-
Retrieve detailed information for a specific beneficiary. Returns
structured data for bank accounts, e-wallets, and external crypto wallet
destinations.
tags:
- Beneficiaries
security:
- bearerAuth: []
parameters:
- name: customer_id
in: query
required: true
schema:
type: string
format: uuid
example: 31526861-ebe0-4f84-a7b2-2c3ec1cc47f9
- name: beneficiary_id
in: query
required: true
schema:
type: string
format: uuid
example: 4c0c63db-580f-4e16-af24-e84ea8937dd8
responses:
'200':
description: Beneficiary details retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
format: uuid
example: 4c0c63db-580f-4e16-af24-e84ea8937dd8
customer_id:
type: string
format: uuid
example: 31526861-ebe0-4f84-a7b2-2c3ec1cc47f9
active:
type: boolean
example: true
status:
type: string
enum:
- INITIATED
- PROCESSING
- ACTIVE
- INACTIVE
- REJECTED
example: ACTIVE
counter_party:
type: string
enum:
- FIRST_PARTY
- THIRD_PARTY
example: FIRST_PARTY
currency:
type: string
example: AUD
country:
type: string
example: AUS
account_holder:
type: object
properties:
type:
type: string
enum:
- INDIVIDUAL
- BUSINESS
example: INDIVIDUAL
first_name:
type: string
example: John
last_name:
type: string
example: Doe
business_name:
type: string
email:
type: string
format: email
example: john.doe@example.com
phone:
type: string
example: '+61412345678'
bank_account:
type: object
properties:
bank_name:
type: string
example: Commonwealth Bank of Australia
number:
type: string
example: '123456782'
scheme:
type: string
example: LOCAL
type:
type: string
enum:
- BANK
- E_WALLET
example: BANK
bank_routing:
type: array
items:
type: object
properties:
scheme:
type: string
example: BANK_IDENTIFIER
name:
type: string
example: AUS BANK
receiver_meta_data:
type: object
properties:
transaction_purpose_id:
type: integer
example: 1
transaction_purpose_remarks:
type: string
example: Send to Family & Friends
occupation_id:
type: integer
example: 504
occupation_remarks:
type: string
example: Software quality assurance analyst and tester
relationship:
type: string
example: FAMILY_MEMBER
relationship_remarks:
type: string
example: Family & Friends
nationality:
type: string
example: AUS
bank_address:
type: object
properties:
street_line_1:
type: string
example: Ground Floor Tower 1, 201 Sussex Street
city:
type: string
example: Sydney
state:
type: string
description: >-
State or province. Required. Must be an ISO 3166-2
subdivision code (e.g. US-CA, BD-13).
example: AU-SA
postcode:
type: string
example: '2000'
country:
type: string
example: AUS
account_holder_address:
type: object
properties:
street_line_1:
type: string
example: 42 Wallaby Way
city:
type: string
example: Queensland
state:
type: string
description: >-
State or province. Required. Must be an ISO 3166-2
subdivision code (e.g. US-CA, BD-13).
example: AU-SA
postcode:
type: string
example: '2000'
country:
type: string
example: AUS
developer_fee:
type: object
properties:
fixed:
type: number
example: 1.25
percentage:
type: number
example: 0.45
deposit_instruction:
type: object
properties:
currency:
type: string
example: USDC
rail:
type: string
example: POLYGON
liquidation_address:
type: string
example: '0xc0470baa27e383a570226298f598fac0612f1143'
refund_instruction:
type: object
properties:
wallet_address:
type: string
example: '0x1b577931C1cC2765024bFbafad97bCe14FF2e87F'
currency:
type: string
example: USDC
rail:
type: string
example: POLYGON
e_wallet:
type: object
nullable: true
properties:
scheme:
type: string
example: BKASH
number:
type: string
example: '+8801688502814'
settlement_config:
type: object
properties:
auto_settlement:
type: boolean
example: false
destination_wallet:
type: object
nullable: true
properties:
address:
type: string
example: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
currency:
type: string
example: USDC
rail:
type: string
example: POLYGON
created_at:
type: string
format: date-time
example: '2025-12-31T14:29:07.100041Z'
updated_at:
type: string
format: date-time
example: '2025-12-31T14:29:08.675022Z'
examples:
Bank / Ewallet:
summary: Bank or e-wallet beneficiary
value:
data:
id: 4c0c63db-580f-4e16-af24-e84ea8937dd8
customer_id: 31526861-ebe0-4f84-a7b2-2c3ec1cc47f9
active: true
status: ACTIVE
counter_party: FIRST_PARTY
currency: AUD
country: AUS
account_holder:
type: INDIVIDUAL
first_name: John
last_name: Doe
email: john.doe@example.com
phone: '+61412345678'
bank_account:
bank_name: Commonwealth Bank of Australia
number: '123456782'
scheme: LOCAL
type: BANK
bank_routing:
- scheme: BANK_IDENTIFIER
name: AUS BANK
receiver_meta_data:
transaction_purpose_id: 1
transaction_purpose_remarks: Send to Family & Friends
occupation_id: 504
occupation_remarks: Software quality assurance analyst and tester
relationship: FAMILY_MEMBER
relationship_remarks: Family & Friends
nationality: AUS
bank_address:
street_line_1: Ground Floor Tower 1, 201 Sussex Street
city: Sydney
state: AU-SA
postcode: '2000'
country: AUS
account_holder_address:
street_line_1: 42 Wallaby Way
city: Queensland
state: AU-SA
postcode: '2000'
country: AUS
developer_fee:
fixed: 1.25
percentage: 0.45
deposit_instruction:
currency: USDC
rail: POLYGON
liquidation_address: '0xc0470baa27e383a570226298f598fac0612f1143'
refund_instruction:
wallet_address: '0x1b577931C1cC2765024bFbafad97bCe14FF2e87F'
currency: USDC
rail: POLYGON
e_wallet: null
settlement_config:
auto_settlement: false
destination_wallet: null
created_at: '2025-12-31T14:29:07.100041Z'
updated_at: '2025-12-31T14:29:08.675022Z'
External Crypto Wallet:
summary: External crypto wallet beneficiary
value:
data:
id: 6af8d598-36a5-477d-9320-d7c5ba309107
customer_id: 1a8e3bdc-05c9-4486-bdef-93464d24c9af
active: true
status: ACTIVE
counter_party: THIRD_PARTY
currency: USDC
country: BGD
account_holder:
type: INDIVIDUAL
first_name: Daphne
last_name: Elliot
email: abc.cdc@gmail.com
phone: '+8801912244626'
bank_account:
bank_name: ''
number: ''
scheme: ''
type: ''
bank_routing: null
receiver_meta_data:
transaction_purpose_id: 7
transaction_purpose_remarks: Send to Family and Friends
occupation_id: 8
relationship: FAMILY_MEMBER
relationship_remarks: Family and Friends
nationality: BGD
bank_address: null
account_holder_address:
street_line_1: 42 Dhanmondi Road
city: Dhaka
state: BD-13
postcode: '1212'
country: BGD
developer_fee:
fixed: 0.01
percentage: 0.01
deposit_instruction:
currency: ''
rail: ''
liquidation_address: ''
refund_instruction:
wallet_address: ''
currency: ''
rail: ''
e_wallet: null
settlement_config:
auto_settlement: false
destination_wallet:
address: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
currency: USDC
rail: POLYGON
created_at: '2026-04-25T15:49:24.56855Z'
updated_at: '2026-04-25T15:49:24.56855Z'
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
/v1/beneficiaries/details:
get:
summary: Fetch Beneficiary Details v1
description: Retrieve detailed information for a specific beneficiary
x-mint:
content: |
This endpoint was deprecated on May 20, 2026. Use [Fetch Beneficiary Details V2](https://developer.fin.com/api-reference/beneficiaries/fetch-beneficiary-details-v2) instead.
tags:
- Beneficiaries
security:
- bearerAuth: []
parameters:
- name: customer_id
in: query
required: true
schema:
type: string
format: uuid
example: ad41fac1-e406-445b-aea4-69381c39ca5d
- name: beneficiary_id
in: query
required: true
schema:
type: string
format: uuid
example: f653e109-6c62-4aa4-869c-418c874e0a6c
responses:
'200':
description: Beneficiary details retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
format: uuid
example: f653e109-6c62-4aa4-869c-418c874e0a6c
customer_id:
type: string
format: uuid
example: ad41fac1-e406-445b-aea4-69381c39ca5d
active:
type: boolean
example: true
country_code:
type: string
example: AUS
first_name:
type: string
example: John
last_name:
type: string
example: Doe
business_name:
type: string
example: Investment bank
type:
type: string
enum:
- INDIVIDUAL
- BUSINESS
example: INDIVIDUAL
nationality:
type: string
example: AUS
email:
type: string
format: email
example: john.doe@example.com
phone:
type: string
example: '+61412345678'
method:
type: string
enum:
- BANK
- E_WALLET
example: BANK
currency:
type: string
example: AUD
account_number:
type: string
example: '*****6789'
refund_wallet_address:
type: string
example: '0x1b577931C1cC2765024bFbafad97bCe14FF2e87F'
developer_fee_fixed:
type: number
example: 1.25
developer_fee_percentage:
type: number
example: 0.45
liquidation_address:
type: string
example: '0x185571d849dcfefff449bd1e9f847b1322f22834'
auto_settlement:
type: boolean
example: false
source_currency:
type: string
example: USDC
source_chain:
type: string
example: POLYGON
created_at:
type: string
format: date-time
example: '2025-12-09T14:56:47.916263Z'
updated_at:
type: string
format: date-time
example: '2025-12-09T14:56:49.1308Z'
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
/v1/beneficiaries:
patch:
summary: Update Beneficiary Active Status
description: Update the active status of a beneficiary to enable or disable it
tags:
- Beneficiaries
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- beneficiary_id
- active
properties:
beneficiary_id:
type: string
format: uuid
example: f653e109-6c62-4aa4-869c-418c874e0a6c
active:
type: boolean
example: true
responses:
'200':
description: Beneficiary updated successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
message:
type: string
example: Beneficiary updated successfully
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/beneficiaries/{beneficiary_id}/documents:
post:
summary: Upload Beneficiary Documents
description: >-
Upload one or more documents for a specific beneficiary using
multipart/form-data
x-mint:
content: |
## Allowed File Types
- `PDF`
- `JPG` / `JPEG`
- `PNG`
tags:
- Beneficiaries
security:
- bearerAuth: []
parameters:
- name: beneficiary_id
in: path
required: true
schema:
type: string
format: uuid
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
doc1:
type: string
format: binary
responses:
'200':
description: Documents uploaded successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
files:
type: array
items:
type: object
additionalProperties:
type: string
example:
- invoice1: /wKbvfH5E_Invoice.pdf
- invoice2: /XUOdWacK_Invoice.jpg
/v2/transactions:
get:
summary: List Customer Transactions
description: >-
Returns a paginated list of transactions for a customer, optionally
filtered by transaction type.
x-mint:
content: >
```
GET
/v2/transactions?customer_id=765d498e-a267-4154-9d2f-9e411a0b50dd&type=CRYPTO_WITHDRAWAL¤t_page=1&per_page=10
```
tags:
- Transactions
security:
- bearerAuth: []
parameters:
- name: customer_id
in: query
required: true
schema:
type: string
description: The customer ID to fetch transactions for.
example: 765d498e-a267-4154-9d2f-9e411a0b50dd
- name: type
in: query
required: false
schema:
type: string
enum:
- ONRAMP
- OFFRAMP
- CRYPTO_WITHDRAWAL
- CRYPTO_DEPOSIT
description: Filter transactions by type.
example: CRYPTO_WITHDRAWAL
- $ref: '#/components/parameters/CurrentPageParam'
- name: per_page
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 10
description: Number of results per page. Must be between 1 and 100.
example: 10
responses:
'200':
description: Transactions retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
pagination:
type: object
properties:
current_page:
type: integer
example: 1
per_page:
type: integer
example: 10
total_page:
type: integer
example: 1
total:
type: integer
example: 2
transactions:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
example: 8c92e9dd-6456-4aee-a441-1861144f1d8b
transaction_type:
type: string
enum:
- ONRAMP
- OFFRAMP
- CRYPTO_WITHDRAWAL
- CRYPTO_DEPOSIT
example: CRYPTO_WITHDRAWAL
customer_id:
type: string
format: uuid
example: 1a8e3bdc-05c9-4486-bdef-93464d24c9af
beneficiary_id:
type: string
format: uuid
example: 6af8d598-36a5-477d-9320-d7c5ba309107
hash:
type: string
description: On-chain transaction hash.
example: >-
0xd2a3d65ce04c24c7af2b4ab86ac8c3ca525d010c600733bb062be74ee3899ec9
status:
type: string
example: COMPLETED
source_currency:
type: string
example: USDC
destination_currency:
type: string
example: USDC
source_amount:
type: number
example: 5
destination_amount:
type: number
example: 4.98535
total_fee:
type: number
example: 0.014649
created_at:
type: string
format: date-time
example: '2026-04-29T09:56:14.906031Z'
updated_at:
type: string
format: date-time
example: '2026-04-29T09:56:58.631047Z'
example:
data:
pagination:
current_page: 1
per_page: 10
total_page: 1
total: 2
transactions:
- id: 8c92e9dd-6456-4aee-a441-1861144f1d8b
transaction_type: CRYPTO_WITHDRAWAL
customer_id: 1a8e3bdc-05c9-4486-bdef-93464d24c9af
beneficiary_id: 6af8d598-36a5-477d-9320-d7c5ba309107
hash: >-
0xd2a3d65ce04c24c7af2b4ab86ac8c3ca525d010c600733bb062be74ee3899ec9
status: COMPLETED
source_currency: USDC
destination_currency: USDC
source_amount: 5
destination_amount: 4.98535
total_fee: 0.014649
created_at: '2026-04-29T09:56:14.906031Z'
updated_at: '2026-04-29T09:56:58.631047Z'
- id: 2b7b52cd-20df-4a03-83a0-bc6d989fd6ad
transaction_type: CRYPTO_WITHDRAWAL
customer_id: 1a8e3bdc-05c9-4486-bdef-93464d24c9af
beneficiary_id: b6a1d0c1-c202-43a8-a8c9-4d09ac5eb8f2
hash: >-
0x03eebd78faba32e5e04b03fa0e163de557d77de7e4e25b935d992964fa0b05db
status: COMPLETED
source_currency: USDC
destination_currency: USDC
source_amount: 5.1
destination_amount: 4.996173
total_fee: 0.103826
created_at: '2026-04-25T20:50:34.759464Z'
updated_at: '2026-04-25T20:51:22.070885Z'
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
post:
summary: Execute Quote
description: >-
Executes a quote returned from the Create Quote endpoint, initiating a
crypto withdrawal to the beneficiary's external wallet.
tags:
- Transactions
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- quote_id
properties:
quote_id:
type: string
format: uuid
description: The quote ID returned from the Create Quote endpoint.
example: 9ba7d6db-ac78-4a41-acae-f787ee6b1f24
example:
quote_id: 9ba7d6db-ac78-4a41-acae-f787ee6b1f24
responses:
'200':
description: Quote executed successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
transaction_id:
type: string
format: uuid
example: 8c92e9dd-6456-4aee-a441-1861144f1d8b
beneficiary_id:
type: string
format: uuid
example: 6af8d598-36a5-477d-9320-d7c5ba309107
created_at:
type: string
format: date-time
example: '2026-04-29T09:56:14.906031567Z'
example:
data:
transaction_id: 8c92e9dd-6456-4aee-a441-1861144f1d8b
beneficiary_id: 6af8d598-36a5-477d-9320-d7c5ba309107
created_at: '2026-04-29T09:56:14.906031567Z'
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/beneficiaries/{beneficiary_id}/transactions:
get:
summary: List Beneficiary Transactions
description: Retrieve a paginated list of all transactions for a specific beneficiary
tags:
- Transactions
security:
- bearerAuth: []
parameters:
- name: beneficiary_id
in: path
required: true
schema:
type: string
format: uuid
- name: page
in: query
required: false
schema:
type: integer
default: 1
minimum: 1
- name: limit
in: query
required: false
schema:
type: integer
default: 10
minimum: 1
maximum: 100
responses:
'200':
description: Transactions retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
pagination:
type: object
properties:
current_page:
type: integer
example: 1
per_page:
type: integer
example: 10
total_page:
type: integer
example: 1
total:
type: integer
example: 1
transactions:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
example: f656afd1-7735-43b0-b630-04f0ff7158b3
transaction_type:
type: string
example: OFFRAMP
beneficiary_id:
type: string
format: uuid
hash:
type: string
nullable: true
transaction_ref_id:
type: string
from_amount:
type: number
example: 3
payout_amount:
type: number
example: 4.35
processing_amount:
type: number
example: 3
status:
type: string
enum:
- CREATED
- PENDING
- COMPLETED
- FAILED
example: COMPLETED
fx_rate:
type: number
example: 1.45
developer_fee:
type: number
example: 0
developer_fee_percentage:
type: number
example: 0.45
developer_fee_fixed:
type: number
example: 1.25
from_currency:
type: string
example: USDC
payout_currency:
type: string
example: AUD
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/transactions/transfer-payout:
post:
summary: Create a Transfer
description: >
Initiate a transfer payout to a beneficiary.
**Validation Rules:**
- Minimum amount: 500 cents (5.00 in major currency units)
- Attachments array is optional, but if provided must contain at least
one item
x-mint:
content: |
This endpoint can only be used with beneficiaries created with `auto_settlement` set to `true`.
tags:
- Transactions
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- beneficiary_id
- reference_id
- amount
- remarks
properties:
beneficiary_id:
type: string
format: uuid
example: d6ae4ea6-0482-47ab-a895-02e50ea6358b
reference_id:
type: string
example: REF-12345-ABC
amount:
type: integer
description: >-
Amount in cents (multiply by 100). Minimum 500 cents
required.
example: 10000
minimum: 500
remarks:
type: string
example: Monthly payment for services
attachments:
type: array
minItems: 1
items:
type: object
required:
- remark
- uri
properties:
remark:
type: string
example: Invoice PDF DOC
uri:
type: string
example: /XUOdWacK_Invoice.pdf
responses:
'200':
description: Transfer created successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
transfer_id:
type: string
format: uuid
example: c78dee10-7c46-4ad5-8ac8-070e39d87ff1
reference_id:
type: string
example: REF-12345-ABC
deposit_instruction:
type: object
properties:
liquidation_address:
type: string
example: '0x203061afd3f3dd5f5756cec992d1d247f7668384'
currency:
type: string
example: USDC
rail:
type: string
example: POLYGON
quotation:
type: object
properties:
currency:
type: string
example: EUR
to_amount:
type: integer
example: 108
developer_fee:
type: integer
example: 67
created_at:
type: string
format: date-time
example: '2026-01-01T07:35:53Z'
expire_at:
type: string
format: date-time
example: '2026-01-01T07:45:53Z'
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/transactions/transfer-payout/settle:
post:
summary: Settle a Transfer
description: Settle a previously created transfer payout
tags:
- Transactions
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- transfer_id
properties:
transfer_id:
type: string
example: 9ac6872b-8904-4ea5-beb7-d5a936ffee10
responses:
'200':
description: Transfer settled successfully
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- transaction_id
properties:
transaction_id:
type: string
example: 9ac6872b-8904-4ea5-beb7-d5a936ffee10
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/batch/transactions/commit:
post:
summary: Execute Batch Transfer
description: Execute multiple transfer payouts in a single batch operation.
x-mint:
content: >
This endpoint can only be used with beneficiaries created with `auto_settlement` set to `true`.
**Amount Specification:**
- Each transaction must include exactly one of `source_amount` or
`destination_amount` (not both)
- `source_amount`: Minimum 500 cents (e.g. 500 = $5.00)
- Only `PREFUNDED_BALANCE` transactions are eligible for refunds if
they fail
tags:
- Transactions
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
type: object
required:
- beneficiary_id
- source_currency
- deduct_from
properties:
beneficiary_id:
type: string
format: uuid
example: d6ae4ea6-0482-47ab-a895-02e50ea6358b
source_amount:
type: number
minimum: 500
description: Amount in cents (e.g. 530 = $5.30). Minimum 500 cents.
example: 530
destination_amount:
type: number
example: 62000
source_currency:
type: string
example: USD
deduct_from:
type: string
enum:
- PREFUNDED_BALANCE
- LIQUIDATION_ADDRESS
remarks:
type: string
example: Monthly salary payment
examples:
With source amount:
value:
- beneficiary_id: d6ae4ea6-0482-47ab-a895-02e50ea6358b
source_amount: 530
source_currency: USD
deduct_from: PREFUNDED_BALANCE
remarks: Monthly salary payment
With destination amount:
value:
- beneficiary_id: d6ae4ea6-0482-47ab-a895-02e50ea6358b
destination_amount: 62000
source_currency: USD
deduct_from: PREFUNDED_BALANCE
remarks: Monthly salary payment
responses:
'201':
description: Batch created successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
format: uuid
example: 3b1d73c0-0000-0000-0000-51aa2461f1
examples:
With source amount:
value:
data:
id: 3b1d73c0-0000-0000-0000-51aa2461f1
With destination amount:
value:
data:
id: 3b1d73c0-0000-0000-0000-51aa2461f1
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/batch/transactions/commit/{batch_id}:
get:
summary: Fetch Batch Details
description: >-
Retrieve detailed information about a batch transaction including all
items and their statuses
tags:
- Transactions
security:
- bearerAuth: []
parameters:
- name: batch_id
in: path
required: true
schema:
type: string
format: uuid
example: ad1a0a29-5a7f-4982-98cc-3f4416724660
responses:
'200':
description: Batch details retrieved successfully
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- batch_id
- items
properties:
batch_id:
type: string
format: uuid
example: ad1a0a29-5a7f-4982-98cc-3f4416724660
items:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
beneficiary_id:
type: string
format: uuid
source_amount:
type: number
example: 456
source_currency:
type: string
enum:
- USD
deduct_from:
type: string
enum:
- PREFUNDED_BALANCE
- LIQUIDATION_ADDRESS
remarks:
type: string
reason:
type: string
nullable: true
status:
type: string
enum:
- PENDING
- PROCESSING
- COMPLETED
- FAILED
- REFUNDED
example: PROCESSING
transaction_id:
type: string
format: uuid
exchange_rate:
type: number
example: 135
destination_currency:
type: string
example: BDT
destination_amount:
type: number
example: 261
developer_fee:
type: object
properties:
fixed:
type: number
percentage:
type: number
total:
type: number
'401':
$ref: '#/components/responses/AuthenticationError'
/v2/transactions/quote:
post:
summary: Create Quote
description: >-
Returns fee and receivable amount estimations for a crypto withdrawal
from a Fin.com internal wallet to a customer's external crypto wallet.
x-mint:
content: |
The source wallet and destination wallet must share the same blockchain rail and currency. For example, if the source wallet is on POLYGON with USDC, the beneficiary's destination wallet must also be on POLYGON with USDC.
tags:
- Transactions
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- type
- beneficiary_id
- amount
- source
properties:
type:
type: string
enum:
- CRYPTO_WITHDRAWAL
description: Transaction type for the quote.
example: CRYPTO_WITHDRAWAL
beneficiary_id:
type: string
format: uuid
description: ID of the destination beneficiary.
example: 6af8d598-36a5-477d-9320-d7c5ba309107
amount:
type: number
description: Amount to send in the source currency.
example: 5
source:
type: object
required:
- crypto_wallet_id
properties:
crypto_wallet_id:
type: string
format: uuid
description: ID of the Fin.com internal crypto wallet to send from.
example: c92dfe1d-220e-4446-a5e4-cd7d46031ba5
example:
type: CRYPTO_WITHDRAWAL
beneficiary_id: 6af8d598-36a5-477d-9320-d7c5ba309107
amount: 5
source:
crypto_wallet_id: c92dfe1d-220e-4446-a5e4-cd7d46031ba5
responses:
'200':
description: Quote generated successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
quote_id:
type: string
format: uuid
description: >-
Unique identifier for this quote. Use this to create a
transaction.
example: 9ba7d6db-ac78-4a41-acae-f787ee6b1f24
expire_at:
type: string
format: date-time
description: Timestamp at which the quote expires.
example: '2026-04-29T10:09:33.524075766Z'
amount:
type: number
description: Source amount quoted.
example: 5
destination_details:
type: object
properties:
address:
type: string
example: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
currency:
type: string
example: USDC
rail:
type: string
example: POLYGON
quote_estimation:
type: object
properties:
developer_fee_fixed:
type: number
example: 0.01
developer_fee_percentage:
type: number
example: 0.0005
network_fee:
type: number
example: 0.004149
total_fee:
type: number
example: 0.014649
receivable_amount:
type: number
example: 4.98535
ata_fee_applied:
type: boolean
example: false
example:
data:
quote_id: 9ba7d6db-ac78-4a41-acae-f787ee6b1f24
expire_at: '2026-04-29T10:09:33.524075766Z'
amount: 5
destination_details:
address: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
currency: USDC
rail: POLYGON
quote_estimation:
developer_fee_fixed: 0.01
developer_fee_percentage: 0.0005
network_fee: 0.004149
total_fee: 0.014649
receivable_amount: 4.98535
ata_fee_applied: false
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v2/transactions/{transaction_id}:
get:
operationId: getTransactionByIdV2
summary: Fetch Transaction Details V2
description: >-
Returns full details for a transaction by ID, including status, amounts,
fees, and settlement data. The populated fields vary based on the
transaction type.
tags:
- Transactions
security:
- bearerAuth: []
parameters:
- name: transaction_id
in: path
required: true
schema:
type: string
format: uuid
example: 8c92e9dd-6456-4aee-a441-1861144f1d8b
responses:
'200':
description: Transaction details retrieved successfully
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
oneOf:
- title: Onramp
type: object
properties:
id:
type: string
format: uuid
example: 8fe1ca7c-4e6e-44c6-8706-87ac74c22554
transaction_type:
type: string
example: ONRAMP
customer_id:
type: string
format: uuid
nullable: true
example: 80fd79d6-ad3d-4797-ad61-fc2dd1b7639d
beneficiary_id:
type: string
format: uuid
nullable: true
example: null
hash:
type: string
nullable: true
example: >-
0x3eef859d9c1745ba24209331d67e04f26e38ce45e48c85ed50f5e66a42cd57e9
status:
type: string
enum:
- PENDING
- PROCESSING
- COMPLETED
- FAILED
- REFUNDED
example: COMPLETED
batch_info:
type: object
nullable: true
properties:
batch_id:
type: string
format: uuid
batch_item_id:
type: string
format: uuid
example: null
fiat_details:
type: object
nullable: true
properties:
source_amount:
type: number
nullable: true
example: 17
source_currency:
type: string
nullable: true
example: USD
destination_amount:
type: number
nullable: true
example: 17
destination_currency:
type: string
nullable: true
example: USDC
fx_rate:
type: number
nullable: true
example: 0
crypto_details:
type: object
nullable: true
properties:
source_amount:
type: number
nullable: true
example: null
source_currency:
type: string
nullable: true
example: null
source_rail:
type: string
nullable: true
example: null
source_address:
type: string
nullable: true
example: null
destination_amount:
type: number
nullable: true
example: null
destination_currency:
type: string
nullable: true
example: null
destination_rail:
type: string
nullable: true
example: null
destination_address:
type: string
nullable: true
example: null
tx_hash:
type: string
nullable: true
example: null
fees:
type: object
nullable: true
properties:
developer_fee:
type: object
properties:
fixed:
type: number
example: 0
percentage:
type: number
example: 0
total_developer_fee:
type: number
example: 0
network_fee:
type: number
example: 0
conversion_fee:
type: number
example: 0
total_fee:
type: number
example: 0
created_at:
type: string
format: date-time
example: '2026-03-02T15:36:39.167822Z'
updated_at:
type: string
format: date-time
example: '2026-03-02T15:36:39.167822Z'
- title: Offramp
type: object
properties:
id:
type: string
format: uuid
example: 4835aa27-3c8d-4a68-b4c8-331ade5bb496
transaction_type:
type: string
example: OFFRAMP
customer_id:
type: string
format: uuid
nullable: true
example: 1a8e3bdc-05c9-4486-bdef-93464d24c9af
beneficiary_id:
type: string
format: uuid
nullable: true
example: 8d7f5ac6-0188-47c9-83f2-36a4aca7b472
hash:
type: string
nullable: true
example: null
status:
type: string
enum:
- PENDING
- PROCESSING
- COMPLETED
- FAILED
- REFUNDED
example: COMPLETED
batch_info:
type: object
nullable: true
properties:
batch_id:
type: string
format: uuid
example: c54b8cd6-efb4-4e36-92f0-2d289eefea52
batch_item_id:
type: string
format: uuid
example: 32cf1b58-d026-494b-b6c6-d1e0af78060c
fiat_details:
type: object
nullable: true
properties:
source_amount:
type: number
nullable: true
example: 5
source_currency:
type: string
nullable: true
example: USD
destination_amount:
type: number
nullable: true
example: 526.48
destination_currency:
type: string
nullable: true
example: BDT
fx_rate:
type: number
nullable: true
example: 117.19
crypto_details:
type: object
nullable: true
properties:
source_amount:
type: number
nullable: true
example: null
source_currency:
type: string
nullable: true
example: null
source_rail:
type: string
nullable: true
example: null
source_address:
type: string
nullable: true
example: null
destination_amount:
type: number
nullable: true
example: null
destination_currency:
type: string
nullable: true
example: null
destination_rail:
type: string
nullable: true
example: null
destination_address:
type: string
nullable: true
example: null
tx_hash:
type: string
nullable: true
example: null
fees:
type: object
nullable: true
properties:
developer_fee:
type: object
properties:
fixed:
type: number
example: 0.5
percentage:
type: number
example: 0
total_developer_fee:
type: number
example: 0.51
network_fee:
type: number
example: 0
conversion_fee:
type: number
example: 0
total_fee:
type: number
example: 0.51
created_at:
type: string
format: date-time
example: '2026-04-25T20:40:08.235667Z'
updated_at:
type: string
format: date-time
example: '2026-04-25T20:42:52.072478Z'
- title: Crypto deposit
type: object
properties:
id:
type: string
format: uuid
example: 11e9dea6-7891-43dd-a582-281394edd288
transaction_type:
type: string
example: CRYPTO_DEPOSIT
customer_id:
type: string
format: uuid
nullable: true
example: 1a8e3bdc-05c9-4486-bdef-93464d24c9af
beneficiary_id:
type: string
format: uuid
nullable: true
example: null
hash:
type: string
nullable: true
example: >-
31NgS1hCLaH6sitUSFRbXDF9tPhMrA5nqSNSSvvLPFRrScwDdDRUnE8FV8mLgxdx7TDhxdk7chKNhc1gbeFRNkAf
status:
type: string
enum:
- PENDING
- PROCESSING
- COMPLETED
- FAILED
- REFUNDED
example: COMPLETED
batch_info:
type: object
nullable: true
properties:
batch_id:
type: string
format: uuid
batch_item_id:
type: string
format: uuid
example: null
fiat_details:
type: object
nullable: true
properties:
source_amount:
type: number
nullable: true
example: null
source_currency:
type: string
nullable: true
example: null
destination_amount:
type: number
nullable: true
example: null
destination_currency:
type: string
nullable: true
example: null
fx_rate:
type: number
nullable: true
example: null
crypto_details:
type: object
nullable: true
properties:
source_amount:
type: number
nullable: true
example: 15
source_currency:
type: string
nullable: true
example: USDC
source_rail:
type: string
nullable: true
example: SOLANA
source_address:
type: string
nullable: true
example: FEAp246mLPgWGVa12KG99GcRuptuCF3uTADp95pcy2cr
destination_amount:
type: number
nullable: true
example: 15
destination_currency:
type: string
nullable: true
example: USDC
destination_rail:
type: string
nullable: true
example: SOLANA
destination_address:
type: string
nullable: true
example: BCSZEokfpVsSpUuuZJMScLiUpYjvvUmrrAJkNbrTTnng
tx_hash:
type: string
nullable: true
example: >-
31NgS1hCLaH6sitUSFRbXDF9tPhMrA5nqSNSSvvLPFRrScwDdDRUnE8FV8mLgxdx7TDhxdk7chKNhc1gbeFRNkAf
fees:
type: object
nullable: true
properties:
developer_fee:
type: object
properties:
fixed:
type: number
example: 0
percentage:
type: number
example: 0
total_developer_fee:
type: number
example: 0
network_fee:
type: number
example: 0
conversion_fee:
type: number
example: 0
total_fee:
type: number
example: 0
created_at:
type: string
format: date-time
example: '2026-04-25T19:12:07.804074Z'
updated_at:
type: string
format: date-time
example: '2026-04-25T19:12:07.804074Z'
- title: Crypto withdrawal
type: object
properties:
id:
type: string
format: uuid
example: 8c92e9dd-6456-4aee-a441-1861144f1d8b
transaction_type:
type: string
example: CRYPTO_WITHDRAWAL
customer_id:
type: string
format: uuid
nullable: true
example: 1a8e3bdc-05c9-4486-bdef-93464d24c9af
beneficiary_id:
type: string
format: uuid
nullable: true
example: 6af8d598-36a5-477d-9320-d7c5ba309107
hash:
type: string
nullable: true
example: >-
0xd2a3d65ce04c24c7af2b4ab86ac8c3ca525d010c600733bb062be74ee3899ec9
status:
type: string
enum:
- PENDING
- PROCESSING
- COMPLETED
- FAILED
- REFUNDED
example: COMPLETED
batch_info:
type: object
nullable: true
properties:
batch_id:
type: string
format: uuid
batch_item_id:
type: string
format: uuid
example: null
fiat_details:
type: object
nullable: true
properties:
source_amount:
type: number
nullable: true
example: null
source_currency:
type: string
nullable: true
example: null
destination_amount:
type: number
nullable: true
example: null
destination_currency:
type: string
nullable: true
example: null
fx_rate:
type: number
nullable: true
example: null
crypto_details:
type: object
nullable: true
properties:
source_amount:
type: number
nullable: true
example: 5
source_currency:
type: string
nullable: true
example: USDC
source_rail:
type: string
nullable: true
example: POLYGON
source_address:
type: string
nullable: true
example: '0xc42a5f7083c7e8f1d9820c7660867277289cd998'
destination_amount:
type: number
nullable: true
example: 4.98535
destination_currency:
type: string
nullable: true
example: USDC
destination_rail:
type: string
nullable: true
example: POLYGON
destination_address:
type: string
nullable: true
example: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
tx_hash:
type: string
nullable: true
example: >-
0xd2a3d65ce04c24c7af2b4ab86ac8c3ca525d010c600733bb062be74ee3899ec9
fees:
type: object
nullable: true
properties:
developer_fee:
type: object
properties:
fixed:
type: number
example: 0.01
percentage:
type: number
example: 0.0005
total_developer_fee:
type: number
example: 0.0105
network_fee:
type: number
example: 0.004149
conversion_fee:
type: number
example: 0
total_fee:
type: number
example: 0.014649
created_at:
type: string
format: date-time
example: '2026-04-29T09:56:14.906031Z'
updated_at:
type: string
format: date-time
example: '2026-04-29T09:56:58.631047Z'
examples:
Onramp:
summary: Onramp transaction
value:
data:
id: 8fe1ca7c-4e6e-44c6-8706-87ac74c22554
transaction_type: ONRAMP
customer_id: 80fd79d6-ad3d-4797-ad61-fc2dd1b7639d
beneficiary_id: null
hash: >-
0x3eef859d9c1745ba24209331d67e04f26e38ce45e48c85ed50f5e66a42cd57e9
status: COMPLETED
created_at: '2026-03-02T15:36:39.167822Z'
updated_at: '2026-03-02T15:36:39.167822Z'
batch_info: null
fiat_details:
source_amount: 17
source_currency: USD
destination_amount: 17
destination_currency: USDC
fx_rate: 0
crypto_details:
source_amount: null
source_currency: null
source_rail: null
source_address: null
destination_amount: null
destination_currency: null
destination_rail: null
destination_address: null
tx_hash: null
fees:
developer_fee:
fixed: 0
percentage: 0
total_developer_fee: 0
network_fee: 0
conversion_fee: 0
total_fee: 0
Offramp:
summary: Offramp transaction
value:
data:
id: 4835aa27-3c8d-4a68-b4c8-331ade5bb496
transaction_type: OFFRAMP
customer_id: 1a8e3bdc-05c9-4486-bdef-93464d24c9af
beneficiary_id: 8d7f5ac6-0188-47c9-83f2-36a4aca7b472
hash: null
status: COMPLETED
created_at: '2026-04-25T20:40:08.235667Z'
updated_at: '2026-04-25T20:42:52.072478Z'
batch_info:
batch_id: c54b8cd6-efb4-4e36-92f0-2d289eefea52
batch_item_id: 32cf1b58-d026-494b-b6c6-d1e0af78060c
fiat_details:
source_amount: 5
source_currency: USD
destination_amount: 526.48
destination_currency: BDT
fx_rate: 117.19
crypto_details:
source_amount: null
source_currency: null
source_rail: null
source_address: null
destination_amount: null
destination_currency: null
destination_rail: null
destination_address: null
tx_hash: null
fees:
developer_fee:
fixed: 0.5
percentage: 0
total_developer_fee: 0.51
network_fee: 0
conversion_fee: 0
total_fee: 0.51
Crypto deposit:
summary: Crypto deposit transaction
value:
data:
id: 11e9dea6-7891-43dd-a582-281394edd288
transaction_type: CRYPTO_DEPOSIT
customer_id: 1a8e3bdc-05c9-4486-bdef-93464d24c9af
beneficiary_id: null
hash: >-
31NgS1hCLaH6sitUSFRbXDF9tPhMrA5nqSNSSvvLPFRrScwDdDRUnE8FV8mLgxdx7TDhxdk7chKNhc1gbeFRNkAf
status: COMPLETED
created_at: '2026-04-25T19:12:07.804074Z'
updated_at: '2026-04-25T19:12:07.804074Z'
batch_info: null
fiat_details:
source_amount: null
source_currency: null
destination_amount: null
destination_currency: null
fx_rate: null
crypto_details:
source_amount: 15
source_currency: USDC
source_rail: SOLANA
source_address: FEAp246mLPgWGVa12KG99GcRuptuCF3uTADp95pcy2cr
destination_amount: 15
destination_currency: USDC
destination_rail: SOLANA
destination_address: BCSZEokfpVsSpUuuZJMScLiUpYjvvUmrrAJkNbrTTnng
tx_hash: >-
31NgS1hCLaH6sitUSFRbXDF9tPhMrA5nqSNSSvvLPFRrScwDdDRUnE8FV8mLgxdx7TDhxdk7chKNhc1gbeFRNkAf
fees:
developer_fee:
fixed: 0
percentage: 0
total_developer_fee: 0
network_fee: 0
conversion_fee: 0
total_fee: 0
Crypto withdrawal:
summary: Crypto withdrawal transaction
value:
data:
id: 8c92e9dd-6456-4aee-a441-1861144f1d8b
transaction_type: CRYPTO_WITHDRAWAL
customer_id: 1a8e3bdc-05c9-4486-bdef-93464d24c9af
beneficiary_id: 6af8d598-36a5-477d-9320-d7c5ba309107
hash: >-
0xd2a3d65ce04c24c7af2b4ab86ac8c3ca525d010c600733bb062be74ee3899ec9
status: COMPLETED
created_at: '2026-04-29T09:56:14.906031Z'
updated_at: '2026-04-29T09:56:58.631047Z'
batch_info: null
fiat_details:
source_amount: null
source_currency: null
destination_amount: null
destination_currency: null
fx_rate: null
crypto_details:
source_amount: 5
source_currency: USDC
source_rail: POLYGON
source_address: '0xc42a5f7083c7e8f1d9820c7660867277289cd998'
destination_amount: 4.98535
destination_currency: USDC
destination_rail: POLYGON
destination_address: '0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E'
tx_hash: >-
0xd2a3d65ce04c24c7af2b4ab86ac8c3ca525d010c600733bb062be74ee3899ec9
fees:
developer_fee:
fixed: 0.01
percentage: 0.0005
total_developer_fee: 0.0105
network_fee: 0.004149
conversion_fee: 0
total_fee: 0.014649
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
/v1/transactions/{transaction_id}:
get:
operationId: getTransactionById
summary: Fetch Transaction Details V1
description: >-
Returns full details for a transaction by ID, including status, amounts,
fees, and settlement data. The populated fields vary based on the
transaction type.
x-mint:
content: |
For **CRYPTO_DEPOSIT** and **CRYPTO_WITHDRAWAL** transaction types, you must use [Fetch Transaction Details V2](/api-reference/transactions/fetch-transaction-details-v2). We also recommend migrating all transaction detail lookups to V2, as V1 will be deprecated soon.
tags:
- Transactions
security:
- bearerAuth: []
parameters:
- name: transaction_id
in: path
required: true
schema:
type: string
format: uuid
example: 7f0124cd-6845-47d3-8b39-43f80cd50274
responses:
'200':
description: Transaction details retrieved successfully
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
properties:
id:
type: string
format: uuid
example: 7f0124cd-6845-47d3-8b39-43f80cd50274
transaction_type:
type: string
enum:
- ONRAMP
- OFFRAMP
- CRYPTO_WITHDRAWAL
- CRYPTO_DEPOSIT
example: OFFRAMP
customer_id:
type: string
format: uuid
nullable: true
example: null
beneficiary_id:
type: string
format: uuid
example: e6200609-1ebb-41bb-a4d3-fd9e3bae8419
hash:
type: string
example: >-
796b21c4412f1208918cf744e38b62c95aa55674baf62a0a3b8b189c212d0b7e
transaction_ref_id:
type: string
nullable: true
example: 7f0124cd-6845-47d3-8b39-43f80cd50274
status:
type: string
enum:
- PENDING
- PROCESSING
- COMPLETED
- FAILED
- REFUNDED
example: COMPLETED
batch_info:
type: object
nullable: true
example: null
from_amount:
type: number
example: 1.1
payout_amount:
type: number
example: 94.919
processing_amount:
type: number
example: 1.1
from_currency:
type: string
example: USD
payout_currency:
type: string
example: INR
fx_rate:
type: number
example: 86.29
developer_fee:
type: number
example: 1.25495
developer_fee_percentage:
type: number
example: 0.45
developer_fee_fixed:
type: number
example: 1.25
virtual_account_id:
type: string
nullable: true
example: null
fiat_details:
type: object
nullable: true
example: null
crypto_details:
type: object
nullable: true
example: null
fees:
type: object
nullable: true
example: null
created_at:
type: string
format: date-time
example: '2026-01-08T08:27:22.345304Z'
updated_at:
type: string
format: date-time
example: '2026-01-08T08:27:33.76357Z'
examples:
OFFRAMP:
summary: OFFRAMP transaction
value:
data:
id: 7f0124cd-6845-47d3-8b39-43f80cd50274
transaction_type: OFFRAMP
customer_id: null
beneficiary_id: e6200609-1ebb-41bb-a4d3-fd9e3bae8419
hash: >-
796b21c4412f1208918cf744e38b62c95aa55674baf62a0a3b8b189c212d0b7e
transaction_ref_id: 7f0124cd-6845-47d3-8b39-43f80cd50274
from_amount: 1.1
payout_amount: 94.919
processing_amount: 1.1
status: COMPLETED
fx_rate: 86.29
developer_fee: 1.25495
developer_fee_percentage: 0.45
developer_fee_fixed: 1.25
from_currency: USD
payout_currency: INR
virtual_account_id: null
batch_info: null
fiat_details: null
crypto_details: null
fees: null
created_at: '2026-01-08T08:27:22.345304Z'
updated_at: '2026-01-08T08:27:33.76357Z'
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
description: Transaction not found
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: TRANSACTION_NOT_FOUND
message:
type: string
example: The requested transaction could not be found
'500':
description: Internal server error
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: INTERNAL_SERVER_ERROR
message:
type: string
example: >-
An unexpected error occurred while processing your
request
/v1/transit/payment:
post:
summary: Create a Payment
description: >-
Create a new payment order for a supported integration type (ByBit,
Kraken, OKX, Pass Through)
x-mint:
content: >
Creates a payment order for the specified integration type with
automatic settlement to a destination wallet address.
**Conditional Field Rules:**
- Either `order_info.order_amount` or `order_info.quote_id` must be
provided, but **not both**.
- When `order_info.quote_id` is not provided,
`order_info.order_amount` and the `fin` object are required.
- When `order_info.quote_id` is provided, `order_info.order_amount`
and the `fin` object must **not** be included.
- Providing both results in a `422` error.
**Provider Error Codes:**
The `428` response code is a placeholder. When errors occur from the
payment provider, the original status code will be forwarded.
tags:
- Crypto Orchestration
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- integration_type
- order_info
properties:
integration_type:
type: string
enum:
- BYBIT
- PASS_THROUGH
- KRAKEN
- OKX
description: Integration provider type.
example: BYBIT
order_info:
type: object
required:
- merchant_trade_no
- currency
- currency_type
- success_url
- failed_url
- payment_type
- goods
- env
properties:
merchant_name:
type: string
example: PayPal
client_id:
type: string
example: client_001
payment_type:
type: string
enum:
- E_COMMERCE
example: E_COMMERCE
merchant_trade_no:
type: string
format: uuid
example: 841e4ba2-1234-5678-9abc-a2a45de7bd00
order_amount:
type: string
description: Conditionally required when quote_id is not provided.
example: '100.00'
quote_id:
type: string
description: >-
Conditionally required when order_amount is not
provided.
example: FIN_PROVIDED_QUOTE_ID
currency:
type: string
enum:
- USDC
- USDT
- BTC
- ETH
example: USDT
rail:
type: string
description: >-
Blockchain rail for the destination. Required for OKX
and Kraken.
enum:
- SOLANA
- BITCOIN
- ETHEREUM
- TRON
- BASE
example: SOLANA
currency_type:
type: string
enum:
- crypto
example: crypto
redirection_url:
type: string
format: uri
description: >-
Optional redirect URL after payment completion. Used for
OKX.
example: https://example.com/redirect
remarks:
type: string
description: Optional order remarks.
example: ''
success_url:
type: string
format: uri
maxLength: 256
example: https://example.com/success
failed_url:
type: string
format: uri
maxLength: 256
example: https://example.com/failed
order_expire_time:
type: integer
minimum: 600
maximum: 3600
default: 3600
example: 3600
customer:
type: object
required:
- uid
- external_user_id
- user_name
- register_time
- kyc_country
properties:
uid:
type: string
example: user_123
external_user_id:
type: string
example: ext_user_001
user_name:
type: string
example: John Li
register_time:
type: integer
example: 1739178959
kyc_country:
type: string
example: AUS
goods:
type: array
minItems: 1
items:
type: object
required:
- shopping_name
- mcc_code
- goods_name
properties:
shopping_name:
type: string
example: test good1
mcc_code:
type: string
example: '1520'
goods_name:
type: string
example: test1
goods_detail:
type: string
example: First product
env:
type: object
required:
- terminal_type
- device
- browser_version
- ip
properties:
terminal_type:
type: string
enum:
- APP
- WEB
- WAP
- MINIAPP
- OTHERS
example: APP
device:
type: string
example: iPhone 15
browser_version:
type: string
example: iOS 17.0 Safari
ip:
type: string
format: ipv4
example: 192.168.0.1
risk_info:
type: object
required:
- terminal_type
properties:
terminal_type:
type: string
enum:
- APP
- WEB
- WAP
- MINIAPP
- OTHERS
example: APP
fin:
type: object
description: Required when quote_id is not provided.
required:
- settlement_config
properties:
settlement_config:
type: object
required:
- settlement_via
- destination_details
properties:
settlement_via:
type: string
enum:
- ONE_TO_ONE
- MARKET_ORDER
- FEE_RETENTION
example: MARKET_ORDER
destination_details:
type: object
required:
- wallet_address
- currency
- rail
properties:
wallet_address:
type: string
currency:
type: string
enum:
- USDC
- USDT
- BTC
- ETH
- PYUSD
example: USDC
rail:
type: string
enum:
- SOLANA
- BITCOIN
- ETHEREUM
- BASE
- TRON
example: SOLANA
developer_fee:
type: object
nullable: true
description: >-
Developer fee configuration. Nullable. Both fields
default to 0. Used as a sibling of settlement_config for
OKX.
properties:
fixed:
type: string
description: Fixed fee in USD per transaction. Defaults to 0.
example: '0.15'
percentage:
type: string
description: >-
Percentage fee applied to order_amount. Defaults to
0.
example: '2.5'
examples:
createPaymentWithAmount:
summary: Create payment with order_amount (no quote_id)
value:
integration_type: BYBIT
order_info:
merchant_name: PayPal
client_id: client_001
payment_type: E_COMMERCE
merchant_trade_no: 841e4ba2-1234-5678-9abc-a2a45de7bd00
order_amount: '100.00'
currency: USDT
currency_type: crypto
success_url: https://example.com/success
failed_url: https://example.com/failed
order_expire_time: 3600
goods:
- shopping_name: test good1
mcc_code: '1520'
goods_name: test1
goods_detail: First product
env:
terminal_type: APP
device: iPhone 15
browser_version: iOS 17.0 Safari
ip: 192.168.0.1
fin:
settlement_config:
settlement_via: MARKET_ORDER
destination_details:
wallet_address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency: USDC
rail: SOLANA
createPaymentWithQuoteId:
summary: Create payment with quote_id (no order_amount or fin)
value:
integration_type: BYBIT
order_info:
payment_type: E_COMMERCE
merchant_trade_no: 941e4ba2-5678-1234-9abc-b3b56ef8ce11
quote_id: FIN_PROVIDED_QUOTE_ID
currency: USDT
currency_type: crypto
success_url: https://example.com/success
failed_url: https://example.com/failed
goods:
- shopping_name: test good1
mcc_code: '1520'
goods_name: test1
env:
terminal_type: WEB
device: Chrome Desktop
browser_version: Chrome 121.0
ip: 10.0.0.1
createOKXPaymentWithAmount:
summary: 'OKX: Create payment with order_amount (no quote_id)'
value:
integration_type: OKX
order_info:
merchant_name: MESH Shop
merchant_trade_no: 841e4ba2-1234-5678-9abc-a2a45de7bd00
order_amount: '100.00'
currency: USDC
rail: SOLANA
currency_type: crypto
redirection_url: ''
fin:
settlement_config:
settlement_via: ONE_TO_ONE
destination_details:
wallet_address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency: USDC
rail: SOLANA
developer_fee:
fixed: '0.15'
percentage: '2.5'
createOKXPaymentWithQuoteId:
summary: 'OKX: Create payment with quote_id (no order_amount or fin)'
value:
integration_type: OKX
order_info:
merchant_trade_no: 841e4ba2-1234-5678-9abc-a2a45de7bd00
quote_id: FIN_PROVIDED_QUOTE_ID
currency: USDC
rail: SOLANA
currency_type: crypto
responses:
'200':
description: Payment created successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
payment_id:
type: string
format: uuid
example: FIN_PROVIDED_UUID
integration_type:
type: string
example: BYBIT
provider_response:
type: object
description: >-
Provider-specific response fields. Shape varies by
integration_type.
properties:
pay_id:
type: string
description: Provider-generated payment ID.
example: 01JN6AZVEMAC8H9SED6JES3QH8
terminal_type:
type: string
description: >-
Terminal type used for the payment. Present for
ByBit orders.
nullable: true
example: APP
expire_time:
type: integer
description: Unix timestamp when the payment link expires.
example: 1740751953
create_time:
type: integer
description: Unix timestamp when the order was created.
example: 1740748353
checkout_link:
type: string
description: >-
Payment checkout link. For OKX orders this is the
QR-code deeplink.
example: ''
qr_content:
type: string
description: >-
Base64-encoded QR code image. Present for ByBit
orders.
nullable: true
example: data:image/png;base64,/9j/2...f/Z
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
description: Validation error detected by Fin
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: integer
example: 422
type:
type: string
enum:
- FIN_ERROR
example: FIN_ERROR
message:
type: string
example: One or more fields are invalid
details:
type: array
nullable: true
items:
type: object
properties:
field:
type: string
message:
type: string
'428':
description: Error thrown from provider (forwards partner's HTTP status code)
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: integer
example: 500104
type:
type: string
enum:
- PROVIDER_ERROR
example: PROVIDER_ERROR
message:
type: string
example: Balance not Available
details:
type: array
nullable: true
items:
type: object
/v1/transit/payment/{payment_id}:
get:
summary: Fetch a Payment
description: Retrieve payment details by payment ID
x-mint:
content: >
## Payment Status Values
- **PAY_INIT**: Payment initialized
- **PAY_PROCESS**: Payment is being processed
- **PAY_SUCCESS**: Payment completed successfully
- **PAY_FAILED**: Payment failed
- **PAY_TIMEOUT**: Payment timed out
- **PAY_CANCEL**: Payment was cancelled
- **SETTLEMENT_INIT**: Settlement process started
- **SETTLEMENT_SUCCESS**: Settlement completed successfully
- **SETTLEMENT_HOLD**: Transaction on hold due to insufficient
rebalancing funds
- **SETTLEMENT_FAILED**: Settlement failed after 3 retry attempts
The `settlement_info` field will be `null` until `PAY_SUCCESS`. The `payment_time` will be `0` until `PAY_SUCCESS`.
tags:
- Crypto Orchestration
security:
- bearerAuth: []
parameters:
- name: payment_id
in: path
required: true
schema:
type: string
format: uuid
description: The unique payment identifier returned from Create Payment
example: FIN_PROVIDED_UUID
responses:
'200':
description: Payment details retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
payment_id:
type: string
format: uuid
example: FIN_PROVIDED_UUID
integration_type:
type: string
example: BYBIT
quote_id:
type: string
format: uuid
example: FIN_PROVIDED_UUID
status:
type: string
enum:
- PAY_INIT
- PAY_PROCESS
- PAY_SUCCESS
- PAY_FAILED
- PAY_TIMEOUT
- PAY_CANCEL
- SETTLEMENT_INIT
- SETTLEMENT_HOLD
- SETTLEMENT_SUCCESS
- SETTLEMENT_FAILED
example: PAY_INIT
create_time:
type: integer
example: 1740748353
payment_info:
type: object
properties:
pay_id:
type: string
example: 01JN6AZVEMAC8H9SED6JES3QH8
merchant_trade_no:
type: string
example: 841e4ba2-...-a2a45de7bd00
amount:
type: string
example: '100'
status:
type: string
enum:
- PAY_INIT
- PAY_PROCESS
- PAY_SUCCESS
- PAY_FAILED
- PAY_TIMEOUT
- PAY_CANCEL
example: PAY_INIT
currency:
type: string
example: USDT
currency_type:
type: string
example: crypto
expire_time:
type: integer
example: 1740751953
payment_time:
type: integer
description: 0 until PAY_SUCCESS
example: 0
settlement_info:
type: object
nullable: true
description: null until PAY_SUCCESS
properties:
settlement_via:
type: string
enum:
- ONE_TO_ONE
- MARKET_ORDER
- FEE_RETENTION
example: MARKET_ORDER
wallet_address:
type: string
currency:
type: string
enum:
- USDC
- USDT
- BTC
- ETH
example: USDC
rail:
type: string
enum:
- SOLANA
- BITCOIN
- ETHEREUM
- BASE
example: SOLANA
amount:
type: string
example: '100'
trx_hash:
type: string
example: 0x580...
settle_time:
type: integer
example: 1740748353
status:
type: string
enum:
- SETTLEMENT_INIT
- SETTLEMENT_HOLD
- SETTLEMENT_SUCCESS
- SETTLEMENT_FAILED
example: SETTLEMENT_SUCCESS
retry_attempts:
type: integer
minimum: 0
maximum: 3
example: 0
examples:
paymentInitiated:
summary: Payment in initial state
value:
data:
payment_id: FIN_PROVIDED_UUID
integration_type: BYBIT
status: PAY_INIT
create_time: 1740748353
payment_info:
pay_id: 01JN6AZVEMAC8H9SED6JES3QH8
merchant_trade_no: 841e4ba2-...-a2a45de7bd00
amount: '100'
status: PAY_INIT
currency: USDT
currency_type: crypto
expire_time: 1740751953
payment_time: 0
settlement_info: null
paymentSettled:
summary: Payment successfully settled
value:
data:
payment_id: FIN_PROVIDED_UUID
integration_type: BYBIT
status: SETTLEMENT_SUCCESS
create_time: 1740748353
payment_info:
pay_id: 01JN6AZVEMAC8H9SED6JES3QH8
merchant_trade_no: 841e4ba2-...-a2a45de7bd00
amount: '100'
status: PAY_SUCCESS
currency: USDT
currency_type: crypto
expire_time: 1740751953
payment_time: 1740748353
settlement_info:
settlement_via: MARKET_ORDER
wallet_address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency: USDC
rail: SOLANA
amount: '100'
trx_hash: 0x580...
settle_time: 1740748353
status: SETTLEMENT_SUCCESS
retry_attempts: 0
'401':
$ref: '#/components/responses/AuthenticationError'
'403':
description: Payment ID doesn't belong to you
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: integer
example: 403
type:
type: string
enum:
- FIN_ERROR
example: FIN_ERROR
message:
type: string
example: Payment ID doesn't belong to you
'404':
description: Payment ID not found
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: integer
example: 404
type:
type: string
enum:
- FIN_ERROR
example: FIN_ERROR
message:
type: string
example: Payment ID not found
/v1/transit/quote:
post:
summary: Create a crypto payment quote
description: Generate a fee estimation quote for a transit payment
x-mint:
content: >
The quote has a limited validity period indicated by `expire_at`. Request a new quote if it has expired.
See the **Quote Request by Integration** tabs on this page for
per-integration request examples (Bybit, Kraken, Pass Through).
tags:
- Crypto Orchestration
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- title: Bybit
type: object
required:
- order_amount
- integration_type
- settlement_config
properties:
order_amount:
type: string
description: Order amount in USD.
example: '100.00'
integration_type:
type: string
enum:
- BYBIT
example: BYBIT
settlement_config:
type: object
required:
- settlement_via
- rebalance_fee
- destination_details
properties:
settlement_via:
type: string
enum:
- MARKET_ORDER
- ONE_TO_ONE
example: MARKET_ORDER
rebalance_fee:
type: boolean
description: >-
When true, fees are absorbed and total_order_amount
equals order_amount. When false, settlement_amount
equals order_amount minus total_fee.
example: true
destination_details:
type: object
required:
- wallet_address
- currency
- rail
properties:
wallet_address:
type: string
description: Destination wallet address.
example: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency:
type: string
enum:
- USDC
- PYUSD
description: >-
Destination currency. See [supported chains and
currencies](https://developer.fin.com/crypto-orchestration/integration-types/bybit#chains-rails-and-constraints)
for valid currency and rail combinations.
example: USDC
rail:
type: string
enum:
- SOLANA
- ETHEREUM
- BASE
example: SOLANA
- title: Kraken
type: object
required:
- order_amount
- integration_type
- settlement_config
properties:
order_amount:
type: string
description: Order amount in USD.
example: '100.00'
integration_type:
type: string
enum:
- KRAKEN
example: KRAKEN
settlement_config:
type: object
required:
- settlement_via
- rebalance_fee
- destination_details
properties:
settlement_via:
type: string
enum:
- ONE_TO_ONE
example: ONE_TO_ONE
rebalance_fee:
type: boolean
description: >-
When true, fees are absorbed and total_order_amount
equals order_amount. When false, settlement_amount
equals order_amount minus total_fee.
example: false
destination_details:
type: object
required:
- wallet_address
- currency
- rail
properties:
wallet_address:
type: string
description: Destination wallet address.
example: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency:
type: string
enum:
- USDC
- PYUSD
example: PYUSD
rail:
type: string
enum:
- SOLANA
example: SOLANA
developer_fee:
type: object
nullable: true
description: >-
Developer fee configuration. Nullable. Both fields
default to 0.
properties:
fixed:
type: string
description: Fixed fee in USD per transaction. Defaults to 0.
example: '0.15'
percentage:
type: string
description: >-
Percentage fee applied to order_amount. Defaults to
0.
example: '2.5'
- title: Pass Through
type: object
required:
- order_amount
- integration_type
- settlement_config
properties:
order_amount:
type: string
description: Order amount in USD.
example: '100.00'
integration_type:
type: string
enum:
- PASS_THROUGH
example: PASS_THROUGH
settlement_config:
type: object
required:
- settlement_via
- rebalance_fee
- destination_details
properties:
settlement_via:
type: string
enum:
- FEE_RETENTION
example: FEE_RETENTION
rebalance_fee:
type: boolean
description: >-
Only false is supported for PASS_THROUGH. Passing
true returns an error.
example: false
destination_details:
type: object
required:
- wallet_address
- currency
- rail
properties:
wallet_address:
type: string
description: Destination wallet address.
example: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
currency:
type: string
enum:
- BTC
- ETH
- USDT
- USDC
example: BTC
rail:
type: string
enum:
- BITCOIN
- ETHEREUM
- TRON
- SOLANA
example: BITCOIN
developer_fee:
type: object
nullable: true
description: >-
Developer fee configuration. Nullable. Both fields
default to 0.
properties:
fixed:
type: string
description: Fixed fee in USD per transaction. Defaults to 0.
example: '0.15'
percentage:
type: string
description: >-
Percentage fee applied to order_amount. Defaults to
0.
example: '2.5'
- title: OKX
type: object
required:
- order_amount
- integration_type
- settlement_config
properties:
order_amount:
type: string
description: Order amount in USD.
example: '100.00'
integration_type:
type: string
enum:
- OKX
example: OKX
settlement_config:
type: object
required:
- settlement_via
- rebalance_fee
- destination_details
properties:
settlement_via:
type: string
enum:
- ONE_TO_ONE
example: ONE_TO_ONE
rebalance_fee:
type: boolean
description: >-
When true, fees are absorbed and total_order_amount
equals order_amount. When false, settlement_amount
equals order_amount minus total_fee.
example: false
destination_details:
type: object
required:
- wallet_address
- currency
- rail
properties:
wallet_address:
type: string
description: Destination wallet address.
example: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency:
type: string
enum:
- USDC
description: USDC only for OKX (milestone-1).
example: USDC
rail:
type: string
enum:
- SOLANA
description: SOLANA only for OKX (milestone-1).
example: SOLANA
developer_fee:
type: object
nullable: true
description: >-
Developer fee configuration. Nullable. Both fields
default to 0.
properties:
fixed:
type: string
description: Fixed fee in USD per transaction. Defaults to 0.
example: '0.15'
percentage:
type: string
description: >-
Percentage fee applied to order_amount. Defaults to
0.
example: '2.5'
examples:
Bybit:
summary: Bybit
value:
order_amount: '100.00'
integration_type: BYBIT
settlement_config:
settlement_via: MARKET_ORDER
rebalance_fee: true
destination_details:
wallet_address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency: USDC
rail: SOLANA
Kraken:
summary: Kraken
value:
order_amount: '100.00'
integration_type: KRAKEN
settlement_config:
settlement_via: ONE_TO_ONE
rebalance_fee: false
destination_details:
wallet_address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency: PYUSD
rail: SOLANA
developer_fee:
fixed: '0.15'
percentage: '2.5'
Pass Through:
summary: Pass Through
value:
order_amount: '100.00'
integration_type: PASS_THROUGH
settlement_config:
settlement_via: FEE_RETENTION
rebalance_fee: false
destination_details:
wallet_address: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
currency: BTC
rail: BITCOIN
developer_fee:
fixed: '0.15'
percentage: '2.5'
OKX:
summary: OKX
value:
order_amount: '100.00'
integration_type: OKX
settlement_config:
settlement_via: ONE_TO_ONE
rebalance_fee: false
destination_details:
wallet_address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency: USDC
rail: SOLANA
developer_fee:
fixed: '0.15'
percentage: '2.5'
responses:
'200':
description: Quote created successfully
content:
application/json:
schema:
oneOf:
- title: Bybit
type: object
properties:
data:
type: object
properties:
quote_id:
type: string
format: uuid
description: >-
Unique quote identifier. Pass as quote_id when
creating a payment to lock in the quoted fees.
example: 4081fa09-7761-42b6-8f66-24beae1a2ca5
expire_at:
type: integer
description: >-
Unix timestamp when this quote expires. Request a
new quote after expiry.
example: 1770916749
order_amount:
type: string
description: Order amount provided in the request, in USD.
example: '100.00'
integration_type:
type: string
example: BYBIT
settlement_config:
type: object
properties:
settlement_via:
type: string
example: MARKET_ORDER
rebalance_fee:
type: boolean
example: true
destination_details:
type: object
properties:
wallet_address:
type: string
example: >-
7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency:
type: string
example: USDC
rail:
type: string
example: SOLANA
quote_estimation:
type: object
properties:
payment_fee:
type: string
description: >-
Fee charged by the exchange for processing the
payment.
example: '0.00'
conversion_fee:
type: string
description: >-
Fee charged for currency conversion where
applicable.
example: '0.00'
withdrawal_fee:
type: string
description: >-
Fee charged for withdrawing funds from the
exchange.
example: '0.00'
gas_fee:
type: string
description: >-
Blockchain network gas fee for the on-chain
settlement transaction.
example: '0.50'
total_fee:
type: string
description: >-
Total of all fees: gas_fee + payment_fee +
conversion_fee + withdrawal_fee.
example: '0.50'
total_order_amount:
type: string
description: >-
Gross amount charged to the payer. When
rebalance_fee is true, equals order_amount
(fees absorbed into the order).
example: '100.00'
ata_fee_applied:
type: boolean
description: >-
Whether a Solana Associated Token Account
creation fee was applied to gas_fee.
example: false
- title: Kraken
type: object
properties:
data:
type: object
properties:
quote_id:
type: string
format: uuid
description: >-
Unique quote identifier. Pass as quote_id when
creating a payment to lock in the quoted fees.
example: 76e8bcc0-a6b4-41f7-b3d2-76cfbe910fe3
expire_at:
type: integer
description: >-
Unix timestamp when this quote expires. Request a
new quote after expiry.
example: 1770916749
order_amount:
type: string
description: Order amount provided in the request, in USD.
example: '100.00'
integration_type:
type: string
example: KRAKEN
settlement_config:
type: object
properties:
settlement_via:
type: string
example: ONE_TO_ONE
rebalance_fee:
type: boolean
example: false
destination_details:
type: object
properties:
wallet_address:
type: string
example: >-
7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency:
type: string
example: PYUSD
rail:
type: string
example: SOLANA
quote_estimation:
type: object
properties:
payment_fee:
type: string
description: >-
Fee charged by the exchange for processing the
payment.
example: '0.00'
conversion_fee:
type: string
description: >-
Fee charged for currency conversion where
applicable.
example: '0.00'
withdrawal_fee:
type: string
description: >-
Fee charged for withdrawing funds from the
exchange.
example: '0.00'
gas_fee:
type: string
description: >-
Blockchain network gas fee for the on-chain
settlement transaction.
example: '0.50'
total_developer_fee:
type: string
description: >-
Sum of developer-configured fees: fixed fee
plus percentage of order_amount.
example: '2.65'
total_fee:
type: string
description: >-
Total of all fees: gas_fee + payment_fee +
conversion_fee + withdrawal_fee +
total_developer_fee.
example: '3.15'
total_order_amount:
type: string
description: >-
Gross amount charged to the payer. When
rebalance_fee is false, settlement_amount
equals order_amount minus total_fee.
example: '100.00'
ata_fee_applied:
type: boolean
description: >-
Whether a Solana Associated Token Account
creation fee was applied to gas_fee.
example: false
- title: Pass Through
type: object
properties:
data:
type: object
properties:
quote_id:
type: string
format: uuid
description: >-
Unique quote identifier. Pass as quote_id when
creating a payment to lock in the quoted fees.
example: 5831ce86-cd88-4aba-b1fd-32dcf6e1a030
expire_at:
type: integer
description: >-
Unix timestamp when this quote expires. Request a
new quote after expiry.
example: 1770916749
order_amount:
type: string
description: Order amount provided in the request, in USD.
example: '100.00'
integration_type:
type: string
example: PASS_THROUGH
settlement_config:
type: object
properties:
settlement_via:
type: string
example: FEE_RETENTION
rebalance_fee:
type: boolean
example: false
destination_details:
type: object
properties:
wallet_address:
type: string
example: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
currency:
type: string
example: BTC
rail:
type: string
example: BITCOIN
quote_estimation:
type: object
properties:
payment_fee:
type: string
description: >-
Fee charged by the exchange for processing the
payment.
example: '0.00'
conversion_fee:
type: string
description: >-
Fee charged for currency conversion where
applicable.
example: '0.00'
withdrawal_fee:
type: string
description: >-
Fee charged for withdrawing funds from the
exchange.
example: '0.00'
gas_fee:
type: string
description: >-
Blockchain network gas fee for the on-chain
settlement transaction.
example: '0.50'
total_developer_fee:
type: string
description: >-
Sum of developer-configured fees: fixed fee
plus percentage of order_amount.
example: '2.65'
total_fee:
type: string
description: >-
Total of all fees: gas_fee + payment_fee +
conversion_fee + withdrawal_fee +
total_developer_fee.
example: '3.15'
total_order_amount:
type: string
description: >-
Gross amount charged to the payer. When
rebalance_fee is false, settlement_amount
equals order_amount minus total_fee.
example: '100.00'
ata_fee_applied:
type: boolean
description: >-
Whether a Solana Associated Token Account
creation fee was applied to gas_fee.
example: false
- title: OKX
type: object
properties:
data:
type: object
properties:
quote_id:
type: string
format: uuid
description: >-
Unique quote identifier. Pass as quote_id when
creating a payment to lock in the quoted fees.
example: e9d4c7b2-1a3f-4e85-90f2-c6d8a1b3e4f7
expire_at:
type: integer
description: >-
Unix timestamp when this quote expires. Request a
new quote after expiry.
example: 1770916749
order_amount:
type: string
description: Order amount provided in the request, in USD.
example: '100.00'
integration_type:
type: string
example: OKX
settlement_config:
type: object
properties:
settlement_via:
type: string
example: ONE_TO_ONE
rebalance_fee:
type: boolean
example: false
destination_details:
type: object
properties:
wallet_address:
type: string
example: >-
7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency:
type: string
example: USDC
rail:
type: string
example: SOLANA
quote_estimation:
type: object
properties:
payment_fee:
type: string
description: >-
Fee charged by the exchange for processing the
payment.
example: '0.00'
conversion_fee:
type: string
description: >-
Fee charged for currency conversion where
applicable.
example: '0.00'
withdrawal_fee:
type: string
description: >-
Fee charged for withdrawing funds from the
exchange.
example: '0.00'
gas_fee:
type: string
description: >-
Blockchain network gas fee for the on-chain
settlement transaction.
example: '0.50'
total_developer_fee:
type: string
description: >-
Sum of developer-configured fees: fixed fee
plus percentage of order_amount.
example: '2.65'
total_fee:
type: string
description: >-
Total of all fees: gas_fee + payment_fee +
conversion_fee + withdrawal_fee +
total_developer_fee.
example: '3.15'
total_order_amount:
type: string
description: >-
Gross amount charged to the payer. When
rebalance_fee is false, settlement_amount
equals order_amount minus total_fee.
example: '106.30'
ata_fee_applied:
type: boolean
description: >-
Whether a Solana Associated Token Account
creation fee was applied to gas_fee.
example: false
examples:
Bybit:
summary: Bybit
value:
data:
quote_id: 4081fa09-7761-42b6-8f66-24beae1a2ca5
expire_at: 1770916749
order_amount: '100.00'
integration_type: BYBIT
settlement_config:
settlement_via: MARKET_ORDER
rebalance_fee: true
destination_details:
wallet_address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency: USDC
rail: SOLANA
quote_estimation:
payment_fee: '0.00'
conversion_fee: '0.00'
withdrawal_fee: '0.00'
gas_fee: '0.50'
total_fee: '0.50'
total_order_amount: '100.00'
ata_fee_applied: false
Pass Through:
summary: Pass Through
value:
data:
quote_id: 5831ce86-cd88-4aba-b1fd-32dcf6e1a030
expire_at: 1770916749
order_amount: '100.00'
integration_type: PASS_THROUGH
settlement_config:
settlement_via: FEE_RETENTION
rebalance_fee: false
destination_details:
wallet_address: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
currency: BTC
rail: BITCOIN
quote_estimation:
payment_fee: '0.00'
conversion_fee: '0.00'
withdrawal_fee: '0.00'
gas_fee: '0.50'
total_developer_fee: '2.65'
total_fee: '3.15'
total_order_amount: '100.00'
ata_fee_applied: false
Kraken:
summary: Kraken
value:
data:
quote_id: 76e8bcc0-a6b4-41f7-b3d2-76cfbe910fe3
expire_at: 1770916749
order_amount: '100.00'
integration_type: KRAKEN
settlement_config:
settlement_via: ONE_TO_ONE
rebalance_fee: false
destination_details:
wallet_address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency: PYUSD
rail: SOLANA
quote_estimation:
payment_fee: '0.00'
conversion_fee: '0.00'
withdrawal_fee: '0.00'
gas_fee: '0.50'
total_developer_fee: '2.65'
total_fee: '3.15'
total_order_amount: '100.00'
ata_fee_applied: false
OKX:
summary: OKX
value:
data:
quote_id: e9d4c7b2-1a3f-4e85-90f2-c6d8a1b3e4f7
expire_at: 1770916749
order_amount: '100.00'
integration_type: OKX
settlement_config:
settlement_via: ONE_TO_ONE
rebalance_fee: false
destination_details:
wallet_address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency: USDC
rail: SOLANA
quote_estimation:
payment_fee: '0.00'
conversion_fee: '0.00'
withdrawal_fee: '0.00'
gas_fee: '0.50'
total_developer_fee: '2.65'
total_fee: '3.15'
total_order_amount: '106.30'
ata_fee_applied: false
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/wallet/balances:
get:
summary: Fetch Prefunded Balance
description: Retrieve the current prefunded wallet balances
x-mint:
content: |
To enable prefundable wallets, you must first reach out to the fin.com
team to enable wallets for you for both **sandbox** and **production**
tags:
- Balances
security:
- bearerAuth: []
responses:
'200':
description: Wallet balances retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
currency:
type: string
enum:
- USD
example: USD
amount:
type: integer
description: Amount in cents (multiplied by 100)
example: 150000
'401':
$ref: '#/components/responses/AuthenticationError'
/v2/customers/{customer_id}/virtual-accounts:
post:
operationId: createVirtualAccountV2
summary: Create Virtual Account V2
description: >-
Create a virtual bank account for a specific customer to convert fiat
deposits to crypto. The `customer_id` path parameter identifies the
customer for whom the virtual account is being created.
tags:
- Virtual Accounts
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
format: uuid
description: Unique identifier of the customer to create the virtual account for.
example: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- destination
- source
- developer_fee
properties:
destination:
type: object
required:
- wallet
- currency
- rail
properties:
wallet:
type: string
description: Destination wallet address in hexadecimal format (0x...)
example: '0x6e41e83d406185b358bd72111ab1206cb82eb67f'
currency:
type: string
enum:
- USDC
example: USDC
rail:
type: string
enum:
- POLYGON
example: POLYGON
source:
type: object
required:
- currency
- rail
properties:
currency:
type: string
enum:
- USD
- EUR
- MXN
example: USD
rail:
type: string
enum:
- ACH
- SWIFT
- FEDWIRE
- FEDNOW
- SEPA
- SPEI
example: FEDWIRE
developer_fee:
type: object
required:
- percentage
- fixed
properties:
percentage:
type: number
example: 0.1
fixed:
type: number
example: 0.1
example:
destination:
wallet: '0x6e41e83d406185b358bd72111ab1206cb82eb67f'
currency: USDC
rail: POLYGON
source:
currency: USD
rail: FEDWIRE
developer_fee:
percentage: 0.1
fixed: 0.1
responses:
'200':
description: Virtual account created successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
type: string
format: uuid
example: 024e784b-bc27-4a4c-82ee-80000fbf53c5
status:
type: string
enum:
- PROCESSING
- IN_COMPLIANCE
- REQUEST_FOR_INFORMATION
- ACTIVE
- INACTIVE
- DECLINED
example: PROCESSING
customer_id:
type: string
format: uuid
example: 0fb72092-22a8-4df8-a6d9-1a28f86b7d44
created_at:
type: string
format: date-time
example: '2026-04-04T11:05:20.963676Z'
rfi:
type: object
nullable: true
example: null
examples:
OK:
summary: OK
value:
data:
id: 024e784b-bc27-4a4c-82ee-80000fbf53c5
status: PROCESSING
customer_id: 0fb72092-22a8-4df8-a6d9-1a28f86b7d44
created_at: '2026-04-04T11:05:20.963676Z'
rfi: null
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
get:
operationId: listVirtualAccountsV2
summary: List Virtual Accounts V2
description: Retrieve a list of all virtual accounts for a specific customer
tags:
- Virtual Accounts
security:
- bearerAuth: []
parameters:
- name: customer_id
in: path
required: true
schema:
type: string
format: uuid
description: Unique identifier for the customer
example: 0fb72092-22a8-4df8-a6d9-1a28f86b7d44
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/CurrentPageParam'
responses:
'200':
description: Virtual accounts retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
virtual_accounts:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
example: 024e784b-bc27-4a4c-82ee-80000fbf53c5
status:
type: string
enum:
- PROCESSING
- IN_COMPLIANCE
- REQUEST_FOR_INFORMATION
- ACTIVE
- INACTIVE
- DECLINED
example: ACTIVE
developer_fee_percent:
type: number
nullable: true
example: 0
developer_fee_fixed:
type: number
nullable: true
example: 0.3
customer_id:
type: string
format: uuid
example: 0fb72092-22a8-4df8-a6d9-1a28f86b7d44
created_at:
type: string
format: date-time
example: '2026-04-04T11:05:20.963676Z'
updated_at:
type: string
format: date-time
example: '2026-04-04T11:05:20.963676Z'
deposit_instructions:
type: object
nullable: true
description: null when status is PROCESSING
properties:
currency:
type: string
example: USD
bank_name:
type: string
example: Bank of Nowhere
bank_address:
type: string
example: 1800 North Pole St., Orlando, FL 32801
bank_routing_number:
type: string
example: '101019644'
bank_account_number:
type: string
example: '2611508020'
payment_rails:
type: array
items:
type: string
example:
- ACH
- FEDWIRE
bank_country:
type: string
nullable: true
example: null
account_type:
type: string
nullable: true
example: null
bank_code:
type: string
nullable: true
example: null
destination:
type: object
properties:
currency:
type: string
enum:
- USDC
example: USDC
destination_chain:
type: string
enum:
- POLYGON
example: POLYGON
address:
type: string
example: '0x6e41e83d406185b358bd72111ab1206cb82eb67f'
rfi:
type: object
nullable: true
example: null
pagination:
type: object
properties:
current_page:
type: integer
example: 1
per_page:
type: integer
example: 10
total_page:
type: integer
example: 1
total:
type: integer
example: 2
examples:
OK:
summary: OK
value:
data:
virtual_accounts:
- id: 024e784b-bc27-4a4c-82ee-80000fbf53c5
status: PROCESSING
developer_fee_percent: 0
developer_fee_fixed: 0.3
customer_id: 0fb72092-22a8-4df8-a6d9-1a28f86b7d44
created_at: '2026-04-04T11:05:20.963676Z'
updated_at: '2026-04-04T11:05:20.963676Z'
deposit_instructions: null
destination:
currency: USDC
destination_chain: POLYGON
address: '0x6e41e83d406185b358bd72111ab1206cb82eb67f'
rfi: null
- id: 1c1919e3-ce2e-4728-9efe-12b8be8e964d
status: ACTIVE
developer_fee_percent: 0
developer_fee_fixed: null
customer_id: 0fb72092-22a8-4df8-a6d9-1a28f86b7d44
created_at: '2026-04-04T11:04:16.156771Z'
updated_at: '2026-04-04T11:04:16.156771Z'
deposit_instructions:
currency: USD
bank_name: Bank of Nowhere
bank_address: 1800 North Pole St., Orlando, FL 32801
bank_routing_number: '101019644'
bank_account_number: '2611508020'
payment_rails:
- ACH
- FEDWIRE
bank_country: null
account_type: null
bank_code: null
destination:
currency: USDC
destination_chain: POLYGON
address: '0x6e41e83d406185b358bd72111ab1206cb82eb67f'
rfi: null
pagination:
current_page: 1
per_page: 10
total_page: 1
total: 2
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/customers/virtual-account:
get:
summary: List Virtual Accounts V1
description: Retrieve a list of all virtual accounts for a specific customer
x-mint:
content: |
This endpoint was deprecated on May 20, 2026. Use [List Virtual Accounts V2](https://developer.fin.com/api-reference/virtual-accounts/list-virtual-accounts-v2) instead.
tags:
- Virtual Accounts
security:
- bearerAuth: []
parameters:
- name: customer_id
in: query
required: true
schema:
type: string
format: uuid
example: 196ce546-900d-4294-90ca-5546a5923f35
responses:
'200':
description: Virtual accounts retrieved successfully
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- virtual_accounts
- pagination
properties:
virtual_accounts:
type: array
items:
$ref: '#/components/schemas/VirtualAccount'
pagination:
type: object
properties:
current_page:
type: integer
example: 1
per_page:
type: integer
example: 10
total_page:
type: integer
example: 1
total:
type: integer
example: 6
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
post:
summary: Create Virtual Account
description: >-
Create a virtual bank account for a customer to convert USD deposits to
USDC on Polygon
x-mint:
content: |
This endpoint was deprecated on May 20, 2026. Use [Create Virtual Account V2](https://developer.fin.com/api-reference/virtual-accounts/create-virtual-account-v2) instead.
tags:
- Virtual Accounts
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- customer_id
- destination_currency
- destination_chain
- source_rail
- source_currency
- destination_wallet_address
- developer_fee_percentage
properties:
customer_id:
type: string
format: uuid
example: 5a6f47f7-7326-409f-a4da-90e409133fb8
destination_currency:
type: string
enum:
- USDC
default: USDC
destination_chain:
type: string
enum:
- POLYGON
default: POLYGON
source_rail:
type: string
example: ACH
source_currency:
type: string
example: USD
destination_wallet_address:
type: string
example: '0x7f1568190e318da16a9ef5a46cba19d5b97d9b29'
developer_fee_percentage:
type: number
example: 1.5
responses:
'200':
description: Virtual account created successfully
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/VirtualAccount'
'401':
$ref: '#/components/responses/AuthenticationError'
'422':
$ref: '#/components/responses/ValidationError'
put:
summary: Update Virtual Account
description: >-
Update an existing virtual bank account's developer fee percentage and
destination wallet address
tags:
- Virtual Accounts
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- id
- customer_id
properties:
id:
type: string
format: uuid
example: f8715e46-f46a-41dc-94ec-bd9797683510
customer_id:
type: string
format: uuid
example: 22c6b566-5ecc-49b7-b812-076c64735596
developer_fee_percentage:
type: number
example: 1.25
destination_wallet_address:
type: string
example: '0x7f1568190e318da16a9ef5a46cba19d5b97d9b29'
responses:
'200':
description: Virtual account updated successfully
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/VirtualAccount'
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/virtual-account/{virtual_account_id}/transactions:
get:
summary: Fetch Virtual Account Transactions
description: >-
Retrieve a paginated list of all transactions for a specific virtual
account
tags:
- Virtual Accounts
security:
- bearerAuth: []
parameters:
- name: virtual_account_id
in: path
required: true
schema:
type: string
format: uuid
example: 3e7ce5ef-09bc-4e80-97f1-651ac483546f
- name: page
in: query
required: false
schema:
type: integer
default: 1
- name: limit
in: query
required: false
schema:
type: integer
default: 10
responses:
'200':
description: Virtual account transactions retrieved successfully
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
properties:
transactions:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
example: e34a382f-f0b6-40f2-b53b-97cb31f0506c
transaction_type:
type: string
example: ONRAMP
beneficiary_id:
type: string
format: uuid
nullable: true
hash:
type: string
nullable: true
transaction_ref_id:
type: string
format: uuid
from_amount:
type: number
example: 0
payout_amount:
type: number
example: 0
processing_amount:
type: number
nullable: true
status:
type: string
example: COMPLETED
fx_rate:
type: number
example: 0
developer_fee:
type: number
example: 0
developer_fee_percentage:
type: number
example: 0
developer_fee_fixed:
type: number
nullable: true
from_currency:
type: string
example: USD
payout_currency:
type: string
example: USDC
virtual_account_id:
type: string
format: uuid
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
pagination:
type: object
properties:
current_page:
type: integer
example: 1
per_page:
type: integer
example: 10
total_page:
type: integer
example: 1
total:
type: integer
example: 4
'401':
$ref: '#/components/responses/AuthenticationError'
'404':
$ref: '#/components/responses/NotFoundError'
'422':
$ref: '#/components/responses/ValidationError'
/v1/fx-rate:
get:
summary: Fetch Exchange Rates
description: Retrieve exchange rates for a specific country or currency.
x-mint:
content: |
Provide either `country_code` or `currency_code`, but not both.
tags:
- Fees & FX Rates
security:
- bearerAuth: []
parameters:
- name: country_code
in: query
required: false
schema:
$ref: '#/components/schemas/CountryCode'
- name: currency_code
in: query
required: false
schema:
type: string
pattern: ^[A-Z]{3}$
example: EUR
responses:
'200':
description: Exchange rates retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
from_currency:
type: string
example: USD
to_currency:
type: string
example: EUR
exchange_rate:
type: number
format: float
example: 0.88
valid_from:
type: string
format: date-time
example: '2026-05-20T19:34:03Z'
valid_till:
type: string
format: date-time
example: '2026-05-20T20:34:03Z'
example:
data:
from_currency: USD
to_currency: EUR
exchange_rate: 0.88
valid_from: '2026-05-20T19:34:03Z'
valid_till: '2026-05-20T20:34:03Z'
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/fee-calculation:
post:
summary: Calculate Exchange Rates
description: Calculate exchange rates and applicable fees for a transaction.
x-mint:
content: >
Pass either `source_amount` or `destination_amount`. Use
`beneficiary_id` instead of
`destination_currency` to get developer-fee-aware calculations.
tags:
- Fees & FX Rates
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
source_currency:
type: string
pattern: ^[A-Z]{3}$
example: USD
source_amount:
type: number
example: 3508679
destination_amount:
type: number
example: 59456
destination_currency:
type: string
pattern: ^[A-Z]{3}$
example: CAD
beneficiary_id:
type: string
format: uuid
example: ceb7e6c9-ef2a-41c2-8459-38d67ec3c655
examples:
With source amount:
value:
source_currency: USD
source_amount: 3508679
destination_currency: CAD
beneficiary_id: ceb7e6c9-ef2a-41c2-8459-38d67ec3c655
With destination amount:
value:
source_currency: USD
destination_amount: 59456
destination_currency: CAD
beneficiary_id: ceb7e6c9-ef2a-41c2-8459-38d67ec3c655
responses:
'200':
description: Fee calculation completed successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
source_currency:
type: string
example: USD
destination_currency:
type: string
example: CAD
source_amount:
type: number
example: 3508679
exchange_rate:
type: number
format: float
example: 1.45
destination_amount:
type: number
example: 508679
valid_till:
type: string
format: date-time
example: '2026-01-19T09:59:29Z'
fee:
type: object
properties:
fixed:
type: number
example: 25
percentage:
type: number
example: 4
total:
type: number
example: 29
is_fee_applied:
type: boolean
example: true
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/industries:
get:
summary: List Industries
description: Retrieve a list of available industries
x-mint:
content: |
This endpoint is used for **Create Business Customer V1** only. It is not applicable for Create Business Customer V2.
tags:
- Catalogue
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/CurrentPageParam'
responses:
'200':
description: List of industries retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
industries:
type: array
items:
type: object
properties:
id:
type: integer
example: 1
title:
type: string
example: Oilseed Except Soybean Farming
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/occupations:
get:
summary: List Occupations
description: Retrieve a list of available occupations
tags:
- Catalogue
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/CurrentPageParam'
responses:
'200':
description: List of occupations retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
occupations:
type: array
items:
type: object
properties:
id:
type: integer
example: 1
title:
type: string
example: Software Engineer
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/source-of-funds:
get:
summary: List Source of Funds
description: Retrieve a list of available source of funds
tags:
- Catalogue
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/CurrentPageParam'
- name: type
in: query
description: Filter source of funds by type
required: true
schema:
type: string
enum:
- INDIVIDUAL
- BUSINESS
responses:
'200':
description: List of source of funds retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
source_of_funds:
type: array
items:
type: object
properties:
id:
type: integer
example: 1
title:
type: string
example: Employment Income
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/source-of-wealth:
get:
summary: List Source of Wealth
description: Retrieve a list of available source of wealth options
tags:
- Catalogue
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/CurrentPageParam'
- name: type
in: query
description: Filter source of wealth by type
required: true
schema:
type: string
enum:
- INDIVIDUAL
- BUSINESS
responses:
'200':
description: List of source of wealth retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
source_of_wealth:
type: array
items:
type: object
properties:
id:
type: integer
example: 1
title:
type: string
example: Business dividends or profits
example:
data:
pagination:
current_page: 1
per_page: 10
total_page: 1
total: 7
source_of_wealth:
- id: 1
title: Business dividends or profits
- id: 2
title: Investment income
- id: 3
title: Real estate
- id: 4
title: Inheritance
- id: 5
title: Salary
- id: 6
title: Sale of business
- id: 7
title: Other
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/purposes:
get:
summary: List Account Purposes
description: Retrieve a list of available account purposes
tags:
- Catalogue
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/CurrentPageParam'
- name: type
in: query
description: Filter account purposes by type
required: true
schema:
type: string
enum:
- INDIVIDUAL
- BUSINESS
responses:
'200':
description: List of account purposes retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
purposes:
type: array
items:
type: object
properties:
id:
type: integer
example: 1
title:
type: string
example: Personal Savings
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/countries:
get:
summary: List Generic Country Codes
description: >-
Retrieve a list of country specific codes following ISO 3166-1 alpha-3
standard
tags:
- Catalogue
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/CurrentPageParam'
responses:
'200':
description: List of countries retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
countries:
type: array
items:
type: object
properties:
code:
type: string
example: BLR
name:
type: string
example: Belarus
currency_code:
type: string
example: BYN
phone_code:
type: string
example: '+375'
flag_url:
type: string
format: uri
example: https://flagcdn.com/by.svg
postal_code:
type: object
properties:
required:
type: boolean
example: true
regex:
type: string
nullable: true
example: \A\d{6}\Z
example:
data:
pagination:
current_page: 1
per_page: 20
total_page: 13
total: 248
countries:
- code: AFG
name: Afghanistan
currency_code: AFN
phone_code: '+93'
flag_url: https://flagcdn.com/af.svg
postal_code:
required: true
regex: \A\d{4}\Z
- code: ALA
name: Ã…land Islands
currency_code: EUR
phone_code: '+358'
flag_url: https://flagcdn.com/ax.svg
postal_code:
required: true
regex: \A22\d{3}\Z
- code: ALB
name: Albania
currency_code: ALL
phone_code: '+355'
flag_url: https://flagcdn.com/al.svg
postal_code:
required: true
regex: \A\d{4}\Z
- code: DZA
name: Algeria
currency_code: DZD
phone_code: '+213'
flag_url: https://flagcdn.com/dz.svg
postal_code:
required: true
regex: \A\d{5}\Z
- code: ASM
name: American Samoa
currency_code: USD
phone_code: +1-684
flag_url: https://flagcdn.com/as.svg
postal_code:
required: true
regex: \A(96799)(?:[ \-](\d{4}))?\Z
- code: AND
name: Andorra
currency_code: EUR
phone_code: '+376'
flag_url: https://flagcdn.com/ad.svg
postal_code:
required: true
regex: \AAD[1-7]0\d\Z
- code: AGO
name: Angola
currency_code: AOA
phone_code: '+244'
flag_url: https://flagcdn.com/ao.svg
postal_code:
required: false
regex: null
- code: AIA
name: Anguilla
currency_code: XCD
phone_code: +1-264
flag_url: https://flagcdn.com/ai.svg
postal_code:
required: true
regex: \A(?:AI-)?2640\Z
- code: ATA
name: Antarctica
flag_url: https://flagcdn.com/aq.svg
postal_code:
required: false
regex: null
- code: ATG
name: Antigua and Barbuda
currency_code: XCD
phone_code: +1-268
flag_url: https://flagcdn.com/ag.svg
postal_code:
required: false
regex: null
- code: ARG
name: Argentina
currency_code: ARS
phone_code: '+54'
flag_url: https://flagcdn.com/ar.svg
postal_code:
required: true
regex: \A((?:[A-HJ-NP-Z])?\d{4})([A-Z]{3})?\Z
- code: ARM
name: Armenia
currency_code: AMD
phone_code: '+374'
flag_url: https://flagcdn.com/am.svg
postal_code:
required: true
regex: \A(?:37)?\d{4}\Z
- code: ABW
name: Aruba
currency_code: AWG
phone_code: '+297'
flag_url: https://flagcdn.com/aw.svg
postal_code:
required: false
regex: null
- code: AUS
name: Australia
currency_code: AUD
phone_code: '+61'
flag_url: https://flagcdn.com/au.svg
postal_code:
required: true
regex: \A\d{4}\Z
- code: AUT
name: Austria
currency_code: EUR
phone_code: '+43'
flag_url: https://flagcdn.com/at.svg
postal_code:
required: true
regex: \A\d{4}\Z
- code: AZE
name: Azerbaijan
currency_code: AZN
phone_code: '+994'
flag_url: https://flagcdn.com/az.svg
postal_code:
required: true
regex: \A\d{4}\Z
- code: BHS
name: Bahamas
currency_code: BSD
phone_code: +1-242
flag_url: https://flagcdn.com/bs.svg
postal_code:
required: false
regex: null
- code: BHR
name: Bahrain
currency_code: BHD
phone_code: '+973'
flag_url: https://flagcdn.com/bh.svg
postal_code:
required: true
regex: \A(?:\d|1[0-2])\d{2}\Z
- code: BGD
name: Bangladesh
currency_code: BDT
phone_code: '+880'
flag_url: https://flagcdn.com/bd.svg
postal_code:
required: true
regex: \A\d{4}\Z
- code: BRB
name: Barbados
currency_code: BBD
phone_code: +1-246
flag_url: https://flagcdn.com/bb.svg
postal_code:
required: true
regex: \ABB\d{5}\Z
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/countries/{country_code}/subdivisions:
get:
summary: 'List Subdivision Codes: ISO 3166-1 alpha-2'
description: >-
Retrieve a list of subdivision codes for a specific country following
ISO 3166-2 standard
tags:
- Catalogue
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/CountryCodeParam'
responses:
'200':
description: List of subdivisions retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
subdivisions:
type: array
items:
type: object
properties:
name:
type: string
example: Bandarban
code:
type: string
example: BD-01
'401':
$ref: '#/components/responses/AuthenticationError'
/v1/transaction-purposes:
get:
summary: List Transaction Purposes
description: Retrieve a list of available transaction purposes
tags:
- Catalogue
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/CurrentPageParam'
- name: type
in: query
description: Filter transaction purposes by type
required: true
schema:
type: string
enum:
- INDIVIDUAL
- BUSINESS
responses:
'200':
description: List of transaction purposes retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
transaction_purposes:
type: array
items:
type: object
properties:
id:
type: integer
example: 1
title:
type: string
example: Personal Transfer
'401':
$ref: '#/components/responses/AuthenticationError'
components:
parameters:
PerPageParam:
name: per_page
in: query
description: Number of items to return per page
required: false
schema:
type: integer
default: 10
minimum: 1
maximum: 512
CurrentPageParam:
name: current_page
in: query
description: The page number to retrieve
required: false
schema:
type: integer
default: 1
minimum: 1
CountryCodeParam:
name: country_code
in: path
description: ISO 3166-1 alpha-3 country code
required: true
schema:
$ref: '#/components/schemas/CountryCode'
schemas:
CountryCode:
type: string
description: ISO 3166-1 alpha-3 country code
example: USA
enum:
- AFG
- ALB
- DZA
- ASM
- AND
- AGO
- AIA
- ATA
- ATG
- ARG
- ARM
- ABW
- AUS
- AUT
- AZE
- BHS
- BHR
- BGD
- BRB
- BLR
- BEL
- BLZ
- BEN
- BMU
- BTN
- BOL
- BES
- BIH
- BWA
- BVT
- BRA
- IOT
- BRN
- BGR
- BFA
- BDI
- CPV
- KHM
- CMR
- CAN
- CYM
- CAF
- TCD
- CHL
- CHN
- CXR
- CCK
- COL
- COM
- COD
- COG
- COK
- CRI
- HRV
- CUB
- CUW
- CYP
- CZE
- CIV
- DNK
- DJI
- DMA
- DOM
- ECU
- EGY
- SLV
- GNQ
- ERI
- EST
- SWZ
- ETH
- FLK
- FRO
- FJI
- FIN
- FRA
- GUF
- PYF
- ATF
- GAB
- GMB
- GEO
- DEU
- GHA
- GIB
- GRC
- GRL
- GRD
- GLP
- GUM
- GTM
- GGY
- GIN
- GNB
- GUY
- HTI
- HMD
- VAT
- HND
- HKG
- HUN
- ISL
- IND
- IDN
- IRN
- IRQ
- IRL
- IMN
- ISR
- ITA
- JAM
- JPN
- JEY
- JOR
- KAZ
- KEN
- KIR
- PRK
- KOR
- KWT
- KGZ
- LAO
- LVA
- LBN
- LSO
- LBR
- LBY
- LIE
- LTU
- LUX
- MAC
- MDG
- MWI
- MYS
- MDV
- MLI
- MLT
- MHL
- MTQ
- MRT
- MUS
- MYT
- MEX
- FSM
- MDA
- MCO
- MNG
- MNE
- MSR
- MAR
- MOZ
- MMR
- NAM
- NRU
- NPL
- NLD
- NCL
- NZL
- NIC
- NER
- NGA
- NIU
- NFK
- MNP
- NOR
- OMN
- PAK
- PLW
- PSE
- PAN
- PNG
- PRY
- PER
- PHL
- PCN
- POL
- PRT
- PRI
- QAT
- MKD
- ROU
- RUS
- RWA
- REU
- BLM
- SHN
- KNA
- LCA
- MAF
- SPM
- VCT
- WSM
- SMR
- STP
- SAU
- SEN
- SRB
- SYC
- SLE
- SGP
- SXM
- SVK
- SVN
- SLB
- SOM
- ZAF
- SGS
- SSD
- ESP
- LKA
- SDN
- SUR
- SJM
- SWE
- CHE
- SYR
- TWN
- TJK
- TZA
- THA
- TLS
- TGO
- TKL
- TON
- TTO
- TUN
- TUR
- TKM
- TCA
- TUV
- UGA
- UKR
- ARE
- GBR
- UMI
- USA
- URY
- UZB
- VUT
- VEN
- VNM
- VGB
- VIR
- WLF
- ESH
- YEM
- ZMB
- ZWE
- ALA
TokenResponse:
type: object
properties:
access_token:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
access_token_ttl:
type: string
format: date-time
example: '2025-12-28 10:34:45+00'
refresh_token:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
refresh_token_ttl:
type: string
format: date-time
example: '2025-12-28 10:34:45+00'
current_time:
type: string
format: date-time
example: '2025-12-21 10:34:45+00'
CreateBusinessCustomerV2Input:
type: object
required:
- verification_type
- industry_codes
- basic_info
- financial_profile
- addresses
- associated_parties
properties:
verification_type:
type: string
enum:
- STANDARD
- RELIANCE
description: >-
Verification level. Defaults to STANDARD if omitted. RELIANCE must
be explicitly enabled for your client.
example: STANDARD
industry_codes:
type: array
description: >-
NAICS 2022 6-digit industry codes. Min 1 item. See the full list at
[Business-industry-codes](https://developer.fin.com/business-industry-codes).
minItems: 1
items:
type: string
example:
- '523130'
basic_info:
$ref: '#/components/schemas/V2BasicInfo'
financial_profile:
$ref: '#/components/schemas/V2FinancialProfile'
addresses:
$ref: '#/components/schemas/V2Addresses'
associated_parties:
type: array
description: >-
UBOs (≥25% ownership), directors, and authorized signatories. Min 1
item required.
minItems: 1
items:
$ref: '#/components/schemas/V2AssociatedParty'
holding_structure:
$ref: '#/components/schemas/V2HoldingStructure'
public_listings:
type: array
description: Stock exchange listings. Required for publicly traded companies.
items:
$ref: '#/components/schemas/V2PublicListing'
compliance:
$ref: '#/components/schemas/V2Compliance'
meta_data:
type: object
description: Client-defined key-value metadata for internal tracking.
properties:
reference:
type: string
description: Client-defined external reference identifier.
example: REF-20250123-ACME
additionalProperties: true
V2BasicInfo:
type: object
required:
- legal_name
- legal_name_en
- trade_name
- description
- entity_type
- email
- phone
- incorporation_date
- country_of_incorporation
- registration_number
- tax_info
- websites
properties:
legal_name:
type: string
maxLength: 255
description: >-
Official registered business name. Must match incorporation
documents.
example: Fin.com
legal_name_en:
type: string
description: >-
English translation of the legal name. Required if legal_name
contains non-ASCII characters.
example: Fin.com
trade_name:
type: string
description: Common operating name or DBA (Doing Business As).
example: Toronggo
trade_name_en:
type: string
description: English translation of the trade name.
example: Toronggo
description:
type: string
maxLength: 500
description: Description of the company's business activities and purpose.
example: >-
Bangladesh-based technology company providing cross-border B2B
payment and financial technology services
entity_type:
type: string
enum:
- LIMITED_LIABILITY_COMPANY
- PUBLICLY_LISTED_COMPANY
- SOLE_PROPRIETOR
- PARTNERSHIP
- CORPORATION
- TRUST
- PRIVATE_FOUNDATION
- CHARITY
- NONPROFIT_ORGANIZATION
- PUBLIC_AGENCY_OR_AUTHORITY
description: Legal entity type of the business.
example: LIMITED_LIABILITY_COMPANY
email:
type: string
format: email
description: Business email address. Must be all lowercase.
example: m@tech.com
phone:
type: string
description: Business phone number in E.164 format.
example: '+8801529876543'
incorporation_date:
type: string
format: date
description: Date of incorporation in YYYY-MM-DD format. Cannot be a future date.
example: '2018-06-15'
country_of_incorporation:
$ref: '#/components/schemas/CountryCode'
registration_number:
type: string
description: Business registration or company number. Required.
example: 12-3456789
legal_entity_identifier:
type: string
minLength: 20
maxLength: 20
description: LEI code (20-character alphanumeric). Optional.
example: 549300EXAMPLE0001X23
is_dao:
type: boolean
description: Whether the entity is a Decentralized Autonomous Organization.
example: false
tax_info:
type: array
description: Tax and identifying documents for the business. Min 1 item.
minItems: 1
items:
$ref: '#/components/schemas/V2IdentifyingDocument'
websites:
type: array
description: Business website URLs. Min 1 item.
minItems: 1
items:
type: string
format: uri
example:
- https://fin.com
V2IdentifyingDocument:
type: object
required:
- country_code
- document_type
- document_id
properties:
country_code:
$ref: '#/components/schemas/CountryCode'
document_type:
type: string
description: >-
Business tax ID document type, validated per country. Examples: EIN,
TIN, VAT_ID, TAX_ID, etc. See all available types at [Business tax
id documents by
region](https://developer.fin.com/business-tax-id-documents-by-region).
example: EIN
document_id:
type: string
description: >-
The document ID or number. Format validated per country and document
type.
example: 12-3456789
V2IndividualIdentifyingDocument:
type: object
required:
- country_code
- document_type
- document_id
properties:
country_code:
$ref: '#/components/schemas/CountryCode'
document_type:
type: string
description: >-
Individual tax ID document type, validated per country. See all
available types at [Individual Tax ID
documents](https://developer.fin.com/guides/compliance-and-regulatory/individual-tax-id-documents).
example: TIN
document_id:
type: string
description: >-
The document ID or number. Format validated per country and document
type.
example: '1234567890123'
V2FinancialProfile:
type: object
required:
- purpose_id
- source_of_fund_ids
- source_of_wealth_ids
- estimated_annual_revenue_usd
- expected_monthly_deposits_usd
- expected_monthly_withdrawals_usd
- third_party_fund_usage
properties:
purpose_id:
type: integer
description: >-
Account purpose. Foreign key to purposes reference table. Fetch
valid values from [List Account
Purposes](https://developer.fin.com/api-reference/catalogue/list-account-purposes)
endpoint.
example: 3
purpose_remarks:
type: string
description: >-
Additional context for the account purpose. Required if purpose
represents "Other".
example: Cross-border B2B payments for international suppliers
source_of_fund_ids:
type: array
description: >-
Source(s) of business funds. FK array to source_of_funds reference
table. Min 1 item. Fetch valid values from [List Source of
Funds](https://developer.fin.com/api-reference/catalogue/list-source-of-funds).
Order items from the largest to smallest contributor. The ID
representing the primary source of funds must come first, followed
by secondary sources in descending order.
minItems: 1
items:
type: integer
example:
- 1
- 4
source_of_funds_description:
type: string
description: Additional context for source of funds.
example: Revenue from software licensing and SaaS subscriptions
source_of_wealth_ids:
type: array
description: >-
Source(s) of owner's wealth. FK array to source_of_wealth reference
table. Min 1 item. Fetch valid values from [List Source of
Wealth](https://developer.fin.com/api-reference/catalogue/list-source-of-wealth).
Order items from the largest to smallest contributor. The primary
source must come first.
minItems: 1
items:
type: integer
example:
- 2
estimated_annual_revenue_usd:
type: integer
minimum: 0
description: Estimated annual revenue in USD (not cents). Must be >= 0.
example: 5000000
expected_monthly_deposits_usd:
type: integer
minimum: 0
description: Expected monthly deposit volume in USD (not cents). Must be >= 0.
example: 400000
expected_monthly_withdrawals_usd:
type: integer
minimum: 0
description: Expected monthly withdrawal volume in USD (not cents). Must be >= 0.
example: 350000
expected_transaction_value_usd:
type: integer
minimum: 0
description: Typical single transaction value in USD (not cents). Optional.
example: 50000
expected_monthly_transaction_count:
type: integer
minimum: 0
description: Expected number of transactions per month. Optional.
example: 20
third_party_fund_usage:
type: boolean
description: >-
Whether this business will process, hold, or move funds on behalf of
other parties. Set to true only for MSBs and payment processors.
Triggers enhanced compliance review.
example: false
V2Addresses:
type: object
required:
- is_incorporated_address_same
- incorporated_address
properties:
is_incorporated_address_same:
type: boolean
description: >-
Whether the physical operating address is the same as the
incorporated address. If false, physical_address is required.
example: false
incorporated_address:
$ref: '#/components/schemas/V2Address'
physical_address:
allOf:
- $ref: '#/components/schemas/V2Address'
description: >-
Physical operating address. Required when
is_incorporated_address_same is false.
V2Address:
type: object
required:
- street_line_1
- street_line_1_en
- city
- state
- subdivision_code
- postal_code
- country
properties:
street_line_1:
type: string
description: Primary street address. P.O. Box addresses are not accepted.
example: 123 Main Street
street_line_1_en:
type: string
description: >-
English translation of street_line_1. Required if address contains
non-ASCII characters.
example: 123 Main Street
street_line_2:
type: string
description: Secondary address (suite, floor, unit, etc.). Optional.
example: Suite 400
street_line_2_en:
type: string
description: English translation of street_line_2. Optional.
example: Suite 400
city:
type: string
maxLength: 100
description: City or municipality name.
example: San Francisco
state:
type: string
description: >-
State or province. Required. Must be an ISO 3166-2 subdivision code
(e.g. US-CA, BD-13).
example: US-CA
subdivision_code:
type: string
description: >-
State/province code from [List
Subdivisions](https://developer.fin.com/api-reference/catalogue/list-subdivisions).
Same value as state field.
example: US-CA
postal_code:
type: string
description: ZIP or postal code. Format validated per country.
example: '94105'
country:
$ref: '#/components/schemas/CountryCode'
V2AssociatedParty:
type: object
required:
- basic_info
- address
- roles
properties:
ref:
type: string
description: >-
Client-defined reference identifier for this party. Used for
internal tracking only.
example: owner-001
basic_info:
$ref: '#/components/schemas/V2APBasicInfo'
address:
$ref: '#/components/schemas/V2Address'
roles:
type: array
description: >-
Roles held by this party. At least one role is required. A party may
hold both roles simultaneously. At least one party must hold both
shareholder and ubo.
minItems: 1
items:
type: string
enum:
- shareholder
- ubo
example:
- shareholder
- ubo
ownership_info:
$ref: '#/components/schemas/V2OwnershipInfo'
V2APBasicInfo:
type: object
required:
- first_name
- first_name_en
- last_name
- last_name_en
- dob
- email
- phone
- country_of_residence
- primary_nationality
- tax_info
properties:
first_name:
type: string
maxLength: 50
description: First name.
example: John
first_name_en:
type: string
description: >-
English transliteration of first name. Required if name contains
non-ASCII characters.
example: John
middle_name:
type: string
description: Middle name(s). Optional.
example: Michael
middle_name_en:
type: string
description: English transliteration of middle name. Optional.
example: Michael
last_name:
type: string
maxLength: 50
description: Last or family name.
example: Doe
last_name_en:
type: string
description: >-
English transliteration of last name. Required if name contains
non-ASCII characters.
example: Doe
dob:
type: string
format: date
description: >-
Date of birth in YYYY-MM-DD format. Party must be at least 18 years
old.
example: '1985-03-20'
email:
type: string
format: email
description: >-
Personal email address. Must be unique across all associated parties
in the same request.
example: john.doe@acmecorp.com
phone:
type: string
description: Personal phone number in E.164 format.
example: '+14155551234'
country_of_residence:
$ref: '#/components/schemas/CountryCode'
primary_nationality:
$ref: '#/components/schemas/CountryCode'
secondary_nationality:
allOf:
- $ref: '#/components/schemas/CountryCode'
description: Secondary nationality for dual citizens. Optional.
tax_info:
type: array
description: >-
Tax and identifying documents for this individual. See all
available individual tax ID document types at [Individual Tax ID
documents](https://developer.fin.com/guides/compliance-and-regulatory/individual-tax-id-documents).
items:
$ref: '#/components/schemas/V2IndividualIdentifyingDocument'
V2OwnershipInfo:
type: object
description: Required when roles includes ubo.
required:
- designation
- percentage_of_ownership
- relationship_establishment_date
- has_control
- is_signer
- is_director
properties:
designation:
type: string
maxLength: 100
description: Title or position in the company (e.g., CEO, CFO, Founder).
example: CEO
percentage_of_ownership:
type: number
format: float
minimum: 0
maximum: 100
description: >-
Ownership stake as a percentage (0 to 100). Individual parties may
have 0% ownership. Total across all parties must be < 100%.
example: 75
relationship_establishment_date:
type: string
format: date
description: >-
Date when the relationship with the business began. Format:
YYYY-MM-DD. Cannot be a future date.
example: '2018-06-15'
has_control:
type: boolean
description: Whether this party has significant control over the entity.
example: true
is_signer:
type: boolean
description: Whether this party is an authorized signatory.
example: true
is_director:
type: boolean
description: Whether this party serves as a director.
example: true
V2PublicListing:
type: object
properties:
mic:
type: string
description: ISO 10383 Market Identifier Code (e.g., XNAS for NASDAQ).
example: XNAS
isin:
type: string
minLength: 12
maxLength: 12
description: International Securities Identification Number (12 chars).
example: US0231351067
ticker_symbol:
type: string
description: Stock exchange ticker symbol.
example: ACME
V2HoldingStructure:
type: object
properties:
has_material_intermediary_ownership:
type: boolean
description: Whether any intermediary holds a material ownership stake.
example: true
corporate_shareholders:
type: array
description: List of corporate (non-individual) shareholders.
items:
$ref: '#/components/schemas/V2CorporateShareholder'
foreign_branches:
type: array
description: List of foreign branch registrations.
items:
$ref: '#/components/schemas/V2ForeignBranch'
V2CorporateShareholder:
type: object
required:
- entity_name
- entity_name_en
- registration_country_code
- ownership_percentage
properties:
entity_name:
type: string
description: Corporate shareholder's legal name.
example: Acme Ventures LLC
entity_name_en:
type: string
description: >-
English translation of entity name. Required if entity_name contains
non-ASCII characters.
example: Acme Ventures LLC
registration_country_code:
$ref: '#/components/schemas/CountryCode'
ownership_percentage:
type: number
format: float
minimum: 0
maximum: 100
description: Ownership stake as a percentage (0 to 100).
example: 60
registration_number:
type: string
description: Entity registration number. Optional.
example: 98-7654321
entity_type:
type: string
enum:
- LIMITED_LIABILITY_COMPANY
- PUBLICLY_LISTED_COMPANY
- SOLE_PROPRIETOR
- PARTNERSHIP
- CORPORATION
- TRUST
- PRIVATE_FOUNDATION
- CHARITY
- NONPROFIT_ORGANIZATION
- PUBLIC_AGENCY_OR_AUTHORITY
description: Legal entity type of the corporate shareholder. Optional.
example: LIMITED_LIABILITY_COMPANY
incorporation_date:
type: string
format: date
description: Incorporation date in YYYY-MM-DD format. Optional.
example: '2015-03-01'
V2ForeignBranch:
type: object
required:
- registration_country_code
properties:
registration_country_code:
$ref: '#/components/schemas/CountryCode'
name:
type: string
description: Branch name. Optional.
example: Acme Corp UK Branch
registration_number:
type: string
description: Branch registration number. Optional.
example: BR000123
V2Compliance:
type: object
properties:
operates_in_prohibited_countries:
type: boolean
description: Whether the business operates in OFAC/sanctioned countries.
example: false
additional_description_for_compliance_screening:
type: string
description: Free-text compliance notes for manual review.
example: We do not operate in any OFAC-sanctioned jurisdictions.
risk_profile:
$ref: '#/components/schemas/V2RiskProfile'
regulated_activity:
$ref: '#/components/schemas/V2RegulatedActivity'
aml:
$ref: '#/components/schemas/V2AML'
V2RiskProfile:
type: object
properties:
high_risk_activities:
type: array
description: >-
High-risk activities the business engages in. If non-empty,
high_risk_activities_explanation is required.
items:
type: string
enum:
- adult_entertainment
- crypto_exchange
- gambling
- cannabis
- weapons
- money_services
- cross_border_payments
example:
- cross_border_payments
high_risk_activities_explanation:
type: string
description: >-
Explanation of declared high-risk activities. Required when
high_risk_activities is non-empty.
example: >-
We facilitate cross-border B2B payments, subject to enhanced due
diligence procedures.
conducts_money_services:
type: boolean
description: Whether the business provides money services.
example: true
conducts_money_services_via_fin:
type: boolean
description: Whether money services are provided via financial intermediaries.
example: false
conducts_money_services_description:
type: string
description: Details about the money services offered.
example: >-
Licensed money transmitter providing international wire transfer
services.
V2RegulatedActivity:
type: object
required:
- description
- primary_authority_country_code
- primary_authority_name
- license_number
properties:
description:
type: string
description: Description of the regulated activity.
example: >-
Licensed money transmitter operating under FinCEN registration and
state-level MSB licenses
primary_authority_country_code:
$ref: '#/components/schemas/CountryCode'
primary_authority_name:
type: string
description: Name of the primary regulatory authority.
example: FinCEN
license_number:
type: string
description: Regulatory license or registration number.
example: MSB-12345678
V2AML:
type: object
properties:
supervisory_authority_name:
type: string
description: Name of the AML supervisory authority.
example: FinCEN
license_number:
type: string
description: AML license number.
example: MSB-12345678
has_appointed_mlro:
type: boolean
description: Whether a Money Laundering Reporting Officer has been appointed.
example: true
customer_risk_split:
$ref: '#/components/schemas/V2CustomerRiskSplit'
prohibits_anonymous_or_fictitious_accounts:
type: boolean
description: Policy on anonymous or fictitious accounts.
example: true
prohibits_accounts_for_unlicensed_or_shell_customers:
type: boolean
description: Policy on unlicensed or shell customers.
example: true
customer_identity_verification:
$ref: '#/components/schemas/V2VerificationMethod'
pep_and_sanctions_screening:
$ref: '#/components/schemas/V2VerificationMethod'
sanction_lists:
type: array
description: Names of sanction lists screened against.
items:
type: string
example:
- OFAC
- EU
- UN
- HMT
customer_risk_classification_from_due_diligence:
type: boolean
example: true
enhanced_due_diligence_process:
type: boolean
example: true
transaction_monitoring:
$ref: '#/components/schemas/V2VerificationMethod'
procedures_for_transaction_monitoring:
type: boolean
example: true
subject_to_ml_or_tf_investigation:
type: string
description: Current ML/TF investigation status.
example: none
subject_to_regulatory_enforcement_past_2_years:
type: string
description: Regulatory enforcement history over the last 2 years.
example: none
confirms_no_service_to_sanctioned_countries:
type: boolean
example: true
client_funds_accessibility:
type: string
description: Policy on client fund accessibility.
example: closed_loop
aml_ctf_audit_completed:
type: boolean
example: true
planned_audit_date:
type: string
format: date
description: Planned next audit date in YYYY-MM-DD format.
example: '2026-12-01'
V2CustomerRiskSplit:
type: object
description: Breakdown of customer risk classifications. Percentages must sum to 100.
required:
- low_risk
- medium_risk
- high_risk
properties:
low_risk:
type: integer
minimum: 0
maximum: 100
description: Percentage of low-risk customers.
example: 70
medium_risk:
type: integer
minimum: 0
maximum: 100
description: Percentage of medium-risk customers.
example: 25
high_risk:
type: integer
minimum: 0
maximum: 100
description: Percentage of high-risk customers.
example: 5
V2VerificationMethod:
type: object
description: >-
Used for customer_identity_verification, pep_and_sanctions_screening,
and transaction_monitoring.
required:
- method
- system
properties:
method:
type: string
description: Verification method (e.g., automated, manual, third_party).
example: automated
system:
type: string
description: System or vendor used (e.g., Jumio, Onfido, Internal).
example: Jumio
CreateBusinessCustomerInput:
type: object
required:
- basic_info
- financial_profile
- addresses
- associated_parties
properties:
verification_type:
type: string
enum:
- STANDARD
- RELIANCE
description: >-
Type of verification to perform (optional, defaults to STANDARD).
Note that RELIANCE verification must be enabled for your client, or
you will receive a 423 error.
example: RELIANCE
basic_info:
type: object
required:
- business_name
- description
- entity_type
- website
- email
- incorporation_date
- phone
- country_of_incorporation
- registration_number
- tax_id
properties:
business_name:
type: string
description: Legal name of the business
example: Acme Corp Ltd
business_trade_name:
type: string
description: Trading name or DBA (Doing Business As) name
example: Acme
description:
type: string
description: Description of the company's business
example: International software and payments company
entity_type:
type: string
enum:
- LIMITED_LIABILITY_COMPANY
- PUBLICLY_LISTED_COMPANY
- SOLE_PROPRIETOR
- PARTNERSHIP
- CORPORATION
- TRUST
- PRIVATE_FOUNDATION
- CHARITY
- NONPROFIT_ORGANIZATION
- PUBLIC_AGENCY_OR_AUTHORITY
- PRIVATE_LIMITED
description: Legal entity type of the business
example: LIMITED_LIABILITY_COMPANY
website:
type: string
format: uri
description: Company website URL
example: https://fin.com
email:
type: string
format: email
description: >-
Business email address. Must be all lowercase or a validation
error will occur.
example: contact@acmecorp.com
incorporation_date:
type: string
format: date
description: Date of incorporation in YYYY-MM-DD format
example: '2018-06-15'
phone:
type: string
description: Business phone number
example: '+14155552671'
country_of_incorporation:
$ref: '#/components/schemas/CountryCode'
registration_number:
type: string
description: Business registration number
example: 12-3456789
tax_id:
type: string
description: Tax identification number or EIN (must be EIN for USA)
example: 12-3456789
financial_profile:
type: object
required:
- purpose_id
- business_industry_id
- monthly_volume
- source_of_fund_id
- third_party_fund_usage
properties:
purpose_id:
type: integer
description: >-
Unique identifier for account purpose retrieved from the
catalogue API [List Account
Purposes](https://developer.fin.com/api-reference/catalogue/list-account-purposes).
example: 10
other_purpose:
type: string
description: >-
Custom purpose description (only when purpose_id represents
"Other")
example: custom other purpose
business_industry_id:
type: integer
description: >-
Unique identifier for business industry retrieved from the
catalogue API [List
Industries](https://developer.fin.com/api-reference/catalogue/list-industries)
example: 1
monthly_volume:
type: integer
minimum: 0
description: Expected monthly transaction volume in USD (not cents)
example: 100000
source_of_fund_id:
type: integer
description: >-
Unique identifier for source of funds retrieved from the
catalogue API [List Source of
Funds](https://developer.fin.com/api-reference/catalogue/list-source-of-funds)
example: 13
third_party_fund_usage:
type: boolean
description: >-
Indicates whether this customer will be moving other people's
money (third-party funds)
example: false
addresses:
type: object
required:
- is_incorporated_address_same
- incorporated_address
properties:
is_incorporated_address_same:
type: boolean
description: >-
Whether the physical address is the same as the incorporated
address
example: true
incorporated_address:
type: object
required:
- street
- city
- state
- postal_code
- country
properties:
street:
type: string
description: Street address
example: '10 Anson Road #26-04 International Plaza'
city:
type: string
description: City name
example: Singapore
state:
type: string
description: >-
State or province. Required. Must be an ISO 3166-2
subdivision code (e.g. US-CA, BD-13).
example: SG-01
postal_code:
type: string
description: Postal or ZIP code
example: '079903'
country:
$ref: '#/components/schemas/CountryCode'
physical_address:
type: object
description: >-
Physical operating address (required only if
is_incorporated_address_same is false)
required:
- street
- city
- state
- postal_code
- country
properties:
street:
type: string
example: 456 Market Street Floor 3
city:
type: string
example: San Francisco
state:
type: string
description: >-
State or province. Required. Must be an ISO 3166-2
subdivision code (e.g. US-CA, BD-13).
example: US-CA
postal_code:
type: string
example: '94103'
country:
$ref: '#/components/schemas/CountryCode'
associated_parties:
type: array
description: Array of associated parties (UBOs, directors, shareholders, etc.)
minItems: 1
items:
type: object
required:
- basic_info
- address
- ownership_info
properties:
basic_info:
type: object
required:
- first_name
- last_name
- dob
- email
- phone
- country_of_residence
- nationality
- tin
properties:
first_name:
type: string
example: John
last_name:
type: string
example: Doe
dob:
type: string
format: date
example: '1985-03-20'
email:
type: string
format: email
example: john.doe@acmecorp.com
phone:
type: string
example: '+14155551234'
country_of_residence:
$ref: '#/components/schemas/CountryCode'
nationality:
$ref: '#/components/schemas/CountryCode'
tin:
type: string
description: Tax Identification Number
example: 123-45-6789
address:
type: object
required:
- street
- city
- state
- postal_code
- country
properties:
street:
type: string
example: 456 Oak Avenue
city:
type: string
example: San Francisco
state:
type: string
description: >-
State or province. Required. Must be an ISO 3166-2
subdivision code (e.g. US-CA, BD-13).
example: US-CA
postal_code:
type: string
example: '94102'
country:
$ref: '#/components/schemas/CountryCode'
ownership_info:
type: object
required:
- designation
- percentage_of_ownership
- relationship_establishment_date
properties:
designation:
type: string
description: Role or position in the company (e.g., CEO, Director, UBO)
example: CEO
percentage_of_ownership:
type: number
format: float
minimum: 0
description: >-
Percentage of ownership in the business. Total must be <
100.
example: 75
relationship_establishment_date:
type: string
format: date
description: >-
Date when the relationship was established in YYYY-MM-DD
format
example: '2018-06-15'
meta_data:
type: object
additionalProperties: true
description: Additional custom metadata as key-value pairs
example:
reference: ref-20250910-XYZ
CreateIndividualCustomerV2Input:
type: object
required:
- verification_type
- basic_info
- address
- financial_profile
properties:
verification_type:
type: string
enum:
- STANDARD
- RELIANCE
example: STANDARD
basic_info:
type: object
required:
- first_name
- last_name
- dob
- email
- phone
- country_of_residence
- primary_nationality
- tax_info
properties:
first_name:
type: string
example: Maria
first_name_en:
type: string
description: >-
English transliteration. Required if first_name contains
non-ASCII characters.
example: Maria
middle_name:
type: string
example: Elena
middle_name_en:
type: string
description: >-
English transliteration. Required if middle_name contains
non-ASCII characters.
example: Elena
last_name:
type: string
example: Garcia
last_name_en:
type: string
description: >-
English transliteration. Required if last_name contains
non-ASCII characters.
example: Garcia
dob:
type: string
format: date
description: >-
Date of birth in YYYY-MM-DD format. Age must be between 18 and
120 years.
example: '1990-04-15'
email:
type: string
format: email
description: Must be all lowercase.
example: maria.garcia@example.com
phone:
type: string
description: E.164 format.
example: '+14155552671'
country_of_residence:
$ref: '#/components/schemas/CountryCode'
primary_nationality:
$ref: '#/components/schemas/CountryCode'
secondary_nationality:
$ref: '#/components/schemas/CountryCode'
gender:
type: string
enum:
- MALE
- FEMALE
example: FEMALE
tax_info:
type: array
minItems: 1
description: >-
Tax identification documents. Each entry must have a unique
document_id.
items:
type: object
required:
- country_code
- document_type
- document_id
properties:
country_code:
$ref: '#/components/schemas/CountryCode'
document_type:
type: string
description: Tax document type (e.g. SSN, TIN).
example: SSN
document_id:
type: string
example: 123-45-6789
address:
type: object
required:
- street_line_1
- city
- subdivision_code
- postal_code
- country
properties:
street_line_1:
type: string
example: 123 Market Street
street_line_1_en:
type: string
description: >-
English transliteration. Required if street_line_1 contains
non-ASCII characters.
example: 123 Market Street
street_line_2:
type: string
example: Apt 4B
street_line_2_en:
type: string
description: >-
English transliteration. Required if street_line_2 contains
non-ASCII characters.
example: Apt 4B
city:
type: string
example: San Francisco
subdivision_code:
type: string
description: ISO 3166-2 subdivision code (e.g. US-CA).
example: US-CA
postal_code:
type: string
example: '94103'
country:
$ref: '#/components/schemas/CountryCode'
financial_profile:
type: object
required:
- employment_status
- occupation_id
- purpose_id
- source_of_fund_ids
- monthly_volume_usd
properties:
employment_status:
type: string
enum:
- EMPLOYED
- SELF_EMPLOYED
- RETIRED
- STUDENT
- UNEMPLOYED
description: Employment status of the individual.
example: EMPLOYED
occupation_id:
type: integer
description: >-
Occupation. FK to occupations reference table. Fetch valid
values from GET /v1/occupations?type=INDIVIDUAL.
example: 42
purpose_id:
type: integer
description: >-
Account purpose. FK to purposes reference table. Fetch valid
values from GET /v1/purposes?type=INDIVIDUAL.
example: 3
purpose_remarks:
type: string
example: Personal remittances to family
source_of_fund_ids:
type: array
minItems: 1
items:
type: integer
description: >-
Source(s) of funds. FK array to source_of_funds reference table.
Fetch valid values from GET /v1/source-of-funds?type=INDIVIDUAL.
example:
- 1
- 5
source_of_funds_description:
type: string
example: Monthly salary from employment
monthly_volume_usd:
type: integer
minimum: 0
example: 5000
meta_data:
type: object
additionalProperties: true
example:
reference: client-ref-abc-001
CreateIndividualCustomerInput:
type: object
required:
- verification_type
- basic_info
- address
- financial_profile
properties:
verification_type:
type: string
enum:
- STANDARD
- RELIANCE
example: STANDARD
basic_info:
type: object
required:
- first_name
- last_name
- dob
- email
- phone
- country_of_residence
- nationality
- tin
properties:
first_name:
type: string
example: John
last_name:
type: string
example: Doe
dob:
type: string
format: date
example: '1990-01-15'
email:
type: string
format: email
example: john.doe@example.com
phone:
type: string
example: '+14155551234'
country_of_residence:
$ref: '#/components/schemas/CountryCode'
nationality:
$ref: '#/components/schemas/CountryCode'
tin:
type: string
example: 123-45-6789
address:
type: object
required:
- street
- city
- state
- postal_code
- country
properties:
street:
type: string
example: 123 Main St
city:
type: string
example: New York
state:
type: string
description: >-
State or province. Required. Must be an ISO 3166-2 subdivision
code (e.g. US-CA, BD-13).
example: US-NY
postal_code:
type: string
example: '10001'
country:
$ref: '#/components/schemas/CountryCode'
financial_profile:
type: object
required:
- occupation_id
- source_of_fund_id
- purpose_id
- monthly_volume_usd
properties:
occupation_id:
type: integer
example: 1
source_of_fund_id:
type: integer
example: 1
purpose_id:
type: integer
example: 1
monthly_volume_usd:
type: integer
minimum: 0
example: 5000
meta_data:
type: object
additionalProperties: true
example:
customer_reference: REF-12345
IndividualCustomerDetailV2:
title: Individual
type: object
properties:
customer_id:
type: string
format: uuid
example: 56c41b8e-e650-4f55-94f6-26a888a9b64d
type:
type: string
enum:
- INDIVIDUAL
first_name:
type: string
example: John
last_name:
type: string
example: Doe
email:
type: string
format: email
example: john.doe@example.com
phone:
type: string
example: '+14155551234'
country_of_residence:
type: string
example: USA
verification_type:
type: string
example: STANDARD
customer_status:
type: string
example: ACTION_REQUIRED
tos_policies_url:
type: string
format: uri
example: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=1f45e58d-0420-4ad8-a790-413169bfab28&tos_policies_value=ffefb0cd-4f0a-4585-ad1c-f4ea76ba41b8
created_at:
type: string
format: date-time
example: '2026-05-04T12:40:03Z'
updated_at:
type: string
format: date-time
example: '2026-05-04T12:47:50Z'
last_status_updated_at:
type: string
format: date-time
example: '2026-05-04T12:44:42.707598Z'
rejection_reason:
type: object
nullable: true
description: >-
Populated when customer_status is REJECTED or ACTION_REQUIRED.
Contains applicant-level and document-level rejection details. Null
when no rejection exists.
properties:
applicant:
type: object
nullable: true
description: Applicant-level rejection reason.
properties:
moderation_comment:
type: string
example: ''
reject_labels:
type: array
items:
type: string
example:
- EXPIRATION_DATE
- PROBLEMATIC_APPLICANT_DATA
documents:
type: array
description: Document-level rejection reasons.
items:
type: object
properties:
uri:
type: string
example: /SuElNZpi_approved_passport_sumsub.jpg
category:
type: string
example: PROOF_OF_IDENTITY
moderation_comment:
type: string
example: >-
Your identity document has expired and can't be used for
verification. Please upload a different identity document.
reject_labels:
type: array
items:
type: string
example:
- EXPIRATION_DATE
example: null
request_for_information:
type: array
description: >-
List of open requests for additional information. Populated when
customer_status is ACTION_REQUIRED. Same structure as customer.rfi
webhook payload.
items:
type: object
properties:
scope:
type: string
enum:
- CUSTOMER
- ASSOCIATED_PARTY
example: CUSTOMER
section:
type: string
example: proof_of_identity
categories:
type: array
items:
type: object
properties:
document_type:
type: string
example: PASSPORT
fields:
type: array
items:
type: object
properties:
field_name:
type: string
example: files
data_type:
type: string
enum:
- URI
- DATE
- TEXT
- ENUM
example: URI
status:
type: string
enum:
- MISSING
- EXPIRED
- INVALID
example: INVALID
reason:
type: string
nullable: true
example: >-
Expired Identity document. A new document has been
requested.
options:
type: array
items:
type: string
example: []
example: []
BusinessCustomerDetailV2:
title: Business
type: object
properties:
customer_id:
type: string
format: uuid
example: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
type:
type: string
enum:
- BUSINESS
business_name:
type: string
example: Fin.com
email:
type: string
format: email
example: m@tech.com
phone:
type: string
example: '+8801529876543'
country_of_incorporation:
type: string
example: BGD
verification_type:
type: string
example: STANDARD
customer_status:
type: string
description: >-
The following statuses have been changed from V1.
QUEUED (V1) → PROCESSING (V2). ON_HOLD (V1) → IN_COMPLIANCE (V2).
REINITIATE (V1) → ACTION_REQUIRED (V2).
enum:
- INCOMPLETE
- PROCESSING
- REVIEWING
- APPROVED
- ASSOCIATED_PARTIES_REMAINING
- IN_COMPLIANCE
- ACTION_REQUIRED
- REJECTED
example: IN_COMPLIANCE
tos_policies_url:
type: string
format: uri
associated_parties:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
example: f6b13e01-044a-4f74-a70b-d5f66b6449af
type:
type: string
example: INDIVIDUAL
ownership_percent:
type: number
example: 60
email:
type: string
format: email
example: fatima.rahman22@acmecorp.com.bd
verification:
type: object
properties:
status:
type: string
enum:
- INITIATED
- REVIEWING
- APPROVED
- REJECTED
example: APPROVED
reason:
type: object
properties:
for_customer:
type: string
nullable: true
for_developer:
type: string
nullable: true
updated_at:
type: string
format: date-time
example: '2026-04-13T11:40:49Z'
created_at:
type: string
format: date-time
example: '2026-04-01T12:03:03Z'
updated_at:
type: string
format: date-time
example: '2026-04-01T12:03:03Z'
rejection_reason:
type: object
nullable: true
description: >-
Populated when customer_status is REJECTED or ACTION_REQUIRED.
Contains applicant-level, document-level, and associated party-level
rejection details. Null when no rejection exists.
properties:
applicant:
type: object
nullable: true
description: Applicant-level rejection reason.
properties:
moderation_comment:
type: string
example: >-
If you're a sole entrepreneur, upload corporate documents
confirming your company's legal status.
reject_labels:
type: array
items:
type: string
example:
- DOCUMENT_MISSING
documents:
type: array
description: Document-level rejection reasons.
items:
type: object
properties:
uri:
type: string
example: /7zlLPvlx_testdoc6.jpg
category:
type: string
example: SUPPORTING_DOCUMENTS
moderation_comment:
type: string
example: >-
This document is not accepted. The document should be of
good quality.
reject_labels:
type: array
items:
type: string
example:
- LOW_QUALITY
associated_parties:
type: array
description: Associated party-level rejection reasons.
items:
type: object
example: null
request_for_information:
type: array
description: >-
List of open requests for additional information. Populated when
customer_status is ACTION_REQUIRED. Same structure as customer.rfi
webhook payload.
items:
type: object
properties:
section:
type: string
example: ownership_documents
categories:
type: array
items:
type: object
properties:
document_type:
type: string
example: SHAREHOLDER_REGISTRY
fields:
type: array
items:
type: object
properties:
field_name:
type: string
example: files
data_type:
type: string
enum:
- URI
- DATE
- TEXT
- ENUM
example: URI
status:
type: string
enum:
- MISSING
- EXPIRED
- INVALID
example: INVALID
reason:
type: string
nullable: true
example: Unacceptable document.
example: []
IndividualCustomerDetail:
type: object
title: Individual
properties:
customer_id:
type: string
format: uuid
example: 56c41b8e-e650-4f55-94f6-26a888a9b64d
type:
type: string
enum:
- INDIVIDUAL
first_name:
type: string
example: John
last_name:
type: string
example: Doe
email:
type: string
format: email
example: john.doe@fin.com
phone:
type: string
example: '+14724480512'
country_of_residence:
type: string
example: USA
verification_type:
type: string
example: STANDARD
customer_status:
type: string
example: ON_HOLD
tos_policies_url:
type: string
format: uri
example: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=56c41b8e-e650-4f55-94f6-26a888a9b64d&tos_policies_value=e9414388-fbdf-4407-b5c2-bc39eae3645b
created_at:
type: string
format: date-time
example: '2026-04-15T11:49:27Z'
updated_at:
type: string
format: date-time
example: '2026-04-15T11:52:48Z'
last_status_updated_at:
type: string
format: date-time
example: '2026-04-15T11:52:48Z'
capabilities:
type: object
description: On-ramp and off-ramp capabilities for the customer
properties:
on_ramp:
type: array
items:
type: object
properties:
currency:
type: string
example: USD
status:
type: boolean
example: false
methods:
type: array
items:
type: string
example:
- ACH
- FEDWIRE
reason:
type: object
properties:
for_customer:
type: string
nullable: true
for_developer:
type: string
nullable: true
off_ramp:
type: array
items:
type: object
properties:
currency:
type: string
example: USD
status:
type: boolean
example: false
methods:
type: array
items:
type: string
example:
- BANK
reason:
type: object
properties:
for_customer:
type: string
nullable: true
for_developer:
type: string
nullable: true
example: Customer is under review
rejection_reason:
type: object
nullable: true
description: Populated when customer_status is REJECTED. Null otherwise.
example: null
request_for_information:
type: array
description: >-
List of open requests for additional information. Empty when none
are outstanding.
items:
type: object
example: []
BusinessCustomerDetail:
type: object
title: Business
properties:
customer_id:
type: string
format: uuid
example: 94e6b847-4e19-49e3-b3ab-ffa95872eda9
type:
type: string
enum:
- BUSINESS
business_name:
type: string
example: Fin.com
email:
type: string
format: email
example: contact@fin.com
phone:
type: string
example: '+6591234567'
country_of_incorporation:
type: string
example: SGP
verification_type:
type: string
example: STANDARD
customer_status:
type: string
example: APPROVED
tos_policies_url:
type: string
format: uri
example: >-
https://orchestration.fin.com/orchestration-customer-tos?customer_id=94e6b847-4e19-49e3-b3ab-ffa95872eda9&tos_policies_value=6955e70b-f9f3-4076-b1ce-5c897085dd24
associated_parties:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
example: 42daffd3-09a0-4d48-8e73-2680a953d0e1
type:
type: string
example: INDIVIDUAL
ownership_percent:
type: number
example: 10
email:
type: string
format: email
example: john.doe@fin.com
verification:
type: object
properties:
status:
type: string
example: APPROVED
reason:
type: object
properties:
for_customer:
type: string
nullable: true
for_developer:
type: string
nullable: true
updated_at:
type: string
format: date-time
example: '2026-04-15T11:29:08Z'
created_at:
type: string
format: date-time
example: '2026-04-15T11:26:12Z'
updated_at:
type: string
format: date-time
example: '2026-04-15T11:31:18Z'
last_status_updated_at:
type: string
format: date-time
example: '2026-04-15T11:29:09Z'
capabilities:
type: object
description: On-ramp and off-ramp capabilities for the customer
properties:
on_ramp:
type: array
items:
type: object
properties:
currency:
type: string
example: USD
status:
type: boolean
example: false
methods:
type: array
items:
type: string
example:
- ACH
- FEDWIRE
reason:
type: object
properties:
for_customer:
type: string
nullable: true
for_developer:
type: string
nullable: true
off_ramp:
type: array
items:
type: object
properties:
currency:
type: string
example: USD
status:
type: boolean
example: true
methods:
type: array
items:
type: string
example:
- BANK
reason:
type: object
properties:
for_customer:
type: string
nullable: true
for_developer:
type: string
nullable: true
rejection_reason:
type: object
nullable: true
description: Populated when customer_status is REJECTED. Null otherwise.
request_for_information:
type: array
description: >-
List of pending information requests. Empty when none are
outstanding.
items:
type: object
ProofOfIdentity:
type: object
required:
- type
- number
- country
- issue_date
- expiry_date
- files
properties:
type:
type: string
enum:
- PASSPORT
- NATIONAL_ID
- DRIVERS_LICENSE
- RESIDENCE_PERMIT
description: |
- `PASSPORT`: Passport
- `NATIONAL_ID`: National ID card
- `DRIVERS_LICENSE`: Driver's license
- `RESIDENCE_PERMIT` - Residence permit
example: PASSPORT
number:
type: string
example: A12345678
country:
$ref: '#/components/schemas/CountryCode'
issue_date:
type: string
format: date
example: '2020-01-15'
expiry_date:
type: string
format: date
example: '2030-01-15'
files:
type: array
items:
type: object
required:
- uri
properties:
side:
type: string
enum:
- FRONT
- BACK
example: FRONT
uri:
type: string
example: /AbAcQ4hn_0652746727637.pdf
ProofOfAddressBusiness:
type: object
required:
- type
- country
- files
properties:
type:
type: string
enum:
- PASSPORT
- NATIONAL_ID
- DRIVERS_LICENSE
- RESIDENCE_PERMIT
- UTILITY_BILL
- GOVERNMENT_LETTER
- BANK_STATEMENT
- COMPANY_DOC
example: UTILITY_BILL
country:
$ref: '#/components/schemas/CountryCode'
files:
type: array
items:
type: object
required:
- uri
properties:
uri:
type: string
example: /AbAcQ4hn_0652746727638.pdf
ProofOfAddressIndividual:
type: object
description: The proof of address document must not be older than three months.
required:
- type
- country
- files
properties:
type:
type: string
enum:
- PASSPORT
- NATIONAL_ID
- DRIVERS_LICENSE
- RESIDENCE_PERMIT
- UTILITY_BILL
- GOVERNMENT_LETTER
- BANK_STATEMENT
example: UTILITY_BILL
country:
$ref: '#/components/schemas/CountryCode'
files:
type: array
items:
type: object
required:
- uri
properties:
uri:
type: string
example: /AbAcQ4hn_0652746727638.pdf
AttachDocumentForIndividualCustomerInput:
type: object
required:
- customer_id
- proof_of_identity
- proof_of_address
- tos_policies_value
properties:
customer_id:
type: string
format: uuid
example: 55bd6b4e-c20a-4cc8-9535-91d5557a67d9
proof_of_identity:
$ref: '#/components/schemas/ProofOfIdentity'
proof_of_address:
$ref: '#/components/schemas/ProofOfAddressIndividual'
tos_policies_value:
type: string
example: e9414388-fbdf-4407-b5c2-bc39eae3645b
AttachDocumentToAssociatedPartyInput:
type: object
required:
- customer_id
- associated_party_attachments
properties:
customer_id:
type: string
format: uuid
example: 2d0a9df3-e1e5-4955-9759-ce0522e0ddc9
associated_party_attachments:
type: array
items:
type: object
required:
- associated_party_id
- proof_of_identity
- proof_of_address
properties:
associated_party_id:
type: string
format: uuid
example: 42daffd3-09a0-4d48-8e73-2680a953d0e1
proof_of_identity:
$ref: '#/components/schemas/ProofOfIdentity'
proof_of_address:
$ref: '#/components/schemas/ProofOfAddressBusiness'
AttachDocumentsToBusinessCustomerInput:
type: object
required:
- customer_id
- ownership_structure
- company_details
- legal_presence
- tos_policies_value
properties:
customer_id:
type: string
format: uuid
example: 2d0a9df3-e1e5-4955-9759-ce0522e0ddc9
ownership_structure:
type: array
items:
type: object
required:
- type
- files
properties:
type:
type: string
enum:
- SHAREHOLDER_REGISTRY
example: SHAREHOLDER_REGISTRY
files:
type: array
items:
type: object
required:
- uri
properties:
uri:
type: string
example: /AbAcQ4hn_0652746727639.pdf
company_details:
type: array
items:
type: object
required:
- type
- files
properties:
type:
type: string
enum:
- CERT_OF_INCORPORATION
- MEMORANDUM_OF_ASSOCIATION
example: CERT_OF_INCORPORATION
files:
type: array
items:
type: object
required:
- uri
properties:
uri:
type: string
example: /AbAcQ4hn_0652746727640.pdf
legal_presence:
type: array
items:
type: object
required:
- type
- files
properties:
type:
type: string
enum:
- PROOF_OF_ADDRESS
example: PROOF_OF_ADDRESS
files:
type: array
items:
type: object
required:
- uri
properties:
uri:
type: string
example: /AbAcQ4hn_0652746727641.pdf
tos_policies_value:
type: string
example: e9414388-fbdf-4407-b5c2-bc39eae3645b
AttachDocumentsToBusinessCustomerV2Input:
type: object
required:
- tos_policies_value
properties:
formation_documents:
type: array
description: >-
Documents proving the legal existence of the business (e.g.,
Certificate of Incorporation, Articles of Incorporation, Trust
Agreement, Tax registration certificate).
items:
$ref: '#/components/schemas/V2FormationDocumentItem'
ownership_documents:
type: array
description: >-
Documents proving who controls and owns the business (e.g.,
Shareholder Register, Org Chart, Power of Attorney, Directors
Registry).
items:
$ref: '#/components/schemas/V2OwnershipDocumentItem'
supporting_documents:
type: array
description: >-
Additional compliance and operational documents (e.g., Proof of
Address, Proof of Source of Funds, AML Comfort Letter, Marketing
Materials).
items:
$ref: '#/components/schemas/V2SupportingDocumentItem'
tos_policies_value:
type: string
description: >-
Parsed from the tos_policies_value query parameter in the
tos_policies_url returned by POST /v2/customers/business. Signifies
the customer has accepted the Terms of Service.
example: f11e77c6-8dc0-4d4b-a3f2-ed84c8ccfc69
V2FormationDocumentItem:
type: object
required:
- files
properties:
type:
type: string
enum:
- REGISTRATION_DOCUMENT
- CONSTITUTIONAL_DOCUMENT
- FORMATION_DOCUMENT
- PROOF_OF_TAX_IDENTIFICATION
- EVIDENCE_OF_DIRECTORS_AND_CONTROLLERS
description: Formation document type.
example: REGISTRATION_DOCUMENT
description:
type: string
description: Optional human-readable description of this specific document.
example: Certificate of Incorporation
files:
type: array
description: >-
One or more file URIs obtained from [Upload
Document](https://developer.fin.com/api-reference/customers/upload-document)
endpoint.
minItems: 1
items:
type: object
required:
- uri
properties:
uri:
type: string
description: File URI returned by the upload endpoint.
example: /AbAcQ4hn_0652746727639.pdf
V2OwnershipDocumentItem:
type: object
required:
- files
properties:
type:
type: string
enum:
- OWNERSHIP_INFORMATION
- OWNERSHIP_CHART
- PROOF_OF_SIGNATORY_AUTHORITY
description: Ownership document type.
example: OWNERSHIP_INFORMATION
description:
type: string
description: Optional human-readable description of this specific document.
example: Ownership information document
files:
type: array
description: >-
One or more file URIs obtained from [Upload
Document](https://developer.fin.com/api-reference/customers/upload-document)
endpoint.
minItems: 1
items:
type: object
required:
- uri
properties:
uri:
type: string
description: File URI returned by the upload endpoint.
example: /AbAcQ4hn_0652746727639.pdf
V2SupportingDocumentItem:
type: object
required:
- files
properties:
type:
type: string
enum:
- SHAREHOLDER_REGISTER
- PROOF_OF_NATURE_OF_BUSINESS
- PROOF_OF_ENTITY_NAME_CHANGE
- CERT_OF_INCUMBENCY
- PROOF_OF_SOURCE_OF_FUNDS
- PROOF_OF_SOURCE_OF_WEALTH
- AML_COMFORT_LETTER
- MARKETING_MATERIALS
- TAX_EXEMPT_ENTITY_CONFIRMATION
- E_SIGNATURE_CERTIFICATE
- FLOW_OF_FUNDS
- PROOF_OF_NATURE_OF_BUSINESS_LICENSE
- PROOF_OF_NATURE_OF_BUSINESS_AML_POLICY
- EVIDENCE_OF_GOOD_STANDING
- PROOF_OF_ACCOUNT_PURPOSE
- PROOF_OF_ADDRESS
- OTHER
description: Supporting document type.
example: PROOF_OF_SOURCE_OF_FUNDS
description:
type: string
description: Optional human-readable description of this specific document.
example: Bank statements for the past 6 months
files:
type: array
description: >-
One or more file URIs obtained from [Upload
Document](https://developer.fin.com/api-reference/customers/upload-document)
endpoint.
minItems: 1
items:
type: object
required:
- uri
properties:
uri:
type: string
description: File URI returned by the upload endpoint.
example: /AbAcQ4hn_0652746727639.pdf
AttachDocumentsToAssociatedPartyV2Input:
type: object
required:
- associated_party_attachments
properties:
associated_party_attachments:
type: array
description: >-
Array of document attachments, one entry per associated party.
Multiple parties can be submitted in a single request.
minItems: 1
items:
$ref: '#/components/schemas/V2AssociatedPartyAttachment'
V2AssociatedPartyAttachment:
type: object
required:
- associated_party_id
properties:
associated_party_id:
type: string
format: uuid
description: >-
Unique identifier for the associated party, returned in GET
/v2/customers/:customer-id.
example: f6b13e01-044a-4f74-a70b-d5f66b6449af
identifying_documents:
type: array
description: >-
Government-issued identity documents for this party. Multiple
documents may be provided (e.g., passport + driver license).
NATIONAL_ID and DRIVERS_LICENSE require both FRONT and BACK sides.
items:
$ref: '#/components/schemas/V2IdentifyingDocumentAttachment'
address_documents:
type: array
description: Proof of address documents. Must be issued within the last 90 days.
items:
$ref: '#/components/schemas/V2AddressDocumentAttachment'
supporting_documents:
type: array
description: >-
Any additional supporting documents for this party. Optional. Pass
empty array if not applicable.
items:
$ref: '#/components/schemas/V2AssociatedPartySupportingDocumentAttachment'
V2IdentifyingDocumentAttachment:
type: object
required:
- type
- number
- country
- issue_date
- expiry_date
- files
properties:
type:
type: string
enum:
- PASSPORT
- NATIONAL_ID
- DRIVERS_LICENSE
- RESIDENCE_PERMIT
- PERMANENT_RESIDENCY_ID
description: >
Type of government-issued identity document. At least one
identifying
document is required. Double-sided documents must include both front
and back images.
**USA residents**: all ID types are supported:
- `PASSPORT`: Passport
- `NATIONAL_ID`: National ID card
- `DRIVERS_LICENSE`: Driver's license
- `PERMANENT_RESIDENCY_ID`: Permanent Residency / Green Card
**Non-USA residents**: only the following are accepted:
- `PASSPORT`: Passport
- `NATIONAL_ID`: National ID card
- `DRIVERS_LICENSE`: Driver's license
`PERMANENT_RESIDENCY_ID` is **not supported** for non-USA residents
and will be rejected.
example: PASSPORT
number:
type: string
description: Document number.
example: A12345678
country:
$ref: '#/components/schemas/CountryCode'
issue_date:
type: string
format: date
description: Document issue date in YYYY-MM-DD format.
example: '2020-01-15'
expiry_date:
type: string
format: date
description: Document expiry date in YYYY-MM-DD format. Must not be expired.
example: '2030-01-15'
files:
type: array
description: >-
One or more file URIs from [Upload
Document](https://developer.fin.com/api-reference/customers/upload-document)
endpoint. For NATIONAL_ID and DRIVERS_LICENSE, provide both FRONT
and BACK.
minItems: 1
items:
type: object
required:
- uri
properties:
side:
type: string
enum:
- FRONT
- BACK
description: >-
Required for NATIONAL_ID and DRIVERS_LICENSE. Optional for
PASSPORT and RESIDENCE_PERMIT.
example: FRONT
uri:
type: string
description: File URI returned by the upload endpoint.
example: /AbAcQ4hn_0652746727637.pdf
V2AssociatedPartySupportingDocumentAttachment:
type: object
required:
- type
- files
properties:
type:
type: string
enum:
- MILITARY_ID
- MATRICULATE_ID
- STATE_OR_PROVINCIAL_ID
- VISA
- OTHER
description: Type of additional supporting document for the associated party.
example: MILITARY_ID
files:
type: array
description: >-
One or more file URIs from [Upload
Document](https://developer.fin.com/api-reference/customers/upload-document)
endpoint.
minItems: 1
items:
type: object
required:
- uri
properties:
uri:
type: string
description: File URI returned by the upload endpoint.
example: /AbAcQ4hn_0652746727638.pdf
V2AddressDocumentAttachment:
type: object
required:
- type
- files
properties:
type:
type: string
enum:
- UTILITY_BILL
- GOVERNMENT_LETTER
- BANK_STATEMENT
- PROOF_OF_TAX_IDENTIFICATION
- COURT_DOCUMENT
- INSURANCE_STATEMENT
description: Type of address proof document. Must be within the last 90 days.
example: BANK_STATEMENT
files:
type: array
description: >-
One or more file URIs from [Upload
Document](https://developer.fin.com/api-reference/customers/upload-document)
endpoint.
minItems: 1
items:
type: object
required:
- uri
properties:
uri:
type: string
description: File URI returned by the upload endpoint.
example: /AbAcQ4hn_0652746727638.pdf
AttachDocumentsToIndividualCustomerV2Input:
type: object
required:
- identifying_documents
- address_documents
- tos_policies_value
properties:
identifying_documents:
type: array
minItems: 1
description: >-
Government-issued identity documents. Include at most one non-SELFIE
primary document (PASSPORT, NATIONAL_ID, DRIVERS_LICENSE, or
RESIDENCE_PERMIT) plus an optional SELFIE entry. NATIONAL_ID,
DRIVERS_LICENSE, and RESIDENCE_PERMIT require both FRONT and BACK
files.
items:
$ref: '#/components/schemas/V2IndividualAttachIdentifyingDocument'
address_documents:
type: array
minItems: 1
maxItems: 1
description: Proof of address. Exactly one entry is required.
items:
$ref: '#/components/schemas/V2IndividualAddressDocument'
tos_policies_value:
type: string
description: >-
Parsed from the tos_policies_value query parameter in the
tos_policies_url returned by POST /v2/customers/individual.
Signifies the customer has accepted the Terms of Service.
example: e9414388-fbdf-4407-b5c2-bc39eae3645b
V2IndividualAttachIdentifyingDocument:
type: object
required:
- type
- files
allOf:
- if:
properties:
type:
const: DRIVERS_LICENSE
country:
const: USA
required:
- type
- country
then:
required:
- state
properties:
type:
type: string
enum:
- PASSPORT
- NATIONAL_ID
- DRIVERS_LICENSE
- RESIDENCE_PERMIT
- SELFIE
description: >-
Type of identity document. At most one non-SELFIE document may be
included per request. A SELFIE entry carries only `type` and
`files`; all other fields are ignored for SELFIE.
example: PASSPORT
number:
type: string
description: Document number. Required for all types except SELFIE.
example: A12345678
country:
$ref: '#/components/schemas/CountryCode'
state:
type: string
maxLength: 64
description: >-
Document issuing state. Max 64 characters. Required when the type is
DRIVERS_LICENSE and country is USA.
example: US-CA
issue_date:
type: string
format: date
description: >-
Optional issue date in YYYY-MM-DD format. When provided together
with expiry_date, expiry_date must be strictly later.
example: '2020-01-15'
expiry_date:
type: string
format: date
description: >-
Expiry date in YYYY-MM-DD format. Required for all types except
SELFIE. Must be in the future.
example: '2030-01-15'
files:
type: array
minItems: 1
description: >-
File URIs from the [Upload
Document](https://developer.fin.com/api-reference/customers/upload-document)
endpoint. PASSPORT and SELFIE take a single file; NATIONAL_ID,
DRIVERS_LICENSE, and RESIDENCE_PERMIT require one FRONT and one BACK
file. File URIs must be unique across the entire request (SELFIE
files excluded).
items:
type: object
required:
- uri
properties:
side:
type: string
enum:
- FRONT
- BACK
description: >-
Required for NATIONAL_ID, DRIVERS_LICENSE, and
RESIDENCE_PERMIT. Optional for PASSPORT and SELFIE.
example: FRONT
uri:
type: string
description: File URI returned by the upload endpoint.
example: /AbAcQ4hn_0652746727637.pdf
V2IndividualAddressDocument:
type: object
required:
- type
- country
- files
properties:
type:
type: string
enum:
- UTILITY_BILL
- GOVERNMENT_LETTER
- BANK_STATEMENT
description: Type of address proof document.
example: BANK_STATEMENT
country:
allOf:
- $ref: '#/components/schemas/CountryCode'
description: >-
Country the address document was issued in. Must match the
customer's country_of_residence.
issue_date:
type: string
format: date
description: Optional issue date in YYYY-MM-DD format.
example: '2024-06-15'
files:
type: array
minItems: 1
maxItems: 1
description: >-
Exactly one file URI from the [Upload
Document](https://developer.fin.com/api-reference/customers/upload-document)
endpoint.
items:
type: object
required:
- uri
properties:
side:
type: string
enum:
- FRONT
- BACK
description: Optional.
example: FRONT
uri:
type: string
description: File URI returned by the upload endpoint.
example: /XyZ123mn_0652746727639.pdf
WebhookEventEnvelope:
type: object
required:
- id
- event_reference_id
- type
- created_at
- sandbox_mode
properties:
id:
type: string
format: uuid
example: 60bef15c-4e30-4eb4-bc4d-aa697a7e0857
event_reference_id:
type: string
format: uuid
example: c3309534-1517-4d15-b244-be8f943c3823
type:
type: string
enum:
- customer.created
- customer.status
- customer.rfi
- transaction.status
- virtual_account.created
- virtual_account.created.v2
- virtual_account.status
- virtual_account.status.v2
- beneficiary.created
- beneficiary.status
- beneficiary.liquidation.deposit
- batch.transaction.item.status
example: customer.created
created_at:
type: string
format: date-time
example: '2025-11-30T07:40:06.853938Z'
sandbox_mode:
type: boolean
example: true
IndividualCustomerData:
type: object
properties:
customer_id:
type: string
format: uuid
example: c3309534-1517-4d15-b244-be8f943c3823
type:
type: string
enum:
- INDIVIDUAL
customer_status:
type: string
description: >-
V1 statuses: INCOMPLETE, QUEUED, REVIEWING, APPROVED, ON_HOLD,
REINITIATE, REJECTED. V2 statuses: INCOMPLETE, PROCESSING,
REVIEWING, APPROVED, ACTION_REQUIRED, REJECTED. QUEUED (V1) →
PROCESSING (V2). ON_HOLD (V1) → IN_COMPLIANCE (V2). REINITIATE (V1)
→ ACTION_REQUIRED (V2).
enum:
- INCOMPLETE
- QUEUED
- PROCESSING
- REVIEWING
- APPROVED
- ON_HOLD
- IN_COMPLIANCE
- REINITIATE
- ACTION_REQUIRED
- REJECTED
example: INCOMPLETE
email:
type: string
format: email
example: john.doe@email.com
first_name:
type: string
example: John
last_name:
type: string
example: Doe
phone:
type: string
example: '+12597751234'
country_of_residence:
type: string
example: USA
verification_type:
type: string
enum:
- RELIANCE
- STANDARD
example: STANDARD
tos_policies_url:
type: string
example: 25764ef6-0f4f-4846-b7c6-9df0598358e9
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
BusinessCustomerData:
type: object
properties:
customer_id:
type: string
format: uuid
example: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
type:
type: string
enum:
- BUSINESS
customer_status:
type: string
description: >-
V1 statuses: INCOMPLETE, QUEUED, REVIEWING, APPROVED,
ASSOCIATED_PARTIES_REMAINING, ON_HOLD, REINITIATE, REJECTED. V2
statuses: INCOMPLETE, PROCESSING, REVIEWING, APPROVED,
ASSOCIATED_PARTIES_REMAINING, IN_COMPLIANCE, ACTION_REQUIRED,
REJECTED. QUEUED (V1) → PROCESSING (V2). ON_HOLD (V1) →
IN_COMPLIANCE (V2). REINITIATE (V1) → ACTION_REQUIRED (V2).
enum:
- INCOMPLETE
- QUEUED
- PROCESSING
- REVIEWING
- APPROVED
- ASSOCIATED_PARTIES_REMAINING
- ON_HOLD
- IN_COMPLIANCE
- REINITIATE
- ACTION_REQUIRED
- REJECTED
example: INCOMPLETE
business_name:
type: string
example: Fin.com
email:
type: string
format: email
example: m@tech.com
phone:
type: string
example: '+8801529876543'
country_of_incorporation:
type: string
example: BGD
verification_type:
type: string
enum:
- RELIANCE
- STANDARD
example: RELIANCE
tos_policies_url:
type: string
associated_parties:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
email:
type: string
format: email
type:
type: string
enum:
- INDIVIDUAL
ownership_percent:
type: number
example: 52
verification:
type: object
properties:
status:
type: string
enum:
- INITIATED
- REVIEWING
- APPROVED
- REJECTED
updated_at:
type: string
format: date-time
reason:
type: object
properties:
for_customer:
type: string
nullable: true
for_developer:
type: string
nullable: true
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
VirtualAccountWebhookData:
type: object
properties:
id:
type: string
format: uuid
example: 900f750d-6868-457e-a777-1a35566a6b5f
customer_id:
type: string
format: uuid
example: a41a6d76-4545-47ab-93d1-696a3221d39c
status:
type: string
enum:
- ACTIVE
- INACTIVE
- SUSPENDED
example: ACTIVE
deposit_instructions:
type: object
properties:
bank_account_number:
type: string
example: '900937198167'
bank_routing_number:
type: string
example: '101019644'
bank_name:
type: string
example: Bank of Nowhere
bank_address:
type: string
example: 1800 North Pole St., Orlando, FL 32801
bank_beneficiary_name:
type: string
example: Fin.com
bank_beneficiary_address:
type: string
example: 250 Innovation Way, Houston, TX 77002, US
currency:
type: string
example: USD
payment_rails:
type: array
items:
type: string
enum:
- ACH
- FEDWIRE
- WIRE
example:
- ACH
- FEDWIRE
destination:
type: object
properties:
address:
type: string
example: '0x1d1f9801d6d98e49438cda3a3b8e0c9f5e6f8c44'
currency:
type: string
example: USDC
destination_chain:
type: string
example: POLYGON
developer_fee_percent:
type: number
example: 0.5
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
VirtualAccountV2StatusWebhookData:
type: object
properties:
id:
type: string
format: uuid
example: ed96d65a-5fb1-49f2-8715-0c6aa32220ca
rfi:
type: object
nullable: true
example: null
status:
type: string
enum:
- PROCESSING
- IN_COMPLIANCE
- REQUEST_FOR_INFORMATION
- ACTIVE
- INACTIVE
- DECLINED
example: ACTIVE
created_at:
type: string
format: date-time
example: '2026-03-17T14:27:49.073891Z'
updated_at:
type: string
format: date-time
example: '2026-03-17T14:42:55.788231316Z'
customer_id:
type: string
format: uuid
example: c3088a8d-50de-48cf-a137-8d46815394f8
destination:
type: object
properties:
address:
type: string
example: '0x7f1568190e318da16a9ef5a46cba19d5b97d9b29'
currency:
type: string
example: USDC
destination_chain:
type: string
example: POLYGON
developer_fee_fixed:
type: number
example: 0.22
deposit_instructions:
type: object
nullable: true
properties:
currency:
type: string
example: USD
bank_code:
type: object
properties:
code:
type: string
example: SSBAUS32
type:
type: string
example: SWIFT
bank_name:
type: string
example: SSB Bank
account_type:
type: string
example: BankSwift
bank_address:
type: string
nullable: true
example: null
bank_country:
type: string
example: USA
payment_rails:
type: array
items:
type: string
example:
- ACH
bank_account_number:
type: string
example: '235464829825'
bank_routing_number:
type: string
example: ''
developer_fee_percent:
type: number
example: 0
BeneficiaryWebhookData:
type: object
properties:
beneficiary_id:
type: string
format: uuid
example: e8fccaeb-fb9d-4fae-846e-ea7c97c70b31
customer_id:
type: string
format: uuid
example: ecbd3a73-3bcb-40ae-be06-0e71f9b27c2f
type:
type: string
enum:
- INDIVIDUAL
- BUSINESS
example: INDIVIDUAL
active:
type: boolean
example: true
status:
type: string
enum:
- PROCESSING
- ACTIVE
- INACTIVE
- REJECTED
example: ACTIVE
CustomerWallet:
type: object
properties:
id:
type: string
format: uuid
description: Unique wallet identifier.
example: 27dbc0f2-e5ae-444b-b4ab-0764252aedf6
status:
type: string
enum:
- PENDING
- ACTIVE
- INACTIVE
description: >-
Wallet provisioning status. Wallets start PENDING and move to ACTIVE
(or INACTIVE) asynchronously once the wallet address has been
issued; creation is not synchronous.
example: ACTIVE
currency:
type: string
description: Token held in this wallet.
example: USDC
rail:
type: string
description: Blockchain network for this wallet.
example: ETHEREUM
address:
type: string
nullable: true
description: On-chain wallet address. Null until the wallet is provisioned.
example: '0xc42a5f7083c7e8f1d9820c7660867277289cd998'
balance:
type: number
description: Current wallet balance.
example: 10.000001
Pagination:
type: object
properties:
current_page:
type: integer
example: 1
per_page:
type: integer
example: 10
total_page:
type: integer
example: 1
total:
type: integer
example: 10
VirtualAccount:
type: object
required:
- id
- status
- developer_fee_percent
- customer_id
- created_at
- updated_at
- deposit_instructions
- destination
properties:
id:
type: string
format: uuid
example: 92eceee4-ec6a-4fe3-a224-f5914cabe001
status:
type: string
example: ACTIVE
developer_fee_percent:
type: number
example: 1.65
customer_id:
type: string
format: uuid
example: 196ce546-900d-4294-90ca-5546a5923f35
created_at:
type: string
format: date-time
example: '2025-12-22T06:09:23.456895Z'
updated_at:
type: string
format: date-time
example: '2025-12-22T06:09:23.456895Z'
deposit_instructions:
type: object
properties:
currency:
type: string
example: USD
bank_name:
type: string
example: Bank of Nowhere
bank_address:
type: string
example: 1800 North Pole St., Orlando, FL 32801
bank_routing_number:
type: string
example: '101019644'
bank_account_number:
type: string
example: '900336047672'
bank_beneficiary_name:
type: string
example: Portgas D Ace
bank_beneficiary_address:
type: string
example: 321 British Columbia City, British Columbia, BC V0C 1Y0, CA
payment_rails:
type: array
items:
type: string
example:
- ACH
- FEDWIRE
destination:
type: object
properties:
currency:
type: string
enum:
- USDC
default: USDC
destination_chain:
type: string
enum:
- POLYGON
- ETHEREUM
address:
type: string
example: '0x7f1568190e318da16a9ef5a46cba19d5b97d9b29'
responses:
AuthenticationError:
description: Authentication failed due to invalid credentials
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Authentication failed
ValidationError:
description: Failed due to a formatting error.
content:
application/json:
schema:
type: object
required:
- message
properties:
message:
type: string
errors:
type: array
items:
type: object
additionalProperties:
type: string
NotFoundError:
description: Resource not found
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Resource not found
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: >-
Bearer token authentication. Obtain token from [Issue a
Token](https://developer.fin.com/api-reference/authentication/issue-a-token)
endpoint
webhooks:
transit.payment.status:
post:
summary: Transit Payment Status
description: >-
Triggered when a transit payment's status changes through the payment
and settlement flow.
x-mint:
metadata:
title: transit.payment.status
content: >
## Payment Status Values
- **PAY_INIT**: Payment initialized
- **PAY_PROCESS**: Payment is being processed
- **PAY_SUCCESS**: Payment completed successfully
- **PAY_FAILED**: Payment failed
- **PAY_TIMEOUT**: Payment timed out
- **PAY_CANCEL**: Payment was cancelled
- **SETTLEMENT_INIT**: Settlement process started
- **SETTLEMENT_SUCCESS**: Settlement completed successfully
- **SETTLEMENT_HOLD**: On hold due to insufficient rebalancing funds.
Fin will auto-proceed once funds are available.
- **SETTLEMENT_FAILED**: Settlement failed after 3 retry attempts
The `settlement_info` field will be `null` for PAY_* statuses and populated for SETTLEMENT_* statuses.
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- event
- data
properties:
event:
type: object
required:
- id
- type
- event_reference_id
- created_at
properties:
id:
type: string
format: uuid
example: 550e8400-e29b-41d4-a716-446655440000
type:
type: string
enum:
- transit.payment.status
example: transit.payment.status
event_reference_id:
type: string
format: uuid
description: Reference to the payment_id
example: FIN_PROVIDED_UUID
created_at:
type: string
format: date-time
example: '2025-10-10T15:40:56Z'
data:
type: object
required:
- payment_id
- integration_type
- status
- create_time
- payment_info
properties:
payment_id:
type: string
format: uuid
example: FIN_PROVIDED_UUID
integration_type:
type: string
example: BYBIT
quote_id:
type: string
format: uuid
example: FIN_PROVIDED_UUID
status:
type: string
enum:
- PAY_INIT
- PAY_PROCESS
- PAY_SUCCESS
- PAY_FAILED
- PAY_TIMEOUT
- PAY_CANCEL
- SETTLEMENT_INIT
- SETTLEMENT_HOLD
- SETTLEMENT_SUCCESS
- SETTLEMENT_FAILED
example: PAY_INIT
create_time:
type: integer
example: 1740748353
payment_info:
type: object
properties:
pay_id:
type: string
example: 01JN6AZVEMAC8H9SED6JES3QH8
merchant_trade_no:
type: string
example: 841e4ba2-...-a2a45de7bd00
amount:
type: string
example: '100'
status:
type: string
enum:
- PAY_INIT
- PAY_PROCESS
- PAY_SUCCESS
- PAY_FAILED
- PAY_TIMEOUT
- PAY_CANCEL
example: PAY_INIT
currency:
type: string
example: USDT
currency_type:
type: string
example: crypto
expire_time:
type: integer
example: 1740751953
payment_time:
type: integer
description: 0 until PAY_SUCCESS
example: 0
settlement_info:
type: object
nullable: true
description: >-
null for PAY_* statuses, populated for SETTLEMENT_*
statuses
properties:
settlement_via:
type: string
enum:
- ONE_TO_ONE
- MARKET_ORDER
- FEE_RETENTION
example: MARKET_ORDER
wallet_address:
type: string
example: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency:
type: string
enum:
- USDC
- USDT
- BTC
- ETH
example: USDC
rail:
type: string
enum:
- SOLANA
- BITCOIN
- ETHEREUM
- BASE
example: SOLANA
amount:
type: string
example: '100'
trx_hash:
type: string
nullable: true
settle_time:
type: integer
example: 0
status:
type: string
enum:
- SETTLEMENT_INIT
- SETTLEMENT_HOLD
- SETTLEMENT_SUCCESS
- SETTLEMENT_FAILED
example: SETTLEMENT_INIT
retry_attempts:
type: integer
minimum: 0
maximum: 3
example: 0
examples:
paymentInitiated:
summary: Payment Initiated
value:
event:
id: 550e8400-e29b-41d4-a716-446655440000
type: transit.payment.status
event_reference_id: FIN_PROVIDED_UUID
created_at: '2025-10-10T15:40:56Z'
data:
payment_id: FIN_PROVIDED_UUID
integration_type: BYBIT
status: PAY_INIT
create_time: 1740748353
payment_info:
pay_id: 01JN6AZVEMAC8H9SED6JES3QH8
merchant_trade_no: 841e4ba2-...-a2a45de7bd00
amount: '100'
status: PAY_INIT
currency: USDT
currency_type: crypto
expire_time: 1740751953
payment_time: 0
settlement_info: null
settlementSuccess:
summary: Settlement Success
value:
event:
id: 550e8400-e29b-41d4-a716-446655440003
type: transit.payment.status
event_reference_id: FIN_PROVIDED_UUID
created_at: '2025-10-10T15:47:00Z'
data:
payment_id: FIN_PROVIDED_UUID
integration_type: BYBIT
status: SETTLEMENT_SUCCESS
create_time: 1740748353
payment_info:
pay_id: 01JN6AZVEMAC8H9SED6JES3QH8
merchant_trade_no: 841e4ba2-...-a2a45de7bd00
amount: '100'
status: PAY_SUCCESS
currency: USDT
currency_type: crypto
expire_time: 1740751953
payment_time: 1740748353
settlement_info:
settlement_via: MARKET_ORDER
wallet_address: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU
currency: USDC
rail: SOLANA
amount: '100'
trx_hash: 0x580...
settle_time: 1740748353
status: SETTLEMENT_SUCCESS
retry_attempts: 0
responses:
'200':
description: Webhook received successfully
customer.created:
post:
summary: Customer Created
description: Triggered when a customer is successfully created.
x-mint:
metadata:
title: customer.created
content: >
Triggered when a customer is successfully created. Supports both
`INDIVIDUAL` and `BUSINESS` customer types.
All webhook requests include HMAC signatures for verification.
Learn how to [verify webhook signatures](/guides/webhooks/verifying-webhooks).
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
data:
oneOf:
- $ref: '#/components/schemas/IndividualCustomerData'
- $ref: '#/components/schemas/BusinessCustomerData'
examples:
individualCreated:
summary: Individual Customer Created
value:
event:
id: 60bef15c-4e30-4eb4-bc4d-aa697a7e0857
event_reference_id: c3309534-1517-4d15-b244-be8f943c3823
type: customer.created
created_at: '2025-11-30T07:40:06.853938Z'
sandbox_mode: true
data:
country_of_residence: USA
created_at: '2025-11-30T07:40:06Z'
customer_id: c3309534-1517-4d15-b244-be8f943c3823
customer_status: INCOMPLETE
email: john.doe@email.com
first_name: John
last_name: Doe
phone: '+12597751234'
tos_policies_url: 25764ef6-0f4f-4846-b7c6-9df0598358e9
type: INDIVIDUAL
verification_type: RELIANCE
businessCreated:
summary: Business Customer Created
value:
event:
id: d2a592e4-5703-46aa-b1ac-fa1fa6359abf
event_reference_id: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
type: customer.created
created_at: '2026-04-13T11:38:57.819938Z'
sandbox_mode: false
data:
associated_parties:
- email: fatima.rahman22@acmecorp.com.bd
id: f6b13e01-044a-4f74-a70b-d5f66b6449af
ownership_percent: 60
type: INDIVIDUAL
verification:
reason:
for_customer: null
for_developer: null
status: INITIATED
updated_at: '2026-04-13T11:38:57.824452053Z'
- email: karim.islam22@acmecorp.com.bd
id: f71dc19f-b9a0-49fb-bd2d-5add3c01626e
ownership_percent: 40
type: INDIVIDUAL
verification:
reason:
for_customer: null
for_developer: null
status: INITIATED
updated_at: '2026-04-13T11:38:57.824452053Z'
business_name: Fin.com
country_of_incorporation: BGD
created_at: '2026-04-13T11:38:57Z'
customer_id: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
customer_status: INCOMPLETE
email: m@tech.com
phone: '+8801529876543'
type: BUSINESS
verification_type: STANDARD
responses:
'200':
description: Webhook received successfully
customer.status:
post:
summary: Customer Status
description: Triggered when a customer's status changes during verification.
x-mint:
metadata:
title: customer.status
content: >
### Customer Status Values
The status values in the payload depend on which API version was used
to create the customer. V1 and V2 use different status names for the
same underlying states. V1 has not been deprecated and both sets of
statuses are active.
| Status | V1 Name | V2 Name | Description |
|--------|---------|---------|-------------|
| Awaiting processing | `QUEUED` | `PROCESSING` | Verification request
sent to the work processor |
| Under review | `REVIEWING` | `REVIEWING` | Customer verification is
currently under review |
| Verified | `APPROVED` | `APPROVED` | Successfully verified and
approved |
| Parties pending | `ASSOCIATED_PARTIES_REMAINING` |
`ASSOCIATED_PARTIES_REMAINING` | Additional associated parties need
verification |
| Paused | `ON_HOLD` | `IN_COMPLIANCE` | Verification paused for
compliance review |
| Action needed | `REINITIATE` | `ACTION_REQUIRED` | New document
upload required |
| Rejected | `REJECTED` | `REJECTED` | Customer verification rejected
|
`ACTION_REQUIRED` (V2) is also set by the `customer.rfi` webhook, which includes a structured payload describing exactly which documents or fields are missing or invalid.
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
data:
oneOf:
- $ref: '#/components/schemas/IndividualCustomerData'
- $ref: '#/components/schemas/BusinessCustomerData'
examples:
v1IndividualQueued:
summary: 'V1: Individual Customer Queued'
value:
event:
id: 29ceb6c4-4849-4312-9b2b-5e8360647da0
event_reference_id: f9e1b162-8a05-4611-9e13-f38e0eb24a29
type: customer.status
created_at: '2026-01-18T09:08:18.66348Z'
sandbox_mode: true
data:
customer_id: f9e1b162-8a05-4611-9e13-f38e0eb24a29
customer_status: QUEUED
email: john.doe@acmecorp.com
first_name: John
last_name: Doe
type: INDIVIDUAL
verification_type: STANDARD
v1BusinessOnHold:
summary: 'V1: Business Customer On Hold'
value:
event:
id: 0deacdde-cd58-42ea-8a1c-dde8668a92e4
event_reference_id: 98665e7d-7736-4762-a57a-cc1e6706302f
type: customer.status
created_at: '2026-01-18T10:32:59.434557Z'
sandbox_mode: true
data:
business_name: Acme Corp Ltd
country_of_incorporation: USA
customer_id: 98665e7d-7736-4762-a57a-cc1e6706302f
customer_status: ON_HOLD
email: contact@acmecorp.com
type: BUSINESS
verification_type: STANDARD
v1BusinessReinitiate:
summary: 'V1: Business Customer Reinitiate'
value:
event:
id: c8f2a5b1-3e4d-4a9c-b7e2-d1f3c8a9b0e5
event_reference_id: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
type: customer.status
created_at: '2026-01-20T14:15:30.123456Z'
sandbox_mode: true
data:
business_name: Acme Corp Ltd
country_of_incorporation: USA
customer_id: a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
customer_status: REINITIATE
email: contact@acmecorp.com
type: BUSINESS
verification_type: STANDARD
v2IndividualProcessing:
summary: 'V2: Individual Customer Processing'
value:
event:
id: 3a4b5c6d-7e8f-9012-abcd-ef1234567890
event_reference_id: f9e1b162-8a05-4611-9e13-f38e0eb24a29
type: customer.status
created_at: '2026-04-04T09:08:18.66348Z'
sandbox_mode: false
data:
customer_id: f9e1b162-8a05-4611-9e13-f38e0eb24a29
customer_status: PROCESSING
email: john.doe@acmecorp.com
first_name: John
last_name: Doe
type: INDIVIDUAL
verification_type: STANDARD
v2BusinessInCompliance:
summary: 'V2: Business Customer In Compliance'
value:
event:
id: 0deacdde-cd58-42ea-8a1c-dde8668a92e4
event_reference_id: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
type: customer.status
created_at: '2026-04-13T11:40:51.434557Z'
sandbox_mode: false
data:
business_name: Fin.com
country_of_incorporation: BGD
customer_id: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
customer_status: IN_COMPLIANCE
email: m@tech.com
type: BUSINESS
verification_type: STANDARD
v2BusinessActionRequired:
summary: 'V2: Business Customer Action Required'
value:
event:
id: f1e2d3c4-b5a6-7890-cdef-123456789012
event_reference_id: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
type: customer.status
created_at: '2026-04-13T11:40:51.000000Z'
sandbox_mode: false
data:
business_name: Fin.com
country_of_incorporation: BGD
customer_id: ed54db74-7dbe-47d2-8ea0-c2bf2a9dda06
customer_status: ACTION_REQUIRED
email: m@tech.com
type: BUSINESS
verification_type: STANDARD
responses:
'200':
description: Webhook received successfully
customer.rfi:
post:
summary: Customer RFI
description: >-
Triggered when the compliance team requests additional information or
documents from a customer. Sets the customer status to ACTION_REQUIRED.
The payload includes a structured list of what is missing, invalid, or
expired, scoped to either the customer or a specific associated party.
x-mint:
metadata:
title: customer.rfi
content: >
### When This Fires
This webhook fires when compliance flags one or more documents or
fields
as missing, expired, or invalid. The customer status will be set to
`ACTION_REQUIRED`.
An RFI can also be triggered after a customer is already `APPROVED`. In that case the customer status remains unchanged. Only the `rrequest_for_information` object in the payload will contain data and this webhook will be received.
### RFI Available Scope
- **CUSTOMER**: The issue is with the customer's own documents or data
- **ASSOCIATED PARTY**: The issue is with a specific associated party
(identified by `associated_party_id`)
### Field Status Values
- **MISSING**: Document or field was not provided
- **EXPIRED**: Document has passed its expiry date
- **INVALID**: Document or field value does not meet requirements (see
`reason`)
### Section Values by Customer Type
| Customer Type | Sections |
|---------------|----------|
| Individual | `proof_of_identity`, `proof_of_address`,
`tos_policies_value` |
| Business V1 | `company_details`, `ownership_structure`,
`legal_presence` |
| Business V2 | `formation_documents`, `ownership_documents`,
`supporting_documents` |
| Associated Party (V1) | `proof_of_identity`, `proof_of_address` |
| Associated Party (V2) | `identifying_documents`, `tax_info`,
`address_documents` |
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
data:
type: object
required:
- customer_id
- request_for_information
properties:
customer_id:
type: string
format: uuid
description: The customer for whom information is requested.
example: cust-uuid-1234
request_for_information:
type: array
description: List of document or field issues that must be resolved.
items:
type: object
required:
- section
- categories
properties:
section:
type: string
description: >-
The document section with the issue. Individual:
proof_of_identity, proof_of_address,
tos_policies_value. Business V1: company_details,
ownership_structure, legal_presence. Business V2:
formation_documents, ownership_documents,
supporting_documents. Associated Party V1:
proof_of_identity, proof_of_address. Associated
Party V2: identifying_documents, tax_info,
address_documents.
example: proof_of_identity
categories:
type: array
items:
type: object
required:
- document_type
- fields
properties:
document_type:
type: string
description: The type of document with the issue.
example: GOVERNMENT_ID
fields:
type: array
items:
type: object
required:
- field_name
- data_type
- status
properties:
field_name:
type: string
description: The specific field with the issue.
example: files
data_type:
type: string
enum:
- URI
- DATE
- TEXT
- ENUM
description: The data type of the field.
example: URI
status:
type: string
enum:
- MISSING
- EXPIRED
- INVALID
description: The nature of the issue.
example: EXPIRED
side:
type: string
enum:
- FRONT
- BACK
nullable: true
description: >-
For file fields only. Indicates which
side of the document is affected. Null
for non-file fields.
example: FRONT
reason:
type: string
nullable: true
description: >-
Human-readable explanation. Null when
status is MISSING.
example: Document has expired
examples:
individual:
summary: Individual Customer RFI
value:
event:
id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
event_reference_id: cust-uuid-1234
type: customer.rfi
created_at: '2026-04-04T10:00:00.000000Z'
sandbox_mode: false
data:
customer_id: cust-uuid-1234
request_for_information:
- section: proof_of_identity
categories:
- document_type: GOVERNMENT_ID
fields:
- field_name: files
data_type: URI
status: EXPIRED
reason: Document has expired
side: FRONT
- field_name: files
data_type: URI
status: INVALID
reason: Back side damaged
side: BACK
- field_name: issue_date
data_type: DATE
status: MISSING
reason: null
- field_name: expiry_date
data_type: DATE
status: MISSING
reason: null
- field_name: text
data_type: TEXT
status: INVALID
reason: Name mismatch
- section: proof_of_address
categories:
- document_type: PROOF_OF_ADDRESS
fields:
- field_name: files
data_type: URI
status: MISSING
reason: null
- section: tos_policies_value
categories:
- document_type: TOS
fields:
- field_name: tos_policies_value
data_type: TEXT
status: MISSING
reason: null
businessV1:
summary: Business Customer V1 RFI
value:
event:
id: b2c3d4e5-f6a7-8901-bcde-f12345678901
event_reference_id: biz-uuid-5678
type: customer.rfi
created_at: '2026-04-04T10:00:00.000000Z'
sandbox_mode: false
data:
customer_id: biz-uuid-5678
request_for_information:
- section: company_details
categories:
- document_type: CERT_OF_INCORPORATION
fields:
- field_name: files
data_type: URI
status: INVALID
reason: Document is illegible
side: FRONT
- field_name: text
data_type: TEXT
status: INVALID
reason: Business name mismatch
- section: ownership_structure
categories:
- document_type: SHAREHOLDER_REGISTRY
fields:
- field_name: files
data_type: URI
status: MISSING
reason: null
- section: legal_presence
categories:
- document_type: PROOF_OF_ADDRESS
fields:
- field_name: files
data_type: URI
status: MISSING
reason: null
- section: proof_of_identity
categories:
- document_type: GOVERNMENT_ID
fields:
- field_name: files
data_type: URI
status: EXPIRED
reason: Document expired
side: FRONT
- field_name: files
data_type: URI
status: INVALID
reason: Back side blurry
side: BACK
- field_name: issue_date
data_type: DATE
status: MISSING
reason: null
- field_name: expiry_date
data_type: DATE
status: MISSING
reason: null
- field_name: text
data_type: TEXT
status: INVALID
reason: Name mismatch
- section: proof_of_address
categories:
- document_type: PROOF_OF_ADDRESS
fields:
- field_name: files
data_type: URI
status: MISSING
reason: null
businessV2:
summary: Business Customer V2 RFI
value:
event:
id: c3d4e5f6-a7b8-9012-cdef-123456789012
event_reference_id: biz-uuid-9999
type: customer.rfi
created_at: '2026-04-04T10:00:00.000000Z'
sandbox_mode: false
data:
customer_id: biz-uuid-9999
request_for_information:
- section: formation_documents
categories:
- document_type: CERT_OF_INCORPORATION
fields:
- field_name: files
data_type: URI
status: INVALID
reason: Document illegible
side: FRONT
- field_name: text
data_type: TEXT
status: INVALID
reason: Registration number mismatch
- section: ownership_documents
categories:
- document_type: SHAREHOLDER_REGISTRY
fields:
- field_name: files
data_type: URI
status: MISSING
reason: null
- section: supporting_documents
categories:
- document_type: PROOF_OF_ADDRESS
fields:
- field_name: files
data_type: URI
status: MISSING
reason: null
- section: identifying_documents
categories:
- document_type: GOVERNMENT_ID
fields:
- field_name: files
data_type: URI
status: EXPIRED
reason: ID expired
side: FRONT
- field_name: files
data_type: URI
status: INVALID
reason: Back side damaged
side: BACK
- field_name: issue_date
data_type: DATE
status: MISSING
reason: null
- field_name: expiry_date
data_type: DATE
status: MISSING
reason: null
- field_name: text
data_type: TEXT
status: INVALID
reason: Name mismatch
- section: tax_info
categories:
- document_type: GOVERNMENT_ID
fields:
- field_name: files
data_type: URI
status: MISSING
reason: null
- field_name: text
data_type: TEXT
status: INVALID
reason: Tax ID mismatch
- section: address_documents
categories:
- document_type: PROOF_OF_ADDRESS
fields:
- field_name: files
data_type: URI
status: MISSING
reason: null
responses:
'200':
description: Webhook received successfully
transaction.status:
post:
summary: Transaction Status
description: Triggered when a transaction's status changes.
x-mint:
metadata:
title: transaction.status
content: >
Transaction types: `ONRAMP`, `OFFRAMP`, `CRYPTO_DEPOSIT`,
`CRYPTO_WITHDRAWAL`
Common status values: `FUNDS_RECEIVED`, `PROCESSING`, `COMPLETED`,
`FAILED`, `REFUNDED`
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
data:
type: object
properties:
id:
type: string
format: uuid
example: ca9a04d8-4e68-4557-b9c6-3881e9d6b26d
status:
type: string
enum:
- FUNDS_RECEIVED
- PROCESSING
- COMPLETED
- FAILED
- CANCELLED
example: FUNDS_RECEIVED
beneficiary_id:
type: string
format: uuid
from_amount:
type: number
example: 6
from_currency:
type: string
example: USDC
payout_amount:
type: number
example: 5.55595028
payout_currency:
type: string
example: CAD
processing_amount:
type: number
example: 4.2164
fx_rate:
type: number
example: 1.3177
developer_fee:
type: number
example: 1.7836
developer_fee_fixed:
type: number
example: 1.75
developer_fee_percentage:
type: number
example: 0.56
hash:
type: string
example: >-
0x3a282c0d2364632bdf9224eadf06b463190795bce24e46d3235e44d22f953461
transaction_ref_id:
type: string
transaction_type:
type: string
description: >-
Possible values: `ONRAMP`, `OFFRAMP`, `CRYPTO_DEPOSIT`,
`CRYPTO_WITHDRAWAL`
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
examples:
fundsReceived:
summary: Funds Received
value:
event:
id: 2632ebb1-55ab-470a-9b24-accdb50aeb75
event_reference_id: ca9a04d8-4e68-4557-b9c6-3881e9d6b26d
type: transaction.status
created_at: '2025-12-01T09:14:34.651913Z'
sandbox_mode: true
data:
beneficiary_id: 47fcb2ca-9ed2-4188-a154-c83a04d9d34d
from_amount: 6
from_currency: USDC
fx_rate: 1.3177
id: ca9a04d8-4e68-4557-b9c6-3881e9d6b26d
payout_amount: 5.55595028
payout_currency: CAD
status: FUNDS_RECEIVED
transaction_type: ONRAMP
responses:
'200':
description: Webhook received successfully
virtual_account.created:
post:
summary: Virtual Account Created V1
description: Triggered when a new virtual account is created for a customer.
x-mint:
metadata:
title: virtual_account.created V1
content: |
Register this webhook if you are using the **Create Virtual Account V1** endpoint.
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
data:
$ref: '#/components/schemas/VirtualAccountWebhookData'
examples:
created:
summary: Virtual Account Created
value:
event:
id: 3fb02b56-911e-42c0-843c-c08785bdde56
event_reference_id: 900f750d-6868-457e-a777-1a35566a6b5f
type: virtual_account.created
created_at: '2025-12-10T08:11:25.269644Z'
sandbox_mode: true
data:
id: 900f750d-6868-457e-a777-1a35566a6b5f
customer_id: a41a6d76-4545-47ab-93d1-696a3221d39c
status: ACTIVE
developer_fee_percent: 0.5
responses:
'200':
description: Webhook received successfully
virtual_account.created.v2:
post:
summary: Virtual Account Created V2
description: Triggered when a new V2 virtual account is created for a customer.
x-mint:
metadata:
title: virtual_account.created V2
content: >
The account starts in `PROCESSING` status. `deposit_instructions` will
be null until the account becomes active.
Register this webhook if you are using the **Create Virtual Account V2** endpoint.
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/VirtualAccountV2StatusWebhookData'
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
examples:
created:
summary: Virtual Account Created
value:
data:
id: 86b7730c-1a8b-43f9-83f6-60a60dfcb513
rfi: null
status: PROCESSING
created_at: '2026-04-03T16:46:22.089047Z'
updated_at: '2026-04-03T16:46:22.089047Z'
customer_id: b22667c0-3e75-467f-9dc6-9739c348bc1a
destination:
address: '0x6e41e83d406185b358bd72111ab1206cb82eb67f'
currency: USDC
destination_chain: POLYGON
developer_fee_fixed: 0.1
deposit_instructions: null
developer_fee_percent: 0.1
event:
id: 7b86dec8-34eb-4c48-9780-6a69037d4c05
type: virtual_account.created.v2
created_at: '2026-04-03T16:46:22.117583Z'
sandbox_mode: true
event_reference_id: 86b7730c-1a8b-43f9-83f6-60a60dfcb513
responses:
'200':
description: Webhook received successfully
virtual_account.status:
post:
summary: Virtual Account Status V1
description: Triggered when a virtual account's status changes.
x-mint:
metadata:
title: virtual_account.status V1
content: |
Common status values: `ACTIVE`, `INACTIVE`, `SUSPENDED`
Register this webhook if you are using the **Create Virtual Account V1** endpoint.
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
data:
$ref: '#/components/schemas/VirtualAccountWebhookData'
responses:
'200':
description: Webhook received successfully
virtual_account.status.v2:
post:
summary: Virtual Account Status V2
description: Triggered when a V2 virtual account’s status changes.
x-mint:
metadata:
title: virtual_account.status V2
content: >
Possible status values: `PROCESSING`, `IN_COMPLIANCE`,
`REQUEST_FOR_INFORMATION`, `ACTIVE`, `INACTIVE`, `DECLINED`
Register this webhook if you are using the **Create Virtual Account V2** endpoint.
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/VirtualAccountV2StatusWebhookData'
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
examples:
statusChanged:
summary: Virtual Account Status Changed
value:
data:
id: ed96d65a-5fb1-49f2-8715-0c6aa32220ca
rfi: null
status: ACTIVE
created_at: '2026-03-17T14:27:49.073891Z'
updated_at: '2026-03-17T14:42:55.788231316Z'
customer_id: c3088a8d-50de-48cf-a137-8d46815394f8
destination:
address: '0x7f1568190e318da16a9ef5a46cba19d5b97d9b29'
currency: USDC
destination_chain: POLYGON
developer_fee_fixed: 0.22
deposit_instructions:
currency: USD
bank_code:
code: SSBAUS32
type: SWIFT
bank_name: SSB Bank
account_type: BankSwift
bank_address: null
bank_country: USA
payment_rails:
- ACH
bank_account_number: '235464829825'
bank_routing_number: ''
developer_fee_percent: 0
event:
id: 8c236a87-4ab2-49af-b22f-02d1d8e12cfa
type: virtual_account.status.v2
created_at: '2026-03-17T14:42:55.813225Z'
sandbox_mode: true
event_reference_id: ed96d65a-5fb1-49f2-8715-0c6aa32220ca
responses:
'200':
description: Webhook received successfully
beneficiary.created:
post:
summary: Beneficiary Created
description: Triggered when a new beneficiary is created in the system.
x-mint:
metadata:
title: beneficiary.created
content: |
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
data:
$ref: '#/components/schemas/BeneficiaryWebhookData'
examples:
individualCreated:
summary: Individual Beneficiary Created
value:
event:
id: 85804b3a-bf18-4d87-94f3-f7c45e66868e
event_reference_id: 4d715f20-f704-45e0-af56-19ade318e852
type: beneficiary.created
created_at: '2025-12-10T10:36:18.279837Z'
sandbox_mode: true
data:
active: true
beneficiary_id: 4d715f20-f704-45e0-af56-19ade318e852
customer_id: efb54adf-b7f4-4716-80e3-806e11f20b7b
type: INDIVIDUAL
responses:
'200':
description: Webhook received successfully
beneficiary.status:
post:
summary: Beneficiary Status
description: Triggered when a beneficiary's status changes.
x-mint:
metadata:
title: beneficiary.status
content: |
### Beneficiary Status Values
- **PROCESSING**: Beneficiary creation is in progress
- **ACTIVE**: Beneficiary is verified and ready to receive payments
- **INACTIVE**: Beneficiary has been deactivated
- **REJECTED**: Beneficiary was rejected during verification
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
data:
$ref: '#/components/schemas/BeneficiaryWebhookData'
examples:
processing:
summary: Beneficiary Processing
value:
event:
id: 40061557-f125-4b39-97d6-c16a0f1230c1
event_reference_id: e8fccaeb-fb9d-4fae-846e-ea7c97c70b31
type: beneficiary.status
created_at: '2026-04-04T17:38:26.843132Z'
sandbox_mode: true
data:
type: INDIVIDUAL
active: false
status: PROCESSING
customer_id: ecbd3a73-3bcb-40ae-be06-0e71f9b27c2f
beneficiary_id: e8fccaeb-fb9d-4fae-846e-ea7c97c70b31
active:
summary: Beneficiary Active
value:
event:
id: 50072668-a236-5c40-08e7-d27b1g2341d2
event_reference_id: e8fccaeb-fb9d-4fae-846e-ea7c97c70b31
type: beneficiary.status
created_at: '2026-04-04T17:39:10.123456Z'
sandbox_mode: true
data:
type: INDIVIDUAL
active: true
status: ACTIVE
customer_id: ecbd3a73-3bcb-40ae-be06-0e71f9b27c2f
beneficiary_id: e8fccaeb-fb9d-4fae-846e-ea7c97c70b31
inactive:
summary: Beneficiary Inactive
value:
event:
id: 60083779-b347-6d51-19f8-e38c2h3452e3
event_reference_id: e8fccaeb-fb9d-4fae-846e-ea7c97c70b31
type: beneficiary.status
created_at: '2026-04-05T08:00:00.000000Z'
sandbox_mode: false
data:
type: INDIVIDUAL
active: false
status: INACTIVE
customer_id: ecbd3a73-3bcb-40ae-be06-0e71f9b27c2f
beneficiary_id: e8fccaeb-fb9d-4fae-846e-ea7c97c70b31
rejected:
summary: Beneficiary Rejected
value:
event:
id: 70094880-c458-7e62-20g9-f49d3i4563f4
event_reference_id: e8fccaeb-fb9d-4fae-846e-ea7c97c70b31
type: beneficiary.status
created_at: '2026-04-05T09:00:00.000000Z'
sandbox_mode: false
data:
type: INDIVIDUAL
active: false
status: REJECTED
customer_id: ecbd3a73-3bcb-40ae-be06-0e71f9b27c2f
beneficiary_id: e8fccaeb-fb9d-4fae-846e-ea7c97c70b31
responses:
'200':
description: Webhook received successfully
beneficiary.liquidation.deposit:
post:
summary: Beneficiary Liquidation Deposit
description: Triggered when any transfer hits a beneficiary's liquidation address.
x-mint:
metadata:
title: beneficiary.liquidation.deposit
content: |
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
data:
type: object
properties:
active:
type: boolean
example: true
amount:
type: number
example: 3
beneficiary_id:
type: string
format: uuid
example: 5b4ea7ee-9d40-44b3-b857-dd5a890b9313
customer_id:
type: string
format: uuid
example: bea5a6c1-0611-44c6-8c29-a6608e76916c
liquidation_address:
type: string
example: '0xade8141fd1aef58dc0a5365a32a6cfe95904c08f'
txn_hash:
type: string
example: >-
0x7808238a69057600f0c8e291ffbfde87a74fb81b32fc583231352147770e2751
type:
type: string
enum:
- INDIVIDUAL
- BUSINESS
example: INDIVIDUAL
responses:
'200':
description: Webhook received successfully
batch.transaction.item.status:
post:
summary: Batch Transaction Item Status
description: >-
Triggered when a batch transaction item's status changes after
committing a batch.
x-mint:
metadata:
title: batch.transaction.item.status
content: |
Currently fired only when a transaction item reaches `PENDING` status.
All webhook requests include HMAC signatures for verification.
tags:
- Webhooks
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
event:
$ref: '#/components/schemas/WebhookEventEnvelope'
data:
type: object
properties:
batch_id:
type: string
format: uuid
batch_item_id:
type: string
format: uuid
status:
type: string
enum:
- PENDING
transaction_id:
type: string
format: uuid
examples:
pending:
summary: Batch Transaction Item Pending
value:
event:
id: b576fcfd-981f-4abd-81d8-14b2a0a8cb39
event_reference_id: ea8184e5-4250-486e-8a45-7718896c82b0
type: batch.transaction.item.status
created_at: '2026-01-08T16:57:20.266158Z'
sandbox_mode: true
data:
batch_id: 8f23036c-3dc8-445a-aad9-61564e028e56
batch_item_id: 05ed90f4-da44-4a56-bbd9-c65a42f925e6
status: PENDING
transaction_id: ea8184e5-4250-486e-8a45-7718896c82b0
responses:
'200':
description: Webhook received successfully