Offers
An offer is a signed EIP-712 MakerOrder that represents a buyer's bid to purchase an NFT or a group of NFTs. Offers can be made on:
- Specific NFTs: Offering to buy a single specific token.
- Collections (Collection-wide): Offering to buy any NFT in a collection.
- Traits: Offering to buy any NFT in a collection that matches a specific trait (e.g.
Background: Blue).
Offers are stored off-chain and settled on-chain when a seller accepts the offer.
Operations
| Operation | Endpoint | Description |
|---|---|---|
| Create | POST /v1/offers | Submit a new signed offer order |
| Query | GET /v1/offers | Fetch active offers on a collection or NFT |
| Cancel | DELETE /v1/offers/:orderHash | Cancel an active offer |
EIP-712 Order Fields
Each offer is a MakerOrder struct signed by the buyer:
| Field | Type | Value |
|---|---|---|
isOrderAsk | bool | Always false for buy offers |
signer | address | Buyer's wallet address |
collection | address | NFT contract address |
price | uint256 | Price in Wei (WCRO) |
tokenId | uint256 | 0 for collection/trait offers, or the specific NFT token ID |
amount | uint256 | Always 1 for ERC-721 |
strategy | address | Resolved automatically by the builder API |
currency | address | WCRO: 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23 |
nonce | uint256 | Unique order nonce (use current timestamp) |
startTime | uint256 | Offer start — Unix epoch (seconds) |
endTime | uint256 | Offer expiration — Unix epoch (seconds) |
minPercentageToAsk | uint256 | Always 8500 (85% minimum return) |
params | bytes | 0x or Merkle root parameter (generated automatically by builder API for trait offers) |
WCRO & Approval Requirements
Because offers are signed off-chain, the buyer's wallet must hold the required WCRO (Wrapped CRO) balance and have approved the exchange contract to spend WCRO on their behalf.
The Partner API validates these requirements on-chain during offer submission:
- WCRO Token Address:
0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23 - Exchange Spender Address:
0xdFbE43b2c154B6a790158fa2696cDb32A86Efc78 - Validation: If the buyer does not have enough WCRO balance or has not approved the exchange, the submission will be rejected with an
INSUFFICIENT_BALANCEorINSUFFICIENT_ALLOWANCEerror.