> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fluz.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Crear orden masiva

La mutación `createVirtualCardBulkOrder` te permite crear múltiples tarjetas virtuales en una sola solicitud.

<Info>
  **Requisitos previos:** un token de acceso de usuario con el alcance `CREATE_VIRTUALCARD`, y un objeto `CreateVirtualCardBulkOrderInput`. Para encontrar un `offerId`, consulta [Obtener ofertas de tarjetas virtuales](/features/get-card-offers).
</Info>

<Note>
  Las órdenes masivas se procesan de forma asíncrona. Esta mutación devuelve un `orderId` y un `orderStatus` inicial de `PENDING` — consulta [Obtener estado de orden masiva](/features/get-bulk-order-status) para monitorear la finalización.
</Note>

## Ofertas de prueba en sandbox

| Offer ID                               | Program Name                                   | Reward Value |
| :------------------------------------- | :--------------------------------------------- | :----------- |
| `ed669305-5e43-40a0-9a25-7a15ed174628` | Virtual Card                                   | 1.5%         |
| `b23630f6-8d91-43df-84aa-a541e7691197` | Virtual Card - Mastercard Prepaid              | 1.5%         |
| `592c394e-26cc-44ac-a145-a5f81301fe77` | Brand Locked Virtual Card - Mastercard Prepaid | 1.5%         |

## Consideraciones importantes

* **Offer ID:** El `offerId` se aplica a todas las tarjetas creadas dentro de la orden masiva.
* **Funding Source:** Puedes fondear tus tarjetas virtuales usando tu saldo de Fluz o una cuenta bancaria vinculada.
  * Si seleccionas una cuenta bancaria como `primaryFundingSource`, debes proporcionar el `bankAccountId`.
* **Límites de gasto:** El `spendLimit` que configures debe adherirse a los límites de gasto definidos por el programa para el `spendLimitDuration` elegido. Ocurrirá un error si se excede el límite.
* **Cantidad:** Cada elemento en el arreglo `orderItems` incluye una `quantity`, lo que te permite crear múltiples tarjetas con la misma configuración de forma eficiente.

## Argumentos

* `input` (`CreateVirtualCardBulkOrderInput!`): El objeto de entrada que contiene los detalles para la nueva orden masiva de tarjetas virtuales.

## Campos de CreateVirtualCardBulkOrderInput

| Field        | Type                                      | Description                                                                                                                                | Required |
| :----------- | :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- | :------- |
| `offerId`    | `UUID!`                                   | El Offer ID que se usará para todas las tarjetas en esta orden masiva. Usa getVirtualCardOffers para obtener una lista de ofertas activas. | Sí       |
| `orderItems` | `[CreateVirtualCardBulkOrderItemInput!]!` | Un arreglo de objetos, cada uno definiendo un conjunto de tarjetas virtuales a crear.                                                      | Sí       |

### Campos de CreateVirtualCardBulkOrderItemInput

| Field                  | Type                            | Description                                                                                                           | Required |
| :--------------------- | :------------------------------ | :-------------------------------------------------------------------------------------------------------------------- | :------- |
| `quantity`             | `Int!`                          | La cantidad de tarjetas virtuales a crear con esta configuración específica.                                          | Sí       |
| `spendLimit`           | `Float!`                        | El monto máximo que puedes cargar a cada tarjeta. Solo se te cobra el monto realmente utilizado.                      | Sí       |
| `spendLimitDuration`   | `VirtualCardSpendLimitDuration` | Tipo de duración del límite de la tarjeta. El valor predeterminado es `LIFETIME`.                                     | No       |
| `lockDate`             | `String`                        | La fecha en que la tarjeta será bloqueada. El valor predeterminado es 47 meses desde la creación. Formato: yyyy-mm-dd | No       |
| `lockCardNextUse`      | `Boolean`                       | Configuración para bloquear la tarjeta después de su próximo uso. El valor predeterminado es `false`.                 | No       |
| `cardNickname`         | `String`                        | El apodo de la tarjeta.                                                                                               | No       |
| `primaryFundingSource` | `VirtualCardFundingSource`      | Fuente de fondos primaria para la tarjeta virtual. El valor predeterminado es `FLUZ_BALANCE`.                         | No       |
| `bankAccountId`        | `UUID`                          | El identificador único de la cuenta bancaria. Requerido si `primaryFundingSource` es `BANK_ACCOUNT`.                  | No       |

## Ejemplo con cURL

```bash theme={null}
curl -X POST \
  https://transactional-graph.staging.fluzapp.com/api/v1/graphql \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_USER_ACCESS_TOKEN' \
  -d '{
    "query": "mutation CreateVirtualCardBulkOrder { createVirtualCardBulkOrder( input: { offerId: \"592c394e-26cc-44ac-a145-a5f81301fe77\", orderItems: [ { quantity: 3, spendLimit: 100, spendLimitDuration: DAILY, lockCardNextUse: true, cardNickname: \"Test nickname\", primaryFundingSource: FLUZ_BALANCE }, { quantity: 1, spendLimit: 200, spendLimitDuration: WEEKLY, lockCardNextUse: false, lockDate: \"2030-10-10\", cardNickname: \"Test nickname 2\", primaryFundingSource: BANK_ACCOUNT, bankAccountId: \"7f60cb5d-683f-4181-9194-408ea92d6248\" } ] } ) { orderId orderStatus } }"
  }'
```

## Mutación de ejemplo

```graphql theme={null}
mutation CreateVirtualCardBulkOrder {
    createVirtualCardBulkOrder(
        input: {
            offerId: "592c394e-26cc-44ac-a145-a5f81301fe77"
            orderItems: [
                {
                    quantity: 3
                    spendLimit: 100
                    spendLimitDuration: DAILY
                    lockCardNextUse: true
                    cardNickname: "Test nickname"
                    primaryFundingSource: FLUZ_BALANCE
                }
                {
                    quantity: 1
                    spendLimit: 200
                    spendLimitDuration: WEEKLY
                    lockCardNextUse: false
                    lockDate: "2030-10-10"
                    cardNickname: "Test nickname 2"
                    primaryFundingSource: BANK_ACCOUNT
                    bankAccountId: "7f60cb5d-683f-4181-9194-408ea92d6248"
                }
            ]
        }
    ) {
        orderId
        orderStatus
    }
}
```

## Respuesta de ejemplo

```json theme={null}
{
  "data": {
    "createVirtualCardBulkOrder": {
      "orderId": "MTFkYjIxNTYtNTEwOS00ODNmLTkwMTYtYjA5N2E2NTEyMjU5fDIzMjIxODRhLTEzMjgtNDkwYy05Mzc1LTZlOWM4MWIwMjkzZA==",
      "orderStatus": "PENDING",
    }
  }
}
```

## Campos de la respuesta

| Field         | Type                          | Description                                                                                                                  |
| ------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `orderId`     | `UUID`                        | El identificador único para la orden de creación masiva. Pásalo a `getVirtualCardBulkOrderStatus` para rastrear el progreso. |
| `orderStatus` | `VirtualCardBulkOrderStatus!` | El estado de la orden masiva (por ejemplo, `COMPLETED`, `PENDING`, `FAILED`).                                                |

## Próximos pasos

<Card title="Obtener estado de la orden masiva" icon="list-checks" horizontal href="/features/get-bulk-order-status">
  Consulta el `orderId` para monitorear el procesamiento y recuperar las tarjetas a medida que se emiten.
</Card>
