# Service Overview

When a customer places an order for a product on the website, an invoice is created and marked as paid. The paid invoice is ingested to the database and the line\_items of the invoice are used to create a Service object in the database.

Most products we sell are subscriptions and these are also Stripe objects which remain in-sync with our internal database objects and a Stripe Subscription can be looked at as the payments-component of a Service. The Service object contains information including:

```
country_id
payment_method_id
service_creation_datetime
service_cycle
service_dispatch_datetime
service_expiry_datetime
service_id
service_image
service_is_automatic_collection
service_is_pending_cancellation
service_last_update_datetime
service_name
service_promotional_code
service_protocol
service_quantity
service_status
service_total
service_type isp
```

Each service is made up of a single product type of a certain quantity and can either be a one-off product or an ongoing subscription.

{% hint style="info" %}
Nearly all services will subscriptions as by our three main product ranges are all subscriptions on the website.
{% endhint %}

#### Service Ingestion / Fulfillment

When a Service object is first created, the service\_status is set to <mark style="background-color:purple;">awaiting\_fulfillment</mark> to indicate it is an order which needs to be given proxies and begin its term.

A fulfillment micro-service will run 24/7 and fulfill all new services within a few seconds; notifying the customer and attaching proxies to the service.

In the rare occurrence that there isn't enough stock to fulfill a service, the micro-service will continue attempting to fulfill it and once there is enough stock, fulfilment will be completed.

#### Service Expiration

For subscription products, the expiration date of a service is extended when each payment periods invoice is marked as paid on Stripe.

If a customer doesn't pay an invoice and it becomes overdue, they are sent a warning that there service is about to expire. After 48 hours of the invoice being overdue, the Stripe Subscription is deleted, all open invoices voided and the service has its proxies cleared as well as its service\_status set to: <mark style="background-color:purple;">cancelled</mark>.&#x20;

#### Residential **Bandwidth Service Restrictions**

A customer can have multiple different services concurrently for any product which is sold per IP address. These include Static Residential Proxies and Datacenter Proxies.

However, the customer can only have one Residential Bandwidth plan active at any given time and any new orders will be rejected. If the customer wants more bandwidth or to change the plan cycle, they must reconfigure there current plan.

#### Service Edit vs **Reconfiguration**

A service can be edited and reconfigured. These two terms are distinct and each operation can alter the Service/Subscription differently.

The main difference between the two is that the edit operation is used for managing the overall payment characteristics of the subscription while reconfiguration is used to alter the quantity and payment cycle of a service.

**Edit Operation Use-cases**

```
Change Payment Method
Turn-on/off Automatic Payment Renewal
Mark As Pending Cancellation
```

**Reconfiguration Operation Use-cases**

```
Increase Quantity
Decrease Quantity
Change Payment Cycle
```

#### Service / ServiceAdjustment / SubscriptionSchedule Objects

There are three specific service related database objects which can be retrieved from the API. The main object is the Service object as mentioned but there are two others which include ServiceAdjustment and SubscriptionSchedule.

The ServiceAdjustment are immutable records of any changes made to a service. This object shows the change that occured to the service and the datetime it occured. It stores information including what the service looked like before and what the service looked like after.

SubscriptionSchedule objects are different and are used in conjunction wtih Reconfiguration operations. If a customer schedules a reconfiguration to happen at the end of the current payment period, a SubscriptionSchedule object is created showing that a subscription change is pending.

If a Service has an active SubscriptionSchedule attached to it then it can not be reconfigured until the SubscriptionSchedule is completed or is removed.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://internal.developer.documentation.private.user.pingproxies.com/service-management/service-overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
