Skip to content

Transfers

Methods for creating and managing transfers.

Quick Reference

MethodDescription
createDepositCreate a deposit transaction into a wallet, by issuing new tokens to the system.
createTransferCreate a transfer of Token amount from one wallet to the other.
createTransfersCreate multiple transfers with one call. Transfers are created in a transaction so it either succeeds or fails as one.
Will respect internal balance transfers to avoid latest_control_hash
createWithdrawalCreate a transfer withdrawing funds from a Wallet.
Will default to transferring funds to Token default Wallet.
findTransfersSearch for Transfers using either a simple filter or queryBuilder
getTransferGet information about a specific Transfer
reverseTransferReverse a transfer of value between two wallets
will cancel pending transfers and create opposite transfers for finished ones.
reverseTransfersCall reverseTransfer on the searchresults of findTransfer
updateTransferUpdate a Transfer
updateTransfersUpdate multiple Transfer objects

createDeposit

Create a deposit transaction into a wallet, by issuing new tokens to the system.

ts
await client.createDeposit(
  {
    identifier: 'mycustomId',
    token: 'ForeignForToken',
    wallet: 'ForeignForWallet',
    amount: 10.01,
    metadata: {
      customJsonBlob: true,
    },
    status: 'finished',
    // transfer_group: TransferGroup.identifier, // existing transfer group identifier
  },
  {
    tracking_id: 'mylogId',
    // transaction_id: Transaction.identifier, // created transaction identifier
    create_wallet_if_not_exists: true,
    return_balance: true,
  },
);
ts
{
  transfer: {
    id: 9,
    identifier: 'mycustomId',
    control_hash: null,
    from_wallet_id: 19,
    to_wallet_id: 20,
    token_id: 4,
    amount: 10.01,
    type: 'deposit',
    status: 'finished',
    force: false,
    auto_hash: false,
    created_at: '2026-01-01T10:00:00.000Z',
    updated_at: '2026-01-01T10:00:00.000Z',
    metadata: {
      customJsonBlob: true
    },
    transfer_group_id: null,
    reverses_id: null,
    status_finalized_at: '2026-01-01T10:00:00.000Z',
    group_validate: false,
    from_wallet_foreign: 'ForeignForToken',
    to_wallet_foreign: 'ForeignForWallet',
    token_foreign: 'ForeignForToken',
    transfer_group_identifier: null,
    reverses_identifier: null
  },
  to_balance: {
    token_id: 4,
    token_foreign: 'ForeignForToken',
    token_metadata: null,
    wallet_id: 20,
    wallet_foreign: 'ForeignForWallet',
    wallet_metadata: null,
    transfer_id: 9,
    pending_amount: 0,
    pending_amount_to: 0,
    pending_amount_from: 0,
    finished_amount: 10.01,
    available_balance: 10.01,
    amount: 10.01,
    latest_control_hash: null,
    updated_at: '2026-01-01T10:00:00.000Z'
  }
};

createDepositFnInput

Input for createDeposit

AttributeTypeRequiredDescription
identifierstringIdentifier for this transfer. Must be unique
tokenstring | numberId of the token to deposit as
walletstring | numberId of the wallet to deposit to
amountnumber | stringamount to deposit
metadata Metadata Key/value object describing this transfer
statusTransferStatus Status of the transfer
transfer_groupstring | numberId of the transfer_group this deposit is linked to
created_atstringDatetime of the initial create
options{}Optional flags for input

createDepositFnOutput

Output of createDeposit

AttributeTypeAlwaysDescription
transfer{}Created transfer object
from_balance{}Debited wallet balance
to_balance{}Credited wallet balance

createTransfer

Create a transfer of Token amount from one wallet to the other.

