Integrating Billing & Recover
A step-by-step path for integrating Acquired Recover into your subscription billing — from enrolling a subscription through to monitoring recoveries and reconciling them against the bills they came from.
This page lays out the integration journey for a merchant adding Acquired Recover to their subscription billing. The steps below are ordered the way you will tackle them: the first two are build-time decisions made when you create a subscription, and the last two are run-time concerns once bills start failing and recoveries are created.
Before you startRecovery currently feeds from subscription bills only. See Recovering subscription payments for the underlying behaviour, and Payment recovery for how a recovery behaves once created. This page assumes you already have Acquired Billing subscriptions integrated.
| # | Step | When |
|---|---|---|
| 1 | Enrol a subscription in recovery | At creation |
| 2 | Set the recovery strategy and auto-cancel policy | At creation |
| 3 | Retrieve the status and details of a recovery | Ongoing |
| 4 | Reconcile a recovery with the bill it came from | Ongoing |
1. Enrol a subscription in recovery
Payment recovery is opt-in per subscription and is enabled at subscription-creation time. Add the payment_failure_configuration object to your Create Subscription request — its presence (with a valid recovery_strategy) is what enrols the subscription and ensures any failed bill payments from that subscription are automatically recovered:
{
"customer": {
"customer_id": "c3e06b6f-bb52-4b2c-81a3-899860652240"
},
"product": { "name": "Pro Plan" },
"price": { "amount": 19.99, "currency": "GBP" },
"payment_failure_configuration": {
"recovery_strategy": "example_strategy"
}
}To leave a subscription unenrolled, omit payment_failure_configuration or send "recovery_strategy": "none". A failed bill payment on an unenrolled subscription is not automatically recovered.
Enrolment is decided at creation
payment_failure_configurationcan only be set when the subscription is created. Decide enrolment up front — an existing subscription cannot be enrolled retrospectively. See Enrolling a subscription.
2. Set the recovery strategy and auto-cancel policy
With enrolment in place, the payment_failure_configuration object carries the two settings that govern how hard and how long Acquired tries on your behalf. Like enrolment itself, both can only be set at creation, so plan them together:
{
"payment_failure_configuration": {
"recovery_strategy": "example_strategy",
"incomplete_bills_before_cancellation": 3
}
}recovery_strategy — the named schedule that determines how and when a failed bill is retried (fixed delays, calendar windows, retry-advice timing, protected dates, and built-in safety limits). Use the exact strategy name supplied during onboarding; an unrecognised name is rejected when the subscription is created. See Recovery strategies.
incomplete_bills_before_cancellation — your tolerance policy for repeated failures. The value N (must be 1 or greater) is the number of consecutive unpaid bills you will tolerate before the subscription is cancelled:
| Value | Behaviour |
|---|---|
null (default) | No auto-cancellation — the subscription is never cancelled by Acquired for unpaid bills, however many occur. |
1 | Strict — a single unpaid bill cancels the subscription. |
3 (e.g.) | Lenient — the subscriber gets more billing cycles, and recovery more chances, before cancellation. |
See Automatically cancelling subscription after repeated failures for exactly how the check is applied before each new bill.
3. Retrieve the status and details of a recovery
Once a bill payment fails, Acquired creates a payment recovery and works the strategy automatically — no polling is required to keep it running. You can retrieve recoveries to report on outcomes and surface recovery state in your own dashboards.
| Action | Endpoint | Notes |
|---|---|---|
| List | GET /payment_recoveries | Paginated. Filter by customer_id, status, and order_id. |
| Retrieve one | GET /payment_recoveries/{recovery_id} | Looked up by the recovery's own ID. |
Read these two fields together to know where a recovery stands:
status—recovering(in progress),recovered(collected), orunrecovered(ended without collecting). The latter two are terminal.termination_reason—nullwhile in progress; once terminal it explains why it ended (for examplepayment_successful,max_retries_exceeded,advice_do_not_retry, orrecovery_cancelled). See Recovery Lifecycle for all reasons.
{
"id": "01JE3X4Y5Z6A7B8C9D0E1F2G3H",
"order_id": "01HNY4G8G8P4E1T4YJ9N8B1Z9M",
"customer_id": "c3e06b6f-bb52-4b2c-81a3-899860652240",
"status": "recovering",
"amount": 19.99,
"currency": "GBP",
"recovery_strategy": "example_strategy",
"termination_reason": null,
"created_at": "2025-11-17T17:00:00Z",
"next_action_scheduled_date": "2025-11-20T09:00:00Z",
"payment_retry_attempt_count": 1
}If a payment is settled outside the recovery pipeline, or you need to stop one early, use the management endpoints (/cancel and /recovered) — both valid only while the recovery is recovering. See Retrieving and managing recoveries for the full lifecycle.
4. Reconcile a recovery with the bill payment it came from
A recovery is always tied back to the payment that triggered it through a shared order_id. This is the key to reconciliation in your own systems:
- A recovery's
order_idis the ID of the failed bill it is recovering. - That same
order_idis shared by every transaction attempted against that bill.
Because the bill, its transactions, and the recovery all carry the same order_id, you can stitch the full picture together — and, by counting successful versus failed attempts under one order_id, calculate the true success rate of collecting that bill.
Two further guarantees make reconciliation predictable:
- At most one recovery per bill. If the same bill fails again, the existing recovery continues rather than a duplicate being created — so an
order_idmaps to a single recovery record. - Outcomes flow back to the bill and subscription:
- A
recoveredrecovery moves the failed bill frompast_duetopaidand reactivates the subscription toactive - an
unrecoveredrecovery moves the bill tounpaidand leaves the subscriptionpast_due(orcancelled, per your auto-cancel policy). See Failed payments and the subscription lifecycle.
- A
TipTo find a recovery from a known bill, call
GET /payment_recoveriesfiltered byorder_id. To go the other way, theorder_idon a recovery is the bill ID you started from.