Skip to main content
Use this guide when your billing system is custom-built or heavily customized. It turns the custom integration pieces into an end-to-end launch plan: data sync, recovery decisions, webhook handling, historical data, testing, rollout, and monitoring. For endpoint details, see the custom API reference. For the overall integration model, start with the custom billing overview.

What You Are Building

A custom billing integration has four core parts:
  1. Data sync: Send subscriptions, invoices, and transaction attempts to Slicker.
  2. Recovery decision path: Receive Slicker’s retry and dunning recommendations by webhook, or query them from the API.
  3. Historical backfill: Send enough past billing and payment activity for Slicker to understand your recovery patterns.
  4. Operational monitoring: Track data freshness, webhook delivery, recovery action execution, and mismatches against your billing system.
Connect payment processor integrations whenever possible. Processor data gives Slicker richer authorization outcomes, gateway error codes, scheme response codes, issuer details, and payment-method metadata.

Phase 1: Confirm the Integration Shape

Before writing code, agree the following details with your Slicker integration team:
DecisionWhat to Confirm
Canonical IDsWhich IDs uniquely identify customers, subscriptions, invoices, and transactions in your billing system.
Sync modelWhether you will send events in near real time, run scheduled batch syncs, or use both.
Payment source of truthWhich system owns final payment state and transaction outcomes.
Recovery executionWhether your system will execute retries from webhooks, poll recovery actions, or use a hybrid model.
Dunning ownershipWhich system sends recovery emails and when collection should pause or complete.
Historical windowHow many months of invoices, subscriptions, and transactions to backfill before launch.
Rollout cohortWhether launch starts with all traffic or a subset by product, country, plan, or business entity.
The most important rule is stable identity. Use the same external IDs for historical backfill and future live events so Slicker can connect invoices, transactions, and recovery outcomes over time.

Phase 2: Build the Data Sync

Send data in dependency order when possible:
1

Sync subscriptions

Send the active and historical subscriptions that invoices belong to. Include customer, plan, currency, billing cycle, status, and lifecycle timestamps when available.
2

Sync invoices

Send invoices with their current collection state, amount, currency, due date, subscription ID, customer ID, and timestamps.
3

Sync transactions

Send each payment attempt, including failed attempts and retries. A transaction is one authorization attempt; multiple retries for the same invoice should be sent as separate transactions.
4

Keep records fresh

Send updates when invoice status, subscription status, transaction outcome, customer details, or payment-method context changes.

Sync Rules

  • Treat API requests as idempotent from your side: retry failed requests safely and keep your external IDs stable.
  • Preserve original event timestamps. Do not replace historical timestamps with the sync time.
  • Send failed and successful payment attempts. Recovery analysis needs both sides of the funnel.
  • Keep batch sizes within API limits. See the custom API overview.
  • Log every request ID, response status, and failed payload reference so issues can be replayed.

Phase 3: Implement Recovery Actions

Slicker can tell your system when to retry a payment, when to request a payment-method change, when to pause collection, and when dunning should complete.

Webhook Path

If you use webhooks, implement one HTTPS endpoint that accepts Slicker events:
  • Authenticate requests with the agreed bearer token or basic auth credentials.
  • Return a 2xx response quickly after validating and queuing the event.
  • Process events asynchronously when retry execution may take longer than a few seconds.
  • Deduplicate by webhook event ID.
  • Store the original payload for audit and replay.
  • Alert on repeated non-2xx responses or processing failures.
See Webhook Implementation for payload structure and event-specific references.

Polling Path

If you poll recovery actions, run the poller frequently enough to act before recommended retry windows pass. Store the last successful poll time, deduplicate actions by ID, and alert if polling stops or returns repeated errors. See List recovery actions for endpoint details.

Phase 4: Backfill Historical Data

Historical data helps Slicker learn payment behavior before live recovery begins. Recommended approach:
  1. Select a backfill window with the Slicker integration team. Six to twelve months is often useful when available.
  2. Backfill subscriptions first, then invoices, then transactions.
  3. Preserve original timestamps and final states.
  4. Include recovered, unrecovered, refunded, voided, and still-open invoices when available.
  5. Reconcile counts against your billing system before launch.
Useful reconciliation checks:
CheckExpected Result
Invoice count by monthMatches your billing system within the agreed scope.
Transaction count by monthMatches payment attempts, not just invoices.
Failed transaction countIncludes initial failures and failed retries.
Recovery outcomesPaid-after-failure invoices are distinguishable from first-attempt successes.
Currency and country coverageHigh-volume segments are present and mapped correctly.

Phase 5: Test Before Launch

Run these tests in a non-production or controlled rollout environment before enabling full recovery automation:
ScenarioWhat to Verify
Successful first-attempt invoiceInvoice and transaction sync without entering recovery.
Failed invoiceFailed transaction creates the expected recovery context.
Retry succeedsThe successful retry is sent as a new transaction and closes the invoice.
Retry failsThe failed retry is sent as a new transaction and recovery remains open.
Payment-method change neededYour system can route the customer to the correct update flow.
Pause collection eventYour billing system pauses its own collection logic when instructed.
Complete dunning eventYour billing system stops dunning for the invoice when instructed.
Duplicate webhook deliveryProcessing is idempotent and does not double-retry.
Webhook delivery failureSlicker retries delivery and your alerts fire.
API failureYour sync retries with backoff and preserves failed payloads for replay.

Launch Checklist

Before launch, confirm:
  • API credentials are stored securely and not exposed in client-side code.
  • Subscriptions, invoices, and transactions are syncing successfully.
  • Historical data has been reconciled for the agreed launch scope.
  • Webhook authentication, idempotency, and alerting are live.
  • Recovery actions are being executed in the correct billing-system environment.
  • Payment provider integrations are connected where applicable.
  • Your team has an owner for integration incidents.
  • You have a rollback plan, such as pausing webhook execution or disabling the rollout cohort.

Rollout Plan

Start with visibility before automation:
1

Shadow mode

Send live data and inspect recovery recommendations without executing automated retries from Slicker.
2

Limited cohort

Enable recovery execution for a small, representative cohort such as one business entity, country, product, or plan family.
3

Measure and reconcile

Compare Slicker recovery actions, billing-system retries, invoice outcomes, and customer impact.
4

Expand

Increase the rollout scope once data freshness, webhook success, and recovery results are stable.

Monitor After Launch

Track these signals during the first weeks after launch:
  • API ingestion failures and retry volume.
  • Data freshness for invoices, subscriptions, and transactions.
  • Webhook delivery success rate and processing latency.
  • Recovery action backlog or actions missed after their ideal retry time.
  • Invoice recovery rate, failed recovery rate, and recovered amount.
  • Differences between Slicker counts and your billing system counts.
If any metric regresses, pause expansion and review the affected payloads with the Slicker integration team.

Next Steps