Profiles·Public

stripe

semver>=8.0.0 <21.0.0postconditions48functions18last verified2026-06-15coverage score78%

Postconditions — what we check

  • create · card-error
    error
    WhenCard was declined or invalid
    ThrowsStripeCardError with error.type === 'card_error'
    Required handlingCaller MUST catch StripeCardError and handle gracefully. Display user-friendly message based on error.decline_code. DO NOT retry card_error without user intervention.
    costhighin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[1]
  • create · rate-limit-error
    warning
    WhenToo many API requests
    ThrowsStripeRateLimitError with error.type === 'rate_limit_error'
    Required handlingCaller SHOULD implement exponential backoff retry logic OR explicitly catch Stripe.errors.StripeRateLimitError with instanceof to handle gracefully. An explicit instanceof Stripe.errors.StripeRateLimitError check satisfies this postcondition. Stripe rate limits are per-account, not per-key.
    costmediumin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[2]
  • create · authentication-error
    error
    WhenInvalid API key
    ThrowsStripeAuthenticationError with error.type === 'authentication_error'
    Required handlingCaller MUST NOT retry. This indicates configuration error. Log error and alert operations team immediately.
    costcriticalin prodimmediate exceptionusers seeservice unavailablevisibilityvisible
    Sources[1]
  • create · network-error
    error
    WhenNetwork connectivity issue
    ThrowsError with no error.type (connection error)
    Required handlingCaller MUST handle network errors separately from Stripe API errors. Implement retry with exponential backoff (max 3 attempts).
    costmediumin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[1]
  • confirm · card-error
    error
    WhenCard declined during confirmation
    ThrowsStripeCardError
    Required handlingReturn to payment form, allow user to update payment method
    costhighin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[1]
  • confirm · rate-limit-error
    warning
    WhenRate limit exceeded
    ThrowsStripeRateLimitError
    Required handlingCaller SHOULD implement exponential backoff retry logic OR explicitly catch Stripe.errors.StripeRateLimitError with instanceof to handle gracefully. An explicit instanceof Stripe.errors.StripeRateLimitError check satisfies this postcondition.
    costmediumin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[2]
  • confirm · authentication-error
    error
    WhenInvalid API key
    ThrowsStripeAuthenticationError
    Required handlingDO NOT retry, alert operations
    costcriticalin prodimmediate exceptionusers seeservice unavailablevisibilityvisible
    Sources[1]
  • confirm · network-error
    error
    WhenNetwork error during confirmation
    ThrowsNetwork error
    Required handlingRetry with idempotency key. Query payment status before creating new PaymentIntent.
    costhighin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[1]
  • constructEvent · signature-verification-failed
    error
    WhenWebhook signature is invalid
    ThrowsStripeSignatureVerificationError
    Required handlingReturn 400 Bad Request immediately. DO NOT process the webhook. Log the error for security monitoring (possible attack).
    costcriticalin prodsilent failureusers seesecurity breachvisibilitysilent
    Sources[3]
  • constructEvent · timestamp-too-old
    error
    WhenWebhook timestamp is too old (replay attack)
    ThrowsStripeSignatureVerificationError with 'Timestamp outside the tolerance zone' message
    Required handlingReturn 400. This prevents replay attacks.
    costhighin prodsilent failureusers seesecurity breachvisibilitysilent
    Sources[3]
  • retrieve · resource-not-found
    error
    WhenResource ID does not exist
    ThrowsStripeInvalidRequestError with code 'resource_missing'
    Required handlingHandle missing resource gracefully. DO NOT retry.
    costmediumin prodimmediate exceptionusers seelost transactionvisibilityvisible
    Sources[4]
  • retrieve · rate-limit-error
    warning
    WhenRate limit exceeded
    ThrowsStripeRateLimitError
    Required handlingCaller SHOULD implement exponential backoff retry logic OR explicitly catch Stripe.errors.StripeRateLimitError with instanceof to handle gracefully. An explicit instanceof Stripe.errors.StripeRateLimitError check satisfies this postcondition.
    costmediumin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[2]
  • retrieve · authentication-error
    error
    WhenInvalid API key
    ThrowsStripeAuthenticationError
    Required handlingDO NOT retry, alert operations
    costcriticalin prodimmediate exceptionusers seeservice unavailablevisibilityvisible
    Sources[1]
  • retrieve · network-error
    error
    WhenNetwork error
    ThrowsNetwork error
    Required handlingRetry with exponential backoff
    costmediumin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[1]
  • capture · capture-authorization-expired
    error
    WhenAuthorization has expired (not captured within 7 days by default)
    ThrowsStripeInvalidRequestError with code 'charge_expired_for_capture' or 'capture_charge_authorization_expired'
    Required handlingCaller MUST handle authorization expiry and inform the user that payment authorization has expired. A new PaymentIntent must be created. DO NOT retry the capture — create a fresh payment flow instead.
    costhighin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[5][6]
  • capture · capture-already-captured
    error
    WhenPaymentIntent or Charge has already been captured
    ThrowsStripeInvalidRequestError with code 'charge_already_captured'
    Required handlingCaller MUST check for already-captured errors when using idempotency keys or retry logic. Retrying a capture without an idempotency key can result in double-capture attempts. Catch and treat as success if payment already captured.
    costmediumin prodimmediate exceptionusers seelost transactionvisibilityvisible
    Sources[5]
  • capture · capture-invalid-state
    error
    WhenPaymentIntent is not in a capturable state (e.g., already canceled, requires_action)
    ThrowsStripeInvalidRequestError with type 'invalid_request_error'
    Required handlingCaller MUST handle invalid state errors. Check PaymentIntent status before attempting capture. Only PaymentIntents in 'requires_capture' status can be captured.
    costhighin prodimmediate exceptionusers seelost transactionvisibilityvisible
    Sources[6][7]
  • capture · capture-rate-limit
    warning
    WhenRate limit exceeded
    ThrowsStripeRateLimitError
    Required handlingImplement exponential backoff. Use idempotency keys to safely retry captures without risk of double-charging.
    costmediumin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[8][7]
  • cancel · cancel-resource-not-found
    error
    WhenSubscription or PaymentIntent ID does not exist
    ThrowsStripeInvalidRequestError with code 'resource_missing'
    Required handlingCaller MUST handle missing resource errors. The resource may have been deleted already or the ID may be incorrect. Log the error and treat as already-canceled where appropriate.
    costmediumin prodimmediate exceptionusers seeservice unavailablevisibilityvisible
    Sources[9][5]
  • cancel · cancel-already-canceled
    warning
    WhenSubscription is already canceled
    ThrowsStripeInvalidRequestError — subscription is already canceled
    Required handlingCaller SHOULD handle idempotently. If the subscription is already canceled, this is a no-op from a business perspective. Catch and treat as success. Avoid surfacing this error to end users.
    costlowin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[9]
  • cancel · cancel-authentication-error
    error
    WhenInvalid or revoked API key
    ThrowsStripeAuthenticationError
    Required handlingDO NOT retry. Log immediately and alert operations — the subscription cancellation did not complete. The customer will continue to be billed until this is resolved.
    costcriticalin prodimmediate exceptionusers seeservice unavailablevisibilityvisible
    Sources[7]
  • refund · refund-already-refunded
    error
    WhenCharge or PaymentIntent has already been fully refunded
    ThrowsStripeInvalidRequestError with code 'charge_already_refunded'
    Required handlingCaller MUST check for already-refunded errors. This commonly occurs when webhook retry logic or duplicate requests cause a second refund attempt. Catch and treat as success if already refunded; do NOT surface to customer as an error.
    costmediumin prodimmediate exceptionusers seelost transactionvisibilityvisible
    Sources[5][10]
  • refund · refund-disputed-charge
    error
    WhenCharge has been disputed (charged back by the customer's bank)
    ThrowsStripeInvalidRequestError with code 'charge_disputed' or 'refund_disputed_payment'
    Required handlingCaller MUST handle disputed charges separately from standard refunds. Refunding a disputed charge does not automatically close the dispute. Respond to the dispute via the Stripe dashboard instead of issuing a programmatic refund.
    costhighin prodimmediate exceptionusers seelost transactionvisibilityvisible
    Sources[5]
  • refund · refund-invalid-amount
    error
    WhenRefund amount exceeds the remaining unrefunded amount
    ThrowsStripeInvalidRequestError with type 'invalid_request_error'
    Required handlingCaller MUST validate refund amount against original charge amount and any prior partial refunds before issuing. Partial refunds: track the sum of all refunds to prevent over-refunding.
    costmediumin prodimmediate exceptionusers seelost transactionvisibilityvisible
    Sources[10][7]
  • refund · refund-rate-limit
    warning
    WhenRate limit exceeded
    ThrowsStripeRateLimitError
    Required handlingImplement exponential backoff. Use idempotency keys to safely retry refunds without risk of double-refunding.
    costlowin prodsilent failureusers seedegraded performancevisibilitysilent
    Sources[8]
  • attach · attach-already-attached
    error
    WhenPaymentMethod is already attached to a different Customer
    ThrowsStripeInvalidRequestError — PaymentMethod already attached to another Customer
    Required handlingCaller MUST handle already-attached errors. Detach the PaymentMethod from the current Customer first, or clone it for Connect platforms using the payment_method.clone endpoint. Do not surface as a generic error.
    costmediumin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[11][7]
  • attach · attach-authentication-required
    error
    WhenCard requires additional authentication (3D Secure) before it can be attached
    ThrowsStripeCardError with code 'authentication_required'
    Required handlingCaller MUST handle authentication_required by initiating a SetupIntent flow to authenticate the card before attaching. Do not retry the attach directly.
    costmediumin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[5][12]
  • detach · detach-default-payment-method
    error
    WhenDetaching the default PaymentMethod from a Customer that has active subscriptions will cause those subscriptions to fail on next billing cycle
    ThrowsNo immediate error thrown — but subsequent subscription charges throw StripeCardError with code 'payment_method_unactivated' or 'card_declined'
    Required handlingCaller MUST check whether the PaymentMethod being detached is the default for any active subscription before detaching. Update the subscription's default_payment_method first if needed. Silent subscription failures will occur on the next billing cycle if this is not handled.
    costhighin proddelayed failureusers seelost transactionvisibilitysilent
    Sources[13][14]
  • detach · detach-not-attached
    warning
    WhenPaymentMethod is not attached to any Customer
    ThrowsStripeInvalidRequestError — PaymentMethod is not attached to a customer
    Required handlingCaller SHOULD handle idempotently. If the PaymentMethod is already detached, treat as success.
    costlowin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[13]
  • constructEventAsync · construct-event-async-signature-failed
    error
    WhenWebhook signature does not match — payload tampered, wrong secret used, or raw body was parsed/re-serialized before verification (common bug: Express JSON body-parser consumed the raw buffer before passing to constructEventAsync).
    ThrowsStripeSignatureVerificationError — no signatures found matching the expected signature for payload
    Required handlingReturn 400 immediately. DO NOT process the webhook payload. Log for security monitoring. In Edge Runtimes, use request.text() (not request.json()) to get the raw body — calling request.json() first and then re-serializing causes signature mismatch even with a valid signature.
    costcriticalin prodsilent failureusers seesecurity breachvisibilitysilent
    Sources[15][16]
  • constructEventAsync · construct-event-async-timestamp-tolerance
    error
    WhenWebhook timestamp is outside the tolerance window (default 300 seconds). Used to prevent replay attacks where an attacker captures and re-sends a valid webhook payload later.
    ThrowsStripeSignatureVerificationError — Timestamp outside the tolerance zone
    Required handlingReturn 400. Do NOT process — this is a replay attack prevention mechanism. If webhooks are consistently failing timestamp validation, check server clock sync (NTP). Do not increase tolerance beyond 600 seconds.
    costhighin prodimmediate exceptionusers seesecurity breachvisibilityvisible
    Sources[15]
  • finalizeInvoice · finalize-no-payment-method-types
    error
    WhenInvoice cannot be finalized because the customer has no valid payment method or the account has no enabled payment method types. Occurs when the customer's card was deleted or expires before finalization, or when no payment method types are configured for the subscription's currency.
    ThrowsStripeInvalidRequestError with code 'invoice_no_payment_method_types'
    Required handlingCaller MUST catch and notify the customer to add a valid payment method before the invoice can be finalized. Do not silently swallow — the subscription billing cycle will not advance until the invoice is finalized.
    costhighin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[5][17]
  • finalizeInvoice · finalize-invoice-not-editable
    warning
    WhenInvoice is not in 'draft' status — it has already been finalized (open, paid, void, or uncollectible). Attempting to finalize a non-draft invoice throws this error. Common bug: calling finalizeInvoice from a webhook handler that fires multiple times due to retry logic.
    ThrowsStripeInvalidRequestError with code 'invoice_not_editable'
    Required handlingCaller SHOULD check invoice.status before calling finalizeInvoice. Treat invoice_not_editable as a no-op (already finalized) and continue normally. Use idempotency keys on the finalize call to prevent double-finalization.
    costlowin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[5][18]
  • pay · pay-requires-action
    error
    WhenThe payment requires additional customer authentication (3D Secure / SCA). Stripe's auto-collection normally handles this for subscription invoices, but when calling pay() manually, the payment may require the customer to complete 3DS authentication before the invoice can be paid.
    ThrowsStripeInvalidRequestError with code 'invoice_payment_intent_requires_action'
    Required handlingCaller MUST handle this by directing the customer to complete authentication. Retrieve the invoice's payment_intent and use its next_action.redirect_to_url or client_secret for 3DS confirmation on the frontend. Do NOT retry pay() without customer authentication.
    costhighin prodsilent failureusers seelost transactionvisibilitysilent
    Sources[5][19]
  • pay · pay-card-declined
    error
    WhenThe customer's payment method was declined during invoice payment. The invoice remains 'open' and the associated PaymentIntent transitions to requires_payment_method.
    ThrowsStripeCardError with code 'card_declined'
    Required handlingCaller MUST catch and notify customer to update their payment method. The invoice is NOT paid — it remains open. Query invoice.payment_intent.last_payment_error for the specific decline reason to show the customer.
    costhighin prodimmediate exceptionusers seelost transactionvisibilityvisible
    Sources[20][7]
  • pay · pay-invoice-not-payable
    warning
    WhenInvoice is not in 'open' status — already paid, voided, or uncollectible. Attempting to pay a non-open invoice throws this error. Common in retry logic that doesn't check invoice status first.
    ThrowsStripeInvalidRequestError with code 'invoice_not_editable' or status_transition_invalid
    Required handlingCheck invoice.status before calling pay(). If status is 'paid', treat as success. If status is 'void' or 'uncollectible', log and skip. Do not retry.
    costlowin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[20][18]
  • sendInvoice · send-invoice-not-open
    error
    WhenInvoice is not in 'open' status. Draft invoices must be finalized before sending. Paid/voided/uncollectible invoices cannot be re-sent.
    ThrowsStripeInvalidRequestError with code 'status_transition_invalid' or 'invoice_not_editable'
    Required handlingCaller MUST ensure invoice is finalized (status='open') before calling sendInvoice. For draft invoices, call finalizeInvoice first. For already-sent invoices, Stripe's invoice portal allows customers to access past invoices without re-sending.
    costmediumin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[21][22]
  • sendInvoice · send-invoice-invalid-email
    error
    WhenCustomer email address is invalid or missing. The invoice cannot be emailed if the customer object has no email address or has an improperly formatted email (e.g., email stored as a display name rather than an email address).
    ThrowsStripeInvalidRequestError with code 'email_invalid'
    Required handlingCaller MUST validate that customer.email is set and properly formatted before calling sendInvoice. Update the customer's email via stripe.customers.update() if missing. Fallback: use Stripe dashboard to manually send or download the invoice PDF.
    costmediumin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[5][22]
  • voidInvoice · void-invoice-invalid-state
    error
    WhenInvoice is not in 'open' or 'uncollectible' status. Cannot void a draft, paid, or already-voided invoice. Draft invoices should be deleted instead of voided. Paid invoices must be refunded, not voided.
    ThrowsStripeInvalidRequestError with code 'status_transition_invalid'
    Required handlingCaller MUST check invoice.status before calling voidInvoice. Only call on invoices in 'open' or 'uncollectible' status. For draft invoices: use stripe.invoices.del(). For paid invoices: use stripe.refunds.create() instead. Treat 'already_voided' cases as no-op.
    costmediumin prodimmediate exceptionusers seedegraded performancevisibilityvisible
  • voidInvoice · void-invoice-rate-limit
    warning
    WhenRate limit exceeded during void operation
    ThrowsStripeRateLimitError
    Required handlingImplement exponential backoff. Use idempotency keys to safely retry voids. Since voiding is irreversible, confirm the invoice state before retrying.
    costlowin prodsilent failureusers seedegraded performancevisibilitysilent
    Sources[8]
  • markUncollectible · mark-uncollectible-invalid-state
    error
    WhenInvoice is not in 'open' status. Only open invoices can be marked uncollectible. Draft, paid, voided, or already-uncollectible invoices throw this error. Common mistake: calling markUncollectible on an invoice that was auto-paid by Stripe before the mark operation ran.
    ThrowsStripeInvalidRequestError with code 'status_transition_invalid'
    Required handlingCaller MUST check invoice.status === 'open' before calling markUncollectible. If status is 'paid', no further action needed. If status is 'void', skip. If status is 'uncollectible', treat as no-op. Re-fetch the invoice if the status may have changed since the last read (race condition in webhook handlers).
    costmediumin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[24][18]
  • resume · resume-invalid-state
    error
    WhenSubscription is not in 'paused' status. Active, canceled, trialing, or past_due subscriptions cannot be resumed. Common mistake: calling resume() on a subscription that was never paused via pause_collection, or on a subscription that was already resumed by a concurrent request.
    ThrowsStripeInvalidRequestError with code 'status_transition_invalid'
    Required handlingCaller MUST check subscription.status === 'paused' before calling resume(). If subscription is already 'active', treat as success. If 'canceled', inform the customer they must re-subscribe. Use idempotency keys to prevent double-resume in concurrent webhook handlers.
    costmediumin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[25][26]
  • resume · resume-payment-required
    error
    WhenResuming the subscription generates an invoice (due to billing_cycle_anchor='now' or outstanding balance) that fails payment. The subscription does NOT become 'active' — it stays 'paused' until the generated invoice is paid. Callers that don't check subscription.status after resume() assume the subscription is active when it's not.
    ReturnsSubscription with status='paused' (not 'active') when the generated invoice has not yet been paid. The subscription only becomes 'active' once the invoice is collected.
    Required handlingAfter calling resume(), re-fetch the subscription and check subscription.status. If still 'paused', redirect the customer to pay the outstanding invoice via invoice.hosted_invoice_url. Do NOT assume resume() immediately makes the subscription active.
    costhighin prodsilent failureusers seedegraded performancevisibilitysilent
    Sources[26][25]
  • incrementAuthorization · increment-authorization-card-declined
    error
    WhenThe card issuer declined the incremental authorization request. This does NOT invalidate the original authorization — the PaymentIntent remains capturable for the previously authorized amount. The amount is not increased. Common reasons: issuer policy, insufficient available credit for the delta amount.
    ThrowsStripeCardError with code 'card_declined'
    Required handlingCaller MUST catch card_declined and NOT cancel the PaymentIntent. The original authorization remains valid and the PaymentIntent can still be captured for the pre-increment amount. Inform the customer that the additional amount could not be authorized and adjust the final charge accordingly.
    costmediumin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[27][28]
  • incrementAuthorization · increment-authorization-invalid-state
    error
    WhenPaymentIntent is not in 'requires_capture' status, or card does not support incremental authorizations (incremental_authorization_supported=false), or the 10-attempt limit has been reached.
    ThrowsStripeInvalidRequestError with code 'intent_invalid_state'
    Required handlingCheck payment_intent.status === 'requires_capture' before calling. Check payment_intent.incremental_authorization.status === 'available' to verify the card supports incremental auth. If not available, capture for the original amount and handle the overage separately.
    costmediumin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[28][27]
  • verifyMicrodeposits · verify-microdeposits-amounts-mismatch
    error
    WhenThe customer entered microdeposit amounts that do not match what Stripe deposited. Commonly caused by the customer reading the wrong deposits, entering amounts in the wrong currency denomination (cents vs. dollars), or transposing the two amounts.
    ThrowsStripeInvalidRequestError with code 'payment_method_microdeposit_verification_amounts_mismatch'
    Required handlingCaller MUST display the error to the customer and allow them to retry. The customer has a limited number of attempts — track attempt count and warn the customer before the final attempt. Do NOT retry programmatically; this requires human input. Allow the customer to re-enter the deposit amounts.
    costmediumin prodimmediate exceptionusers seedegraded performancevisibilityvisible
    Sources[29][5]
  • verifyMicrodeposits · verify-microdeposits-attempts-exceeded
    error
    WhenThe customer has exhausted all verification attempts. Stripe allows a limited number of incorrect amount submissions. After this limit, the payment method is permanently unverifiable and cannot be used.
    ThrowsStripeInvalidRequestError with code 'payment_method_microdeposit_verification_attempts_exceeded'
    Required handlingCaller MUST NOT allow further retry — the bank account is permanently locked for this payment flow. Instruct the customer to add a new bank account and start the verification process fresh. Remove the failed payment method from the customer's account to prevent future confusion.
    costhighin prodimmediate exceptionusers seelost transactionvisibilityvisible
    Sources[5]
  • verifyMicrodeposits · verify-microdeposits-timeout
    error
    WhenThe microdeposit verification window has expired. Microdeposits expire after a set number of days if not verified. The PaymentIntent or SetupIntent's associated bank account becomes unverifiable.
    ThrowsStripeInvalidRequestError with code 'payment_method_microdeposit_verification_timeout'
    Required handlingCaller MUST detect timeout errors and prompt the customer to restart the bank account verification flow with a fresh payment method. The expired microdeposits cannot be re-sent — a new payment method must be created. Send proactive reminders to customers before the verification window closes.
    costhighin prodimmediate exceptionusers seelost transactionvisibilityvisible
    Sources[5][30]

Sources

Every postcondition cites at least one of these. Numbered to match the footnotes above.

  1. [1]stripe.com/docs/error-handlinghttps://stripe.com/docs/error-handling
  2. [2]stripe.com/docs/rate-limitshttps://stripe.com/docs/rate-limits
  3. [3]stripe.com/docs/webhookshttps://stripe.com/docs/webhooks/signatures
  4. [4]stripe.com/docs/apihttps://stripe.com/docs/api/errors
  5. [5]docs.stripe.com/error-codeshttps://docs.stripe.com/error-codes
  6. [6]docs.stripe.com/api/payment_intentshttps://docs.stripe.com/api/payment_intents/capture
  7. [7]docs.stripe.com/error-handlinghttps://docs.stripe.com/error-handling
  8. [8]docs.stripe.com/rate-limitshttps://docs.stripe.com/rate-limits
  9. [9]docs.stripe.com/api/subscriptionshttps://docs.stripe.com/api/subscriptions/cancel
  10. [10]docs.stripe.com/api/refundshttps://docs.stripe.com/api/refunds/create
  11. [11]docs.stripe.com/api/payment_methodshttps://docs.stripe.com/api/payment_methods/attach
  12. [12]docs.stripe.com/payments/3d-securehttps://docs.stripe.com/payments/3d-secure
  13. [13]docs.stripe.com/api/payment_methodshttps://docs.stripe.com/api/payment_methods/detach
  14. [14]docs.stripe.com/billing/subscriptionshttps://docs.stripe.com/billing/subscriptions/overview
  15. [15]docs.stripe.com/webhooks/signatureshttps://docs.stripe.com/webhooks/signatures
  16. [16]github.com/stripe/stripe-nodehttps://github.com/stripe/stripe-node/blob/master/src/Webhooks.ts
  17. [17]docs.stripe.com/api/invoiceshttps://docs.stripe.com/api/invoices/finalize
  18. [18]docs.stripe.com/billing/invoiceshttps://docs.stripe.com/billing/invoices/workflow
  19. [19]docs.stripe.com/billing/migrationhttps://docs.stripe.com/billing/migration/strong-customer-authentication
  20. [20]docs.stripe.com/api/invoiceshttps://docs.stripe.com/api/invoices/pay
  21. [21]docs.stripe.com/api/invoiceshttps://docs.stripe.com/api/invoices
  22. [22]docs.stripe.com/invoicing/send-emailhttps://docs.stripe.com/invoicing/send-email
  23. [23]docs.stripe.com/api/invoiceshttps://docs.stripe.com/api/invoices/void
  24. [24]docs.stripe.com/api/invoiceshttps://docs.stripe.com/api/invoices/mark_uncollectible
  25. [25]docs.stripe.com/api/subscriptionshttps://docs.stripe.com/api/subscriptions/resume
  26. [26]docs.stripe.com/billing/subscriptionshttps://docs.stripe.com/billing/subscriptions/pause-payment
  27. [27]docs.stripe.com/api/payment_intentshttps://docs.stripe.com/api/payment_intents/increment_authorization
  28. [28]docs.stripe.com/payments/incremental-authorizationhttps://docs.stripe.com/payments/incremental-authorization
  29. [29]docs.stripe.com/payments/ach-debithttps://docs.stripe.com/payments/ach-debit/accept-a-payment#web-confirm-payment-intent
  30. [30]docs.stripe.com/payments/ach-debithttps://docs.stripe.com/payments/ach-debit
Need a different package?
Request a profile