Using Flair's APIs and SDK you can integrate escrow and fundraising into your dApp.
Using this read-made contract you will already have features for pre-sale, public-sale, OpenSea integration, and many more, as well as integration with Flair out-of-the-box.
If your smart contract is based on ERC-1155 standard, or based on an ERC-721 that supports
setApprovalForAll(), you can easily approve Flair address, similar to how you'd approve OpenSea to sell your NFTs. With this option, when someone wants to collect one of your NFTs, Flair can transfer the NFT and escrow the payment as per the defined funding options.
This option only works if NFTs are in your wallet and does not work if you have a custom smart contract for your project.
This approach is safest because if you decide not to use Flair anymore, you can quickly remove the minter role without upgrading your smart contract.
Another approach would be to allow-list Flair's contract address in your smart contract with the ability to mint new tokens. Allow-listing only works if you haven't deployed your smart contract yet, or are using an upgradable library such as OpenZeppelin's upgradeability.
Similar to the previous approach, this allows Flair's smart contract to mint a new NFT on your contract, transfer it to the collector.
Compared to the previous approach, if you needed to stop using Flair, you would have to upgrade your smart contract or build functions to disable it. That's why we recommend using the "minter role" as described in the previous approach.