# Crear una sucursal

`POST https://api.fiscalisto.com/v1/branches`

Otro lugar desde donde factura el emisor, con su propio código postal: sus facturas llevan ese CP en LugarExpedicion (y su zona horaria en la Fecha, y el IVA 8 % si es de la franja fronteriza), su dirección en el PDF y, si las da, sus propias series. Un CP que ya tiene otra sucursal contesta branch_exists; el del domicilio fiscal del emisor no es sucursal (es la Matriz). Hasta 200 por emisor.

## Parámetros

| Nombre | Dónde | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `Idempotency-Key` | encabezado |  | Opcional (los SDK la mandan solos). Si la respuesta se pierde, repita la solicitud con el mismo valor durante 24 horas: contesta lo mismo, con idempotent-replayed: true, y no lo hace dos veces (ni crea, ni manda correos, ni cobra). |

## Cuerpo

| Campo | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `issuer` | string |  | El emisor (iss_…). Por omisión, su único emisor. |
| `name` | string | sí | Cómo la llama su equipo, por ejemplo «Sucursal Monterrey». Va en el PDF. (hasta 60 caracteres) |
| `zip` | string | sí | Su código postal (LugarExpedicion de sus CFDI): uno por sucursal, distinto del domicilio fiscal del emisor. |
| `address` | objeto |  | La dirección que va en el PDF de sus facturas. |
| `address.street` | string o null |  | Calle. |
| `address.exterior` | string o null |  | Número exterior. |
| `address.interior` | string o null |  | Número interior. |
| `address.neighborhood` | string o null |  | Colonia. |
| `address.city` | string o null |  | Municipio o alcaldía. |
| `address.state` | string o null |  | Estado; por omisión, el de su código postal. |
| `phone` | string o null |  | Teléfono, para el PDF. |
| `email` | string (email) o null |  | Correo, para el PDF. |
| `series` | objeto |  | Serie (Serie), hasta 25 caracteres. Cada serie lleva sus propios folios. |
| `series.invoice` | string o null |  | Serie de sus facturas (tipo I); sin ella, la del emisor. |
| `series.credit_note` | string o null |  | Serie de sus notas de crédito (tipo E); sin ella, la del emisor. |
| `series.payment` | string o null |  | Serie de sus complementos de pago (tipo P); sin ella, la del emisor. |
| `series.transfer` | string o null |  | Serie de sus traslados (tipo T); sin ella, la del emisor. |

Ejemplo:

```json
{
  "name": "Sucursal Monterrey",
  "zip": "64000",
  "address": {
    "street": "Av. Constitución",
    "exterior": "1500",
    "neighborhood": "Centro",
    "city": "Monterrey"
  },
  "phone": "81 1234 5678",
  "series": {
    "invoice": "MTY"
  }
}
```

## Con el SDK de TypeScript

```ts
import { Fiscalisto } from "fiscalisto";

// La llave viene de FISCALISTO_API_KEY.
const fiscalisto = new Fiscalisto();

const branch = await fiscalisto.branches.create({
  name: "Sucursal Monterrey",
  zip: "64000",
  address: {
    street: "Av. Constitución",
    exterior: "1500",
    neighborhood: "Centro",
    city: "Monterrey",
  },
  phone: "81 1234 5678",
  series: { invoice: "MTY" },
}, { idempotencyKey: "pedido-A-1042" });
```

## Con el SDK de Python

```python
from fiscalisto import Fiscalisto

# La llave viene de FISCALISTO_API_KEY.
fiscalisto = Fiscalisto()

branch = fiscalisto.branches.create({
    "name": "Sucursal Monterrey",
    "zip": "64000",
    "address": {
        "street": "Av. Constitución",
        "exterior": "1500",
        "neighborhood": "Centro",
        "city": "Monterrey",
    },
    "phone": "81 1234 5678",
    "series": {"invoice": "MTY"},
}, idempotency_key="pedido-A-1042")
```

## Con el SDK de PHP

```php
<?php

use Fiscalisto\Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
$fiscalisto = new Fiscalisto();

$branch = $fiscalisto->branches->create([
    'name' => 'Sucursal Monterrey',
    'zip' => '64000',
    'address' => [
        'street' => 'Av. Constitución',
        'exterior' => '1500',
        'neighborhood' => 'Centro',
        'city' => 'Monterrey',
    ],
    'phone' => '81 1234 5678',
    'series' => ['invoice' => 'MTY'],
], ['idempotency_key' => 'pedido-A-1042']);
```

## Con el SDK de .NET

```csharp
using Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

var branch = await fiscalisto.Branches.CreateAsync(new CreateBranchParams
{
    Name = "Sucursal Monterrey",
    Zip = "64000",
    Address = new()
    {
        Street = "Av. Constitución",
        Exterior = "1500",
        Neighborhood = "Centro",
        City = "Monterrey",
    },
    Phone = "81 1234 5678",
    Series = new() { Invoice = "MTY" },
}, new RequestOptions { IdempotencyKey = "pedido-A-1042" });
```

