Crear o actualizar el emisor
const url = 'https://openfactura.co/api/v1/emisor';const options = { method: 'PUT', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"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"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Sección titulada «Authorizations»Request Bodyrequired
Sección titulada «Request Bodyrequired»object
Responses
Sección titulada «Responses»Emisor guardado.
object
Datos fiscales; nulo si no está configurado.
object
object
object
object
object
Example
{ "establecimientos": [ { "tipo": "01" } ], "ambienteActivo": "00"}Headers
Sección titulada «Headers»Peticiones permitidas por minuto (sólo con clave de API).
Peticiones restantes en la ventana actual (sólo con clave de API).
Segundos hasta que se reinicia la ventana (sólo con clave de API).
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.
object
object
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.
object
object
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.
object
object
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.
object
object
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.
object
object
Detalle según el código; puede faltar.
Example
{ "error": { "code": "datos_invalidos" }}Headers
Sección titulada «Headers»Segundos que hay que esperar.