# Submit Billing Data

```http
POST /v1/installations/{integrationConfigurationId}/billing
```

Sends the billing and usage data. The partner should do this at least once a day and ideally once per hour. <br/> Use the `credentials.access_token` we provided in the [Upsert Installation](#upsert-installation) body to authorize this request.

## Authentication

**bearerToken**: Default authentication mechanism

## Path Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `integrationConfigurationId` | string | ✓ |  |

## Request Body

**Content-Type**: `application/json`

```json
{
  "timestamp": "string" // required // Server time of your integration, used to determine the most recent data for race conditions & updates. Only the latest usage data for a given day, week, and month will be kept.,
  "eod": "string" // required // End of Day, the UTC datetime for when the end of the billing/usage day is in UTC time. This tells us which day the usage data is for, and also allows for your \"end of day\" to be different from UTC 00:00:00. eod must be within the period dates, and cannot be older than 24h earlier from our server's current time.,
  "period": { // required
    "start": "string" // required,
    "end": "string" // required
  },
  "billing": "value" // required // Billing data (interim invoicing data).,
  "usage": [ // required
    "resourceId": "string" // Partner's resource ID.,
    "name": "string" // required // Metric name.,
    "type": "string" // required // \n              Type of the metric.\n              - total: measured total value, such as Database size\n              - interval: usage during the period, such as i/o or number of queries.\n              - rate: rate of usage, such as queries per second.\n            ,
    "units": "string" // required // Metric units. Example: \"GB\",
    "dayValue": "number" // required // Metric value for the day. Could be a final or an interim value for the day.,
    "periodValue": "number" // required // Metric value for the billing period. Could be a final or an interim value for the period.,
    "planValue": "number" // The limit value of the metric for a billing period, if a limit is defined by the plan.
  ]
}
```

## Responses

### 201

Success

### 400

One of the provided values in the request body is invalid.
One of the provided values in the request query is invalid.

### 401

The request is not authorized.

### 403

You do not have permission to access this resource.

### 404

Success


---

## Related

- [Marketplace API Reference](/docs/integrations/create-integration/marketplace-api/reference)
- [Native Integration Concepts](/docs/integrations/create-integration/native-integration)


--------------------------------------------------------------------------------
title: "Submit Invoice"
description: "This endpoint allows the partner to submit an invoice to Vercel. The invoice is created in Vercel's billing system and sent to the customer. Depending on the type of billing plan, the invoice can be sent at a time of signup, at the start of the billing period, or at the end of the billing period.<br/> <br/> Use the `credentials.access_token` we provided in the [Upsert Installation](#upsert-installation) body to authorize this request. <br/> There are several limitations to the invoice submission:<br/> <br/> 1. A resource can only be billed once per the billing period and the billing plan.<br/> 2. The billing plan used to bill the resource must have been active for this resource during the billing period.<br/> 3. The billing plan used must be a subscription plan.<br/> 4. The interim usage data must be sent hourly for all types of subscriptions. See [Send subscription billing and usage data](#send-subscription-billing-and-usage-data) API on how to send interim billing and usage data.<br/>"
last_updated: "2026-02-03T02:58:50.337Z"
source: "https://vercel.com/docs/integrations/create-integration/marketplace-api/reference/vercel/submit-invoice"
--------------------------------------------------------------------------------