ts
await client.createTransfer(
  {
    identifier: 'mynewtransferid',
    token: 'EUR',
    from_wallet: TEST.INFO.WALLETS.withEURFunds0.foreign,
    to_wallet: 'foreignForMbyExistingWallet',
    amount: 10.01,
    metadata: {
      customJSON: true,
    },
    type: 'transfer',
    status: 'pending',
    // transfer_group: TransferGroup.identifier,
  },
  {
    create_to_wallet_if_not_exists: true,
    // GENERALOPTIONS
  },
);
ts
{
  transfer: {
    id: 9,
    identifier: 'mynewtransferid',
    control_hash: null,
    from_wallet_id: 16,
    to_wallet_id: 21,
    token_id: 1,
    amount: 10.01,
    type: 'transfer',
    status: 'pending',
    force: false,
    auto_hash: false,
    created_at: '2026-01-01T10:00:00.000Z',
    updated_at: '2026-01-01T10:00:00.000Z',
    metadata: {
      customJSON: true
    },
    transfer_group_id: null,
    reverses_id: null,
    status_finalized_at: null,
    group_validate: false,
    from_wallet_foreign: '2026-01-01T10:00:00.000Z',
    to_wallet_foreign: 'foreignForMbyExistingWallet',
    token_foreign: 'EUR',
    transfer_group_identifier: null,
    reverses_identifier: null
  }
};

createTransferFnInput

Input for createTransfer

AttributeTypeRequiredDescription
identifierstringIdentifier for this transfer. Must be unique
tokenstring | numberId of the token to transfer as
from_walletstring | numberForeign of the wallet to withdraw from
to_walletstring | numberForeign of the wallet to deposit to
latest_control_hashstringHash binding this transfer to the from_wallets transfer chain. It is calculated as sha256(latest_outgoing_hash + - + NEW.identifier)
amountnumber | stringamount to withdraw
metadata Metadata Key/value object describing this transfer
statusTransferStatus status of the transfer
transfer_groupstring | numberId of the transfer_group this transfer is linked to
created_atstringDatetime of the initial create
typetransfer
forcebooleanSet to true to force transfer without checking for negative balance constraints
options{}Optional flags for input

createTransferFnOutput

Output of createTransfer

AttributeTypeAlwaysDescription
transfer{}Created transfer object
from_balance{}Debited wallet balance
to_balance{}Credited wallet balance

createTransfers

Create multiple transfers with one call. Transfers are created in a transaction so it either succeeds or fails as one. Will respect internal balance transfers to avoid latest_control_hash

