---
title: "Run a configuration transfer to another business"
description: "All-mode key only."
canonical_url: "https://twominutebilling.com/help/developers/api-reference/businesses/run-a-configuration-transfer-to-another-business"
---
# Run a configuration transfer to another business

> All-mode key only.

<api-operation method="POST" path="/v1/businesses/{biz}/transfer_configurations">
<template v-slot:docs="">

Copies the selected sections into the destination. A live destination is merge-only: catalog and coupons keep what exists, and settings, company profile, email sending, numbering and tax updates are skipped. `live_override` writes those into a live destination; it needs a signed-in owner or admin (an API key cannot grant it), the destination's exact name in `confirm`, and the `plan_digest` of a preview that still matches the destination. Never copies customers, subscriptions, invoices, payments, gateway accounts, API keys, webhooks or email templates.

## Path parameters

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Required
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        biz
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      Business id (biz_…)
    </td>
  </tr>
</tbody>
</table>

## Headers

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Required
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        Idempotency-Key
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Safely retry writes — repeats return the original response. If a write FAILED after it had already taken effect, that failure is what repeats: the key is spent, and a new attempt needs a new key.
    </td>
  </tr>
</tbody>
</table>

## Body

The request body is **required**.

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Required
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        destination_business
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      The id of the business to copy the configuration to (biz_…).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        sections
      </code>
    </td>
    
    <td>
      <code>
        array of string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      The sections to copy. Omitted: catalog, coupons, tax_rates and settings.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        wipe_destination
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      True to clear the destination's existing configuration first. Test destinations only.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        numbering
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Prefixes to set on the destination. Omitted: the destination keeps its own. A prefix that another business uses, or that numbers already issued start with, is refused.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        numbering.invoice_prefix
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      The destination's new invoice prefix.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        numbering.credit_note_prefix
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      The destination's new credit note prefix.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        include_test_twins
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Both businesses live: also copy the source's test business into the destination's test business, first.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        live_override
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Write settings, company profile, email sending, numbering and tax into a live destination. Needs a signed-in owner or admin.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        live_override.confirm
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      The destination business's name, typed exactly.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        live_override.plan_digest
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      The <code>
        plan_digest
      </code>
      
       of the preview this run applies.
    </td>
  </tr>
</tbody>
</table>

## Response

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The object type; always <code>
        transfer_configuration
      </code>
      
      . One of <code>
        transfer_configuration
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        id
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The job id.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        status
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The job status. One of <code>
        running
      </code>
      
      , <code>
        succeeded
      </code>
      
      , <code>
        failed
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        source_business
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The source business (biz_…).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        destination_business
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The destination business (biz_…).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        sections
      </code>
    </td>
    
    <td>
      <code>
        array of string
      </code>
    </td>
    
    <td>
      The sections copied.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        wipe_destination
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      True when the destination was cleared first.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        options
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      The <code>
        numbering
      </code>
      
       and <code>
        include_test_twins
      </code>
      
       the run was asked for.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        live_override
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      True when the run used the live override.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        twin_of
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      On a test-twin job: the id of the live job it ran with.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        report
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      Per section: created, updated and skipped counts.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        error
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Why the job failed.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        twin
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      The test-twin job that ran with this one, in the same shape.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        created_at
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      When the job started.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        updated_at
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      When the job last changed.
    </td>
  </tr>
</tbody>
</table>

## Status codes

<table>
<thead>
  <tr>
    <th>
      Status
    </th>
    
    <th>
      Meaning
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        201
      </code>
    </td>
    
    <td>
      The transfer configuration job
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        400
      </code>
    </td>
    
    <td>
      Invalid body, a blocker, or a confirmation that is not the destination's name
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        403
      </code>
    </td>
    
    <td>
      Requires an all-mode API key; the live override needs a signed-in owner or admin
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        404
      </code>
    </td>
    
    <td>
      No such destination business
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        409
      </code>
    </td>
    
    <td>
      The destination changed after the preview, or a transfer into it is still running
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        422
      </code>
    </td>
    
    <td>
      Transfer failed
    </td>
  </tr>
</tbody>
</table>
</template>

<template v-slot:request="">

```bash [Request]
curl -X POST "$TMBILLING_URL/v1/businesses/biz_XXXXXXXXXXXX01/transfer_configurations" \
  -H "Authorization: Bearer $TMBILLING_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "destination_business": "biz_XXXXXXXXXXXX01"
  }'
```

</template>

<template v-slot:response="">
<code-group>

```json [201 Created]
{
  "object": "transfer_configuration",
  "id": "3f6c1b9e-8a2d-4c5e-9f10-2b7d4e6a8c01",
  "status": "running",
  "source_business": "biz_XXXXXXXXXXXX01",
  "destination_business": "biz_XXXXXXXXXXXX01",
  "sections": [
    "Section"
  ],
  "wipe_destination": false,
  "options": {},
  "live_override": false,
  "twin_of": "Twin of",
  "report": {},
  "error": null,
  "twin": {},
  "created_at": "2026-03-14T09:30:00Z",
  "updated_at": "2026-03-14T09:30:00Z"
}
```

```json [400 Bad Request]
{
  "error": {
    "type": "invalid_request_error",
    "message": "Invalid body, a blocker, or a confirmation that is not the destination's name"
  }
}
```

```json [403 Forbidden]
{
  "error": {
    "type": "permission_error",
    "message": "Requires an all-mode API key; the live override needs a signed-in owner or admin"
  }
}
```

```json [404 Not Found]
{
  "error": {
    "type": "invalid_request_error",
    "message": "No such destination business"
  }
}
```

```json [409 Conflict]
{
  "error": {
    "type": "conflict_error",
    "message": "The destination changed after the preview, or a transfer into it is still running"
  }
}
```

```json [422 Unprocessable Entity]
{
  "object": "transfer_configuration",
  "id": "3f6c1b9e-8a2d-4c5e-9f10-2b7d4e6a8c01",
  "status": "running",
  "source_business": "biz_XXXXXXXXXXXX01",
  "destination_business": "biz_XXXXXXXXXXXX01",
  "sections": [
    "Section"
  ],
  "wipe_destination": false,
  "options": {},
  "live_override": false,
  "twin_of": "Twin of",
  "report": {},
  "error": null,
  "twin": {},
  "created_at": "2026-03-14T09:30:00Z",
  "updated_at": "2026-03-14T09:30:00Z"
}
```

</code-group>
</template>
</api-operation>


## Sitemap

See the full [sitemap](https://twominutebilling.com/sitemap.md) for all pages.
