Skip to content

token.transfer()

[Source]

Send an MPT amount to another account.

Signature

token.transfer(
  params: TokenTransferParams,
  options?: TokenWriteOptions,
): Promise<SubmissionResult>

Parameters

ParameterTypeRequiredDescription
tostringYesDestination r-address.
amountAmountYesThe MPT amount to send; its asset must be an MPT (build it with mpt()).

The Amount type pairs a value with the asset it denominates:

interface Amount {
  asset: Asset   // what is being moved
  value: string  // the quantity, as a decimal string in display units (e.g., '10.5')
}

Build the asset field with one of the asset constructors:

ConstructorDescription
XRP_ASSETXRP
iou(currency, issuer)IOUs: currency is a 3-character code or 40-character hex; issuer is the issuer's r-address.
mpt(mptIssuanceId, scale?)MPTs: scale is the decimal places between the display value and on-ledger base units (default 0).

Options

options is an optional second argument that sets the source account and overrides the fee.

OptionTypeRequiredDescription
fromAccountSelectorNoThe account to act as — an r-address string, or an object { address } or { signer, account? }. Defaults to the primary signer's primary account. (For IOU operations, this is the issuer.)
feeFeeIntentNoFee override — a priority tier and/or a maxFeeDrops cap.
idempotencyKeystringNoA prior submission's idempotencyKey, to retry to the same intent instead of creating a duplicate. Auto-generated when omitted.

Returns

Resolves to a SubmissionResult<{ to: string; amount: string }>.

Every simpleXRPL write resolves to a SubmissionResult<T> — a union tagged by source, with the backend's raw response preserved verbatim. Its common fields are:

FieldTypeDescription
intentTThe operation-specific output — see the operation's own return fields.
source'xrpld' | 'custody' | 'palisade'Which backend produced the result; discriminates response.
responseTxResponse | custody record | Palisade recordThe backend's raw response, preserved verbatim.
txHashstring (optional)The XRPL transaction hash, once the transaction is on-ledger.
intentIdstring (optional)The custodian intent id, when the path produced one. Hold onto this to resume via client.intent.
idempotencyKeystring (optional)The UUIDv7 this submission carried. Pass it back as a later call's idempotencyKey to retry to the same intent rather than creating a duplicate.

Return fields

For Token.transfer, the intent echoes:

FieldTypeDescription
tostringDestination r-address.
amountstringThe amount sent, as a decimal string.

Underlying XRPL transactor

Builds and submits a single Payment transaction. Throws an IntentValidationError if amount's asset is not an MPT — use XRP.transfer for XRP.

Example

await client.token.transfer({
  to: 'rHolder...',
  amount: { asset: mpt('005C...'), value: '100' },
})