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

# Crear factura

> Crea una nueva factura para el comercio autenticado.



## OpenAPI

````yaml /openapi-es.yaml post /invoices
openapi: 3.0.3
info:
  title: Palomma Rentals API
  version: 1.0.0
  description: API para crear y gestionar facturas de arriendo y liquidaciones.
  contact:
    name: Palomma
servers:
  - url: https://api.palomma.com/v1
    description: Produccion
  - url: https://sandbox.api.palomma.com/v1
    description: Sandbox
security:
  - bearerAuth: []
tags:
  - name: Facturas
    description: Crear, obtener y listar facturas.
  - name: Liquidaciones
    description: Obtener liquidaciones por fecha y ciclo.
paths:
  /invoices:
    post:
      tags:
        - Facturas
      summary: Crear factura
      description: Crea una nueva factura para el comercio autenticado.
      operationId: createInvoice
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInvoiceRequest'
            examples:
              createInvoice:
                summary: Payload minimo valido
                value:
                  reference: INV-2026-0001
                  amount: 1850000
                  description: Canon de arrendamiento marzo 2026
                  redirectUrl: https://merchant.example.com/payments/return
                  customerDocumentNumber: '900123456'
      responses:
        '200':
          description: Factura creada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Invoice'
              examples:
                created:
                  value:
                    id: 01HQY8EW1H9YGH5PAV5Y2M9R3T
                    reference: INV-2026-0001
                    status: ready
                    amount: 1850000
                    description: Canon de arrendamiento marzo 2026
                    contract: '00000'
                    expirationDate: '2026-03-11T16:37:14.007Z'
                    customerDocumentNumber: '900123456'
                    customerName: Inmobiliaria Ejemplo SAS
                    createdAt: '2026-03-11T16:32:14.007Z'
                    paymentUrl: >-
                      https://pagos.palomma.com/pay/merchant_123/01HQY8EW1H9YGH5PAV5Y2M9R3T
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    CreateInvoiceRequest:
      type: object
      required:
        - reference
        - amount
        - description
        - redirectUrl
        - customerDocumentNumber
      properties:
        reference:
          type: string
          minLength: 1
          description: >-
            Referencia unica de la factura para tus registros (ej.
            `"INV-2026-0001"`).
        amount:
          type: integer
          minimum: 3000
          maximum: 550000000
          description: Monto de la factura en COP. Debe estar entre 3.000 y 550.000.000.
        description:
          type: string
          minLength: 1
          description: Descripcion de la factura mostrada al cliente.
        redirectUrl:
          type: string
          format: uri
          description: >-
            URL a la que se redirige al cliente despues de completar el flujo de
            pago.
        customerDocumentNumber:
          type: string
          minLength: 1
          description: Numero de documento o identificacion del cliente.
        documentType:
          type: string
          description: >-
            Tipo de documento del cliente. Uno de: `cc` (cédula), `ce` (cédula
            de extranjería), `nit` (NIT), `ti` (tarjeta de identidad), `ps`
            (pasaporte), `cif` (código de identificación fiscal), `ne` (NIT
            extranjero), `rc` (registro civil), `ppt` (permiso de permanencia
            temporal).
          enum:
            - cc
            - ce
            - nit
            - ti
            - ps
            - cif
            - ne
            - rc
            - ppt
        customerName:
          type: string
          description: Nombre del cliente (opcional).
        contract:
          type: string
          description: >-
            Identificador del contrato. Por defecto `"00000"` si no se
            proporciona.
          default: '00000'
    Invoice:
      type: object
      required:
        - id
        - status
        - amount
        - description
        - contract
        - customerDocumentNumber
        - createdAt
        - paymentUrl
      properties:
        id:
          type: string
          description: Identificador unico de la factura.
        reference:
          type: string
          description: Referencia de factura proporcionada por el comercio.
        status:
          type: string
          description: >-
            Estado de la factura: `ready` (link de pago activo), `paid`
            (pagada), `cancelled` (cancelada) o `chargeback` (contracargo).
          enum:
            - ready
            - paid
            - cancelled
            - chargeback
        amount:
          type: number
          description: Monto de la factura en COP.
        description:
          type: string
          description: Descripcion de la factura.
        contract:
          type: string
          description: Identificador del contrato.
        expirationDate:
          type: string
          description: >-
            Fecha y hora de expiracion del link de pago (ISO 8601). Las facturas
            expiran 5 minutos despues de la creacion, por lo que se debe
            redirigir al cliente de inmediato. Una vez que la transaccion esta
            en progreso, no expira hasta que se complete.
        customerDocumentNumber:
          type: string
          description: Numero de documento del cliente.
        customerName:
          type: string
          description: Nombre del cliente.
        createdAt:
          type: string
          description: Fecha y hora de creacion de la factura (ISO 8601).
        paymentDate:
          type: string
          format: date-time
          description: >-
            Fecha y hora en que se pago la factura. Presente en facturas pagadas
            y con contracargo.
        paymentMethod:
          type: string
          enum:
            - pse
            - nequiButton
            - bancolombiaButton
            - breb
            - card
          description: >-
            Metodo de pago utilizado. Presente en facturas pagadas y con
            contracargo.
        paymentSource:
          type: string
          enum:
            - whatsapp
            - portal
            - link
          description: >-
            Canal a traves del cual se realizo el pago. Presente en facturas
            pagadas y con contracargo.
        paymentAmount:
          type: number
          description: >-
            Monto efectivamente pagado en COP. Presente en facturas pagadas y
            con contracargo.
        settlementDate:
          type: string
          description: >-
            Fecha esperada de liquidacion (`YYYY-MM-DD`). Presente en facturas
            pagadas y con contracargo.
        settlementTime:
          type: string
          description: >-
            Ciclo esperado de liquidacion. Presente en facturas pagadas y con
            contracargo.
        paymentId:
          type: string
          description: >-
            Identificador del pago. Presente en facturas pagadas y con
            contracargo.
        paymentUrl:
          type: string
          format: uri
          description: URL de la pagina de pago de Palomma para esta factura.
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Mensaje de error legible.
  responses:
    BadRequest:
      description: Solicitud invalida
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            invalidBody:
              value:
                error: Invalid JSON in request body
            schemaError:
              value:
                error: Amount must be an integer
    Unauthorized:
      description: Token invalido o ausente
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: Invalid or missing token
    InternalServerError:
      description: Error interno del servidor
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error: Internal Server Error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: 'Enviar header: `Authorization: Bearer <apiKey>`.'

````