ts
await client.createTransfers(
  {
    transfers: [
      {
        type: 'deposit',
        wallet: TEST.INFO.WALLETS.validForeign2,
        token: 'EURO',
        amount: 10.01,
      },
      {
        from_wallet: TEST.INFO.WALLETS.validForeign2,
        to_wallet: 'newWalletForeignMby',
        token: 'EURO',
        amount: 10.01,
        latest_control_hash: null, // not required as we just transferred funds
      },
      {
        type: 'withdrawal',
        wallet: 'newWalletForeignMby',
        token: 'EURO',
        amount: 10.01,
        latest_control_hash: null, // not required as we just transferred funds
      },
    ],
  },
  {
    create_to_wallet_if_not_exists: true,
    return_from_balance: true,
    return_to_balance: true,
    // GENERALOPTIONS
  },
);
ts
{
  transfers: [
    {
      id: 7,
      identifier: 'decbda62-480f-4b95-97bf-c6b28c7271a2',
      control_hash: null,
      from_wallet_id: 19,
      to_wallet_id: 7,
      token_id: 4,
      amount: 10.01,
      type: 'deposit',
      status: 'finished',
      force: false,
      auto_hash: false,
      created_at: '2026-01-01T10:00:00.000Z',
      updated_at: '2026-01-01T10:00:00.000Z',
      metadata: null,
      transfer_group_id: null,
      reverses_id: null,
      status_finalized_at: '2026-01-01T10:00:00.000Z',
      group_validate: false,
      from_wallet_foreign: 'EURO',
      to_wallet_foreign: 'VALID2',
      token_foreign: 'EURO',
      transfer_group_identifier: null,
      reverses_identifier: null
    },
    {
      id: 8,
      identifier: '25122eb6-0e02-495f-9033-8f069a5a32ad',
      control_hash: null,
      from_wallet_id: 7,
      to_wallet_id: 20,
      token_id: 4,
      amount: 10.01,
      type: 'transfer',
      status: 'finished',
      force: false,
      auto_hash: false,
      created_at: '2026-01-01T10:00:00.000Z',
      updated_at: '2026-01-01T10:00:00.000Z',
      metadata: null,
      transfer_group_id: null,
      reverses_id: null,
      status_finalized_at: '2026-01-01T10:00:00.000Z',
      group_validate: false,
      from_wallet_foreign: 'VALID2',
      to_wallet_foreign: 'newWalletForeignMby',
      token_foreign: 'EURO',
      transfer_group_identifier: null,
      reverses_identifier: null
    },
    {
      id: 9,
      identifier: 'a815520a-7cbe-4bc2-9a2c-5db7c6bf92f2',
      control_hash: null,
      from_wallet_id: 20,
      to_wallet_id: 19,
      token_id: 4,
      amount: 10.01,
      type: 'withdrawal',
      status: 'finished',
      force: false,
      auto_hash: false,
      created_at: '2026-01-01T10:00:00.000Z',
      updated_at: '2026-01-01T10:00:00.000Z',
      metadata: null,
      transfer_group_id: null,
      reverses_id: null,
      status_finalized_at: '2026-01-01T10:00:00.000Z',
      group_validate: false,
      from_wallet_foreign: 'newWalletForeignMby',
      to_wallet_foreign: 'EURO',
      token_foreign: 'EURO',
      transfer_group_identifier: null,
      reverses_identifier: null
    }
  ],
  to_balances: [
    {
      token_id: 4,
      token_foreign: 'EURO',
      token_metadata: null,
      wallet_id: 7,
      wallet_foreign: 'VALID2',
      wallet_metadata: null,
      transfer_id: 8,
      pending_amount: 0,
      pending_amount_to: 0,
      pending_amount_from: 0,
      finished_amount: 0,
      available_balance: 0,
      amount: 0,
      latest_control_hash: null,
      updated_at: '2026-01-01T10:00:00.000Z'
    },
    {
      token_id: 4,
      token_foreign: 'EURO',
      token_metadata: null,
      wallet_id: 20,
      wallet_foreign: 'newWalletForeignMby',
      wallet_metadata: null,
      transfer_id: 9,
      pending_amount: 0,
      pending_amount_to: 0,
      pending_amount_from: 0,
      finished_amount: 0,
      available_balance: 0,
      amount: 0,
      latest_control_hash: null,
      updated_at: '2026-01-01T10:00:00.000Z'
    },
    {
      token_id: 4,
      token_foreign: 'EURO',
      token_metadata: null,
      wallet_id: 19,
      wallet_foreign: 'EURO',
      wallet_metadata: null,
      transfer_id: 9,
      pending_amount: 0,
      pending_amount_to: 0,
      pending_amount_from: 0,
      finished_amount: 0,
      available_balance: 0,
      amount: 0,
      latest_control_hash: null,
      updated_at: '2026-01-01T10:00:00.000Z'
    }
  ],
  from_balances: [
    {
      token_id: 4,
      token_foreign: 'EURO',
      token_metadata: null,
      wallet_id: 19,
      wallet_foreign: 'EURO',
      wallet_metadata: null,
      transfer_id: 9,
      pending_amount: 0,
      pending_amount_to: 0,
      pending_amount_from: 0,
      finished_amount: 0,
      available_balance: 0,
      amount: 0,
      latest_control_hash: null,
      updated_at: '2026-01-01T10:00:00.000Z'
    },
    {
      token_id: 4,
      token_foreign: 'EURO',
      token_metadata: null,
      wallet_id: 7,
      wallet_foreign: 'VALID2',
      wallet_metadata: null,
      transfer_id: 8,
      pending_amount: 0,
      pending_amount_to: 0,
      pending_amount_from: 0,
      finished_amount: 0,
      available_balance: 0,
      amount: 0,
      latest_control_hash: null,
      updated_at: '2026-01-01T10:00:00.000Z'
    },
    {
      token_id: 4,
      token_foreign: 'EURO',
      token_metadata: null,
      wallet_id: 20,
      wallet_foreign: 'newWalletForeignMby',
      wallet_metadata: null,
      transfer_id: 9,
      pending_amount: 0,
      pending_amount_to: 0,
      pending_amount_from: 0,
      finished_amount: 0,
      available_balance: 0,
      amount: 0,
      latest_control_hash: null,
      updated_at: '2026-01-01T10:00:00.000Z'
    }
  ]
};

