Skip to main content

Prerequisites

Slicker integrates with Stripe via an API key. Creating a Stripe API key requires a Stripe user enough permissions to do so. Stipe user roles that have this permission include Administrator, Super Administrator, and Developer.

(Option 1: Stripe Marketplace App) Integerate via the Stripe Marketplace

  1. Go to the Slicker App page in the Stripe Marketplace.
  2. Click on the Install button.
  3. Follow the instructions to authorize Slicker to access your Stripe account.
  4. Once authorized, you will be able to use click the Link button in the Slicker app page to link your Stripe account to your Slicker instance.

(Option 2: API Key) Create credentials

  1. Go to the Stripe dashboard to create a new restricted API key here.
  2. Give the key a name like Slicker.
  3. For permissions select the following:
    • Read on All core resources
    Stripe read permissions on core resources
    • Read on All Connect resources
    Stripe read permissions on connect resources
    • Read on All Reporting resources
    Stripe read permissions on reporting resources
    • Read on all Billing resources, with Write on Invoices.
      The Write permission on Invoices is required for Slicker to retry failed transactions and recover revenue.
    Stripe billing permissions
    • (Optional) Write on Subscriptions.
      Add Write on Subscriptions only if you want Slicker’s Grace Period Manager to cancel subscriptions when their grace period ends. Marking invoices uncollectible is already covered by the Write on Invoices permission above. Cancelling subscriptions is the one grace-period action that needs this extra scope.
  4. Click the Create key button. If prompted confirm your password. Copy the generated key - we will need it later.

(Option 2: API Key) Create integration in Slicker

  1. Go to the Slicker’s new integration page.
  2. Select Stripe from the list of integrations.
  3. Give the integration a name and description to help you identify it later.
  4. Enter the API key you copied earlier.
  5. Make sure to select this integration is for Stripe Billing. Otherwise, Slicker will only sync payment data, without managing failed billing attempts.
Stripe Billing enabled in Slicker integration
  1. Click the Submit button to create the integration.

(Optional) Enable real-time webhooks

By default Slicker keeps your data in sync by polling the Stripe API on a schedule. Adding a webhook lets Stripe push changes to Slicker the moment they happen, for near real-time recovery tracking. For Stripe Billing this is especially valuable: Stripe’s API has no “updated since” filter for invoices and subscriptions, so webhooks are the most reliable way to capture later status changes — a payment that finally succeeds, an invoice that’s voided, a subscription that cancels — as soon as they occur.
Webhooks are configured per Stripe account, in that account’s own Stripe Dashboard. They’re optional and can be added at any time after the integration is created.
  1. Open your existing Slicker integration and find Webhooks. Copy the Webhook URL and keep the page open until you save the signing secret. For a new integration, first select Enable Webhooks in its creation form.
  2. In the matching account’s Stripe Dashboard, open Workbench → Webhooks and add a destination for your account’s events. Use a separate destination and signing secret for each Slicker integration, including when you use an organization API key.
  3. Paste the Slicker Webhook URL into the Endpoint URL field. Choose snapshot events and the newest API version the dashboard offers (a clover or dahlia version). Thin events are not supported by this setup.
  4. Under Select events, select these 20 individual event types. Avoid All events and wildcard event families:
    • Invoices — invoice.finalized, invoice.updated, invoice.paid, invoice.payment_failed, invoice.payment_action_required, invoice.marked_uncollectible, invoice.voided
    • Subscriptions — customer.subscription.created, customer.subscription.updated, customer.subscription.deleted, customer.subscription.paused, customer.subscription.resumed
    • Payments — payment_intent.succeeded, payment_intent.payment_failed, payment_intent.processing, payment_intent.requires_action, payment_intent.canceled
    • Customers — customer.created, customer.updated, customer.deleted
    If you use manual capture, also select payment_intent.amount_capturable_updated to receive authorization updates before capture. This makes 21 event types. Keep invoice.updated for changes such as retry scheduling. invoice.paid already covers successful collection and invoices marked paid outside Stripe, so invoice.payment_succeeded is unnecessary.
  5. Save the destination.
  6. Open the endpoint you just created, reveal its Signing secret (it starts with whsec_), and copy it.
  7. Back in Slicker, paste the signing secret into Signing Secret and select Enable webhooks (or submit the new integration). To rotate a secret later, use Update secret; keep the existing URL.
  8. Confirm successful deliveries in Stripe’s Event deliveries tab and check the corresponding records in Slicker. Slicker acknowledges every Stripe delivery, including ones it cannot verify yet, so that a setup problem never interferes with your billing; events that arrived before you saved the secret therefore show as delivered in Stripe but were not processed. Resend them from the Event deliveries tab after saving, or disable the destination in Stripe between steps 5 and 7 to avoid the gap. The Configured badge confirms saved settings; it does not confirm delivery. Updates can take roughly 30 seconds of batching plus processing time.
Keep scheduled syncing enabled. These events update customers, subscriptions, invoices, and PaymentIntents; Charge attempts, refunds, and disputes still use their existing sync paths. Adding an endpoint does not backfill old changes, and draft-invoice deletion is not handled by this event list.
Copy the signing secret (whsec_…) — not your API key (sk_/rk_) or the endpoint ID. If you ever rotate the secret in Stripe, update it in Slicker too.

(Optional) Let Slicker manage the grace period

Slicker’s Grace Period Manager keeps recovering failed payments on your own schedule and decides what happens when that window ends. There are two things to set up: turn the grace period settings on in Slicker, and stop Stripe from ending the subscription itself.
The order does not matter. Slicker measures each grace period from the invoice’s first failed payment, not from when you turn the feature on, so if you switch Stripe to leave invoices overdue first, they simply wait until Slicker takes over. Its next run then closes anything already past its grace period, so the backlog is handled either way.

Turn on grace period management in Slicker

In your Slicker integration settings, enable the grace period manager, then set the grace period length and the actions to apply when it expires.
Slicker grace period manager settings for Stripe
If you do not see these settings, let us know and we will enable the feature for your account.

Turn off Stripe’s automatic cancellation

Stop Stripe from ending the subscription itself, so Slicker owns the recovery window. Otherwise Stripe cancels or writes off the invoice once its own retries run out, before your grace period is up.
  1. Open your Stripe retries and recovery settings.
  2. Set every failed-payment outcome to leave the invoice overdue. Do not cancel the subscription, mark it unpaid, or mark the invoice uncollectible.
Stripe retries settings with all failed-payment outcomes left as overdue
With Slicker managing the grace period and Stripe set to leave invoices overdue, Slicker applies the end-of-grace action you choose. Cancelling subscriptions also needs the optional Write on Subscriptions permission described above.

Troubleshooting

On integration creation, Slicker will attempt to connect to Stripe using the provided API key. If the connection fails, you will see an error message like the one below. Please double-check the API key, make sure it has the correct permissions, and try again.
Failed integration creation message