> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequence.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Checkout

> Documentation for Unreal SDK overview for the Sequence infrastructure stack for web3 gaming.

## Creating Transactions

### Generate Listing Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/P54GoXc5KxoCAtL8/images/unreal/checkout/generate_listing_transaction.png?fit=max&auto=format&n=P54GoXc5KxoCAtL8&q=85&s=c9e1586b07132752fecca988a3b4874b" width="2018" height="1064" data-path="images/unreal/checkout/generate_listing_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateListingTransaction(SequenceSdk::GetChainId(), WalletAddress, CollectionAddress, TokenId, Amount, ContractType, CurrencyTokenAddress, PricePerToken, Expiry, OrderbookKind, WalletKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Generate Offer Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/P54GoXc5KxoCAtL8/images/unreal/checkout/generate_offer_transaction.png?fit=max&auto=format&n=P54GoXc5KxoCAtL8&q=85&s=3605412a640e617758e757b87fb86db6" width="2018" height="1064" data-path="images/unreal/checkout/generate_offer_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateOfferTransaction(SequenceSdk::GetChainId(), WalletAddress, CollectionAddress, TokenId, Amount, ContractType, CurrencyTokenAddress, PricePerToken, Expiry, OrderbookKind, WalletKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Generate Buy Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/P54GoXc5KxoCAtL8/images/unreal/checkout/generate_buy_transaction.png?fit=max&auto=format&n=P54GoXc5KxoCAtL8&q=85&s=9a36556d94ab6aaacd7f0d66b4d557ae" width="2018" height="1064" data-path="images/unreal/checkout/generate_buy_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateBuyTransaction(SequenceSdk::GetChainId(), WalletAddress, Order, Amount, AdditionalFee, WalletKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Generate Sell Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/P54GoXc5KxoCAtL8/images/unreal/checkout/generate_sell_transaction.png?fit=max&auto=format&n=P54GoXc5KxoCAtL8&q=85&s=e5a5d204cb23c13a2893b948e358ed31" width="2018" height="1064" data-path="images/unreal/checkout/generate_sell_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateSellTransaction(SequenceSdk::GetChainId(), WalletAddress, Order, Amount, AdditionalFee, WalletKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Generate Cancel Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/P54GoXc5KxoCAtL8/images/unreal/checkout/generate_cancel_transaction.png?fit=max&auto=format&n=P54GoXc5KxoCAtL8&q=85&s=60ef63e9bb5f5041bc515415c41a417a" width="2018" height="1064" data-path="images/unreal/checkout/generate_cancel_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateCancelTransaction(SequenceSdk::GetChainId(), WalletAddress, CollectionAddress, OrderId, MarketplaceKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Generate Cancel Transaction by Order

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/P54GoXc5KxoCAtL8/images/unreal/checkout/generate_cancel_transaction_by_order.png?fit=max&auto=format&n=P54GoXc5KxoCAtL8&q=85&s=f8c868511e286aa35cf4d994a29f0511" width="2018" height="1064" data-path="images/unreal/checkout/generate_cancel_transaction_by_order.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGenerateTransactionResponse> OnApiSuccess = [this, OnSuccess](const FGenerateTransactionResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GenerateCancelTransactionByOrder(SequenceSdk::GetChainId(), WalletAddress, CollectionAddress, Order, MarketplaceKind, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Steps to Transaction

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/AFzdYwHtaLpVA9X3/images/unreal/checkout/steps_to_transaction.png?fit=max&auto=format&n=AFzdYwHtaLpVA9X3&q=85&s=0522f4043c64ce399277e575950e5836" width="2018" height="1064" data-path="images/unreal/checkout/steps_to_transaction.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    UTransactions* Transactions = NewObject<UTransactions>();

    for (const FTransactionStep& Step : Steps)
    {
        FRawTransaction RawTransaction = FRawTransaction(Step.To, Step.Data, Step.Value.IsEmpty() ? TEXT("0") : Step.Value);
        Transactions->AddRaw(RawTransaction);
    }
    ```
  </Tab>
</Tabs>

## Checkout Options

### Get Checkout Options

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/P54GoXc5KxoCAtL8/images/unreal/checkout/get_checkout_options.png?fit=max&auto=format&n=P54GoXc5KxoCAtL8&q=85&s=c7e13a1b07866d8ed686bfe50f7ebdd8" width="2018" height="1064" data-path="images/unreal/checkout/get_checkout_options.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetCheckoutOptionsResponse> OnApiSuccess = [this, OnSuccess](const FGetCheckoutOptionsResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GetCheckoutOptions(SequenceSdk::GetChainId(), WalletAddress, Orders, AdditionalFeeBps, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Get Checkout Options by Orders

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/P54GoXc5KxoCAtL8/images/unreal/checkout/get_checkout_options_by_orders.png?fit=max&auto=format&n=P54GoXc5KxoCAtL8&q=85&s=7bc2cfc87b9ca18fa3020f480fe95ff5" width="2018" height="1064" data-path="images/unreal/checkout/get_checkout_options_by_orders.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetCheckoutOptionsResponse> OnApiSuccess = [this, OnSuccess](const FGetCheckoutOptionsResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GetCheckoutOptionsByOrders(SequenceSdk::GetChainId(), WalletAddress, Orders, AdditionalFeeBps, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Get Checkout Options by ERC1155 Sale

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/P54GoXc5KxoCAtL8/images/unreal/checkout/get_checkout_options_by_erc1155.png?fit=max&auto=format&n=P54GoXc5KxoCAtL8&q=85&s=20d77fdab4bdbe94a6c17e74c719307d" width="2018" height="1064" data-path="images/unreal/checkout/get_checkout_options_by_erc1155.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetCheckoutOptionsResponse> OnApiSuccess = [this, OnSuccess](const FGetCheckoutOptionsResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GetCheckoutOptionsByERC1155Contract(SequenceSdk::GetChainId(), WalletAddress, SaleContract, CollectionAddress, TokenId, Amount, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Get Checkout Options by ERC721 Sale

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/P54GoXc5KxoCAtL8/images/unreal/checkout/get_checkout_options_by_erc721.png?fit=max&auto=format&n=P54GoXc5KxoCAtL8&q=85&s=5a208f5b36dae0cf8e4b35288254bddf" width="2018" height="1064" data-path="images/unreal/checkout/get_checkout_options_by_erc721.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetCheckoutOptionsResponse> OnApiSuccess = [this, OnSuccess](const FGetCheckoutOptionsResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GetCheckoutOptionsByERC721Contract(SequenceSdk::GetChainId(), WalletAddress, SaleContract, CollectionAddress, TokenId, Amount, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>

### Get Checkout Options by Token Id Amounts

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6/P54GoXc5KxoCAtL8/images/unreal/checkout/get_checkout_options_by_token_id_amounts.png?fit=max&auto=format&n=P54GoXc5KxoCAtL8&q=85&s=bb986f60334be0ffa4c3620c98bc577f" width="2018" height="1064" data-path="images/unreal/checkout/get_checkout_options_by_token_id_amounts.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FGetCheckoutOptionsResponse> OnApiSuccess = [this, OnSuccess](const FGetCheckoutOptionsResponse& Response) { };
    const FFailureCallback OnApiFailure = [this, OnFailure](const FSequenceError& Error) { };

    USequenceCheckout* Checkout = NewObject<USequenceCheckout>();
    Checkout->GetCheckoutOptionsByTokenIdAmounts(SequenceSdk::GetChainId(), WalletAddress, SaleContract, CollectionAddress, AmountsByTokenId, OnApiSuccess, OnApiFailure);
    ```
  </Tab>
</Tabs>
