# Update plugin billing record

`PUT /api/plugins/{pluginId}/subscriptions/{subscriptionId}/billings/{id}`

Authentication (security requirement alternatives):

```json
[
  {
    "bearer": []
  }
]
```

- bearer: http (bearer), header JWT. Enter JWT token

Parameters:

- `id` (path, string, required)
  Type: string

Request body: application/json (required)

Type: object

Schema: [UpdatePluginBillingDTO](https://sourcey-gauzy.pages.dev/api-reference/models/updatepluginbillingdto/index.md)

- `amount` (optional)
  Type: number
  
  Billing amount
  
  minimum: 0
  
  Example:
  
  ```json
  99.99
  ```

- `currency` (optional)
  Type: string
  
  Currency code
  
  Example:
  
  ```json
  "USD"
  ```

- `billingDate` (optional)
  Type: string, date-time
  
  Billing date
  
  Example:
  
  ```json
  "2025-01-01T00:00:00Z"
  ```

- `dueDate` (optional)
  Type: string, date-time
  
  Due date for payment
  
  Example:
  
  ```json
  "2025-01-15T00:00:00Z"
  ```

- `paymentDueDate` (optional)
  Type: string, date-time
  
  Payment due date
  
  Example:
  
  ```json
  "2025-01-30T00:00:00Z"
  ```

- `status` (optional)
  Type: string
  
  Billing status
  
  enum: ["pending","processed","paid","overdue","failed","cancelled","refunded","partially_paid"]

- `billingPeriodStart` (optional)
  Type: string, date-time
  
  Billing period start date
  
  Example:
  
  ```json
  "2025-01-01T00:00:00Z"
  ```

- `billingPeriodEnd` (optional)
  Type: string, date-time
  
  Billing period end date
  
  Example:
  
  ```json
  "2025-01-31T23:59:59Z"
  ```

- `invoiceNumber` (optional)
  Type: string
  
  Invoice number
  
  Example:
  
  ```json
  "INV-202501-0001"
  ```

- `invoiceUrl` (optional)
  Type: string
  
  Invoice URL
  
  Example:
  
  ```json
  "https://example.com/invoices/inv-123"
  ```

- `taxAmount` (optional)
  Type: number
  
  Tax amount
  
  minimum: 0
  
  Example:
  
  ```json
  9.99
  ```

- `taxRate` (optional)
  Type: number
  
  Tax rate (as decimal)
  
  minimum: 0
  
  maximum: 1
  
  Example:
  
  ```json
  0.1
  ```

- `discountAmount` (optional)
  Type: number
  
  Discount amount
  
  minimum: 0
  
  Example:
  
  ```json
  5
  ```

- `discountCode` (optional)
  Type: string
  
  Discount code
  
  Example:
  
  ```json
  "SAVE10"
  ```

- `description` (optional)
  Type: string
  
  Billing description/notes
  
  Example:
  
  ```json
  "Monthly subscription fee for Premium plan"
  ```

- `paymentReference` (optional)
  Type: string
  
  Payment reference
  
  Example:
  
  ```json
  "PAY_12345"
  ```

- `metadata` (optional)
  Type: object
  
  Billing metadata
  
  Example:
  
  ```json
  {
    "source": "automated",
    "campaign": "summer2025"
  }
  ```

Responses:

- 200: Plugin billing record updated successfully

## Examples

### cURL

```bash
curl -X PUT 'http://localhost:3000/api/plugins/%7BpluginId%7D/subscriptions/%7BsubscriptionId%7D/billings/string' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "amount": 99.99,
  "currency": "USD",
  "billingDate": "2025-01-01T00:00:00Z",
  "dueDate": "2025-01-15T00:00:00Z",
  "paymentDueDate": "2025-01-30T00:00:00Z",
  "status": "pending",
  "billingPeriodStart": "2025-01-01T00:00:00Z",
  "billingPeriodEnd": "2025-01-31T23:59:59Z",
  "invoiceNumber": "INV-202501-0001",
  "invoiceUrl": "https://example.com/invoices/inv-123",
  "taxAmount": 9.99,
  "taxRate": 0.1,
  "discountAmount": 5,
  "discountCode": "SAVE10",
  "description": "Monthly subscription fee for Premium plan",
  "paymentReference": "PAY_12345",
  "metadata": {
    "source": "automated",
    "campaign": "summer2025"
  }
}'
```

### JavaScript

```javascript
const body = `{
  "amount": 99.99,
  "currency": "USD",
  "billingDate": "2025-01-01T00:00:00Z",
  "dueDate": "2025-01-15T00:00:00Z",
  "paymentDueDate": "2025-01-30T00:00:00Z",
  "status": "pending",
  "billingPeriodStart": "2025-01-01T00:00:00Z",
  "billingPeriodEnd": "2025-01-31T23:59:59Z",
  "invoiceNumber": "INV-202501-0001",
  "invoiceUrl": "https://example.com/invoices/inv-123",
  "taxAmount": 9.99,
  "taxRate": 0.1,
  "discountAmount": 5,
  "discountCode": "SAVE10",
  "description": "Monthly subscription fee for Premium plan",
  "paymentReference": "PAY_12345",
  "metadata": {
    "source": "automated",
    "campaign": "summer2025"
  }
}`;

const response = await fetch('http://localhost:3000/api/plugins/%7BpluginId%7D/subscriptions/%7BsubscriptionId%7D/billings/string', {
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN',
    'Content-Type': 'application/json',
  },
  body,
});

const data = await response.text();
```

### Python

```python
import requests

body = '''{
  "amount": 99.99,
  "currency": "USD",
  "billingDate": "2025-01-01T00:00:00Z",
  "dueDate": "2025-01-15T00:00:00Z",
  "paymentDueDate": "2025-01-30T00:00:00Z",
  "status": "pending",
  "billingPeriodStart": "2025-01-01T00:00:00Z",
  "billingPeriodEnd": "2025-01-31T23:59:59Z",
  "invoiceNumber": "INV-202501-0001",
  "invoiceUrl": "https://example.com/invoices/inv-123",
  "taxAmount": 9.99,
  "taxRate": 0.1,
  "discountAmount": 5,
  "discountCode": "SAVE10",
  "description": "Monthly subscription fee for Premium plan",
  "paymentReference": "PAY_12345",
  "metadata": {
    "source": "automated",
    "campaign": "summer2025"
  }
}'''

response = requests.put(
    'http://localhost:3000/api/plugins/%7BpluginId%7D/subscriptions/%7BsubscriptionId%7D/billings/string',
    data=body.encode('utf-8'),
    headers={
        'Authorization': 'Bearer YOUR_TOKEN',
        'Content-Type': 'application/json',
    },
)
print(response.text)
```
