> For the complete documentation index, see [llms.txt](https://docs.usemeta.fi/unity-sdk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.usemeta.fi/unity-sdk/sdk-reference/checkout.md).

# Checkout

{% hint style="info" %}
This function triggers a modal for the user to confirm the transfer
{% endhint %}

## Description

The checkout function is designed to be the simplest way for your users to purchase items on your website using crypto. Once users complete their purchase, you will receive a webhook at the URL that you configure.

## Details

### Signature

```csharp
Task Checkout(dynamic args, System.Action<dynamic> callback = null)
```

### Arguments

<table><thead><tr><th width="258">Parameter</th><th width="114">Type</th><th>Definition</th></tr></thead><tbody><tr><td><code>callback?</code></td><td>Action&#x3C;dynamic></td><td>Function that will be invoked once the transaction is complete</td></tr><tr><td><code>args.treasuryAddress</code></td><td>String</td><td>Address to send funds to. This should be your treasury address.</td></tr><tr><td><code>args.cost</code></td><td>String</td><td>Amount to send in <strong>display units</strong> of the currency. So if you want the user to pay 0.5 ETH, pass in '0.5' to this field.</td></tr><tr><td><code>args.currency</code></td><td>Metafi.Unity.Asset</td><td>Asset object of the currency you want to accept as the mode of payment. </td></tr><tr><td><code>args.itemDescription</code></td><td>String</td><td>Description of the item that you would like users to be shown on the Checkout screen.</td></tr><tr><td><code>args.webhookMetadata?</code></td><td>String</td><td><p>Metadata you want to be sent along with your webhook. Please validate this data on your webhook notification endpoint before using. Eg. </p><p><code>'{productName:"Crew T-shirt",sku:AX19281BN}'</code></p></td></tr></tbody></table>

### Return Value

None

### Webhook

You can configure a POST Webhook URL in the developer portal that will be invoked once the funds have been transferred to your treasury address.&#x20;

The following is the format of the webhook call body:

```json
{
    "webhookMetadata": "webhookMetadata",  // metadata passed in during function input
    "currencyMetadata": {
        "exchangeRate": 0.005,
        "fiatCurrency": "usd",
        "cryptoCurrency": "eth_eth"
    },
    "value": "1.5",
    "gasFees": "0.005",
    "from": "0x40562Cf2E90f23b3969d782B5c8f134A77069b49",
    "to": "0xfFEaf294106b610d0cdD4afaAfe861563c72BB76",  // your treasury wallet address
}
```

## Example

{% code lineNumbers="true" %}

```csharp
using System;
using Metafi.Unity;

public class CheckoutButton : MonoBehaviour {
    public async void Checkout(){
        await MetafiProvider.Instance.Checkout( new {
            cost = "0.001",
            currency = Assets.MUMBAI_MATIC,
            itemDescription = "Pet NFT",
            treasuryAddress = "your-treasury-address",
            webhookMetadata = "{\"func\":\"buyNft\"}",
        }, 
        ((System.Action<dynamic>) (result => {
            Debug.Log("Checkout complete, result: " + result.ToString());
        })));
    }
}

```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.usemeta.fi/unity-sdk/sdk-reference/checkout.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
