Accept Offer
To accept an active buy offer (bid), partners request a pre-constructed smart contract call transaction payload from the Partner API, then submit it via the seller's wallet client.
This endpoint does not execute transactions itself; it serves as a utility to generate correct Web3 calldata payloads.
Get Accept Transaction Payload
Request
POST /v1/offers/:orderHash/accept-transaction
Headers:
x-api-key:mp_part_yourkey
Body:
{ "seller": "0xsellerwalletaddress...", "tokenId": 42}seller(string, required) - The wallet address of the seller executing the transaction (must own the NFT).tokenId(string | number, optional/required):- For single-NFT offers, this is optional (resolved automatically from the offer). If provided, it must match the offer's
tokenId. - For collection-wide or trait-wide offers, this is required to specify which NFT in the collection the seller is trading.
Response
{ "success": true, "chainId": 25, "to": "0xdFbE43b2c154B6a790158fa2696cDb32A86Efc78", "value": "0", "data": "0xmatchBidWithTakerAskCalldata...", "orderHash": "0xabcde12345...", "priceWei": "10000000000000000000", "currency": "WCRO", "currencyAddress": "0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23"}Operator Approval Requirements
Since the seller is transferring their NFT to the buyer on-chain, their wallet must have approved the Transfer Manager operator contract to manage their tokens.
Before executing the match transaction, check if the seller's wallet has approved the operator. If not, request the user to sign an approval transaction calling setApprovalForAll on the NFT collection contract:
- Transfer Manager ERC-721 (Cronos Mainnet):
0xFDB05297Dce1343632e7A1fEF841aD8f30E36b58 - Transfer Manager ERC-1155 (Cronos Mainnet):
0xe83b5F1d1098C092713D4686B1f2C39f7D8186C7 - Approval Function:
setApprovalForAll(transferManagerAddress, true)
Execute via Wallet (Frontend)
Pass the returned payload to your wallet's transaction execution handler. For example, using viem / wagmi:
const txHash = await walletClient.sendTransaction({ to: payload.to, data: payload.data, value: BigInt(payload.value) // Will be 0})