Skip to main content

pm_getPaymasterData

Returns values to be used in paymaster-related fields of a signed user operation. This method uses 4950 credits from your daily balance.

Parameters

  • userOperation: The user operation object containing the following fields:

    • sender: (string) - The address of the account making the operation.
    • nonce: (string) - Unique identifier for the request from this sender. This includes the key and sequence number.
    • factory: (string) [optional] - The factory contract address that will deploy the smart account if it doesn't exist yet.
    • factoryData: (string) [optional] - The data passed to the factory contract to deploy the smart account.
    • callData: (string) [optional] - The data to pass to the sender during the main execution call.
    • callGasLimit: (string) - The amount of gas to allocate the main execution call.
    • verificationGasLimit: (string) - The amount of gas to allocate for the verification step.
    • preVerificationGas: (string) - The amount of gas to pay for to compensate the bundler for pre-verification execution and calldata.
    • maxFeePerGas: (string) - Maximum fee per gas, in wei, the sender is willing to pay per gas.
    • maxPriorityFeePerGas: (string) - Maximum fee, in wei, the sender is willing to pay per gas above the base fee.
    • paymaster: (string) [optional] - Address of paymaster sponsoring the transaction, or null if none.
    • paymasterVerificationGasLimit: (string) [optional] - The amount of gas to allocate for the verification step of the paymaster, or null if no paymaster.
    • paymasterPostOpGasLimit: (string) [optional] - The amount of gas to allocate for the post-operation step of the paymaster, or null if no paymaster.
    • paymasterData: (string) [optional] - The data to pass to the paymaster during the verification step, or null if no paymaster.
    • eip7702Auth: (object) [optional] - The EIP-7702 authorization data. This can be a dummy authorization:
      • address: (string) - The contract address for the authorization.
      • chainId: (string) - The chain ID.
      • nonce: (string) - The nonce.
      • r: (string) - The r component of the signature.
      • s: (string) - The s component of the signature.
      • v: (string) - The v component of the signature.
      • yParity: (string) - The y-parity value.
  • entryPoint: (string) - The EntryPoint contract address (0x0000000071727De22E5E9d8BAf0edAc6f37da032).

  • chainId: (string) - The chain ID in hexadecimal format.

  • context: (object) [optional] - Additional context information. Can be one of:

    • An object with token: (string) - The ERC-20 token address to use for payment.
    • An object with sponsorshipPolicyId: (string) - The ID of the sponsorship policy to use.
    • null - No additional context.

Returns

An object containing paymaster-related fields.

  • paymaster: (string) - The address of the paymaster contract.
  • paymasterData: (string) - The data to be used in the paymasterData field of the user operation.

Example

Replace <YOUR-API-KEY> with an API key from your MetaMask Developer dashboard.

Request

curl https://mainnet.infura.io/v3/<YOUR-API-KEY> \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "pm_getPaymasterData",
"params": [
{
"sender": "0x5a6b47F4131bf1feAFA56A05573314BcF44C9149",
"nonce": "0x845ADB2C711129D4F3966735ED98A9F09FC4CE5700000000000000000000",
"factory": "0xd703aaE79538628d27099B8c4f621bE4CCd142d5",
"factoryData": "0xc5265d5d0000000000000000...",
"callData": "0xe9ae5c53",
"callGasLimit": "0x13880",
"verificationGasLimit": "0x60B01",
"preVerificationGas": "0xD3E3",
"maxPriorityFeePerGas": "0x3B9ACA00",
"maxFeePerGas": "0x7A5CF70D5",
"paymaster": null,
"paymasterVerificationGasLimit": null,
"paymasterPostOpGasLimit": null,
"paymasterData": null,
"eip7702Auth": {
"address": "0x1234567890123456789012345678901234567890",
"chainId": "0x1",
"nonce": "0x1",
"r": "0x1234567890123456789012345678901234567890123456789012345678901234",
"s": "0x1234567890123456789012345678901234567890123456789012345678901234",
"v": "0x1b",
"yParity": "0x1"
}
},
"0x0000000071727De22E5E9d8BAf0edAc6f37da032",
"0x1",
{
"token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
}
],
"id": 4337
}'

Response

{
"jsonrpc": "2.0",
"id": 4337,
"result": {
"paymaster": "0x0000000000000039cd5e8aE05257CE51C473ddd1",
"paymasterData": "0x01000066d1a1a4000000000000036cbd53842c5426634e7929541ec2318f3dcf7e0000000000000000000000000000c350000000000000000000000000000000000000000000000000000000009666598f0b846603deb0a8e59b78ba3dce9c3466394ccf07795d38ecf7925dfe12c07a022c27bb199099fa54de2f5e3e87dd9c581df52e9d3d199166a31124cc1227a9921b"
}
}