createTransfersFnInput

Input for createTransfers

AttributeTypeRequiredDescription
transfers({})[]Array of transfer objects to create
options{}Optional flags for input

createTransfersFnOutput

Output of createTransfers

AttributeTypeAlwaysDescription
transfers({})[]Created transfer objects
from_balances({})[]Debited wallet balances
to_balances({})[]Credited wallet balances

createWithdrawal

Create a transfer withdrawing funds from a Wallet. Will default to transferring funds to Token default Wallet.

ts
await client.createWithdrawal(
  {
    identifier: 'mycustomId',
    token: 'ForeignForToken',
    wallet: 'ForeignForWallet',
    amount: 10.01,
    metadata: {
      customJsonBlob: true,
    },
    status: 'finished',
    latest_control_hash: null,
    // transfer_group: TransferGroup.identifier, // existing transfer group identifier
  },
  {
    tracking_id: 'mylogId',
    // transaction_id: Transaction.identifier, // created transaction identifier
    return_balance: true,
  },
);
ts
{
  transfer: {
    id: 7,
    identifier: 'mycustomId',
    control_hash: null,
    from_wallet_id: 19,
    to_wallet_id: 18,
    token_id: 4,
    amount: 10.01,
    type: 'withdrawal',
    status: 'finished',
    force: false,
    auto_hash: false,
    created_at: '2026-01-01T10:00:00.000Z',
    updated_at: '2026-01-01T10:00:00.000Z',
    metadata: {
      customJsonBlob: true
    },
    transfer_group_id: null,
    reverses_id: null,
    status_finalized_at: '2026-01-01T10:00:00.000Z',
    group_validate: false,
    from_wallet_foreign: 'ForeignForWallet',
    to_wallet_foreign: 'ForeignForToken',
    token_foreign: 'ForeignForToken',
    transfer_group_identifier: null,
    reverses_identifier: null
  },
  from_balance: {
    token_id: 4,
    token_foreign: 'ForeignForToken',
    token_metadata: null,
    wallet_id: 19,
    wallet_foreign: 'ForeignForWallet',
    wallet_metadata: null,
    transfer_id: 7,
    pending_amount: 0,
    pending_amount_to: 0,
    pending_amount_from: 0,
    finished_amount: 89.99,
    available_balance: 89.99,
    amount: 89.99,
    latest_control_hash: null,
    updated_at: '2026-01-01T10:00:00.000Z'
  }
};

createWithdrawalFnInput

Input for createWithdrawal

AttributeTypeRequiredDescription
identifierstringIdentifier for this transfer. Must be unique
tokenstring | numberId of the token to withdrawal as
walletstring | numberId of the wallet to withdraw from
latest_control_hashstringHash binding this transfer to the from_wallets transfer chain. It is calculated as sha256(latest_outgoing_hash + - + NEW.identifier)
amountnumber | stringamount to withdraw
metadata Metadata Key/value object describing this transfer
statusWithdrawalStatus status of the withdrawal
transfer_groupstring | numberId of the transfer_group this withdrawal is linked to
created_atstringDatetime of the initial create
options{}Optional flags for input

