# `invalid_exact_evm_signature`

> The signature does not match the transfer authorization for this token and chain. What causes this x402 error and how to fix it.

The signature does not match the transfer authorization for this token and chain.

|  |  |
| --- | --- |
| Reported by | the facilitator, during verify |
| Usually fixed by | the buyer or the seller, depending on the cause |

## Cause

The facilitator rebuilds the EIP-712 `TransferWithAuthorization` data from the quote (token `name` and `version` from `extra`, chain id, token address) and the payload's authorization fields, then checks the signature against the payer. Any difference between what the buyer signed and what the facilitator rebuilds fails here.

## Fix

- Buyer: sign with the `name` and `version` given in the quote's `extra`, not hard-coded values. USDC is named `USD Coin` on Base and `USDC` on Base Sepolia.
- Buyer: check the chain id and the token address used as `verifyingContract` match the quote.
- Buyer: the signer must be the address in `authorization.from`.
- Seller: check that `extra.name` and `extra.version` are the token's real values. See [token name mismatch](https://x402testendpoint.com/errors/invalid_exact_evm_token_name_mismatch).

## About this reference

Causes are taken from the source of `@x402/evm` 2.31. Other facilitators and later versions may use the same code for slightly different checks. See [all x402 errors](https://x402testendpoint.com/errors).

Source: https://x402testendpoint.com/errors/invalid_exact_evm_signature