## Con el SDK de Go

```go
package main

import (
	"context"
	"fmt"
	"log"

	fiscalisto "fiscalisto.com/go"
)

func main() {
	// La llave viene de FISCALISTO_API_KEY.
	client, err := fiscalisto.NewClient("")
	if err != nil {
		log.Fatal(err)
	}
	ctx := context.Background()

	branch, err := client.Branches.Create(ctx, &fiscalisto.CreateBranchParams{
		Name: "Sucursal Monterrey",
		Zip:  "64000",
		Address: &fiscalisto.CreateBranchParamsAddress{
			Street:       fiscalisto.String("Av. Constitución"),
			Exterior:     fiscalisto.String("1500"),
			Neighborhood: fiscalisto.String("Centro"),
			City:         fiscalisto.String("Monterrey"),
		},
		Phone: fiscalisto.String("81 1234 5678"),
		Series: &fiscalisto.CreateBranchParamsSeries{
			Invoice: fiscalisto.String("MTY"),
		},
	}, fiscalisto.WithIdempotencyKey("pedido-A-1042"))
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(branch.ID)
}
```

## Con el SDK de Java

```java
import com.fiscalisto.FiscalistoClient;
import com.fiscalisto.RequestOptions;
import com.fiscalisto.model.CreateBranchParams;
import com.fiscalisto.model.CreateBranchParamsAddress;
import com.fiscalisto.model.CreateBranchParamsSeries;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

var branch = fiscalisto.branches().create(new CreateBranchParams()
        .setName("Sucursal Monterrey")
        .setZip("64000")
        .setAddress(new CreateBranchParamsAddress()
                .setStreet("Av. Constitución")
                .setExterior("1500")
                .setNeighborhood("Centro")
                .setCity("Monterrey"))
        .setPhone("81 1234 5678")
        .setSeries(new CreateBranchParamsSeries().setInvoice("MTY")), RequestOptions.idempotencyKey("pedido-A-1042"));
System.out.println(branch.getId());
```

## Respuesta 201

Correcto.

Un objeto `Branch`:

| Campo | Tipo | Siempre viene | Descripción |
| --- | --- | --- | --- |
| `id` | string | sí | Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_). |
| `livemode` | boolean | sí | true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT. |
| `object` | `"branch"` | sí | Qué tipo de objeto es («invoice», «customer»…). |
| `issuer` | string | sí | El emisor de la sucursal. |
| `name` | string | sí | Cómo la llama su equipo; va en el PDF. |
| `zip` | string | sí | Su código postal: el LugarExpedicion de sus CFDI. |
| `address` | objeto | sí | Su dirección, en el PDF de sus facturas. |
| `address.street` | string o null | sí | Calle (Calle). |
| `address.exterior` | string o null | sí | Número exterior (NumeroExterior). |
| `address.interior` | string o null | sí | Número interior (NumeroInterior). |
| `address.neighborhood` | string o null | sí | Colonia. |
| `address.city` | string o null | sí | Municipio o alcaldía. |
| `address.state` | string o null | sí | Estado (Estado): en el extranjero c_Estado para USA y CAN, o texto. |
| `phone` | string o null | sí | Teléfono, en el PDF, o null. |
| `email` | string o null | sí | Correo, en el PDF, o null. |
| `series` | objeto | sí | La serie de cada tipo de CFDI que se timbra desde ella; null usa la del emisor. |
| `series.invoice` | string o null | sí | Serie de sus facturas (tipo I); null, la del emisor. |
| `series.credit_note` | string o null | sí | Serie de sus notas de crédito (tipo E); null, la del emisor. |
| `series.payment` | string o null | sí | Serie de sus complementos de pago (tipo P); null, la del emisor. |
| `series.transfer` | string o null | sí | Serie de sus traslados (tipo T); null, la del emisor. |
| `archived` | boolean | sí | true si está archivada: ya no se factura desde ella. |
| `created_at` | string (date-time) o null | sí | Cuándo se creó. |
| `updated_at` | string (date-time) o null | sí | Cuándo cambió por última vez. |

```json
{
  "id": "brn_OufpKqnrvx9p3",
  "object": "branch",
  "livemode": false,
  "issuer": "iss_OufpKqnrvx9p",
  "name": "Sucursal Monterrey",
  "zip": "64000",
  "address": {
    "street": "Av. Constitución",
    "exterior": "1500",
    "interior": null,
    "neighborhood": "Centro",
    "city": "Monterrey",
    "state": "Nuevo León"
  },
  "phone": "81 1234 5678",
  "email": null,
  "series": {
    "invoice": "MTY",
    "credit_note": null,
    "payment": null,
    "transfer": null
  },
  "archived": false,
  "created_at": "2026-10-27T09:12:00-06:00",
  "updated_at": "2026-10-27T09:12:00-06:00"
}
```

## Errores

Puede responder 400, 401, 403, 404, 429, 500 con el cuerpo de error de siempre; cada código está en https://fiscalisto.com/docs/api/errores.md.
