> ## Documentation Index
> Fetch the complete documentation index at: https://docs.slm.m1amdocs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# AutoBill.addCharge

The `addCharge` method allows you to add a non-recurring charge to an `AutoBill`.

## Input

*srd*: sparse response description, a SOAP string (which must be a JSON object), in which you specify the elements you want returned.This parameter enables the calling system to constrain a `method` call to return only components you specify. This gives you greater control over returned content, and improves response time within the Vindicia platform by reducing the processing needed for the call.

Some fields are required, either practically or in the WSDL, and will be returned regardless of the *srd*. A null *srd* returns the complete response.

`autobill`: the object of type `AutoBill` to which this addition applies.

*sku*: the SKU for the charge added to `AutoBill`. If SKU is specified, and matches a Product `merchantProductId`, and `amount` is `null`, an attempt will be made to determine the charge `amount` from the Product.

*description*: a text string description of the charge. (256 or fewer characters.)

*taxClassification*: tax classification for the charge. This field is required, except when the price is to be based on the SKU. If the price is based on the SKU, the tax classification can be based on the associated Product tax.

*amount*: the amount to charge. Required, unless the price is based on the SKU.

*currency*: the ISO 4217 currency code for the amount. Either token, or currency must be specified.

*token*: the `Token` associated with the amount (if this is a Token-based AutoBill). Either token or currency must be specified.

*quantity*: the value to be included in charge. Defaults to 1, if not specified.

*campaignCode*: Optional Coupon or Promotion Code, used to obtain a discount on this charge.

\*\*dryrun:\*\*a Boolean flag that, if set to `true`, will return the updated `AutoBill`, without recording the result in the Subscribe database.

**Note:** Do not change the established currency type.

## Output

*return*: an object of type `Return` that indicates the success or failure of the call.

## Returns

In addition to those listed in [The Return Object](The_Return_Object), this call returns:

| Return Code | Return String |
| - | - |
| `400` | One of the following: - `AutoBill not found.` - `Failed to load token: *error-description*.` - `Failed to add charge to AutoBill: *error-description*.` |

## Example

```
$autobill = new AutoBill();
$autobill->set($abID); // for some $abID
 
$response = $autobill->addCharge(
'prod-bac', // product Id
'fee for swapping tiles',
null, // will get tax class from Product
1.50,
'USD',
null, // not a token
1 // just once
);
// check $response
```

**Parent topic:**[AutoBill Methods](../topics/AutoBill_Methods)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.