Transfers

Transfers allow you to initiate and complete fund movements between internal or external accounts. These endpoints enable secure, auditable transfers that support multiple stages such as initiation and finalization.

Use the following endpoints to manage your transfer workflows:

Transfer API Endpoints

Initiate Transfers

Initiates a transfer using either an internal account or an external blockchain address.

Base URL

Initiate Transaction Response Payload Schema
1
amountNumber (Float)Required

The amount to be sent, which is in lower denomination and in the unit of the assetType (e.g., 1000 USDT or 1000 SATS)

2
addressStringRequired, if external

The recipient's wallet address. The address format must be valid and match the specified blockchain network. This is required for external (on-chain) transfers.

3
walletNumberStringRequired, if internal

An internal unique wallet or account number within your system. Used for transferring funds to another wallet under your platform’s infrastructure (i.e., internal transfers).

4
chainStringRequired, if external

The blockchain network where the asset will be sent. Supported values include bsc, eth, polygon, etc. Only required if the transfer is on-chain (external).

5
assetTypeStringRequired

The type of asset to be transferred, such as USDT, USDC, or BTC. Must match a supported asset on the selected blockchain.

6
customerReferencestringNot Required

A unique identifier for a previously registered user in your system. It could be an email address or user id.

7
transferTypeString (enum)Required

Defines the type of transfer: 'internal' for transfers within your platform or 'external' for blockchain-based transfers. The choice determines whether an address or wallet number is required.

8
referenceStringRequired

A unique transaction reference provided by the client for idempotency. This ensures repeated requests with the same reference are not processed more than once.

9
descriptionStringNot Required

An optional free-text note explaining the purpose of the transaction. Useful for audits, invoices, or providing customer context.

Request Payload

Initiate Transaction Request Payload Schema
1
idString (UUID)Required

A unique system-generated identifier for this transaction. This ID is immutable and can be used to track or reference the transaction across systems or audits.

2
createdAtString (ISO 8601)Required

The timestamp indicating when the transaction was initiated. ISO 8601 format ensures consistency across systems. Example: '2025-06-19T10:22:35Z'.

3
updatedAtString (ISO 8601)Required

Timestamp representing the last update to the transaction. This is updated when the transaction status, amount, or metadata changes.

4
referenceStringRequired

A unique external identifier, typically provided by the client, for tracking and ensuring idempotent transaction submission.

5
descriptionStringNot Required

A brief human-readable note about the transaction's purpose. Helps categorize or annotate entries in financial dashboards.

6
balanceAfterString (Number)Required

Represents the user's or company's wallet balance immediately after this transaction, in the smallest denomination (e.g., cents or satoshis).

7
amountString (Number)Required

Total transaction amount in whole or major units (e.g., 15.75 USDC). This field is used in reporting and summaries.

8
centAmountString (Number)Required

Same as `amount`, but expressed in minor units for precision (e.g., 1575 cents for $15.75). Useful for APIs handling raw numbers.

9
feesString (Number)Required

Fee applied to the transaction in major units. May vary by channel (onchain, internal) or network congestion.

10
centFeesString (Number)Required

Fee represented in smallest denomination (e.g., 99 cents = $0.99). Provides granularity for accounting.

11
addressStringRequired (if transferType is external)

The blockchain address that received funds. Only relevant for onchain/external transactions (e.g., 0xabc...).

12
walletAccountNumberStringRequired (if transferType is internal)

Internal identifier representing the wallet or account that received funds within the system.

13
actionStringRequired

Describes the business logic of the transaction (e.g., 'withdraw_btc', 'send_usdt', 'payout_vendor').

14
typeString (enum)Required

Transaction direction: 'credit' means wallet received funds; 'debit' means funds were sent out.

15
statusString (enum)Required

Current state of the transaction in the lifecycle. Examples: 'initiated', 'processing', 'success', or 'failed'.

16
channelStringRequired

The medium or processing route used. Options: 'onchain' (blockchain), 'internal' (within platform), 'manual', 'offchain' (e.g., via 3rd party).

17
chainStringRequired (if channel is onchain)

Specifies which blockchain was used for the transaction (e.g., 'bitcoin', 'bsc', 'polygon'). Required only for onchain transfers.

18
assetTypeStringRequired

