Ir al contenido

Crear o actualizar el emisor

PUT
/emisor
curl --request PUT \
--url https://openfactura.co/api/v1/emisor \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "nit": "example", "nrc": "example", "nombre": "example", "nombreComercial": "example", "codActividad": "example", "descActividad": "example", "departamento": "example", "municipio": "example", "distrito": "example", "complemento": "example", "telefono": "example", "correo": "[email protected]", "ambiente": "00", "responsableNombre": "example", "responsableTipoDoc": "example", "responsableNumDoc": "example" }'

La primera vez crea el establecimiento M001 y el punto de venta P001. Si se omite ambiente se conserva el actual.

Permiso: emisor:write.

Media typeapplication/json
object
nit
required
string
nrc
required
string
nombre
required
string
>= 1 characters <= 250 characters
nombreComercial
Any of:
string
<= 150 characters
codActividad
required
string
>= 1 characters <= 6 characters
descActividad
required
string
>= 1 characters <= 150 characters
departamento
required
string
>= 1 characters <= 2 characters
municipio
required
string
>= 1 characters <= 2 characters
distrito
required
string
>= 1 characters <= 2 characters
complemento
required
string
>= 1 characters <= 200 characters
telefono
required
string
>= 8 characters <= 30 characters
correo
required
string format: email
<= 100 characters /^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/
ambiente
string
Allowed values: 00 01
responsableNombre
Any of:
string
<= 100 characters
responsableTipoDoc
Any of:
string
<= 2 characters
responsableNumDoc
Any of:
string
<= 20 characters

Emisor guardado.

Media typeapplication/json
object
emisor

Datos fiscales; nulo si no está configurado.

object | null
establecimientos
Array
object
nombre
required
string
>= 1 characters <= 100 characters
tipo
string
default: 01
Allowed values: 01 02 04 07
codMh
required
string
/^[MBSP]\d{3}$/
codInterno
Any of:
string
<= 10 characters
departamento
Any of:
string
<= 2 characters
municipio
Any of:
string
<= 2 characters
distrito
Any of:
string
<= 2 characters
complemento
Any of:
string
<= 200 characters
telefono
Any of:
string
<= 30 characters
id
string
puntosVenta
Array<object>
object
key
additional properties
any
credenciales
object
00
object
apiPassword
boolean
certificado
boolean
certificadoNit
string | null
actualizado
integer | null
01
object
apiPassword
boolean
certificado
boolean
certificadoNit
string | null
actualizado
integer | null
ambienteActivo
string
Allowed values: 00 01

Example

{
"establecimientos": [
{
"tipo": "01"
}
],
"ambienteActivo": "00"
}
RateLimit-Limit
integer

Peticiones permitidas por minuto (sólo con clave de API).

RateLimit-Remaining
integer

Peticiones restantes en la ventana actual (sólo con clave de API).

RateLimit-Reset
integer

Segundos hasta que se reinicia la ventana (sólo con clave de API).

Idempotent-Replayed
string
Allowed values: true

true cuando la respuesta es la guardada de un intento anterior.

Cuerpo o parámetros inválidos (details = [{ ruta, mensaje }]), o el DTE no cumple el esquema del MH (details.problemas). Códigos: datos_invalidos, dte_invalido.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: datos_invalidos dte_invalido no_autenticado sin_permiso origen_no_permitido no_encontrado sin_organizacion sin_organizacion_activa nit_bloqueado emisor_no_configurado credenciales_incompletas sin_punto_venta estado_invalido ambiente_distinto retorno_excedido retorno_vigente idempotencia_distinta idempotencia_en_curso cliente_repetido producto_repetido codigo_repetido sin_archivo limite_webhooks simulador_inactivo dte_rechazado invalidacion_rechazada contingencia_rechazada evento_rechazado limite_excedido error_interno mh_credenciales_rechazadas mh_no_disponible emision_fallida emision_incierta
message
required
string
details

Detalle según el código; puede faltar.

Example

