Skip to content

iou.buyOffer()

[Source]

Place an order on the DEX to acquire more of this IOU.

Signature

iou.buyOffer(
  params: IOUOfferParams,
  options?: IOUWriteOptions,
): Promise<SubmissionResult<undefined>>

Parameters

ParameterTypeRequiredDescription
tickerstringYesThe currency code (3-character ISO-4217-style or 40-character hex; other codes are auto-encoded to hex).
amountstringYesThe number of units of this IOU to buy, as a decimal string. Must be non-negative, with at most 15 significant digits.
orderTypeIOUOrderTypeYesThe order type: 'limit', 'market', 'fok', or 'passive'.
priceIOUOfferPriceYesWhat's offered in payment — XRP, an MPT, or another IOU (see below).
domainIDstringNoRestrict the offer to a permissioned domain. Omit for the open DEX.
hybridbooleanNoWhether a domain-scoped offer also works the open DEX. Only meaningful with domainID; defaults to true when domainID is set.
offerSequencenumberNoA prior offer sequence to replace.

price (IOUOfferPrice) is one of:

ShapeDescription
{ currency: 'XRP'; amount: string }Priced in XRP. Must be non-negative, with at most 6 decimal places (1 drop, XRP's smallest unit).
{ mptIssuanceId: string; amount: string }Priced in an MPT. However, the XRPL DEX doesn't support MPTs yet and will always be rejected.
{ ticker: string; issuer: string; amount: string }Priced in another IOU. Must be non-negative, with at most 15 significant digits — the XRPL issued-currency limit.

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<undefined>.

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

IOU.buyOffer attaches no intent output; intent is undefined.

Underlying XRPL transactor

Builds and submits a single OfferCreate transaction. Throws an IntentValidationError if price is MPT-denominated.

Example

await client.iou.buyOffer({
  ticker: 'USD',
  amount: '100',
  orderType: 'limit',
  price: { currency: 'XRP', amount: '50' },
})