Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.

When a Mesub integration does not work

Find your symptom, then follow the link. Every error code is on the errors page.

Your server and the API

SymptomCauseFix
missing_api_key (401)MESUB_API_KEY is not set where the server runsPut the key on your server
invalid_api_key (401)A wrong or rotated keyPut the key on your server
Your guard answers 401customer returned nothing: nobody is signed in on your siteWhat a guard answers
Your guard answers 402Mesub says this customer has no accessRead the answer
plan_not_foundA wrong slugRead the slug in the plan's Implement tab
plan_not_on_chainThe plan was never published: it may wait in To signTo sign
rate_limited (429)Too many calls a minuteRate limits

Subscribing

SymptomCauseFix
The wallet signs for the wrong networkThe widget's chain does not match the plan's networkSet chain
insufficient_solThe customer's wallet lacks SOL for the rent and the feeAdd SOL
insufficient_balanceThe wallet cannot pay the first periodAdd the plan's token
approval_too_lowThe wallet caps its approval of the token below one paymentThe customer raises the cap in their wallet, then tries again
seat_cap_reachedThe project is at its tier's subscriber limitPricing and limits
transaction_expiredThe wallet signed too lateSubscribe from your server

After the first payment

SymptomCauseFix
A subscription is unpaidA charge missed: the wallet was short, or its approval wentLate payments
blocked_reason is setSomething on the plan's side holds the chargesBlocked charges
paused is trueThe seat is parked over the tier's limitParked seats
invalid_webhook on every eventThe body was parsed before verify, or the secret is wrongCreate a handler
Events arrive twice, or out of orderBoth are normalDelivery behavior