{
"error": {
"code": "datos_invalidos"
}
}

Falta sesión, o la clave de API no es válida, fue revocada o expiró. Códigos: no_autenticado.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: datos_invalidos dte_invalido no_autenticado sin_permiso origen_no_permitido no_encontrado sin_organizacion sin_organizacion_activa nit_bloqueado emisor_no_configurado credenciales_incompletas sin_punto_venta estado_invalido ambiente_distinto retorno_excedido retorno_vigente idempotencia_distinta idempotencia_en_curso cliente_repetido producto_repetido codigo_repetido sin_archivo limite_webhooks simulador_inactivo dte_rechazado invalidacion_rechazada contingencia_rechazada evento_rechazado limite_excedido error_interno mh_credenciales_rechazadas mh_no_disponible emision_fallida emision_incierta
message
required
string
details

Detalle según el código; puede faltar.

Example

{
"error": {
"code": "datos_invalidos"
}
}

Falta un permiso (details.permiso) o el origen de la petición con cookie no está permitido. Códigos: sin_permiso, origen_no_permitido.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: datos_invalidos dte_invalido no_autenticado sin_permiso origen_no_permitido no_encontrado sin_organizacion sin_organizacion_activa nit_bloqueado emisor_no_configurado credenciales_incompletas sin_punto_venta estado_invalido ambiente_distinto retorno_excedido retorno_vigente idempotencia_distinta idempotencia_en_curso cliente_repetido producto_repetido codigo_repetido sin_archivo limite_webhooks simulador_inactivo dte_rechazado invalidacion_rechazada contingencia_rechazada evento_rechazado limite_excedido error_interno mh_credenciales_rechazadas mh_no_disponible emision_fallida emision_incierta
message
required
string
details

Detalle según el código; puede faltar.

Example

{
"error": {
"code": "datos_invalidos"
}
}

Falta configurar algo o hay un conflicto. Códigos: sin_organizacion, sin_organizacion_activa, nit_bloqueado, emisor_no_configurado, credenciales_incompletas, sin_punto_venta, estado_invalido, ambiente_distinto, retorno_excedido, retorno_vigente, idempotencia_distinta, idempotencia_en_curso, cliente_repetido, producto_repetido, codigo_repetido, sin_archivo, limite_webhooks, simulador_inactivo.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: datos_invalidos dte_invalido no_autenticado sin_permiso origen_no_permitido no_encontrado sin_organizacion sin_organizacion_activa nit_bloqueado emisor_no_configurado credenciales_incompletas sin_punto_venta estado_invalido ambiente_distinto retorno_excedido retorno_vigente idempotencia_distinta idempotencia_en_curso cliente_repetido producto_repetido codigo_repetido sin_archivo limite_webhooks simulador_inactivo dte_rechazado invalidacion_rechazada contingencia_rechazada evento_rechazado limite_excedido error_interno mh_credenciales_rechazadas mh_no_disponible emision_fallida emision_incierta
message
required
string
details

Detalle según el código; puede faltar.

Example

{
"error": {
"code": "datos_invalidos"
}
}

Límite de peticiones excedido; Retry-After indica cuántos segundos esperar. Códigos: limite_excedido.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: datos_invalidos dte_invalido no_autenticado sin_permiso origen_no_permitido no_encontrado sin_organizacion sin_organizacion_activa nit_bloqueado emisor_no_configurado credenciales_incompletas sin_punto_venta estado_invalido ambiente_distinto retorno_excedido retorno_vigente idempotencia_distinta idempotencia_en_curso cliente_repetido producto_repetido codigo_repetido sin_archivo limite_webhooks simulador_inactivo dte_rechazado invalidacion_rechazada contingencia_rechazada evento_rechazado limite_excedido error_interno mh_credenciales_rechazadas mh_no_disponible emision_fallida emision_incierta
message
required
string
details

Detalle según el código; puede faltar.

Example

{
"error": {
"code": "datos_invalidos"
}
}
Retry-After
integer

Segundos que hay que esperar.