Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
create_offer · Boson Protocol
Skip to content

create_offer

Creates a product offer. Caller must have a seller account (create_seller first). Prerequisite: store metadata first with store_product_v1_metadata or store_base_metadata to get metadataUri/metadataHash. All dates in milliseconds; amounts as strings in wei. Returns unsigned tx — sign locally with your wallet → send_signed_transaction, or executionMode='metaTx'.

Category: Offer management. Returns unsigned tx? Likely yes — sign locally and broadcast via send_signed_transaction or a meta-tx relay.

Input schema

FieldTypeRequiredDescription
executionModedirect | metaTxno'direct' = standard on-chain tx (sign locally with your wallet → send_signed_transaction). 'metaTx' = gasless relay via Biconomy (send_meta_transaction). Defaults to 'direct'.
metadataUristringyesIPFS URI pointing to the offer metadata JSON. Obtain by calling store_product_v1_metadata, store_bundle_metadata, or store_base_metadata.
metadataHashstringyesKeccak256 hash of the metadata JSON. Returned alongside metadataUri from the store_*_metadata tools.
exchangeTokenAddressstringnoERC-20 token accepted for payment. Omit or use address(0) for native ETH. Call get_supported_tokens for valid values.
pricestringyesOffer price in the exchange token's smallest unit (wei). Pass as string to avoid precision loss, e.g. '1000000000000000000' = 1 ETH.
sellerDeposityesSeller collateral in same unit as price. Released to seller on completion or forfeited on dispute. Pass as string.
agentIdnoOptional dACP agent facilitating this offer. Omit or pass '0' if no agent.
buyerCancellationPenaltyyesAmount buyer forfeits on cancel, in same unit as price. Must be <= price. Pass as string.
quantityAvailablenumberyesHow many times this offer can be committed to. Must be 1 when creator='BUYER'.
validFromDateInMSnumberyesUnix timestamp in milliseconds when the offer becomes active. Example: Date.now() for immediate.
validUntilDateInMSnumberyesUnix timestamp in milliseconds when the offer can no longer be committed to.
voucherRedeemableFromDateInMSnumberyesTimestamp in ms from which buyer can redeem. Must be >= validFromDateInMS.
voucherRedeemableUntilDateInMSnumberyesTimestamp in ms after which voucher cannot be redeemed. Set to 0 to use voucherValidDurationInMS instead.
disputePeriodDurationInMSnumberyesDuration in ms for buyer to raise a dispute after redeeming. Example: 604800000 = 7 days.
voucherValidDurationInMSnumberyesVoucher is redeemable for this many ms after commit. Set to 0 to use voucherRedeemableUntilDateInMS instead.
resolutionPeriodDurationInMSnumberyesDuration in ms to respond to a resolution proposal before it expires. Example: 259200000 = 3 days.
disputeResolverIdstringnoID of the dispute resolver for escalated disputes. Call get_dispute_resolvers to list available resolvers.
collectionIndexnoIndex of the seller's NFT collection for vouchers. Omit to use default (index 0).
feeLimitnoMax protocol fee the seller accepts in same token unit. Pass as string.
priceTypenumberno0 = static price, 1 = discovery price (auction).
royaltyInfoobjectno
creatorSELLER | BUYERno'SELLER' (default) = seller creates offer. 'BUYER' = buyer-initiated offer, quantity must be 1.
drMutualizerAddressnoOptional dispute resolver mutualizer contract address that pools resolution funds.
configIdstringyesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
signerAddressyesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.

Related