Builder is not registered
Check two things:
VANA_APP_PRIVATE_KEYmust derive the registered app address shown in Vana Account.- The app address must be registered on-chain as a builder/grantee. If you generated the key in Vana Account, complete the generated-app flow. If you brought your own key, run the existing-app registration snippet from Vana Account. Funding escrow alone does not register the app.
grant_registration_failed: Builder <address> is not registered on-chain. It can also surface more generically — the approval return URL comes back with status=failed&errorCode=grant_registration_failed&errorMessage=Internal server error, and your app renders a plain Internal server error. If you see grant_registration_failed with an unregistered app address, treat it as this case and register the app.
Insufficient finalized balance
Fund escrow for the selected app identity in Vana Account. Wait until available balance updates, then retry the read.
Unknown source or Unknown scope
Copy source and scope values from the selected source detail or connector schema.
Approval opens the wrong environment
CheckVANA_ENV and the Vana Account URL. Testnet and mainnet data do not mix.
Personal Server unavailable
Use a test user whose Personal Server is ready and whose requested source has synced data. To create one, sign into the Vana app (app-dev.vana.org/sources for testnet, app.vana.org/sources for production) and connect the source you request — this can be your own account, since an app can grant to itself. See Set up a test user.
How do I confirm a paid read settled?
Confirm/api/vana/data returned 200 with a payment receipt, and confirm the app identity’s escrow balance changed in Vana Account (available balance decreases or authorized amount increases).