# Secondary Sales via NMKR Pay

The NMKR Studio API can be used to set up a Secondary Sale of an already minted token.\
This allows you to list and sell any Token for a specified price via NMKR Pay.

{% hint style="info" %}
Please keep in mind that you can only sell tokens that are in your possession.\
You will be later asked to lock this token in the smart contract during the listing process.
{% endhint %}

#### API Endpoint

In order to sell an already minted NFT we need to create a payment transaction with NMKR Studio via the following API endpoint:

```
/v2/CreatePaymentTransaction
```

#### Payload

The payload to create the payment transaction should be look like the following.\
The Authentication token / API Key must be given in the header!\
Please replace the \<placeholders> (PolicyID, TokenName, Price in Lovelace as integer) with the according information.

```json
{
    "projectUid": "176fb45d-bbc9-4d9a-9374-a6efe442874d",
    "paymentTransactionType": "Smartcontract_directsale",
    "customProperties": null,
    "transactionParameters": [
        {
            "tokencount": 1,
            "policyId": "<PolicyId>",
            "tokenname": "<TokenName>"
        }
    ],
    "paymentgatewayParameters": null,
    "decentralParameters": null,
    "auctionParameters": null,
    "directSaleParameters": {
        "priceInLovelace": <Price in Lovelace as integer>
    },
    "customerIpAddress": "0.0.0.0",
    "paymentTransactionNotifications": null,
    "referer": null
}
```

{% hint style="info" %}
The projectUid in the payload above can be any random UID of any project in NMKR Studio. This is only neccessary to utilize NMKR Pay and is not related to the token that will be listed. To ease the process here, we already added a random Uid.
{% endhint %}

#### Curl example

```json
curl -X 'POST' \
  'https://studio-api.nmkr.io/v2/CreatePaymentTransaction' \
  -H 'accept: text/plain' \
  -H 'Authorization: Bearer 1ac2cb0abea146xyzxyz8a90701dad311c' \
  -H 'Content-Type: application/json' \
  -d '{
    "projectUid": "176fb45d-bbc9-4d9a-9374-a6efe442874d",
    "paymentTransactionType": "Smartcontract_directsale",
    "customProperties": null,
    "transactionParameters": [
        {
            "tokencount": 1,
            "policyId": "63cb7af8c980f0867940e765f36fa53ac948d9af51179742291a553e",
            "tokenname": "0001"
        }
    ],
    "paymentgatewayParameters": null,
    "decentralParameters": null,
    "auctionParameters": null,
    "directSaleParameters": {
        "priceInLovelace": 123000000
    },
    "customerIpAddress": "0.0.0.0",
    "paymentTransactionNotifications": null,
    "referer": null
}'
```

#### Response

You will now receive the following response, where the \<Placeholders> will be automatically replaced by NMKR Studio. Please copy the \<paymentTransactionUid> for the next step.

```json
{
  "paymentTransactionUid": "<paymentTransactionUid>",
  "projectUid": "<NMKR Studio Project Id>",
  "paymentTransactionType": "smartcontract_directsale",
  "customProperties": {},
  "state": "prepared",
  "transactionParameters": [
    {
      "tokencount": 1,
      "policyId": "<PolicyId>",
      "tokenname": "<TokenName in hex format>"
    }
  ],
  "paymentTransactionCreated": "<Creation Date and Time>",
  "paymentgatewayResults": null,
  "paymentTransactionSubStateResult": {
    "paymentTransactionSubstate": "waitingforlocknft",
    "lastTxHash": null
  },
  "auctionResults": null,
  "directSaleResults": {
    "sellingPrice": <Selling price in Lovelace as integer>,
    "marketplaceAmount": <<Market place fee in Lovelace as integer>,
    "sellerAmount": <Seller amount Price in Lovelace as integer>,
    "royaltyAmount": <Royalty amount in Lovelace as integer>,
    "additionalPayoutAmount": null,
    "lockedInAmount": <Locked in amount in Lovelace as integer>,
    "sellerAddress": null,
    "buyerAddress": null,
    "sellerTxHash": null,
    "sellerTxCreate": null
  },
  "decentralParameters": null,
  "mintAndSendResults": null,
  "cbor": null,
  "signedCbor": null,
  "expires": null,
  "signGuid": null,
  "fee": null,json
  "txHash": null
}
```

### Generate NMKR Pay Links

The NMKR Pay links for the listing, as well as the sales can now be generated with the \<paymentTransactionUid> that was given in the previous response.

#### NMKR Pay link for Listing

Replace the \<paymentTransactionUid> with the value that was given in the [response](#response).

```
https://pay.nmkr.io/?adsid=<paymentTransactionUid>&a=list
```

You can now use this link to list your token on the smart contract by signing the transaction via NMKR Pay.

{% hint style="warning" %}
The unlisting feature is currently being developed.
{% endhint %}

#### NMKR Pay link for Sales

Replace the \<paymentTransactionUid> with the value that was given in the[ response](#response).

```
https://pay.nmkr.io/?adsid=<paymentTransactionUid>&a=buy
```

This link can be used to buy the token once the token was listed in the smart contract.

#### NMKR Pay link for Canceling

Replace the \<paymentTransactionUid> with the value that was given in the[ response](#response).

```
https://pay.nmkr.io/?adsid=<paymentTransactionUid>&a=manage
```

This link can be used to cancel the token listing once the token was listed in the smart contract.\
The token will be sent back to the wallet.

{% hint style="info" %}
A listing can only be cancelled from the wallet that was used for the listing.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nmkr.io/nmkr-studio-api/api-examples/smart-contract/secondary-sales-via-nmkr-pay.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
