# Override billing profile

> For the complete machine-readable documentation index, see [llms.txt](https://apidocs.chargebee.com/llms.txt).


[Idempotency Supported](/docs/api/idempotency)

Assigns the payment source and sets auto collection state for the subscription.

When you don't pass any input param for this API, payment source and auto collection for the subscription will be the same as the customer's default settings.

## Sample Request

#### cURL

```bash
curl  https://{site}.chargebee.com/api/v2/subscriptions/__test__8asukSOXdw1vPR/override_billing_profile \
     -u {site_api_key}:\
     -d payment_source_id="pm___test__8asukSOXdwAuPa" \
     -d auto_collection="ON"
```

#### .NET

```dotnet
using ChargeBee.Api;
using ChargeBee.Models;
using ChargeBee.Models.Enums;

ApiConfig.Configure("{site}","{site_api_key}");
EntityResult result = Subscription.OverrideBillingProfile("__test__8asukSOXdw1vPR")
		.PaymentSourceId("pm___test__8asukSOXdwAuPa")
		.AutoCollection(AutoCollectionEnum.On)
		.Request();

Subscription subscription = result.Subscription;
PaymentSource paymentSource = result.PaymentSource;
```

#### Go

```go
package main
import (
    "fmt"
    "github.com/chargebee/chargebee-go/v3"
    subscriptionAction "github.com/chargebee/chargebee-go/v3/actions/subscription"
    "github.com/chargebee/chargebee-go/v3/models/subscription"
    enum "github.com/chargebee/chargebee-go/v3/enum"
)
func main() {
    chargebee.Configure("{site_api_key}","{site}");
    res,err := subscriptionAction.OverrideBillingProfile("__test__8asukSOXdw1vPR", &subscription.OverrideBillingProfileRequestParams{
        PaymentSourceId : "pm___test__8asukSOXdwAuPa",
        AutoCollection : enum.AutoCollectionOn,
    }).Request()
    if err != nil {
        fmt.Println(err)
    } else {
        Subscription := res.Subscription
        PaymentSource := res.PaymentSource
    }
}
```

#### Go

```go
package main

import (
  "fmt"
  "github.com/chargebee/chargebee-go/v4"
)

func main() {
  config := &chargebee.ClientConfig{
    SiteName: "{site}",
    ApiKey: "{site_api_key}",
  }    
  client := chargebee.NewClient(config)
  req := &chargebee.SubscriptionOverrideBillingProfileRequest{
    PaymentSourceId : "pm___test__8asukSOXdwAuPa",
    AutoCollection : chargebee.AutoCollectionOn,
}
  res, err := client.Subscription.OverrideBillingProfile("__test__8asukSOXdw1vPR", req)
      if err != nil {
        fmt.Println(err)
    } else {
        Subscription := res.Subscription
        PaymentSource := res.PaymentSource
    }
}
```

#### Java

```java
import com.chargebee.*;
import com.chargebee.ListResult;
import com.chargebee.models.*;
import com.chargebee.models.enums.*;
import java.io.IOException;

public class Sample {

    public static void main(String args[]) throws IOException, Exception {
        Environment.configure("{site}", "{site_api_key}");
        Result result = Subscription.overrideBillingProfile("__test__8asukSOXdw1vPR")
            .paymentSourceId("pm___test__8asukSOXdwAuPa")
            .autoCollection(AutoCollection.ON)
            .request();

        Subscription subscription = result.subscription();
        PaymentSource paymentSource = result.paymentSource();
    }
}
```

#### Java

```java
import com.chargebee.v4.client.ChargebeeClient;
import com.chargebee.v4.models.paymentSource.PaymentSource;
import com.chargebee.v4.models.subscription.Subscription;
import com.chargebee.v4.models.subscription.params.SubscriptionOverrideBillingProfileParams;
import com.chargebee.v4.models.subscription.responses.SubscriptionOverrideBillingProfileResponse;

public class SubscriptionOverrideBillingProfile {

    public static void main(String[] args) {
        ChargebeeClient client = ChargebeeClient.builder()
            .apiKey("{site_api_key}")
            .siteName("{site}")
            .build();

        SubscriptionOverrideBillingProfileParams params = SubscriptionOverrideBillingProfileParams.builder()
            .paymentSourceId("pm___test__8asukSOXdwAuPa")
            .autoCollection(SubscriptionOverrideBillingProfileParams.AutoCollection.ON)
            .build();

        SubscriptionOverrideBillingProfileResponse response = client
            .subscriptions()
            .overrideBillingProfile("__test__8asukSOXdw1vPR", params);

        Subscription subscription = response.getSubscription();
        PaymentSource paymentSource = response.getPaymentSource();
    }
}
```

#### Node.js

```node
import Chargebee from "chargebee";

const chargebee = new Chargebee({
    site: "{site}",
    apiKey: "{site_api_key}",
});

try {
    const result = await chargebee.subscription.overrideBillingProfile("__test__8asukSOXdw1vPR", {
        payment_source_id: "pm___test__8asukSOXdwAuPa",
        auto_collection: "on"
    });

    console.log(result);
    const subscription = result.subscription;
    const paymentSource = result.payment_source;
} catch (err) {
    console.log(err);
}
```

#### PHP

```php
<?php

require __DIR__ . '/vendor/autoload.php';

use Chargebee\ChargebeeClient;

$chargebee = new ChargebeeClient(options: [
    "site" => "{site}",
    "apiKey" => "{site_api_key}",
]);
$result = $chargebee->subscription()->overrideBillingProfile("__test__8asukSOXdw1vPR", [
    "payment_source_id" => "pm___test__8asukSOXdwAuPa",
    "auto_collection" => "on"
]);
$subscription = $result->subscription;
$paymentSource = $result->payment_source;
```

#### Python

```python
import chargebee
from chargebee import Chargebee

cb_client = Chargebee(api_key="{site_api_key}", site="{site}")
response = cb_client.Subscription.override_billing_profile("__test__8asukSOXdw1vPR",
    cb_client.Subscription.OverrideBillingProfileParams(
        payment_source_id="pm___test__8asukSOXdwAuPa",
        auto_collection=chargebee.AutoCollection.ON
    )
)
subscription = response.subscription
payment_source = response.payment_source
```

#### Ruby

```ruby
require 'chargebee'

ChargeBee.configure(:site => "{site}",
  :api_key => "{site_api_key}")

result = ChargeBee::Subscription.override_billing_profile("__test__8asukSOXdw1vPR",{
  :payment_source_id => "pm___test__8asukSOXdwAuPa",
  :auto_collection => "ON"
})

subscription = result.subscription
payment_source = result.payment_source
```

## Sample Response

```json
{
  "payment_source": {
    "card": {
      "brand": "american_express",
      "expiry_month": 12,
      "expiry_year": 2022,
      "funding_type": "not_known",
      "iin": "378282",
      "last4": "0005",
      "masked_number": "***********0005",
      "object": "card"
    },
    "created_at": 1612890921,
    "customer_id": "__test__8asukSOXdvwzPO",
    "deleted": false,
    "gateway": "chargebee",
    "gateway_account_id": "gw___test__8astDSOXdqwz1y",
    "id": "pm___test__8asukSOXdwAuPa",
    "object": "payment_source",
    "reference_id": "tok___test__8asukSOXdwAqPZ",
    "resource_version": 1612890921000,
    "status": "valid",
    "type": "card",
    "updated_at": 1612890921
  },
  "subscription": {
    "activated_at": 1612890921,
    "auto_collection": "on",
    "billing_period": 1,
    "billing_period_unit": "month",
    "created_at": 1612890921,
    "currency_code": "USD",
    "current_term_end": 1615310121,
    "current_term_start": 1612890921,
    "customer_id": "__test__8asukSOXdvwzPO",
    "deleted": false,
    "due_invoices_count": 0,
    "has_scheduled_changes": false,
    "id": "__test__8asukSOXdw1vPR",
    "mrr": 0,
    "next_billing_at": 1615310121,
    "object": "subscription",
    "payment_source_id": "pm___test__8asukSOXdwAuPa",
    "remaining_billing_cycles": 1,
    "resource_version": 1612890921000,
    "started_at": 1612890921,
    "status": "active",
    "subscription_items": [
      {
        "amount": 1000,
        "billing_cycles": 1,
        "free_quantity": 0,
        "item_price_id": "basic-USD",
        "item_type": "plan",
        "object": "subscription_item",
        "quantity": 1,
        "unit_price": 1000
      },
      {..}
    ],
    "updated_at": 1612890921
  }
}
```

## URL Format

**POST** https://[site].chargebee.com/api/v2/subscriptions/{subscription-id}/override_billing_profile

## Input Parameters

- `payment_source_id` (optional, string, max chars=40)
  Unique identifier of the payment source to be attached to this subscription.

- `auto_collection` (optional, enumerated string)
  Defines whether payments need to be collected automatically for this subscription. Overrides customer's auto-collection property.
  Possible enum values:
    - `on`
      Whenever an invoice is created for this subscription, an automatic charge will be attempted on the payment method available.
    - `off`
      Automatic collection of charges will not be made for this subscription. Use this for offline payments.

## Returns

- `subscription` (Subscription object)
  Resource object representing subscription

- `payment_source` (Payment source object)
  Resource object representing payment\_source