createWithdrawalFnOutput

Output of createWithdrawal

AttributeTypeAlwaysDescription
transfer{}Created transfer object
from_balance{}Debited wallet balance
to_balance{}Credited wallet balance

findTransfers

Search for Transfers using either a simple filter or queryBuilder

ts
await client
  .findTransfers()
  .where({
    metadata: {
      example: true,
    },
  })
  .where('id', '>', 1)
  .where((builder) => {
    builder.where('status', 'finished').orWhere('type', 'deposit');
  })
  .limit(5)
  .offset(0)
  .orderBy(['token_id', { column: 'id', order: 'desc' }])
  .select('id', 'type', 'from_wallet_foreign', 'to_wallet_foreign')
  .options({
    tracking_id: 'hello',
  });
ts
{
  transfers: [
    {
      id: 30,
      type: 'deposit',
      from_wallet_foreign: 'EUR',
      to_wallet_foreign: 'house'
    },
    {
      id: 29,
      type: 'deposit',
      from_wallet_foreign: 'EUR',
      to_wallet_foreign: 'house'
    },
    {
      id: 28,
      type: 'deposit',
      from_wallet_foreign: 'EUR',
      to_wallet_foreign: 'house'
    },
    {
      id: 27,
      type: 'deposit',
      from_wallet_foreign: 'EUR',
      to_wallet_foreign: 'house'
    },
    {
      id: 26,
      type: 'deposit',
      from_wallet_foreign: 'EUR',
      to_wallet_foreign: 'house'
    }
  ],
  metadata: {
    limit: 5,
    offset: 0,
    more_rows: true,
    order: [
      {
        field: 'token_id',
        direction: 'asc'
      },
      {
        field: 'id',
        direction: 'desc'
      }
    ]
  }
};

findTransfersFnInput

Input for findTransfers

AttributeTypeRequiredDescription
walletstring | numberForeign of the wallet connected to transfers
tokenstring | numberForeign of the token transferred
from_walletstring | numberForeign of the wallet transfers are made from
to_walletstring | numberForeign of the wallet transfers are made to
transfer_groupstring | numberForeign of the transfer_group the transfers are a part of
typeTransferType Type of the transfer
statusTransfersStatus Status of the transfers
metadata MetadataSearch Metadata filter for custom properties
options{}Optional flags for input

findTransfersFnOutput

Output of findTransfers

AttributeTypeAlwaysDescription
transfers({})[]Found transfers
metadata{}Metadata about the search

getTransfer

Get information about a specific Transfer

ts
await client.getTransfer(
  {
    transfer: 'get-transfer-test',
  },
  {
    // GENERALOPTIONS
  },
);
ts
{
  transfer: {
    id: 4,
    identifier: 'get-transfer-test',
    control_hash: null,
    from_wallet_id: 1,
    to_wallet_id: 3,
    token_id: 1,
    amount: 10,
    type: 'deposit',
    status: 'finished',
    force: false,
    auto_hash: false,
    created_at: '2026-01-01T10:00:00.000Z',
    updated_at: '2026-01-01T10:00:00.000Z',
    metadata: {
      example: 'test'
    },
    transfer_group_id: null,
    reverses_id: null,
    status_finalized_at: '2026-01-01T10:00:00.000Z',
    group_validate: false,
    from_wallet_foreign: 'EUR',
    to_wallet_foreign: 'house',
    token_foreign: 'EUR',
    transfer_group_identifier: null,
    reverses_identifier: null
  }
};

getTransferFnInput

Input for getTransfer

AttributeTypeRequiredDescription
transferstring | numberTransfer identifier
options{}Optional flags for input