Specifies the token or cryptocurrency involved (e.g., 'USDT', 'BTC'). Determines formatting, fees, and chain compatibility.

19
senderCompanyIdString (UUID)Required

Unique identifier of the company or business that initiated the transaction. Supports auditing and organizational filtering.

20
receiverCompanyNameStringYes (if transferType is internal)

Full name of the recipient company (internal transfers only). Provides visibility in dashboards and reporting tools.

21
hashStringOptional (onchain only)

Blockchain transaction hash (txid). Can be used to verify the transaction via block explorers (e.g., etherscan, mempool).

22
confirmationsNumberOptional (onchain only)

The number of blockchain confirmations received. Used to assess finality and reliability of the transaction.

23
memoStringOptional (if chain requires it)

An optional memo or tag used by chains like XRP, Stellar, or Binance. Required by some exchanges to complete transfers.

24
transferTypeStringRequired

Denotes whether the transaction was 'internal' (within the platform) or 'external' (onchain). Helps route the transaction properly.

25
customerReferencestringOptional

A unique identifier for a previously registered user in your system. It could be an email address or user id.

Response Body

Finalize Transfer

Finalize a transfer that was previously initiated. This step is typically required for transfers that need additional verification, such as 2FA, transaction PIN, or manual approval. Finalization confirms and executes the transaction, updating its status accordingly. It ensures that sensitive or high-value transfers are not processed without explicit user authorization.

Base URL

Finalize Transaction Request

Use Case:

Finalize Transaction Request Payload Schema

1
idString (UUID)Required

System-generated unique ID for the transaction. Used to finalize a specific transaction.

Response Body

Finalize Transaction Response Payload Schema
1
idString (UUID)Required

A system-generated globally unique identifier for the transaction, used for tracking, referencing, and resolving disputes.

2
createdAtString (ISO 8601)Required

The exact timestamp when the transaction was created. Format follows ISO 8601 standard for consistency across systems.

3
updatedAtString (ISO 8601)Required

Timestamp of the most recent status or data update on the transaction. Useful for audit logs and chronological tracking.

4
referenceStringRequired

A unique client-provided or auto-generated identifier used to trace, filter, and prevent duplicate transactions (idempotency).

5
descriptionStringNot Required

Optional human-readable note or label describing the purpose of the transaction (e.g., 'Vendor payout April').

6
balanceAfterString (Number)Required

The wallet's final balance after the transaction, typically in minor units like cents or satoshis for accuracy.

7
amountString (Number)Required

The total value of the transaction in standard units, such as 100.50 for USDC or 0.01 for BTC.

8
centAmountString (Number)Required

The exact transaction amount represented in the smallest denomination (e.g., 1050 cents for $10.50).

9
feesString (Number)Required

The total fee charged for the transaction, expressed in standard currency units.

10
centFeesString (Number)Required

The transaction fee in the smallest unit of currency (e.g., 120 cents = $1.20), useful for precise calculations.

11
addressStringRequired (if transferType is external)

The external blockchain address to which the funds were sent. Required only for onchain or external transfers.

12
receiverWalletNumberStringRequired (if transferType is internal)

The internal account or wallet number that received the funds in a platform-based (internal) transfer.

13
actionStringRequired

Describes the transaction operation such as 'send_usdc', 'withdraw_btc', 'fund_wallet'. Helps with filtering or categorization.

14
typeString (enum)Required

Indicates whether the transaction is a 'debit' (outflow) or 'credit' (inflow) to the wallet.

15
statusString (enum)Required

The current transaction state, such as 'pending', 'processing', 'completed', or 'failed'.

16
channelStringRequired

Specifies the route of transfer. Valid values include 'onchain', 'internal', 'manual', and 'offchain'.

17
chainStringRequired (if channel is onchain)

The name of the blockchain used, e.g., 'bsc' (Binance Smart Chain), 'eth' (Ethereum). Required for onchain transfers.

18
assetTypeStringRequired

The digital asset involved in the transaction such as 'USDC', 'BTC', 'ETH'.

19
senderCompanyIdString (UUID)Required

UUID of the company initiating the transaction. Useful for multi-tenant or enterprise reporting.

20
receiverCompanyNameStringRequired (if transferType is internal)

Name of the receiving company or entity in internal transfers. Helps with traceability and reporting.

Response Body
Did you find this page useful?