# CoRelayer > Gasless MultiversX transaction relaying (Relayed v3) sold as a USDC subscription. The user signs each transaction once; CoRelayer pays the EGLD network fee. CoRelayer relays MultiversX transactions so the sender never needs EGLD for gas. Plans are bought with USDC on-chain; usage is counted in Relay Units. Machine-readable API (OpenAPI 3.1): https://docs.co-relayer.com/openapi.yaml and https://docs.co-relayer.com/openapi.json Plain-Markdown API summary: https://docs.co-relayer.com/api-reference.md Smart-contract ABI: https://docs.co-relayer.com/abi/corelayer.abi.json Error catalogue (every RFC 9457 type URI): https://docs.co-relayer.com/errors Every page on this site is also available as Markdown: append .md to its URL. Who pays for a sender: the sender's own plan, or a plan that lists it as a named wallet (per-plan limit). Or a sponsor key (X-Api-Key) held on a server, which pays for any sender whose key that server holds or reaches, within its contract allow-list, on Builder, Growth, Scale, Enterprise, Agent Pro and Agent Fleet. The presence proof on POST /v1/relay/assign is always a raw Ed25519 signature by the sender's own key: proof.kind "key", or "sponsor" when a sponsor key pays for the relay. The assign route never reads X-Api-Key. Networks, contract address and API hosts, as they are live: https://co-relayer.com/.well-known/corelayer.json ## Table of Contents - [CoRelayer for agents](https://docs.co-relayer.com/agents.md): One page with everything an autonomous program needs — endpoints, discovery URLs, auth, purchase, relay and error handling. - [Error catalogue](https://docs.co-relayer.com/errors.md): Every error code the CoRelayer API can return, what causes it and what to do next. - [CoRelayer documentation](https://docs.co-relayer.com/index.md): How CoRelayer relays MultiversX transactions so the sender never needs EGLD for gas — for people, for agents and for the API. - [The MCP server](https://docs.co-relayer.com/mcp.md): CoRelayer as a Model Context Protocol server — transport, editions, client configuration, and what it deliberately cannot do. - [SDKs](https://docs.co-relayer.com/sdk.md): The CoRelayer client libraries for TypeScript, Go, Rust and Python, what each one needs, what they do for you, and the runnable examples behind the... - [Buying over x402](https://docs.co-relayer.com/x402.md): How to buy credits or a plan over HTTP 402: the headers, the challenge, the settle-before-serve rule, idempotency and every failure. - [Authentication](https://docs.co-relayer.com/agents/auth.md): How to prove who you are on each route: the signed transaction, a presence proof, a native-auth token, a sponsor key, an x402 payment or a stream t... - [Buying a plan](https://docs.co-relayer.com/agents/buying-a-plan.md): Three ways for a program to pay — on chain, over x402, or through MCP — with the ordering rule that keeps a payment from killing the transaction it... - [Discovery](https://docs.co-relayer.com/agents/discovery.md): Every file an agent can fetch to learn what CoRelayer is, what it costs and how to call it, and where each one comes from. - [Errors and retries](https://docs.co-relayer.com/agents/errors-and-retries.md): How to read a problem document, when to retry, when to back off, when to buy, and the one case where signing again is correct. - [Agent quickstart](https://docs.co-relayer.com/agents/quickstart.md): Discover, check, buy and relay — one program from nothing to a transaction on chain, with every check an autonomous agent needs, tested against a s... - [Dashboard tour](https://docs.co-relayer.com/start/dashboard-tour.md): Every screen of app.co-relayer.com, what it shows, and where the numbers on it come from. - [Frequently asked questions](https://docs.co-relayer.com/start/faq.md): Straight answers about custody, paying for your users, refunds, failed transactions, privacy, shards and what happens when a relayer goes away. - [Quickstart for people](https://docs.co-relayer.com/start/humans-quickstart.md): Buy a plan with USDC from any MultiversX wallet, then send relayed transactions from a key your own program holds, without holding EGLD. - [What CoRelayer does](https://docs.co-relayer.com/start/overview.md): Gasless MultiversX transactions explained in sixty seconds — who pays what, what you sign, and what you buy. - [Delivery guarantees](https://docs.co-relayer.com/concepts/delivery-guarantees.md): The intent state machine, the commit point, idempotency, and exactly what "we never send it twice" means. - [The intent lifecycle](https://docs.co-relayer.com/concepts/intent-lifecycle.md): Every state an intent can be in, what moves it, the re-sign ladder that recovers from a lost relayer, Cancel and Replace, and the one state that me... - [Latency, and how it is measured](https://docs.co-relayer.com/concepts/latency.md): What the clock is measured against, which stages are reported per transaction, and why this site publishes no latency target. - [One signature](https://docs.co-relayer.com/concepts/one-signature.md): Why CoRelayer asks for exactly one signature per action, what the obvious alternative would buy, and why it is refused. - [Relay Units](https://docs.co-relayer.com/concepts/relay-units.md): The unit everything is counted in — the exact formula, an estimator, the golden vectors, the admission limits, and why an ordinary transaction is e... - [Relayed v3](https://docs.co-relayer.com/concepts/relayed-v3.md): How a MultiversX relayed v3 transaction is built and signed, which fields matter, and which protocol facts the whole service rests on. - [Relayers](https://docs.co-relayer.com/concepts/relayers.md): The relayer fleet — how many, where, how they are funded, how they are swapped out, and why the registry lives on chain. - [Where the money goes](https://docs.co-relayer.com/concepts/revenue-flow.md): What happens to a USDC payment inside the contract — the swap, the split between treasury and relayer pool, and what becomes non-refundable when. - [Shards and routing](https://docs.co-relayer.com/concepts/shards-and-routing.md): Why the relayer must live in the sender's shard, how CoRelayer picks one, and what the assignment and lease actually are. - [Verify a relayer](https://docs.co-relayer.com/concepts/verify-a-relayer.md): How to check on chain, without trusting the CoRelayer API, that the relayer you were assigned is an active CoRelayer relayer in your shard, and how... - [Why gasless](https://docs.co-relayer.com/concepts/why-gasless.md): The problem a relayer solves — holding the network's own token just to be allowed to transact — and what it costs to solve it. - [Tiers for agents](https://docs.co-relayer.com/plans/agent-tiers.md): The metered and agent plans, why a zero-cap tier exists, and what the agent label does and does not mean on chain. - [Credits and billing](https://docs.co-relayer.com/plans/credits-and-billing.md): Deposits, credits, plan blocks, quotes, renewal and escrow — what each one is and which of them can be reversed. - [Pay-as-you-go](https://docs.co-relayer.com/plans/payg.md): What happens past the cap — how to opt in, what a unit costs, how the budget and escrow work, and when relaying halts anyway. - [Paying for other senders](https://docs.co-relayer.com/plans/sponsoring-senders.md): Two ways for one account to pay for transactions other addresses sign, a sponsor key on your server or named wallets on chain, and how the payer of... - [The tariff](https://docs.co-relayer.com/plans/tariff.md): One number sets every price in CoRelayer. Who can change it, by how much, with how much notice, and what a change does to what you already paid for. - [Tiers](https://docs.co-relayer.com/plans/tiers.md): The tier ladder with caps, prices, pay-as-you-go rates and rate classes, and how to read the live values from the chain. - [Conventions](https://docs.co-relayer.com/api/conventions.md): The rules that apply to every route — names, numbers, time, headers, pagination, idempotency, rate limits, CORS and errors. - [API overview](https://docs.co-relayer.com/api/overview.md): Hosts, versioning, the route groups, and where the reference comes from. - [Go](https://docs.co-relayer.com/sdk/go.md): The Go client for the CoRelayer API, with installation, authentication, relaying with one signature, error handling, every API operation, event str... - [TypeScript and JavaScript](https://docs.co-relayer.com/sdk/javascript.md): The TypeScript client for the CoRelayer API, with installation, authentication, relaying with one signature, error handling, every API operation, p... - [Python](https://docs.co-relayer.com/sdk/python.md): The Python client for the CoRelayer API, with installation, authentication, relaying with one signature, error handling, every API operation, event... - [Check before you send](https://docs.co-relayer.com/sdk/recipes/check-quota.md): Read an account's service state and a transaction's price before spending a signature, in key mode and in sponsor mode, choose a tier from the live... - [Handle a re-sign request](https://docs.co-relayer.com/sdk/recipes/handle-resign.md): The one case where signing again is correct. What it means, how to sign with the pinned assignment, what to show a person, and how a headless agent... - [Sign and relay](https://docs.co-relayer.com/sdk/recipes/sign-and-relay.md): The complete relay flow in one tested file. It covers the network check, presence proof, assignment, on-chain relayer check, the single signature, ... - [Pay for your users](https://docs.co-relayer.com/sdk/recipes/sponsor-users.md): Sponsor mode from your server. One sponsor key pays the network fee for any sender whose key your server holds, within the contracts and daily limi... - [Watch an intent](https://docs.co-relayer.com/sdk/recipes/watch-an-intent.md): Four ways to follow a relayed transaction to its outcome, how to read each state, and why a timeout is never an outcome. - [Rust](https://docs.co-relayer.com/sdk/rust.md): The Rust client for the CoRelayer API, with installation, authentication, relaying with one signature, error handling, every API operation, event s... - [MCP tools](https://docs.co-relayer.com/mcp/tools.md): Every CoRelayer MCP tool — arguments, what it returns, which route it wraps and which auth ring it needs. - [The ABI and verification](https://docs.co-relayer.com/contract/abi.md): Download the ABI, decode contract data yourself, and check that the deployed bytes are the ones that were built. - [The contract](https://docs.co-relayer.com/contract/overview.md): What the CoRelayer smart contract holds, who may change what, how pausing works, and where it is deployed. - [Endpoints](https://docs.co-relayer.com/contract/reference/endpoints.md): All 55 state-changing endpoints of the CoRelayer contract, generated from its ABI. - [Events](https://docs.co-relayer.com/contract/reference/events.md): All 54 events the CoRelayer contract emits, generated from its ABI. - [Types](https://docs.co-relayer.com/contract/reference/types.md): All 73 structs and enums in the CoRelayer ABI, generated from its build output. - [Views](https://docs.co-relayer.com/contract/reference/views.md): All 31 read-only views of the CoRelayer contract, generated from its ABI. - [Timestamps](https://docs.co-relayer.com/contract/timestamps.md): Everything is milliseconds of block time, every schedule activates lazily, and there is no keeper. What that means for a client. - [Usage proofs](https://docs.co-relayer.com/contract/usage-proofs.md): How every billed transaction is committed on chain as a Merkle leaf, what the usage root and the usage chain head are, and what the proof route ret... - [Limits](https://docs.co-relayer.com/operations/limits.md): Rate classes, per-transaction ceilings, request limits, body sizes and in-flight bounds — with the error each one produces. - [Status and SLOs](https://docs.co-relayer.com/operations/status-and-slos.md): Where to see service state, what we measure, and why this page publishes no uptime or latency figure. - [What the latency numbers measure](https://docs.co-relayer.com/operations/telemetry.md): The five timestamps behind every latency figure CoRelayer will publish, how each figure is derived, what is excluded, and where each one appears. - [Responsible disclosure](https://docs.co-relayer.com/security/disclosure.md): How to report a vulnerability, what we will do with it, and what we ask you not to do. - [Key handling](https://docs.co-relayer.com/security/keys.md): Which keys exist, where they live, what each one can do, and what happens to your API keys. - [The trust model](https://docs.co-relayer.com/security/overview.md): What CoRelayer could do if it were hostile, what it could not, and how to check each claim without trusting us. - [The Finance Computer](https://docs.co-relayer.com/vision/finance-computer.md): Why transaction delivery is a missing layer, why it has to be a fleet, and the five phases from an operated fleet to an open cooperative and beyond. - [ACCOUNT_SUSPENDED](https://docs.co-relayer.com/errors/account-suspended.md): The account is suspended. - [API_KEY_INVALID](https://docs.co-relayer.com/errors/api-key-invalid.md): The API key is unknown, revoked, or from another environment. - [API_KEY_SCOPE](https://docs.co-relayer.com/errors/api-key-scope.md): The API key is valid but not allowed to do this. - [ASSIGN_PROOF_INVALID](https://docs.co-relayer.com/errors/assign-proof-invalid.md): The presence proof did not verify. - [ASSIGN_PROOF_REQUIRED](https://docs.co-relayer.com/errors/assign-proof-required.md): The assign call needs a proof that the sender is present. - [CHAIN_ID_MISMATCH](https://docs.co-relayer.com/errors/chain-id-mismatch.md): The transaction was signed for a different network than this host serves. - [CHALLENGE_INVALID](https://docs.co-relayer.com/errors/challenge-invalid.md): The signed challenge did not verify. - [CONTRACT_PAUSED](https://docs.co-relayer.com/errors/contract-paused.md): The CoRelayer contract is paused for this kind of call. - [CURSOR_INVALID](https://docs.co-relayer.com/errors/cursor-invalid.md): The pagination cursor is malformed or no longer valid. - [DATA_TOO_LARGE](https://docs.co-relayer.com/errors/data-too-large.md): The transaction data field is larger than self-serve accounts may send. - [DEPLOY_NOT_ALLOWED](https://docs.co-relayer.com/errors/deploy-not-allowed.md): Contract deployments and upgrades are not relayed for this account. - [DEPOSIT_ABOVE_MAX](https://docs.co-relayer.com/errors/deposit-above-max.md): The deposit is above the configured maximum. - [DEPOSIT_BELOW_MIN](https://docs.co-relayer.com/errors/deposit-below-min.md): The deposit is below the minimum the contract accepts. - [DOWNGRADE_NOT_IMMEDIATE](https://docs.co-relayer.com/errors/downgrade-not-immediate.md): A plan without a period cannot start while a period plan is running. - [FORBIDDEN](https://docs.co-relayer.com/errors/forbidden.md): Authenticated, but not permitted to do this. - [FREE_FLOW_BARRED](https://docs.co-relayer.com/errors/free-flow-barred.md): This sender is temporarily barred from the free flow. - [FREE_FLOW_BUSY](https://docs.co-relayer.com/errors/free-flow-busy.md): This sender already has a free transaction in flight. - [FREE_FLOW_UNAVAILABLE](https://docs.co-relayer.com/errors/free-flow-unavailable.md): The free-transaction budget for this period is spent. - [GAS_BUDGET_EXCEEDED](https://docs.co-relayer.com/errors/gas-budget-exceeded.md): The gas-per-second budget of your rate class in this shard is spent. - [GAS_LIMIT_TOO_HIGH](https://docs.co-relayer.com/errors/gas-limit-too-high.md): The gas limit is above the ceiling of your rate class. - [GAS_LIMIT_TOO_LOW](https://docs.co-relayer.com/errors/gas-limit-too-low.md): The gas limit is below the movement gas of the transaction. - [GAS_OVERPROVISIONED](https://docs.co-relayer.com/errors/gas-overprovisioned.md): The gas limit is far above what simulation says the transaction needs. - [GAS_PRICE_OUT_OF_RANGE](https://docs.co-relayer.com/errors/gas-price-out-of-range.md): The gas price is below the network minimum or above the cap CoRelayer relays. - [GUARDIAN_IS_RELAYER](https://docs.co-relayer.com/errors/guardian-is-relayer.md): The guardian and the relayer are the same address. - [GUARDIAN_MISMATCH](https://docs.co-relayer.com/errors/guardian-mismatch.md): The guardian in the transaction is not the sender’s active guardian. - [GUARDIAN_REQUIRED](https://docs.co-relayer.com/errors/guardian-required.md): The sender is guarded but the transaction is not. - [GUARDIAN_SIGNATURE_INVALID](https://docs.co-relayer.com/errors/guardian-signature-invalid.md): The guardian signature does not verify. - [HOURLY_BURN_EXCEEDED](https://docs.co-relayer.com/errors/hourly-burn-exceeded.md): The account passed the Relay Units per hour of its rate class. - [IDEMPOTENCY_IN_PROGRESS](https://docs.co-relayer.com/errors/idempotency-in-progress.md): The first request with this key is still running. - [IDEMPOTENCY_KEY_REUSED](https://docs.co-relayer.com/errors/idempotency-key-reused.md): That idempotency key was used for a different request body. - [INSUFFICIENT_CREDITS](https://docs.co-relayer.com/errors/insufficient-credits.md): The account does not hold enough credits for this purchase. - [INSUFFICIENT_SENDER_BALANCE](https://docs.co-relayer.com/errors/insufficient-sender-balance.md): The sender cannot cover the `value` it is trying to move. - [INTENT_ALREADY_EXECUTED](https://docs.co-relayer.com/errors/intent-already-executed.md): That nonce has already executed on chain. - [INTENT_ALREADY_SUBMITTED](https://docs.co-relayer.com/errors/intent-already-submitted.md): This idempotency key was already used. - [INTERNAL](https://docs.co-relayer.com/errors/internal.md): An unexpected failure before the commit point. - [LEASE_EXPIRED](https://docs.co-relayer.com/errors/lease-expired.md): The lease was older than its validity window when the transaction arrived. - [LEASE_INVALID](https://docs.co-relayer.com/errors/lease-invalid.md): The lease did not verify. - [LEASE_MISMATCH](https://docs.co-relayer.com/errors/lease-mismatch.md): The lease does not belong to this transaction. - [LEASE_MISSING](https://docs.co-relayer.com/errors/lease-missing.md): The relay request arrived without the lease returned by the assign call. - [LIMIT_REACHED](https://docs.co-relayer.com/errors/limit-reached.md): A per-account limit is full. - [MALFORMED_REQUEST](https://docs.co-relayer.com/errors/malformed-request.md): The request body did not match the schema of the endpoint. - [NO_ENTITLEMENT](https://docs.co-relayer.com/errors/no-entitlement.md): The account has no plan that can pay for this transaction. - [NO_RELAYER_AVAILABLE](https://docs.co-relayer.com/errors/no-relayer-available.md): No healthy relayer can be assigned in that shard right now. - [NONCE_GAP](https://docs.co-relayer.com/errors/nonce-gap.md): The nonce skips ahead of the account nonce and the pool. - [NONCE_IN_FLIGHT](https://docs.co-relayer.com/errors/nonce-in-flight.md): Another intent already holds this nonce. - [NONCE_PIN_MISMATCH](https://docs.co-relayer.com/errors/nonce-pin-mismatch.md): The transaction nonce is not the nonce the assignment pinned. - [NONCE_TOO_LOW](https://docs.co-relayer.com/errors/nonce-too-low.md): The transaction nonce is below the account nonce on chain. - [NOT_FOUND](https://docs.co-relayer.com/errors/not-found.md): No such resource. - [NOTHING_TO_CANCEL](https://docs.co-relayer.com/errors/nothing-to-cancel.md): There is no in-flight intent to cancel. - [ORIGIN_NOT_ALLOWED](https://docs.co-relayer.com/errors/origin-not-allowed.md): The browser origin is not allowed for this route. - [PAYG_PRICE_ABOVE_MAX](https://docs.co-relayer.com/errors/payg-price-above-max.md): The pay-as-you-go price is above the maximum this account accepts. - [PAYLOAD_TOO_LARGE](https://docs.co-relayer.com/errors/payload-too-large.md): The request body is larger than the endpoint accepts. - [PAYMENT_FAILED](https://docs.co-relayer.com/errors/payment-failed.md): The payment verified but could not be settled. - [PAYMENT_INVALID](https://docs.co-relayer.com/errors/payment-invalid.md): The payment presented did not verify. - [PAYMENT_REQUIRED](https://docs.co-relayer.com/errors/payment-required.md): The resource needs payment; the response describes how. - [PRICE_ABOVE_MAX](https://docs.co-relayer.com/errors/price-above-max.md): The price at execution time is above the maximum you signed for. - [QUEUED_BLOCK_EXISTS](https://docs.co-relayer.com/errors/queued-block-exists.md): A plan is already queued to start after the current one. - [QUOTA_EXHAUSTED](https://docs.co-relayer.com/errors/quota-exhausted.md): The plan’s included Relay Units are used up. - [QUOTE_EXPIRED](https://docs.co-relayer.com/errors/quote-expired.md): The quote presented with the payment has expired. - [RATE_LIMITED](https://docs.co-relayer.com/errors/rate-limited.md): You are sending faster than your rate class allows. - [RECEIVER_NOT_ALLOWED](https://docs.co-relayer.com/errors/receiver-not-allowed.md): The receiver of the transaction is not allowed on this path. - [RELAYER_RETIRED](https://docs.co-relayer.com/errors/relayer-retired.md): The relayer in the transaction has been retired. - [RELAYER_SHARD_MISMATCH](https://docs.co-relayer.com/errors/relayer-shard-mismatch.md): The relayer is not in the sender’s shard. - [RELAYER_SIGNATURE_PRESENT](https://docs.co-relayer.com/errors/relayer-signature-present.md): The transaction already had a `relayerSignature`. - [RELAYER_UNKNOWN](https://docs.co-relayer.com/errors/relayer-unknown.md): The `relayer` address in the transaction is not one of ours. - [RENEW_NOT_APPLICABLE](https://docs.co-relayer.com/errors/renew-not-applicable.md): “Renew now” would do nothing. - [REPLACEMENT_UNDERPRICED](https://docs.co-relayer.com/errors/replacement-underpriced.md): The replacement transaction does not pay enough to displace the one in the pool. - [RESIGN_REQUIRED](https://docs.co-relayer.com/errors/resign-required.md): The assigned relayer can no longer be used, so the transaction must be signed once more. - [RESIGN_SAME_NONCE](https://docs.co-relayer.com/errors/resign-same-nonce.md): A replacement for the same nonce is needed, at a higher gas price. - [SENDER_NOT_AUTHORIZED](https://docs.co-relayer.com/errors/sender-not-authorized.md): This sender is not authorised to spend the paying account’s plan. - [SENDER_SIGNATURE_INVALID](https://docs.co-relayer.com/errors/sender-signature-invalid.md): The sender signature does not verify against the transaction bytes. - [SIGNER_FENCED](https://docs.co-relayer.com/errors/signer-fenced.md): The signer fenced itself and refuses to sign. - [SIGNER_TIMEOUT](https://docs.co-relayer.com/errors/signer-timeout.md): The signer did not commit before the deadline. - [SIGNER_UNAVAILABLE](https://docs.co-relayer.com/errors/signer-unavailable.md): The signer process could not be reached. - [SIMULATION_FAILED](https://docs.co-relayer.com/errors/simulation-failed.md): Pre-flight simulation says the transaction would fail on chain. - [STREAM_TICKET_INVALID](https://docs.co-relayer.com/errors/stream-ticket-invalid.md): The ticket presented to the event stream did not verify. - [SWAP_BUDGET_EXHAUSTED](https://docs.co-relayer.com/errors/swap-budget-exhausted.md): The rolling swap budget for deposits is used up. - [SWAP_VENUE_PAUSED](https://docs.co-relayer.com/errors/swap-venue-paused.md): The exchange venue used to convert USDC is paused. - [TIER_NOT_PURCHASABLE](https://docs.co-relayer.com/errors/tier-not-purchasable.md): That tier cannot be bought right now. - [TOKEN_EXPIRED](https://docs.co-relayer.com/errors/token-expired.md): The token is past its validity. - [TOKEN_INVALID](https://docs.co-relayer.com/errors/token-invalid.md): The token did not verify. - [TOO_MANY_IN_FLIGHT](https://docs.co-relayer.com/errors/too-many-in-flight.md): This sender has as many unsettled intents as it may have at once. - [TX_OPTIONS_UNSUPPORTED](https://docs.co-relayer.com/errors/tx-options-unsupported.md): The transaction `options` field has a bit CoRelayer does not relay. - [TX_VERSION_UNSUPPORTED](https://docs.co-relayer.com/errors/tx-version-unsupported.md): The transaction `version` is not one CoRelayer relays. - [UNAUTHENTICATED](https://docs.co-relayer.com/errors/unauthenticated.md): The endpoint needs credentials and none were presented. - [UNSUPPORTED_TX_FIELD](https://docs.co-relayer.com/errors/unsupported-tx-field.md): The transaction carries a fee-relevant field this Relay-Unit schedule does not price. - [UPSTREAM_UNAVAILABLE](https://docs.co-relayer.com/errors/upstream-unavailable.md): A dependency (chain gateway, node) was unavailable before anything was committed. - [VARIANTS_NOT_SUPPORTED](https://docs.co-relayer.com/errors/variants-not-supported.md): The request carried several signed variants of the same transaction. - [WEBHOOK_URL_NOT_ALLOWED](https://docs.co-relayer.com/errors/webhook-url-not-allowed.md): That webhook URL cannot be registered.