getTransferFnOutput

Output of getTransfer

AttributeTypeAlwaysDescription
transfer{}

reverseTransfer

Reverse a transfer of value between two wallets will cancel pending transfers and create opposite transfers for finished ones.

ts
await client.reverseTransfer(
  {
    transfer: 'MYDEPOSIT',
    status: 'finished',
    identifier: 'MYREVERSEDEPOSIT',
    force: true,
    // metadata: {},
    metadata: {
      extraCustomJSON: true,
    },
  },
  {
    reverse_deposit: true,
    reverse_withdrawal: true,
    return_to_balance: true,
    return_from_balance: true,
    metadata_action: 'extend',
    // GENERALOPTIONS
  },
);
ts
{
  transfer: {
    id: 9,
    identifier: 'MYREVERSEDEPOSIT',
    control_hash: null,
    from_wallet_id: 7,
    to_wallet_id: 1,
    token_id: 1,
    amount: 10.01,
    type: 'withdrawal',
    status: 'finished',
    force: true,
    auto_hash: false,
    created_at: '2026-01-01T10:00:00.000Z',
    updated_at: '2026-01-01T10:00:00.000Z',
    metadata: {
      customJSON: true,
      extraCustomJSON: true
    },
    transfer_group_id: null,
    reverses_id: 8,
    status_finalized_at: '2026-01-01T10:00:00.000Z',
    group_validate: false,
    from_wallet_foreign: 'VALID2',
    to_wallet_foreign: 'EUR',
    token_foreign: 'EUR',
    transfer_group_identifier: null,
    reverses_identifier: 'MYDEPOSIT'
  },
  to_balance: {
    token_id: 1,
    token_foreign: 'EUR',
    token_metadata: null,
    wallet_id: 1,
    wallet_foreign: 'EUR',
    wallet_metadata: null,
    transfer_id: 9,
    pending_amount: 10.01,
    pending_amount_to: 10.01,
    pending_amount_from: 0,
    finished_amount: -100010.01,
    available_balance: -100010.01,
    amount: -100000,
    latest_control_hash: null,
    updated_at: '2026-01-01T10:00:00.000Z'
  },
  from_balance: {
    token_id: 1,
    token_foreign: 'EUR',
    token_metadata: null,
    wallet_id: 7,
    wallet_foreign: 'VALID2',
    wallet_metadata: null,
    transfer_id: 9,
    pending_amount: -10.01,
    pending_amount_to: 0,
    pending_amount_from: -10.01,
    finished_amount: 10.01,
    available_balance: 0,
    amount: 0,
    latest_control_hash: null,
    updated_at: '2026-01-01T10:00:00.000Z'
  }
};

reverseTransferFnInput

Input for reverseTransfer

AttributeTypeRequiredDescription
transferstring | numberTransfer identifier
statusCreated TransferStatus Status of the created transfer
identifierstringIdentifier for the created transfer
forcebooleanForce create the reverse transfer ignoring balance
metadata Metadata Metadata for the reversed transfers
extend_metadata{[key:string]: string | boolean | number | null | undefined | unknown | (string | boolean | number | null | undefined | unknown)[]}Key value object to extend metadata with on created transfer
options{}Optional flags for input

reverseTransferFnOutput

Output of reverseTransfer

AttributeTypeAlwaysDescription
transfer{}Updated transfer object
updatedbooleanBoolean showing if the transfer was updated
from_balance{}Debited wallet balance
to_balance{}Credited wallet balance

reverseTransfers

Call reverseTransfer on the searchresults of findTransfer

