Subscriptions

A subscription starts when the customer pays for a subscription product. We then charge their phone bill every renewal period until they reply STOP, you cancel it, or renewals keep failing.

The subscription_uuid is included in the sms_payment_completed postback for the first payment, and in every subscription postback.

Renewals

  • Every renewal is followed by a receipt text with the amount, when the next one is due and how to stop it.
  • If a renewal fails, it shows as RENEWAL_FAILED and you receive sms_subscription_renewal_failed once. We retry daily for up to 60 days; if a retry goes through you receive sms_subscription_renewed and it is ACTIVE again. If the retries run out, the subscription ends (ENDED) and you receive sms_subscription_cancelled.
  • On Sky, a renewal that is partly taken has the rest retried daily for up to 30 days before it counts as failed.

Get a subscription

https://api.vendreo.com/v1/sms/subscriptions/{subscription_uuid}

curl --location --request GET 'https://api.vendreo.com/v1/sms/subscriptions/{SUBSCRIPTION_UUID}' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer {AUTH_TOKEN}'

Cancel a subscription

Stops all future renewals and texts the customer to say it has been cancelled. Returns 409 if it has already ended.

https://api.vendreo.com/v1/sms/subscriptions/{subscription_uuid}/cancel

curl --location --request POST 'https://api.vendreo.com/v1/sms/subscriptions/{SUBSCRIPTION_UUID}/cancel' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer {AUTH_TOKEN}'

Response

Both endpoints return the subscription. Only subscriptions taken through the Payment Profile you call with are found; others return 404.

{
    "subscription_uuid": "4c1e0f7a-3b2d-4e8f-a6c9-0d1e2f3a4b5c",
    "status": "ACTIVE",
    "product": {
        "product_uuid": "0b7a9e2c-6d4f-4a1b-8c3e-5f6a7b8c9d0e",
        "name": "VIP chat"
    },
    "msisdn": "447700900123",
    "network": "UK.O2",
    "renewal_amount": 1000,
    "renewal_period_days": 30,
    "renewal_period_minutes": null,
    "currency": "GBP",
    "renewals": 2,
    "last_charged_at": "2026-11-01T09:00:12+00:00",
    "next_charge_at": "2026-12-01T09:00:12+00:00",
    "cancel_reason": null,
    "cancelled_at": null,
    "created_at": "2026-09-02T09:00:05+00:00",
    "meta": {
        "tracing_id": "8f3b6c1e-5d2a-4f7b-9c0e-1a2b3c4d5e6f"
    }
}
  
statusACTIVE, RENEWAL_FAILED (the last renewal failed and is being retried), CANCELLED or ENDED (renewals kept failing).
renewal_amountIn pence.
renewal_period_minutesSet only on test products that renew every few minutes; it replaces renewal_period_days.
renewalsHow many renewals have been charged, not counting the first payment.
cancel_reasonstopped_by_customer, cancelled_by_merchant or renewal_failed.