Playbook · Billing API metafield missing

Shopify Billing API metafield missing? Prove charge, grant, and one post-approval write.

Written for a Shopify DTC owner whose Billing API metafield stays missing after a merchant approves an app charge or subscription. Start with definition ownership, appSubscriptionCreate / charge status, billing scopes on the install, and one metafield write that runs only after ACTIVE approval. This is not an OAuth scopes blank alone, and it is not a subscription billing-attempt failure on a selling plan.

Nico at Latch AI Ops · Sep 17, 2026 · ~10 minute read

Buy the 72-hour install — $997OAuth scopes fieldSub billing attemptMerchant FAQ

01

A missing Billing API metafield is not automatically a failed subscription billing attempt.

Use this page when the app charge or app subscription reaches ACTIVE but the metafield the app should set (plan tier, entitlement flag, paid-through date) never appears. If the miss is customer selling-plan billing attempts failing, use subscription billing attempt failed. If the miss is missing OAuth scopes for any Admin read/write, use OAuth scopes metafield blank.

Do not create duplicate charges yet. Capture the shop, app handle, charge or subscription GID, status, return URL, billing scopes, namespace.key, and whether any metafield mutation runs after the confirmation callback.

02

Prove the owner resource, definition, and exact saved value.

Open Settings → Custom data and confirm the definition is owned by the Shop (or app-owned resource) your post-approval callback writes. Record the exact namespace and key, for example app.billing_tier, the type, and whether the app owns the definition.

Manually save a short test value in Admin, refresh, and confirm it survives. If Admin cannot store the field, fix the definition before debugging Billing API callbacks.

03

Check charge create, merchant approval, and billing scopes together.

Confirm appSubscriptionCreate (or one-time application charge) returned a confirmation URL, the merchant completed approval, and status is ACTIVE — not PENDING, DECLINED, or EXPIRED. Verify the install still holds the scopes your write needs (often write access to the owner resource plus any billing-related permissions your app declared).

Compare return_url handling: the callback must re-query charge status before writing. Writing on redirect alone without an ACTIVE check creates silent misses when the merchant cancels. Log charge GID and status only — never log payment secrets.

04

Trace one metafield write after a successful charge.

After ACTIVE status, run one authenticated metafieldsSet (or legacy metafield write) for the namespace.key you recorded. Prove the same value in Admin GraphiQL. If GraphiQL shows the test value but the app UI does not, fix the read path or cache — not the charge.

Keep the diagnosis distinct from subscription contract metafield missing and selling plan metafield blank. Those touch customer subscriptions and selling plans, not app Billing API entitlement fields.

05

Retest one charge flow and keep a small proof packet.

Use one test shop and one charge. Record charge/subscription GID, status timeline, return URL hit, scopes, namespace.key, type, GraphiQL value after callback, and whether the app UI shows the entitlement. Cancel leftover test charges when done so the shop is not left with duplicate ACTIVE subscriptions.

If the field is still missing, classify it as definition/value, charge never ACTIVE, callback skipped, missing write scope, or read-path lag. Do not open a second live charge until one ACTIVE path writes and reads cleanly on one shop.

06

When to stay DIY vs pay $997.

Stay DIY when one definition, ACTIVE status check, scope grant, or callback write explains the miss. Keep the proof packet so future plan changes stay grounded in real Billing API state.

Pay for the $997 one-time install when several Shopify surfaces, apps, catalogs, and ops alerts need to be wired and documented on one live store. Nico at Latch AI Ops can connect the agreed workflow in a 72-hour window after collaborator access. No earnings claim, conversion guarantee, or theme rebuild is included; owner passwords are not requested.