ts
await TEST.client.reverseTransfers({
  metadata: {
    example: 'test',
  },
});
ts
{
  transfers: [
    {
      id: 9,
      identifier: '78fd4b4f-3d07-4fff-ad57-251145c8c68f',
      control_hash: null,
      from_wallet_id: 6,
      to_wallet_id: 16,
      token_id: 1,
      amount: 10.12,
      type: 'transfer',
      status: 'finished',
      force: false,
      auto_hash: false,
      created_at: '2026-01-01T10:00:00.000Z',
      updated_at: '2026-01-01T10:00:00.000Z',
      metadata: null,
      transfer_group_id: null,
      reverses_id: 7,
      status_finalized_at: '2026-01-01T10:00:00.000Z',
      group_validate: false,
      from_wallet_foreign: 'VALID1',
      to_wallet_foreign: '2026-01-01T10:00:00.000Z',
      token_foreign: 'EUR',
      transfer_group_identifier: null,
      reverses_identifier: '91952d99b248fab1bdfae00bace44030'
    },
    {
      id: 10,
      identifier: 'd0c9ae03-36af-4bb9-871e-baa2b25d6711',
      control_hash: null,
      from_wallet_id: 6,
      to_wallet_id: 16,
      token_id: 1,
      amount: 10.12,
      type: 'transfer',
      status: 'finished',
      force: false,
      auto_hash: false,
      created_at: '2026-01-01T10:00:00.000Z',
      updated_at: '2026-01-01T10:00:00.000Z',
      metadata: null,
      transfer_group_id: null,
      reverses_id: 8,
      status_finalized_at: '2026-01-01T10:00:00.000Z',
      group_validate: false,
      from_wallet_foreign: 'VALID1',
      to_wallet_foreign: '2026-01-01T10:00:00.000Z',
      token_foreign: 'EUR',
      transfer_group_identifier: null,
      reverses_identifier: '8a394616eb4bebf4843ae46f071c17e3'
    }
  ]
};

reverseTransfersFnInput

Input for reverseTransfers

AttributeTypeRequiredDescription
idstring | numberTransfer id
identifierstring | numberTransfer identifier
from_walletstring | numberForeign of the wallet transfers are made from
to_walletstring | numberForeign of the wallet transfers are made to
walletstring | numberForeign of the wallet connected to transfers
tokenstring | numberForeign of the token transferred
typeTransferType Type of the transfer
statusTransfersStatus Status of the transfers
transfer_groupstring | numberForeign of the transfer_group the transfers are a part of
reversesstring | number | {}Unique transfer filter
metadata MetadataSearch Metadata filter for custom properties
amountstring | numberTransfer amount
created_atstringDatetime of the initial create
updated_atstringDatetime of the last update
from_wallet_idstring | numberDebited Wallet id
to_wallet_idstring | numberCredited Wallet id
token_idstring | numberTransferred Token id
transfer_group_idstring | numberTransferGroup id the transfer is a part of
reverses_idstring | numberReversed Transfer id
reverse{}In case the transfer will be made then apply these modifications
options{}Optional flags for input

reverseTransfersFnOutput

Output of reverseTransfers

AttributeTypeAlwaysDescription
transfers({})[]Created transfer array

updateTransfer

Update a Transfer

