diff --git a/developers/asset-pricing.md b/developers/asset-pricing.md
index bf6104ef..878d307f 100644
--- a/developers/asset-pricing.md
+++ b/developers/asset-pricing.md
@@ -21,6 +21,53 @@ This datatoken represents the access right to your data, so buyers don't have to
The fixed pricing model relies on the [createNftWithErc20WithFixedRate](https://github.com/oceanprotocol/contracts/blob/main/contracts/ERC721Factory.sol#LL674C14-L674C45) in our smart contract, which securely stores the pricing information for assets published using this model.
+
+
+Create NFT with Fixed Rate Pricing
+
+```javascript
+/**
+ * @dev createNftWithErc20WithFixedRate
+ * Creates a new NFT, then a ERC20, then a FixedRateExchange, all in one call
+ * Use this carefully, because if Fixed Rate creation fails, you are still going to pay a lot of gas
+ * @param _NftCreateData input data for NFT Creation
+ * @param _ErcCreateData input data for ERC20 Creation
+ * @param _FixedData input data for FixedRate Creation
+ */
+function createNftWithErc20WithFixedRate(
+NftCreateData calldata _NftCreateData,
+ErcCreateData calldata _ErcCreateData,
+FixedData calldata _FixedData
+) external nonReentrant returns (address erc721Address, address erc20Address, bytes32 exchangeId){
+//we are adding ourselfs as a ERC20 Deployer, because we need it in order to deploy the fixedrate
+erc721Address = deployERC721Contract(
+ _NftCreateData.name,
+ _NftCreateData.symbol,
+ _NftCreateData.templateIndex,
+ address(this),
+ address(0),
+ _NftCreateData.tokenURI,
+ _NftCreateData.transferable,
+ _NftCreateData.owner);
+erc20Address = IERC721Template(erc721Address).createERC20(
+ _ErcCreateData.templateIndex,
+ _ErcCreateData.strings,
+ _ErcCreateData.addresses,
+ _ErcCreateData.uints,
+ _ErcCreateData.bytess
+);
+exchangeId = IERC20Template(erc20Address).createFixedRate(
+ _FixedData.fixedPriceAddress,
+ _FixedData.addresses,
+ _FixedData.uints
+ );
+// remove our selfs from the erc20DeployerRole
+IERC721Template(erc721Address).removeFromCreateERC20List(address(this));
+}
+```
+
+
+
{% hint style="info" %}
There are two templates available: [ERC20Template](contracts/datatoken-templates.md#regular-template) and [ERC20TemplateEnterprise](contracts/datatoken-templates.md#enterprise-template).
@@ -39,7 +86,54 @@ In this model, datatokens are allocated to a dispenser smart contract, which dis
The fixed pricing model relies on the [createNftWithErc20WithDispenser](https://github.com/oceanprotocol/contracts/blob/main/contracts/ERC721Factory.sol#LL713C14-L713C45) in our smart contract, which securely stores the pricing information for assets published using this model.
+
+Create NFT with Free Pricing
+
+```javascript
+/**
+ * @dev createNftWithErc20WithDispenser
+ * Creates a new NFT, then a ERC20, then a Dispenser, all in one call
+ * Use this carefully
+ * @param _NftCreateData input data for NFT Creation
+ * @param _ErcCreateData input data for ERC20 Creation
+ * @param _DispenserData input data for Dispenser Creation
+ */
+function createNftWithErc20WithDispenser(
+ NftCreateData calldata _NftCreateData,
+ ErcCreateData calldata _ErcCreateData,
+ DispenserData calldata _DispenserData
+) external nonReentrant returns (address erc721Address, address erc20Address){
+ //we are adding ourselfs as a ERC20 Deployer, because we need it in order to deploy the fixedrate
+ erc721Address = deployERC721Contract(
+ _NftCreateData.name,
+ _NftCreateData.symbol,
+ _NftCreateData.templateIndex,
+ address(this),
+ address(0),
+ _NftCreateData.tokenURI,
+ _NftCreateData.transferable,
+ _NftCreateData.owner);
+ erc20Address = IERC721Template(erc721Address).createERC20(
+ _ErcCreateData.templateIndex,
+ _ErcCreateData.strings,
+ _ErcCreateData.addresses,
+ _ErcCreateData.uints,
+ _ErcCreateData.bytess
+ );
+ IERC20Template(erc20Address).createDispenser(
+ _DispenserData.dispenserAddress,
+ _DispenserData.maxTokens,
+ _DispenserData.maxBalance,
+ _DispenserData.withMint,
+ _DispenserData.allowedSwapper
+ );
+ // remove our selfs from the erc20DeployerRole
+ IERC721Template(erc721Address).removeFromCreateERC20List(address(this));
+}
+```
+
+
To make the most of these pricing models, you can rely on user-friendly libraries such as [Ocean.js ](ocean.js/)and [Ocean.py](ocean.py/), specifically developed for interacting with Ocean Protocol. With Ocean.js, you can use the [createFRE() ](ocean.js/publish.md)function to effortlessly deploy a data NFT (non-fungible token) and datatoken with a fixed-rate exchange pricing model. Similarly, in Ocean.py, the [create\_url\_asset()](ocean.py/publish-flow.md#create-an-asset-and-pricing-schema-simultaneously) function allows you to create an asset with fixed pricing. These libraries simplify the process of interacting with Ocean Protocol, managing pricing, and handling asset creation.