Available Guards

Asset Payment Multi Guard

Last updated March 10, 2026

The Asset Payment Multi guard requires the minter to transfer one or more Core Assets from a specified collection as payment in order to mint from the Core Candy Machine.

Overview

The Asset Payment Multi guard allows minting by charging the payer one or more Core Asset(s) from a specified Asset collection. The Asset(s) will be transferred to a predefined destination.

If the payer does not own an Asset from the required collection, minting will fail.

The guard is similar to the Asset Payment Guard but can accept more than one asset to pay with.

Guard Settings

The Asset Payment Multi guard contains the following settings:

  • Required Collection: The mint address of the required Collection. The Asset we use to pay with must be part of this collection.
  • Destination: The address of the wallet that will receive all Assets.
  • Number: The amount of assets that have to be paid.

Set up a Candy Machine using the Asset Payment Multi Guard

create(umi, {
// ...
guards: {
assetPaymentMulti: some({
requiredCollection: requiredCollection.publicKey,
destination: umi.identity.publicKey,
num: 2
}),
},
});

API References: create, AssetPaymentMulti

Mint Settings

The Asset Payment Multi guard contains the following Mint Settings:

  • [Asset Address]: An array of the Assets to pay with. These must be part of the required collection and must belong to the minter.
  • Collection Address: The Address of the Collection that is used for payment.
  • Destination: The address of the wallet that will receive all Assets.

Note that, if you're planning on constructing instructions without the help of our SDKs, you will need to provide these Mint Settings and more as a combination of instruction arguments and remaining accounts. See the Core Candy Guard's program documentation for more details.

Set up a Candy Machine using the Asset Payment Multi Guard

You may pass the Mint Settings of the Asset Payment Multi guard using the mintArgs argument like so.

mintV1(umi, {
// ...
mintArgs: {
assetPaymentMulti: some({
requiredCollection: publicKey(requiredCollection),
destination,
assets: [firstAssetToSend.publicKey, secondAssetToSend.publicKey],
num: 2
}),
},
});

API References: mintV1, AssetPaymentMultiMintArgs

Route Instruction

The Asset Payment Multi guard does not support the route instruction.

Notes

  • All Assets used as payment are permanently transferred to the destination wallet -- the minter loses ownership of each one.
  • The num field in Guard Settings must match the number of Asset addresses provided in the assets array during minting.
  • Every Asset in the assets array must belong to the specified required collection; if any Asset is from a different collection, the mint transaction will fail.
  • To require only a single Asset as payment, use the Asset Payment guard instead.