ts
await client.updateTransfer(
  {
    transfer: 'myPendingDeposit',
    status: 'cancelled',
    metadata: {
      meta: 'new',
      was: true,
    },
  },
  {
    return_from_balance: true,
    return_to_balance: true,
    return_when_not_updated: true,
    metadata_action: 'extend',
    // GENERALOPTIONS
  },
);
ts
{
  transfer: {
    id: 8,
    identifier: 'myPendingDeposit',
    control_hash: null,
    from_wallet_id: 18,
    to_wallet_id: 19,
    token_id: 4,
    amount: 10.01,
    type: 'deposit',
    status: 'cancelled',
    force: false,
    auto_hash: false,
    created_at: '2026-01-01T10:00:00.000Z',
    updated_at: '2026-01-01T10:00:00.000Z',
    metadata: {
      is: true,
      was: true,
      meta: 'new'
    },
    transfer_group_id: null,
    reverses_id: null,
    status_finalized_at: '2026-01-01T10:00:00.000Z',
    group_validate: false,
    from_wallet_foreign: 'EURO',
    to_wallet_foreign: 'myWallet',
    token_foreign: 'EURO',
    transfer_group_identifier: null,
    reverses_identifier: null
  },
  to_balance: {
    token_id: 4,
    token_foreign: 'EURO',
    token_metadata: null,
    wallet_id: 19,
    wallet_foreign: 'myWallet',
    wallet_metadata: null,
    transfer_id: 8,
    pending_amount: 0,
    pending_amount_to: 0,
    pending_amount_from: 0,
    finished_amount: 0,
    available_balance: 0,
    amount: 0,
    latest_control_hash: null,
    updated_at: '2026-01-01T10:00:00.000Z'
  },
  from_balance: {
    token_id: 4,
    token_foreign: 'EURO',
    token_metadata: null,
    wallet_id: 18,
    wallet_foreign: 'EURO',
    wallet_metadata: null,
    transfer_id: 8,
    pending_amount: 0,
    pending_amount_to: 0,
    pending_amount_from: 0,
    finished_amount: 0,
    available_balance: 0,
    amount: 0,
    latest_control_hash: null,
    updated_at: '2026-01-01T10:00:00.000Z'
  },
  updated: true
};

updateTransferFnInput

Input for updateTransfer

AttributeTypeRequiredDescription
transferstring | numberTransfer identifier
metadata Metadata Key/value object describing this transfer
extend_metadata{[key:string]: string | boolean | number | null | undefined | unknown | (string | boolean | number | null | undefined | unknown)[]}Key/value object describing this transfer
statusStatus Status the transfer should be set to
options{}Optional flags for input

updateTransferFnOutput

Output of updateTransfer

AttributeTypeAlwaysDescription
transfer{}Updated transfer object
updatedbooleanBoolean showing if the transfer was updated
from_balance{}Debited wallet balance
to_balance{}Credited wallet balance

updateTransfers

Update multiple Transfer objects

ts
await client.updateTransfers({
  metadata: {
    example: 'test',
  },
  wallet: TEST.INFO.WALLETS.validId1.foreign,
  token: 'EUR',
  update: {
    status: 'finished',
  },
});
ts
{
  transfers: [
    {
      id: 12,
      identifier: '27452863-1530-406a-93fb-061d43723643',
      control_hash: null,
      from_wallet_id: 1,
      to_wallet_id: 6,
      token_id: 1,
      amount: 10,
      type: 'deposit',
      status: 'finished',
      force: false,
      auto_hash: false,
      created_at: '2026-01-01T10:00:00.000Z',
      updated_at: '2026-01-01T10:00:00.000Z',
      metadata: {
        example: 'test'
      },
      transfer_group_id: null,
      reverses_id: null,
      status_finalized_at: '2026-01-01T10:00:00.000Z',
      group_validate: false,
      from_wallet_foreign: 'EUR',
      to_wallet_foreign: 'VALID1',
      token_foreign: 'EUR',
      transfer_group_identifier: null,
      reverses_identifier: null
    }
  ],
  updated: true
};

updateTransfersFnInput

Input for updateTransfers

AttributeTypeRequiredDescription
identifierstring | numberThe identifier of the transfer
walletstring | numberForeign of the wallet connected to transfers
tokenstring | numberForeign of the token transferred
from_walletstring | numberForeign of the wallet transfers are made from
to_walletstring | numberForeign of the wallet transfers are made to
transfer_groupstring | numberForeign of the transfer_group the transfers are a part of
statusTransfersStatus Status of the transfers
metadata MetadataSearch Metadata filter for custom properties
update{}
options{}Optional flags for input

updateTransfersFnOutput

Output of updateTransfers

AttributeTypeAlwaysDescription
transfers({})[]Updated transfers
updatedbooleanBoolean showing if the transfers were updated