Saltar al contenido principal

Crear una factura

Este endpoint está diseñado para facilitar la generación y emisión de facturas electrónicas. Para utilizarlo, necesitas realizar un POST request a `/dte/fc``, incluyendo la información necesaria en el cuerpo de la solicitud.

Detalles Técnicos

  • HTTP Method: POST
  • URL: https://api.facturallama.com/dte/fc
  • Headers:
    • X-API-Key: Tu API key.
    • X-API-Version: La versión de la API que estás utilizando.
    • Content-Type: application/json

Request Body

A continuación se presenta una descripción detallada de las propiedades que puedes incluir en el cuerpo de tu solicitud, así como las validaciones y formatos que debes tener en cuenta.

Propiedades Principales

PropiedadTipoValidaciónDescripción
idUUIDObligatorio.Identificador del DTE (este valor se convertira en el código de generación para el Ministerio de Hacienda).
generatedAtDateOpcional.Fecha de generación del DTE.
paymentTypeEnumOpcional. Default: CONTADOTipo de pago. Valores: CONTADO, CREDITO, OTRO
branchOfficeObjectOpcional. Ver detalles.Datos de la sucursal y punto de venta.
recipientObjectOpcional. Ver detalles.Información del destinatario.
thirdPartySaleObjectOpcional. Ver detalles.Información de venta a terceros.
relatedTaxDocumentsArrayOpcional. Máximo de 50 objetos. Ver detalles.Lista de documentos fiscales relacionados.
attachmentsArrayOpcional. Máximo de 10 objetos. Ver detalles.Lista de adjuntos.
itemsArrayObligatorio. Ver detalles.Lista de ítems.
itemsNoGravArrayOpcional. Ver detalles.Lista de ítems no gravados.
discountNoSujNumberOpcional. Debe ser un número decimal positivo.Descuento no sujeto.
discountExeNumberOpcional. Debe ser un número decimal positivo.Descuento exento.
discountGravNumberOpcional. Debe ser un número decimal positivo.Descuento gravado.
retentionIvaNumberOpcional. Puede ser 0 ó un número decimal positivo.Retención IVA.
retentionRentaNumberOpcional. Puede ser 0 ó un número decimal positivo.Retención Renta.

Propiedades Anidadas

branchOffice
PropiedadTipoValidaciónDescripción
mhCodeStringObligatorio. Debe ser un string de exactamente 4 caracteres.Identificador de la sucursal.
posNumberNumberObligatorio. Debe ser un número positivo. El valor no puede ser mayor a 999.Identificador del punto de venta.
recipient
PropiedadTipoValidaciónDescripción
economicActivityStringOpcional. Obligatorio cuando se proporciona nrc. Debe coincidir con códigos de CAT-019.Código de actividad económica.
contributorSizeEnumOpcional.Tipo de pago. Valores: GRANDE, MEDIANO, OTROS
contributorTypeEnumOpcional.Tipo de pago. Valores: NATURAL, JURIDICA
nrcStringOpcional. La longitud del string debe ser de entre 2 y 8 caracteres. Cuando identificationDocument.type no es "NIT", el nrc debe ser nulo.Número de Registro de Contribuyente. Formato: ########
nameStringObligatorio. Máximo: 150 caracteres.Nombre del destinatario.
emailStringOpcional. Máximo: 100 caracteres. Debe ser un correo electrónico válido.Correo electrónico del destinatario.
phoneStringOpcional. Debe ser un string de exactamente 8 números.Número de teléfono del destinatario. Formato: ########
addressObjectOpcional. Ver detalles.Dirección del destinatario.
identificationDocumentObjectOpcional. Ver detalles.Documento de identificación del destinatario.
recipient.address
PropiedadTipoValidaciónDescripción
departmentStringObligatorio.Departamento. Debe coincidir con códigos de CAT-012.
municipalityStringObligatorio.Municipio. Debe coincidir con códigos de CAT-013.
complementStringObligatorio.Información adicional de dirección.
recipient.identificationDocument
PropiedadTipoValidaciónDescripción
typeEnumObligatorio.Tipo de documento. Valores: NIT, DUI, PASAPORTE, CARNET_RESIDENTE, OTRO.
numberStringObligatorio.Número del documento de identificación. DUI: #########; NIT: ##############
thirdPartySale
PropiedadTipoValidaciónDescripción
nameStringObligatorio. Máximo: 150 caracteres.Nombre de la tercera parte.
identificationDocumentObjectObligatorio. Ver detalles.Documento de identificación de la tercera parte.
thirdPartySale.identificationDocument
PropiedadTipoValidaciónDescripción
typeEnumObligatorio.Tipo de documento. Valores: NIT, DUI, PASAPORTE, CARNET_RESIDENTE, OTRO.
numberStringObligatorio.Número del documento de identificación. DUI: #########; NIT: ##############
relatedTaxDocuments
PropiedadTipoValidaciónDescripción
idUUIDObligatorio.Identificador único del documento relacionado.
attachments
PropiedadTipoValidaciónDescripción
codeEnumObligatorio.Código del adjunto. Valores: EMISOR, RECEPTOR, DOCTOR
detailsStringOpcional. Obligatorio cuando code es EMISOR o RECEPTOR. Máximo: 300 caracteres.Detalles o descripción del adjunto.
doctorObjectOpcional. Ver detalles.Información sobre el doctor en caso de que el adjunto se refiera a un servicio médico.
attachments[n].doctor
PropiedadTipoValidaciónDescripción
nameStringObligatorio, Máximo: 100 caracteres.Nombre del doctor.
identificationDocumentObjectObligatorio. Ver detallles.Documento de identificación del doctor.
serviceEnumOpcional.Servicio médico proporcionado. Valores: CIRUGIA, OPERACION, TRATAMIENTO_MEDICO, CIRUGIA_ISBM, OPERACION_ISBM, TRATAMIENTO_MEDICO_ISBM.
attachments[n].doctor.identificationDocument
PropiedadTipoValidaciónDescripción
typeEnumObligatorio.Tipo de documento. Valores: NIT, DUI, PASAPORTE, CARNET_RESIDENTE, OTRO.
numberStringObligatorio.Número del documento de identificación. DUI: #########; NIT: ##############
items
PropiedadTipoValidaciónDescripción
typeEnumObligatorio.Tipo de ítem. Valores: BIENES, SERVICIOS, BIENES_Y_SERVICIOS, OTROS.
internalCodeStringOpcional, Máximo: 25 caracteres.Código interno del ítem.
descriptionStringObligatorio. Máximo: 1000 caracteres.Descripción del ítem.
quantityNumberObligatorio. Debe ser un número entero positivo.Cantidad del ítem.
unitMeasureEnumOpcional. Default: OTRAUnidad de medida del ítem. Contiene diversas opciones, como METRO, YARDA, PIE, KILOGRAMO, etc.
unitPriceNumberObligatorio. Debe ser un número decimal positivo.Precio unitario del ítem.
discountAmountNumberOpcional. Debe ser un número decimal positivo.Monto de descuento aplicado al ítem.
saleTypeEnumObligatorio.Tipo de venta del ítem. Valores: NO_SUJETA, GRAVADA, EXENTA.
psvNumberOpcional. Debe ser un número decimal positivo.Valor específico por ítem (si aplica).
documentNumberUUIDOpcional.Número de documento relacionado con el ítem. Este número debe estar presente en el arreglo de relatedTaxDocuments.
itemsNoGrav
PropiedadTipoValidaciónDescripción
typeEnumObligatorio.Tipo de ítem. Valores: BIENES, SERVICIOS, BIENES_Y_SERVICIOS, OTROS.
internalCodeStringOpcional. Máximo: 25 caracteres.Código interno del ítem.
descriptionStringObligatorio. Máximo: 1000 caracteres.Descripción del ítem.
amountNumberObligatorio. Debe ser un número decimal positivo.Monto del ítem que no está gravado.

Response Body

Una vez procesada tu solicitud, el servidor responderá con un conjunto de datos que confirmarán la creación de la factura electrónica o, en caso de error, proporcionarán detalles sobre lo que salió mal.

PropiedadTipoDescripción
idUUIDIdentificador único del DTE.
companyIdUUIDIdentificador único de la empresa.
controlNumberStringEste número es utilizado para identificar el DTE ante el Ministerio de Hacienda (MH).
environmentEnumAmbiente. Valores: TEST, LIVE.
typeEnumTipo de documento fiscal. FC.
versionIntegerVersión del DTE.
statusEnumEstado del DTE. Valores: CREATED, PROCESSING, APPROVED, REJECTED, INVALIDATED.
mhResponseObjectRespuesta del API del Ministerio de Hacienda.
generatedAtTimestampFecha y hora de creación del DTE asignado manualmente.
createdAtTimestampFecha y hora de creación del DTE.

Ejemplo

Copia y pega el código en una terminal o en tu editor de código favorito. Reemplaza <Tu API Key> con la API key que generaste en el paso anterior.

curl --location 'https://api.facturallama.com/dte/fc' \
--header 'X-API-Version: 1' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <API Key>' \
--data '{
"id": "<UUID>",
"recipient": {
"name": "Fulano Detal"
},
"items": [
{
"type": "BIENES",
"description": "Producto 1",
"quantity": 1,
"unitPrice": 17.97,
"saleType": "GRAVADA"
}
]
}'