Managed Signing
Circle Payment Network (CPN)
Troubleshooting

Knit API Documentation

CPN Troubleshooting

Common issues and solutions when integrating CPN with Knit's Managed Signing API.


"Failed to sign transaction" from Managed Signing

Cause: Transaction is missing required fields (fees, gas, or nonce).

Solution:

  • Ensure the transaction includes EIP-1559 fields (maxFeePerGas, maxPriorityFeePerGas) or legacy fields (gasPrice)
  • Include gas limit
  • Include nonce
  • Verify RPCs are configured for the target network to enable auto-fill

"POLICY_DENIED" Error

Cause: The signing request violates your policy rules.

Solutions:

IssueFix
EIP-712 signing blockedSet typedData.allow: true in your policy
Token not allowedAdd the token address to rules.tokens
Spender not allowedAdd the Permit2 address to rules.spenders
Raw TX blockedSet allowRawTx: true (for CPN V1 only)
Wrong networkAdd the network to rules.chains

"Invalid typed data" Error

Cause: The EIP-712 typed data format is incorrect.

Solution:

  • Use Circle's messageToBeSigned exactly as provided
  • Do not modify or camelCase keys in types or message
  • Ensure the JSON is valid (no comments, trailing commas)

Permit2 Approval Transaction Fails

Cause: Insufficient gas or incorrect parameters.

Solutions:

  • Ensure wallet has enough native token (MATIC/ETH) for gas
  • Verify the USDC token address is correct for your network
  • Verify the Permit2 contract address is correct
  • Check that the approval amount is valid

Signature Rejected by Circle

Cause: Signature doesn't match expected format or data.

Solutions:

  • Verify you're using the exact messageToBeSigned from Circle
  • Ensure the signing wallet address matches what Circle expects
  • Check that the wallet has completed the Permit2 approval
  • Verify the network matches (e.g., both on Polygon)

Request Body Validation Errors

Cause: Invalid JSON or missing required fields.

Solutions:

  • JSON request bodies must not include comments
  • All required fields must be present
  • Use correct data types (strings for addresses, numbers for nonce)
  • Ensure walletId is the local ID from Knit, not an external ID

Network Mismatch

Cause: Using wrong network identifier.

Supported Production Networks:

  • MATIC_MAINNET (Polygon)
  • ETHEREUM_MAINNET
  • BSC_MAINNET
  • BASE_MAINNET

Supported Testnet Networks (Sandbox/Dev only):

  • MATIC_AMOY (Polygon Amoy testnet - commonly used for CPN testing)

Do not use ETH_MAINNET - use ETHEREUM_MAINNET instead.


Auto-Fill Not Working

Cause: RPC not configured for the target network.

Solution:

  • Contact Knit support to verify RPC configuration
  • Alternatively, provide txOverrides with manual gas values
  • For broadcast: false, you may need to estimate gas externally

Common Contract Addresses

Contact Circle for the official addresses for your integration. These are for reference only:

NetworkAssetTypeAddress
PolygonUSDCTokenVerify with Circle
PolygonPermit2ContractVerify with Circle
EthereumUSDCTokenVerify with Circle
EthereumPermit2ContractVerify with Circle

Getting Help

If you continue to experience issues:

  1. Check the audit logs: GET /api/v1/managed-signing/audit?requestId=<request-id>
  2. Verify your policy configuration: GET /api/v1/managed-signing/policies/<policy-id>
  3. Contact Knit support with:
    • Request ID
    • Error message
    • Request payload (sanitized)
    • Network and wallet address

Contact

business@useknit.io

Knit Business Financial Services Ltd.
3080 Yonge St
Toronto ON, M4N 3N1, Canada

Subscribe to our newsletter

A monthly digest of the latest news, articles, and resources.

Knit logo

© KNIT BUSINESS FINANCIAL SERVICES LIMITED is duly registered by the Financial Transactions and Reports Analysis Centre of Canada (FINTRAC) as a Money Service Business (C100000256)