Operate payment connections
A received webhook, a matched product and issued access are separate results. Check the payment event and the customer’s licence before accepting real payments.
Verify the connection
- Create the provider’s test or sandbox endpoint. Use its own secret and product IDs. Paddle and Polar require separate sandbox accounts or organisations.
- Link the offer before buying. Synthetic dashboard samples usually name unrelated products and prove delivery only. Paddle simulations and Shopify Send test never issue access.
- Make a real sandbox checkout. Confirm the environment, provider reference and mapped Drawspan product in Recent webhooks.
- Production test endpoints confirm mapping without granting production access. They cannot prove licence issuance, renewal or email delivery. Local Development can enable Connections:ProcessProviderTestEvents for a complete sandbox rehearsal; this setting cannot be used in Production.
- Where issuance is enabled, open the customer and verify the plan, access model, seats and expiry. Check customer onboarding or notice delivery separately, including captured development email.
- Partially refund the same purchase and confirm that the licence, seats and expiry stay unchanged. Then complete the full refund and confirm that the affected licence is revoked. For subscriptions, also test a genuine renewal, cancellation and a full refund of a renewal. Repeated delivery must not add another term or restore revoked access.
- Repeat setup with live secrets and identifiers before selling. A test purchase does not verify live delivery. If you choose a live rehearsal, check provider fees first. Revoke or refund development test grants when finished.
Gumroad creator tests never issue access. Use a 100% discount code from a signed-out browser with another email for a non-test rehearsal. Shopify test-gateway orders are real paid orders for Drawspan; refund them after testing.
Expiry and subscriptions
Connected purchases use reusable fixed-term plans. Initial access follows the plan’s duration, anchored to the provider’s purchase timestamp when available. Trials can grant that duration; Drawspan does not automatically synchronise the trial-end date.
Stripe, Paddle and Polar renewals use the provider billing-period end. Lemon Squeezy and Gumroad renewals use the payment timestamp plus the mapped duration. A renewal cannot shorten access already agreed. A fixed number of days does not represent every calendar month; check dates deliberately.
Cancellation and failed payment stop future renewal without removing the term already paid for. Plan updates and metered charges are not licence renewals. Polar pause and revocation events also preserve the stored term.
A confirmed full refund revokes the affected licence. A partial refund is recorded without changing access, seats or expiry. Open the customer’s licence in Drawspan to adjust it manually if needed. Incomplete or conflicting refund details leave access unchanged and show a refusal or unresolved event for review. Read the provider guide for the evidence Drawspan needs to confirm a full refund.
Shopify paid orders are one-off purchases. Drawspan does not synchronise selling plans, subscription contracts or their cancellation state. A later paid order can grant another term, but this is not Shopify subscription management.
Changing a mapping does not rewrite existing terms. Saving mappings or credentials clears previous setup confirmation; check each linked offer again. Later seat changes and provider membership assignments are not a substitute for managing Drawspan seats. An ordinary renewal cannot restore a refunded subscription.
Customers and email
Drawspan needs a buyer email to provision customer access. A missing email refuses issuance; Drawspan has no ownerless licence-key flow. Paddle can wait for signed customer history, or use checkout custom_data.drawspan_email.
Drawspan uses customer accounts and seats rather than sending one key per purchased seat. Verify the customer’s access separately from onboarding and configured customer notices. Email is queued through the outbox; an SMTP outage does not undo the payment action.
Recover an accepted event
Drawspan retains accepted input without its signature or API credentials. The original receipt and purchase timestamp survive a retry. Payment and customer relationships are scoped to the same connection and environment.
- Open the connection’s Recent webhooks and read the outcome and detail. Correct the product mapping, credential or source data first.
- For unmapped purchases, link the correct identifier, then choose Retry processing. Previously issued payments remain idempotent.
- For missing subscription history, resend the original purchase before retrying the renewal. Manually creating customer access does not attach provider billing history.
- For modern Stripe refunds, enable invoice_payment.paid and resend that relationship event and the relevant invoice or Checkout history. Relationship events retain history without granting access.
- For Paddle customer history, enable customer.created and customer.updated, then replay the matching customer notification. Saving an unchanged customer may not emit an event.
- For unmatched refunds, recover the matching purchase or payment history. Relevant new history can restart the retained reversal; unrelated sales do not. A known reversal arriving first prevents a later active grant.
- For signature rejection, fix the signing secret and resend from the provider. Drawspan does not retain unverified input for internal replay.
- For review_required, inspect the customer’s licence and term history before retrying. Processing was interrupted and part of the action may already have committed. Retry only after confirming that it is safe to add the missing access.
Automatic recovery checks up to 100 due receipts each minute, waits five minutes between attempts and stops after five attempts. It is enabled by default outside Development. It does not repeat interrupted actions with uncertain results. An administrator can retry retained input after correcting it; relevant new history can also recover an exhausted receipt.
Drawspan cannot reconstruct events never delivered or automatically import pre-existing subscriptions. If the provider no longer retains the required history, confirm the payment and correct access manually. For a confirmed full refund needing urgent action, revoke the affected customer grant while investigating.