{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["openapiLink"]},"type":"markdown"},"seo":{"title":"Use-case tutorial: NFT store","description":"Tilia Wallet Developer Documentation","siteUrl":"https://thunes-tilia-docs.redocly.app/","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"use-case-tutorial-nft-store","__idx":0},"children":["Use-case tutorial: NFT store"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In this tutorial, you demonstrate the interactions that are common in NFT"," ","(non-fungible token) stores."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Allow about 30 minutes to complete this tutorial."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following diagram shows how the escrow transactions that Tilia services provide"," ","works for an NFT sale."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/tutorial-nft-flow.2f61c859c9f59096f9494c4ec8b99b5cddecf8468d95d001293874de1aebcc98.9c1bb791.png","alt":"Diagram of NFT marketplace interactions"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the case of an NFT, the purchase and delivery of the product happen in different venues."," ","The NFT is purchased in your application's marketplace, for example, while the delivery,"," ","the transfer of ownership, takes place in a blockchain."," ","Tilia services supports these sales by using escrow transactions."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In an escrow transaction used to purchase an NFT:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The publisher creates an escrow invoice for the transaction."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The buyer pays the invoice."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Upon notice of payment, the NFT's ownership is transferred."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After ownership is transferred, the payment is released to the publisher."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"api-operations-in-this-tutorial","__idx":1},"children":["API operations in this tutorial"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This tutorial uses the Tilia APIs in this table to demonstrate these common interactions"," ","to onboard a new user to an NFT marketplace."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Tutorial interaction"},"children":["Tutorial interaction"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"API operations used"},"children":["API operations used"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Add payer's user account"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"OpenapiLink","attributes":{"link":"accounts/openapi/other/registeraccounthandlerfor","text":"Register account"},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Add a payment method to payer (UI)"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Add Payment Method widget"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Get payer's payment methods"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"OpenapiLink","attributes":{"link":"payments/openapi/other/getpaymentmethods","text":"Get payment methods"},"children":[]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This tutorial then uses the Tilia APIs in this table to demonstrate these interactions"," ","to process the escrow transaction for an NFT."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Tutorial interaction"},"children":["Tutorial interaction"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"API operations used"},"children":["API operations used"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Create the escrow transaction"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"OpenapiLink","attributes":{"link":"invoicing/openapi/invoice/authorizeinvoice","text":"Authorize invoice"},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Pay escrow transaction"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"OpenapiLink","attributes":{"link":"invoicing/openapi/escrow-transaction/payescrowtransaction","text":"Pay an escrow transaction"},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"Note that in this tutorial, the invoice is paid in the Checkout UI."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Commit escrow transaction"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"OpenapiLink","attributes":{"link":"invoicing/openapi/escrow-transaction/commitescrowtransaction","text":"Commit an escrow transaction"},"children":[]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"to-complete-this-tutorial","__idx":2},"children":["To complete this tutorial"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This tutorial uses the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["_Manage user accounts"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Explore Tilia transactions"]}," collections from the"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.postman.com/tilia-docs-testing/workspace/get-started-using-tilia-services/overview"},"children":["shared workspace"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To complete this tutorial successfully:"]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Make sure the software described in ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/tutorials/tutorial_get_started"},"children":["Get started with the tutorials"]}," ","has been installed on your system and configured."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In Postman:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Open the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Tilia tutorial workspace"]}," you created in"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/tutorials/tutorial_get_started"},"children":["Get started with the tutorials"]}," for this tutorial."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Make sure you have the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["_Manage user accounts"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Explore Tilia transactions"]}," collections"," ","forked to your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Tilia tutorial workspace"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Make sure that you've selected the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Tilia Client Info"]}," environment and confirmed that it has:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your Tilia developer credentials."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All of the user-related environment variables with ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Current values"]}," defined."]}]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Tilia tutorial workspace"]},", open the list of ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Collections"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If it's been more than an hour since you last got an access token for this collection,"," ","get a new one as described in ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/tutorials/use-cases#get-an-access-token"},"children":["Tutorial: Transactions overview"]},","," ","and then return to continue here."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"add-new-users-to-the-marketplace","__idx":3},"children":["Add new users to the marketplace"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/tutorials/user-accounts"},"children":["User account tutorials"]}," demonstrate adding new users."," ","If you've recently completed the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/tutorials/user-accounts"},"children":["User account tutorials"]},","," ","you can review those exercises to make sure the user accounts are ready to make transactions."," ","If not, complete those tutorials before continuing."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the user accounts of your store are ready, continue to the next section."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"buy-an-nft","__idx":4},"children":["Buy an NFT"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In this exercise, you create an escrow transaction on behalf of the payer who"," ","wants to buy a single NFT using the credit card they added in the previous exercise."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The purchase process includes these interactions:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Tutorial interaction"},"children":["Tutorial interaction"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"API operations used"},"children":["API operations used"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Create the escrow transaction"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"OpenapiLink","attributes":{"link":"invoicing/openapi/invoice/authorizeinvoice","text":"Authorize invoice"},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Pay escrow transaction"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"OpenapiLink","attributes":{"link":"invoicing/openapi/escrow-transaction/payescrowtransaction","text":"Pay an escrow transaction"},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Transfer of NFT ownership"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Processed by the marketplace application"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Commit escrow transaction"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"OpenapiLink","attributes":{"link":"invoicing/openapi/escrow-transaction/commitescrowtransaction","text":"Commit an escrow transaction"},"children":[]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In another window, open the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/tutorials/transactions/tutorial_txn_nft"},"children":["Make NFT purchase transactions"]}," tutorial"," ","to process an NFT purchase, and then return to continue in this topic."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"view-the-transaction-details","__idx":5},"children":["View the transaction details"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After completing the previous transaction, you can look at the transaction details to see"," ","the record of the transaction."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In another window, open ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/tutorials/transactions/tutorial_txn_info#get-transaction-details-api"},"children":["Get transaction details (API)"]}," ","and follow the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To use the Tilia API to get the details of the most recent escrow transaction"]}," procedure."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you look at the transaction details of an escrow invoice, notice that the escrow"," ","invoice contains three separate invoices, one for each stage of the transaction."," ","To see the details of those invoices, follow the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To use the Tilia API to get the details of the"," ","most recent standard transaction"]}," procedure, and replace the default invoice ID with an invoice ID"," ","value from the escrow invoice."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"conclusion","__idx":6},"children":["Conclusion"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The exercises in this tutorial walked you through interactions that are common"," ","in an NFT marketplace."," ","You can build your NFT marketplace on these Tilia services to"," ","get started."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You might also enhance your NFT store's experience by adding these features:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/tutorials/use-cases/tutorial_use_case_royalties"},"children":["Royalties"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"#"},"children":["Commissions"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/tutorials/use-cases/tutorial_use_case_patron"},"children":["Patronage"]}]}]}]},"headings":[{"value":"Use-case tutorial: NFT store","id":"use-case-tutorial-nft-store","depth":1},{"value":"API operations in this tutorial","id":"api-operations-in-this-tutorial","depth":3},{"value":"To complete this tutorial","id":"to-complete-this-tutorial","depth":2},{"value":"Add new users to the marketplace","id":"add-new-users-to-the-marketplace","depth":2},{"value":"Buy an NFT","id":"buy-an-nft","depth":2},{"value":"View the transaction details","id":"view-the-transaction-details","depth":2},{"value":"Conclusion","id":"conclusion","depth":2}],"frontmatter":{"seo":{"title":"Use-case tutorial: NFT store"}},"lastModified":"2026-02-05T18:12:30.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/tutorials/use-cases/tutorial_use_case_nft","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}