Paymaster V2 RPC Methods
JSON-RPC API reference for Candide's Paymaster service
Visit dashboard to get an API key for Candide's Paymaster.
pm_supportedERC20Tokens
Gets supported ERC-20 Tokens for gas payments, along side the paymaster metadata
Invocation
{ "method": "pm_supportedERC20Tokens", "params": [] }
Return
{ "result": { paymasterMetadata, tokens } }
- Example Request
- Example Response
- Response Types
{
  "jsonrpc": "2.0",
  "id": 0,
  "method": "pm_supportedERC20Tokens",
  "params": []
}
{
  "jsonrpc": "2.0",
  "id": 0,
  "result": {
    "paymasterMetadata": {
      "name": "Candide Paymaster",
      "description": "Candide Paymaster a fast, secure and feature-rich 4337 Paymaster",
      "icons": [],
      "address": "0x7e3393ebA62DA6f555a5341E079e0F6585CE8c56",
      "sponsoredEventTopic": "0x13..fa1",
      "dummyPaymasterAndData": "0x69...135",
    },
    "tokens": [
      {
        "symbol": "DAI",
        "address": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1",
        "decimal": "0x12",
        "fee": "0x0",
        "exchangeRate": "0x0ddeb609310c89b1"
      }
    ]
  }
}
| Paramater | Type | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| paymasterMetadata | Object 
 | |||||||||||||||||||||
| tokens | Object[] 
 | 
pm_sponsorUserOperation
Sends a UserOperation to a paymaster for off-chain verification. If approved, it will return the paymasterData. It will also return gas overrides when the mode for gas sponsorship is FREE for the user.
- Pay Gas in ERC-20s: No gas overrides are returned
- Gas Policy: Mandatory preVerificationGas,maxFeePerGas, andmaxPriorityFeePerGasfields are returned.
If the paymaster rejects the UserOperation, it should not return a result but a standard JSON-RPC error with the reason.
Invocation
{ "method": "pm_sponsorUserOperation", "params": [userOperation, entrypoint, context] }
Return
{
  "result": {
    paymasterAndData,
    preVerificationGas,
    maxFeePerGas,
    maxPriorityFeePerGas
  } 
}
- Example Request
- Example Response
- Request Types
- Response Type
{
  "jsonrpc": "2.0",
  "id": 0,
  "method": "pm_sponsorUserOperation",
    "params": [
    {
      sender: "0x2c298CcaFF..c236fCC66dB2"
      nonce: "0x17",
      initCode: "0x",
      callData: "0xf3....0000",
      callGasLimit: "0x12a87",
      verificationGasLimit: "0x1a332",
      preVerificationGas: "0xe95c",
      maxFeePerGas: "0x5f4ecdc0",
      maxPriorityFeePerGas: "0x59682f00",
      paymasterAndData: "0x",
      signature: "0x",
    },
    "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789",
    { "token": "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1" },
  ]
}
{
  "jsonrpc": "2.0",
  "id": 0,
  "result": {
    "paymasterAndData": "0x....",
    "preVerificationGas": "0x..",
    "maxFeePerGas": "0x..",
    "maxPriorityFeePerGas": "0x.."
  }
}
| Paramater | Type | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| userOperation | Object 
 | ||||||||||||||||||||||||||||||||||||
| entrypoint | 
 | ||||||||||||||||||||||||||||||||||||
| context | Object: This argument contains information about the specific paymaster implementation you are using. If use paying gas in ERC-20 Tokens, pass the token key and value. 
 | 
| key | type | description | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| paymasterAndData | string | Paymaster address and data required to pass paymaster contract validation | |||||||||||||||
| 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 (similar to EIP-1559 max_fee_per_gas) | |||||||||||||||
| maxPriorityFeePerGas | string | Maximum priority fee per gas (similar to EIP-1559 max_priority_fee_per_gas) | |||||||||||||||
| sponsorMetadata |  | Information about the Gas Policy Sponsor | 
pm_supportedEntryPoint
Get supported EntryPoint returns the entryPoint address supported by the paymaster
Invocation
{ "method": "pm_supportedEntryPoint", "params": [] }
Return
{ "result": entrypoint }
- Example Request
- Example Response
- Response Type
{
  "jsonrpc": "2.0",
  "id": 0,
  "method": "pm_supportedEntryPoint",
  "params": []
}
{
  "jsonrpc": "2.0",
  "id": 0,
  "result": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789" // Entrypoint address
}
| key | type | description | 
|---|---|---|
| entrypoint | string | EntryPoint Address that the paymaster is supporting | 
pm_chainId
Get Chain ID asks the paymaster service to return the chain_id it currently supports
Invocation
{ "method": "pm_chainId", "params": [] }
Return
{ "result": chainId }
- Example Request
- Example Response
- Response Type
{
  "jsonrpc": "2.0",
  "id": 0,
  "method": "pm_chainId",
  "params": []
}
{
  "jsonrpc": "2.0",
  "id": 0,
  "result": "0x5"
}
| Paramater | Type | Description | 
|---|---|---|
| chainId | string | Chain ID that the paymaster supports |