seaport-js: The fulfiller does not have the balances needed to fulfill.

Can someone help me understand why I get this error? I’m trying to buy a nft that’s listed on opensea. The fulfiller is the owner of the nft, correct? I verified that the owner address is right. The message sounds like seaport thinks the owner doesn’t have that token…

const provider = new ethers.providers.Web3Provider(window.ethereum)
const seaport = new Seaport(provider)
let [account] = await window.ethereum.enable()

const offerer = account // me
const fulfiller = "0x3649b5fA32d367BfAf218354cf5eB7Ab55AE1c46" // the address that owns the token

const { executeAllActions } = await seaport.createOrder(
  {
    offer: [
      {
        amount: ethers.utils.parseEther("0.0019").toString(),
        recipient: fulfiller,
      },
    ],
    consideration: [
      {
        itemType: 2, //ItemType.ERC721,
        token: "0x42921c64797b64499a3ad3a3cdbbfab7bee294fe",
        identifier: "1262",
        recipient: offerer,
      },
    ],
  },
  offerer
)

const order = await executeAllActions()
console.log(order)

const { executeAllActions: executeAllFulfillActions } =
  await seaport.fulfillOrder({
    order,
    accountAddress: account,
  });

const transaction = executeAllFulfillActions();

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 1
  • Comments: 15

Most upvoted comments

Here is the link to my script file.

I have created 2 seaport instances for interaction with 2 different accounts.

Here is the link link

Hey i solved this error, Let me explain, In the first code block you are creating an order which says that you are providing some ETH in return you want an NFT. this will be run successfully, since you are creating it. But in the second block you are fulfilling it, but since you are calling the fulfill order not the person who owns that NFT, That why you are getting an error here.

I hope you understand it. Please do let me know you solved it or not.

I think I understand. From this explanation, it sounds like the seaport.createOrder block is a bidding/buy order. Separately, the short seaport.fulfillOrder block is the other side of that transaction that a seller would make.

It is confusing because the Seaport-js docs show the example as one full process to execute a bid/buy order.

While I not getting the error anymore because I’m not trying to run the seaport.fulfillOrder block as the bidder. Though, I’m not seeing the order show up on Opensea even though I can see that the order has been verified by following up the order with:

const validated = seaport.validate([order]);
const transaction = await validated.transact();
console.log('validated: ', await transaction.wait());