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

# Obtener factura

> Devuelve el detalle de una factura, incluyendo el Payment asociado.

### Path params

<ParamField path="invoice_id" type="string" required placeholder="2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a">
  ID de la factura creada previamente. [Ver cómo crear una factura](/client/invoices/create).
</ParamField>

### Response

<ResponseField name="id" type="string">
  Identificador único de la factura
</ResponseField>

<ResponseField name="name" type="string">
  Nombre o concepto de la factura
</ResponseField>

<ResponseField name="amount" type="number">
  Monto de la factura en pesos
</ResponseField>

<ResponseField name="provider" type="string">
  Proveedor de la factura (ej: `"biller"`)
</ResponseField>

<ResponseField name="provider_id" type="string">
  ID de la factura en tu sistema
</ResponseField>

<ResponseField name="reference" type="string">
  Referencia de pago de la factura
</ResponseField>

<ResponseField name="status" type="string">
  Estado de la factura: `CREATED`, `PAID`, `FAILED`, `CANCELLED`
</ResponseField>

<ResponseField name="remarks" type="string">
  Notas o comentarios adicionales
</ResponseField>

<ResponseField name="metadata" type="object">
  Metadatos adicionales de la factura
</ResponseField>

<ResponseField name="due_date" type="string">
  Fecha de vencimiento de la factura (ISO 8601)
</ResponseField>

<ResponseField name="created_at" type="string">
  Fecha de creación (ISO 8601)
</ResponseField>

<ResponseField name="updated_at" type="string">
  Fecha de última actualización (ISO 8601)
</ResponseField>

<ResponseField name="payment_id" type="string">
  ID del cobro asociado a esta factura
</ResponseField>

<ResponseField name="is_test" type="boolean">
  Indica si la factura fue creada en modo prueba
</ResponseField>

<ResponseField name="partial_payment_config" type="object">
  Configuración de pagos parciales. `null` si no aplica.

  <Expandable title="Propiedades">
    <ResponseField name="partial_payment_config.min_amount_in_cents" type="integer">
      Monto mínimo por abono en centavos
    </ResponseField>

    <ResponseField name="partial_payment_config.max_amount_in_cents" type="integer">
      Monto máximo por abono en centavos. `null` si no hay límite.
    </ResponseField>

    <ResponseField name="partial_payment_config.max_payment_methods" type="integer">
      Número máximo de abonos permitidos
    </ResponseField>

    <ResponseField name="partial_payment_config.timeout_hours" type="integer">
      Horas de expiración desde el primer abono
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="payment" type="object">
  Cobro asociado a la factura (objeto completo `PaymentJsonResource`). Ver [crear cobro](/client/payments/create) para detalle de campos.
</ResponseField>

### Response Example

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a",
    "name": "Internet plan - Octubre",
    "amount": 50000,
    "provider": "biller",
    "provider_id": "987654",
    "reference": "INV-12345678",
    "status": "CREATED",
    "remarks": null,
    "metadata": { "key": "value" },
    "due_date": null,
    "created_at": "2025-10-20T15:06:00.000000Z",
    "updated_at": "2025-10-20T15:06:00.000000Z",
    "payment_id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
    "is_test": false,
    "partial_payment_config": null,
    "payment": {
      "id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
      "source": "Internet plan - Octubre",
      "currency": "COP",
      "amount": 50000,
      "amount_label": "$ 50.000",
      "title": "Internet plan - Octubre",
      "description": "Internet plan - Octubre",
      "phone": "+573167591038",
      "expiration_at": null,
      "due_date": null,
      "document_link": "https://example.com/document.pdf",
      "external_id": "987654",
      "allows": { "accounts": true, "cards": true, "card_extra": false, "realtime": false },
      "status": "pending",
      "is_test": false,
      "created_at": "2025-10-20T15:06:00.000000Z",
      "paid_at": null,
      "payment_link": "https://pagos.onepay.la/payment/c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
      "redirect_url": null,
      "provider_id": null,
      "metadata": null,
      "customer": null,
      "method": null,
      "splits": [],
      "company": null,
      "commission": null
    }
  }
  ```

  ```json 200 Con pagos parciales theme={null}
  {
    "id": "2f2b1e5a-1a2b-4c33-8a18-5e9f3b9f4b1a",
    "name": "Internet plan - Octubre",
    "amount": 50000,
    "provider": "biller",
    "provider_id": "987654",
    "reference": "INV-12345678",
    "status": "CREATED",
    "remarks": null,
    "metadata": { "key": "value" },
    "due_date": null,
    "created_at": "2025-10-20T15:06:00.000000Z",
    "updated_at": "2025-10-20T15:06:00.000000Z",
    "payment_id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
    "is_test": false,
    "partial_payment_config": {
      "min_amount_in_cents": 1000000,
      "max_amount_in_cents": null,
      "max_payment_methods": 3,
      "timeout_hours": 24
    },
    "payment": {
      "id": "c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
      "source": "Internet plan - Octubre",
      "currency": "COP",
      "amount": 50000,
      "amount_label": "$ 50.000",
      "title": "Internet plan - Octubre",
      "description": "Internet plan - Octubre",
      "phone": "+573167591038",
      "expiration_at": null,
      "due_date": null,
      "document_link": "https://example.com/document.pdf",
      "external_id": "987654",
      "allows": { "accounts": true, "cards": true, "card_extra": false, "realtime": false },
      "status": "partially_paid",
      "is_test": false,
      "created_at": "2025-10-20T15:06:00.000000Z",
      "paid_at": null,
      "payment_link": "https://pagos.onepay.la/payment/c1f4b0aa-6a12-4471-8a3d-1a2b3c4d5e6f",
      "redirect_url": null,
      "provider_id": null,
      "metadata": null,
      "customer": null,
      "method": null,
      "splits": [],
      "company": null,
      "commission": null,
      "partial_payment": {
        "total_paid_in_cents": 1000000,
        "total_paid_label": "$ 10.000",
        "remaining_amount_in_cents": 4000000,
        "remaining_label": "$ 40.000",
        "progress_percentage": 20.0,
        "is_fully_paid": false,
        "min_amount_in_cents": 1000000,
        "max_amount_in_cents": null,
        "max_payment_methods": 3,
        "timeout_hours": 24,
        "partial_expires_at": "2025-10-21T15:06:00+00:00",
        "charges": [
          {
            "id": "3f8b7a21-1d4a-4d2e-8f1a-17e2f1e6b9ab",
            "amount_in_cents": 1000000,
            "amount_label": "$ 10.000",
            "payment_method_type": "account",
            "payment_method": "PSE - Bancolombia",
            "paid_at": "2025-10-20T16:00:00+00:00"
          }
        ]
      }
    }
  }
  ```
</ResponseExample>

Códigos de error

* 401 Unauthorized: token ausente o inválido.
* 403 Forbidden: compañía inactiva o sin permisos.
* 404 Not Found: la factura no existe o pertenece a otra compañía.
