Stripe Payment Link Creation
Generate Stripe payment links from records without letting anyone set their own price.
What it adds
A server-side generator that turns an app record into a shareable Stripe payment link, with reuse rules, reconciliation metadata, and a defined expiry.
What your agent is told to do
5
What your agent is told to do
5-
1
Generate links only on the server, from a record the requesting user is permitted to bill for. Price, currency, and quantity limits come from that record, never from the request.
-
2
Decide per link whether it is single-use or reusable, and enforce it in the app rather than assuming the shared URL will be treated politely. A link posted publicly will be opened by people you did not send it to.
-
3
Attach the app's own reference for the record so an incoming payment can be matched back without a human reading the description. Keep that reference opaque and free of names, emails, or anything else that should not travel with a public link.
-
4
Recognise payment through verified server-side confirmations. The browser returning from a link proves only that a browser returned.
-
5
Restrict who may create a link with a non-standard price, a discount, or a custom amount, and record who created each one. Without that, any user with access to the screen can quietly sell your product at whatever price they choose.
Edge cases it handles
8
Edge cases it handles
8- Reusable and single-use links behave very differently once shared. A single-use link opened a second time must show a clear expired state, and a reusable link must state whether quantity is fixed or chosen by the payer.
- Metadata travelling with a link is not private. Carry an internal identifier only, and resolve everything else server-side after payment.
- When the underlying offer changes price, is withdrawn, or its record is deleted, existing links must be deactivated rather than left selling something at the old terms.
- Payment confirmation must come from a verified server event, because payers frequently close the tab before being redirected back and the app would otherwise never learn they paid.
- Link creation must be permission-gated per price variation, and the creator recorded, so a discounted or custom-amount link can be traced to whoever issued it.
- The provider will resend confirmations. Match each one to the link and the payment it belongs to so a retry does not fulfil the same order twice.
- Give every link an expiry, even a long one, so an abandoned link does not stay live indefinitely after everyone has forgotten it.
- If the provider fails while a link is being created, do not leave a half-created record that shows a link the user cannot open.
Definition of done
9
Definition of done
9- Links are generated server-side with price and quantity taken only from the source record.
- Single-use links refuse a second payment and show an explicit expired state.
- Links carry an opaque internal reference and no personal or sensitive data.
- Changing or withdrawing the underlying offer deactivates its outstanding links.
- Fulfilment happens on a verified server confirmation and is idempotent across retries.
- Creating a discounted or custom-price link requires an explicit permission and is attributed to its creator.
- Every link has an expiry and the app shows its current status alongside the record.
- The feature matches the existing design system.
- No existing functionality is broken.
Related features
Lemon Squeezy License Sync
Lemon Squeezy License Sync
Sync Lemon Squeezy orders and license keys into the app's entitlement state.
What it does
A verified event pipeline mapping Lemon Squeezy orders, subscriptions, and license keys onto local entitlements, with activation limits and revocation handled.
How it works
- 1 Verify the authenticity of every incoming provider event before it changes anything. An unverified purchase notification is a request from the internet to give away your product.
- 2 Keep an explicit server-side table mapping each purchasable variant to the entitlement it grants. Do not infer the plan from a product name, because names get edited for marketing reasons and entitlements should not move when they do.
- 3 Bind each license key to a single account on first activation and refuse to activate it against a different one afterwards, with a documented path for an operator to release a key that genuinely needs to move.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/lemon-squeezy-license-sync
Stripe Customer and Subscription Sync
Stripe Customer and Subscription Sync
Keep local billing state matching Stripe as subscriptions, invoices, and plans change.
What it does
A verified event pipeline that projects Stripe customer, subscription, and invoice state onto the app's own access records, with reconciliation for anything the pipeline missed.
How it works
- 1 Define one local projection of billing state per account: which plan, which status, which period it runs to, and whether access is currently allowed. Every entitlement check in the app reads that projection and nothing else.
- 2 Verify every incoming event as genuinely from the provider before acting on it, and record its identifier so a replay is recognised and ignored. Providers retry on any non-success response, so handlers must be safe to run repeatedly.
- 3 Store a timestamp or version with the projection and refuse to apply an event that is older than what has already been written. Events arrive out of order, and a stale cancellation overwriting a fresh renewal locks a paying customer out.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/stripe-customer-and-subscription-sync
Shopify Order Import
Shopify Order Import
Import Shopify orders into the app with money, fulfilment, and later edits accurately kept.
What it does
A resumable import of the connected store's orders, mirroring line items, discounts, taxes, and fulfilment state locally.
How it works
- 1 Separate the initial backfill from the ongoing feed. The backfill walks history in a stable order behind a resumable cursor; the feed applies live updates as they arrive.
- 2 Key every imported order on the shop identifier together with the store's own order identifier, so re-running the import updates existing rows instead of duplicating them.
- 3 Store money as an exact decimal with its currency alongside it, and keep both the shop currency and the presented currency where they differ. Do not convert to a single display currency on the way in, because the original amounts cannot be recovered afterwards.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/shopify-order-import
How it works
-
1
Copy the link
Grab the Markdown instruction URL for this feature.
-
2
Give it to your AI
Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.
-
3
It inspects, then implements
Your agent reads your existing app first, then adds the feature to fit it.
Works with your stack
These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.
Need it tighter than that? Customize the feature and tell it exactly what you're running.