Observed since 21 Oct, 10:03 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Checkout UI for Sequence Web SDK
Sequence Checkout provides a seamless and flexible payment experience for interacting with NFTs, cryptocurrencies, and fiat currencies. It supports multiple payment options, including cryptocurrency transfers, currency swaps, and even credit card payments for whitelisted contracts.
First install the package:
npm install @0xsequence/checkout
# or
pnpm install @0xsequence/checkout
# or
yarn add @0xsequence/checkout
Then the wallet provider module must placed below the Sequence Web SDK Core provider.
import { SequenceCheckoutProvider } from '@0xsequence/checkout'
const App = () => {
return (
<SequenceConnect config={config}>
<SequenceCheckoutProvider>
<Page />
</SequenceCheckoutProvider>
</SequenceConnect>
)
}
NFT Checkout allows users to purchase NFTs using various payment methods. Users can pay with the main currency (e.g., ETH), swap tokens for payment, or use a credit card provided the smart contract is whitelisted (contact a member of the Sequence team to whitelist your contract for credit card payments).
To enable this functionality in your app, use the useSelectPaymentModal hook from the @0xsequence/checkout package. The following code demonstrates how to set up the checkout modal and trigger it on a button click:
import { useSelectPaymentModal, type SelectPaymentSettings } from '@0xsequence/checkout'
const MyComponent = () => {
const { openSelectPaymentModal } = useSelectPaymentModal()
const onClick = () => {
const erc1155SalesContractAbi = [
{
type: 'function',
name: 'mint',
inputs: [
{ name: 'to', type: 'address', internalType: 'address' },
{ name: 'tokenIds', type: 'uint256[]', internalType: 'uint256[]' },
{ name: 'amounts', type: 'uint256[]', internalType: 'uint256[]' },
{ name: 'data', type: 'bytes', internalType: 'bytes' },
{ name: 'expectedPaymentToken', type: 'address', internalType: 'address' },
{ name: 'maxTotal', type: 'uint256', internalType: 'uint256' },
{ name: 'proof', type: 'bytes32[]', internalType: 'bytes32[]' }
],
outputs: [],
stateMutability: 'payable'
}
]
const purchaseTransactionData = encodeFunctionData({
abi: erc1155SalesContractAbi,
functionName: 'mint',
args: [
recipientAddress,
collectibles.map(c => BigInt(c.tokenId)),
collectibles.map(c => BigInt(c.quantity)),
toHex(0),
currencyAddress,
price,
[toHex(0, { size: 32 })]
]
})
const settings: SelectPaymentSettings = {
collectibles: [
{
tokenId: '1',
quantity: '1'
}
],
chain: chainId,
price,
targetContractAddress: salesContractAddress,
recipientAddress: address,
currencyAddress,
collectionAddress,
creditCardProviders: ['transak'],
copyrightText: 'ⓒ2024 Sequence',
onSuccess: (txnHash?: string) => {
console.log('success!', txnHash)
},
onError: (error: Error) => {
console.error(error)
},
txData: purchaseTransactionData,
}
openSelectPaymentModal(settings)
}
return <button onClick={onClick}>Purchase collectible</button>
}
onSuccess.The @0xsequence/checkout library indeed simplifies the integration of Web3 payment solutions by providing utility functions. One such function, useERC1155SaleContractPaymentModal, is tailored for use cases involving the minting of ERC-1155 tokens. This function works in conjunction with Sequence's wallet ecosystem and its deployable smart contract infrastructure, such as the ERC-1155 sale contract available through the Sequence Builder.
import { useERC1155SaleContractCheckout } from "@0xsequence/checkout";
import { useAccount } from "wagmi";
const MyComponent = () => {
const { address: userAddress } = useAccount();
const { openCheckoutModal } = useERC1155SaleContractCheckout({
chain: 80001, // chainId of the chain the collectible is on
contractAddress: "0x0327b2f274e04d292e74a06809bcd687c63a4ba4", // address of the contract handling the minting function
wallet: userAddress!, // address of the recipient
collectionAddress: "0x888a322db4b8033bac3ff84412738c096f87f9d0", // address of the collection contract
items: [
// array of collectibles to purchase
{
tokenId: "0",
quantity: "1",
},
],
onSuccess: (txnHash?: string) => {
console.log("success!", txnHash);
},
onError: (error: Error) => {
console.error(error);
},
});
const onClick = () => {
if (!userAddress) {
return;
}
openCheckoutModal();
};
return <button onClick={onClick}>Buy ERC-1155 collectible!</button>;
};
The Swap Modal allows users to swap one currency for another (e.g., ETH to USDC) before completing a transaction. This feature is useful when users need to convert their tokens into the correct currency for payment.
Here’s an example of how to use the Swap Modal with the useSwapModal hook:
import { useSwapModal, type SwapModalSettings } from '@0xsequence/checkout'
const MyComponent = () => {
const { openSwapModal } = useSwapModal()
const onClick = () => {
const chainId = 137
const currencyAddress = '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
const currencyAmount = '20000'
const data = encodeFunctionData({ abi: parseAbi(['function demo()']), functionName: 'demo', args: []})
const swapModalSettings: SwapModalSettings = {
onSuccess: () => {
console.log('swap successful!')
},
chainId,
currencyAddress,
currencyAmount,
postSwapTransactions: [
{
to: '0x37470dac8a0255141745906c972e414b1409b470',
data
}
],
title: 'Swap and Pay',
description: 'Select a token in your wallet to swap to 0.2 USDC.'
}
openSwapModal(swapModalSettings)
}
return <button onClick={onClick}>Swap and Pay</button>
}
The Fiat Onramp feature allows users to convert traditional fiat currencies (e.g., USD) into cryptocurrencies. This feature makes it easier for non-crypto users to interact with decentralized applications (dApps) by onboarding them directly through fiat payments.
import { useAddFundsModal } from '@0xsequence/checkout'
const MyComponent = () => {
const { triggerAddFunds } = useAddFundsModal()
const onClick = () => {
triggerAddFunds({
walletAddress: recipientAddress
})
}
return <button onClick={onClick}>Add Funds</button>
}
Fully customized checkout UIs can be created with the useCheckoutUI hook. The hook will return three objects orderSummary, creditCardPayment and cryptoPayment which serve to create the order summary section, credit card payment section and crypto payment section of a checkout UI. API calls are done within the hook and all that if left to build is placing the information and actions.
Each section comes with its own loading, error and data states.
import { useCheckoutUI } from '@0xsequence/checkout'
const CustomCheckoutUI = () => {
const checkoutUIParams = {
collectible,
chain: chainId,
totalPriceRaw: price,
targetContractAddress: salesContractAddress,
recipientAddress: address || '',
currencyAddress,
collectionAddress,
creditCardProvider: 'transak' as CreditCardProviders,
onSuccess: (txnHash?: string) => {
console.log('success!', txnHash)
},
onError: (error: Error) => {
console.error(error)
},
txData: purchaseTransactionData
}
const { orderSummary, creditCardPayment, cryptoPayment } = useCheckoutUI(checkoutUIParams)
const isLoading = orderSummary.isLoading || creditCardPayment.isLoading || cryptoPayment.isLoading
const error = orderSummary.error || creditCardPayment.error || cryptoPayment.error
if (isLoading) {
return <div>loading...</div>
}
if (error) {
return <div>an error has occurred</div>
}
return (
<CustomOrderSummaryComponent data={orderSummary.data}>
<CustomCreditCardComponent data={creditCardPayment.data}>
<CustomCryptoPaymentComponent data={cryptoPayment.data} purchaseAction={cryptoPayment.purchaseAction}>
)
}
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 5.4.12Registry latest | 13 Jul 2026 | 16 | |
| 6.0.9 | 13 Jul 2026 | 15 | |
| 6.0.8 | 30 Jun 2026 | 15 | |
| 6.0.7 | 24 Jun 2026 | 15 | |
| 6.0.6 | 14 May 2026 | 15 | |
| 5.4.11 | 9 Apr 2026 | 16 | |
| 6.0.5 | 9 Apr 2026 | 15 | |
| 6.0.4 | 8 Apr 2026 | 15 | |
| 5.4.10 | 30 Mar 2026 | 16 | |
| 6.0.3 | 30 Mar 2026 | 15 | |
| 6.0.2 | 13 Mar 2026 | 15 | |
| 5.4.9 | 13 Mar 2026 | 23 | |
| 0.0.0-20260311175940 | 11 Mar 2026 | 23 | |
| 6.0.1 | 10 Mar 2026 | 15 | |
| 6.0.0 | 4 Mar 2026 | 22 | |
| 6.0.0-beta.4 | 13 Feb 2026 | 23 | |
| 6.0.0-beta.3 | 12 Feb 2026 | 23 | |
| 6.0.0-beta.2 | 12 Feb 2026 | 23 | |
| 0.0.0-20260210215314 | 10 Feb 2026 | 23 | |
| 6.0.0-beta.1 | 2 Feb 2026 | 23 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 10:03 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:f8f683ef906cb62eedc7ce5ab0aecf46604beea89d6fce5eefe23d85facda6ad