---
title: "Store or rotate a billing webhook signing secret"
description: "PUT /admin/v1/billing-connections/{connectionId}/webhook-secret — Store or rotate a billing webhook signing secret"
---

> Documentation Index
> Fetch the complete documentation index at: https://nexus.microvoid.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Store or rotate a billing webhook signing secret

## Endpoint

```http
PUT /admin/v1/billing-connections/{connectionId}/webhook-secret
```

Operation ID: `configureBillingWebhookSecret`

## Authentication

Send a Nexus Management Key as `Authorization: Bearer <management-key>`. This credential is control-plane only.

## Idempotency

This operation does not declare an `Idempotency-Key` requirement in the accepted OpenAPI contract.

## Request

### Parameters

| Name           | Location | Required | Schema   | Description |
| -------------- | -------- | -------- | -------- | ----------- |
| `connectionId` | path     | Yes      | `string` | —           |

### application/json body

Required: **Yes**

Type: `ConfigureBillingWebhookSecretDto`

| Field           | Required | Type     | Description |
| --------------- | -------- | -------- | ----------- |
| `webhookSecret` | Yes      | `string` | —           |

## Responses

| Status | Description | Content type     | Schema                 |
| ------ | ----------- | ---------------- | ---------------------- |
| `200`  | —           | application/json | `BillingConnectionDto` |

Only responses explicitly declared by the accepted Admin OpenAPI contract are shown. The current contract does not declare operation-specific error bodies; the SDK preserves any non-success status and body in [`AdminApiError`](/management-sdk/error-handling).

### `200` application/json schema

Type: `BillingConnectionDto`

| Field                          | Required | Type                          | Description |
| ------------------------------ | -------- | ----------------------------- | ----------- |
| `id`                           | Yes      | `string`                      | —           |
| `workspaceId`                  | Yes      | `string`                      | —           |
| `kind`                         | Yes      | `string (HOSTED \| APP_SYNC)` | —           |
| `provider`                     | Yes      | `string (STRIPE \| CREEM)`    | —           |
| `mode`                         | Yes      | `string`                      | —           |
| `status`                       | Yes      | `string`                      | —           |
| `name`                         | Yes      | `string`                      | —           |
| `webhookUrl`                   | Yes      | `string / uri`                | —           |
| `credentialConfigured`         | Yes      | `boolean`                     | —           |
| `webhookSecretConfigured`      | Yes      | `boolean`                     | —           |
| `credentialVerificationStatus` | Yes      | `string`                      | —           |
| `credentialPreview`            | No       | `string`                      | —           |
| `lastVerifiedAt`               | No       | `string / date-time`          | —           |
| `externalAccountId`            | No       | `string`                      | —           |

## Examples

### TypeScript Management SDK

`NexusAdminClient.configureBillingWebhookSecret` uses `AdminOperationInput<"configureBillingWebhookSecret">` and returns `Promise<AdminOperationOutput<"configureBillingWebhookSecret">>`.

```ts
import { NexusAdminClient } from '@nexus/sdk-typescript';

const nexus = new NexusAdminClient({
  baseUrl: 'https://nexus.microvoid.io',
  managementKey: process.env.NEXUS_MANAGEMENT_KEY,
});

const result = await nexus.configureBillingWebhookSecret({
  path: {
    connectionId: '533c4e1e-2823-4349-86b9-d6f1a869a2ca',
  },
  body: {
    webhookSecret: '<secret-from-environment>',
  },
});
```

### Fetch

```ts
const response = await fetch(
  'https://nexus.microvoid.io/admin/v1/billing-connections/533c4e1e-2823-4349-86b9-d6f1a869a2ca/webhook-secret',
  {
    method: 'PUT',
    headers: {
      Authorization: `Bearer ${process.env.NEXUS_MANAGEMENT_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      webhookSecret: '<secret-from-environment>',
    }),
  },
);

if (!response.ok) throw new Error(`Nexus request failed: ${response.status}`);
```

### curl

```bash
curl --request PUT \
  "https://nexus.microvoid.io/admin/v1/billing-connections/533c4e1e-2823-4349-86b9-d6f1a869a2ca/webhook-secret" \
  --header "Authorization: Bearer ${NEXUS_MANAGEMENT_KEY}" \
  --header "Content-Type: application/json" \
  --data "{\"webhookSecret\":\"<secret-from-environment>\"}"
```

## Related guide

- [Time boundaries](/docs/give-users-access/time-boundaries)
- [API Reference overview](/api-reference)

Source: https://nexus.microvoid.io/api-reference/admin/billing/configure-billing-webhook-secret/index.mdx
