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

# Cómo cambiar el PIN de bloqueo

> Pon un PIN nuevo en tu terminal para los cobros y las devoluciones, y deja sin efecto el anterior.

export const SupportBox = () => <aside className="cm-support">
		<span className="cm-support-icon">
			<svg className="cm-icon" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
				<path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zM12 8a4 4 0 1 0 0 8 4 4 0 0 0 0-8zM4.93 4.93l4.24 4.24M14.83 9.17l4.24-4.24M14.83 14.83l4.24 4.24M9.17 14.83l-4.24 4.24" />
			</svg>
		</span>
		<div className="cm-support-body">
			<p className="cm-support-title">Estamos para ayudarte en lo que necesites.</p>
			<p className="cm-support-text">Escríbenos por WhatsApp o por correo: del otro lado está el equipo de Compago.</p>
			<div className="cm-support-actions">
				<a className="cm-button cm-button-whatsapp" href="https://wa.me/525510033582?text=Hola%2C%20necesito%20ayuda%20con%20Compago." target="_blank" rel="noopener noreferrer">
					<svg className="cm-icon" width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true">
						<path d="M17.47 14.38c-.3-.15-1.76-.87-2.03-.97-.27-.1-.47-.15-.67.15-.2.3-.77.97-.94 1.16-.17.2-.35.22-.64.08-.3-.15-1.26-.47-2.39-1.48-.88-.79-1.48-1.76-1.65-2.06-.17-.3-.02-.46.13-.61.13-.13.3-.35.45-.52.15-.17.2-.3.3-.5.1-.2.05-.37-.03-.52-.07-.15-.67-1.61-.92-2.21-.24-.58-.49-.5-.67-.51h-.57c-.2 0-.52.07-.79.37-.27.3-1.04 1.02-1.04 2.48 0 1.46 1.07 2.88 1.21 3.07.15.2 2.1 3.2 5.08 4.49.71.31 1.26.49 1.7.63.71.23 1.36.2 1.87.12.57-.09 1.76-.72 2.01-1.41.25-.69.25-1.29.17-1.41-.07-.12-.27-.2-.57-.35zm-5.42 7.4h-.01a9.87 9.87 0 0 1-5.03-1.38l-.36-.21-3.74.98 1-3.65-.24-.37a9.86 9.86 0 0 1-1.51-5.26c0-5.45 4.44-9.88 9.89-9.88 2.64 0 5.12 1.03 6.99 2.9a9.83 9.83 0 0 1 2.89 7c0 5.45-4.44 9.88-9.88 9.880zm8.41-18.3A11.82 11.82 0 0 0 12.05 0C5.5 0 .16 5.34.16 11.89c0 2.1.55 4.14 1.59 5.95L.06 24l6.3-1.65a11.88 11.88 0 0 0 5.68 1.45h.01c6.55 0 11.89-5.34 11.89-11.89a11.82 11.82 0 0 0-3.48-8.41z" />
					</svg>
					WhatsApp +52 55 1003 3582
				</a>
				<a className="cm-button" href="mailto:ayuda@compago.com">
					<svg className="cm-icon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
						<path d="M4 4h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2zM22 7l-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7" />
					</svg>
					ayuda@compago.com
				</a>
			</div>
		</div>
	</aside>;

export const GuideImage = ({src, preview, alt, width, height, caption, variant = 'screen'}) => {
  const [open, setOpen] = useState(false);
  const [view, setView] = useState(null);
  const opener = useRef(null);
  const dialog = useRef(null);
  const viewport = useRef(null);
  const closeButton = useRef(null);
  const fitScale = useRef(1);
  const drag = useRef(null);
  const long = height / width > 1.6;
  const icon = (d, size = 18) => <svg className="cm-icon" width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
			<path d={d} />
		</svg>;
  const ZOOM_IN = 'M11 3a8 8 0 1 0 0 16 8 8 0 0 0 0-16zM21 21l-4.35-4.35M11 8v6M8 11h6';
  const ZOOM_OUT = 'M11 3a8 8 0 1 0 0 16 8 8 0 0 0 0-16zM21 21l-4.35-4.35M8 11h6';
  const FIT = 'M3 7V5a2 2 0 0 1 2-2h2M17 3h2a2 2 0 0 1 2 2v2M21 17v2a2 2 0 0 1-2 2h-2M7 21H5a2 2 0 0 1-2-2v-2';
  const DOWNLOAD = 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3';
  const CLOSE = 'M18 6 6 18M6 6l12 12';
  const clampView = next => {
    const el = viewport.current;
    if (!el) return next;
    const w = width * next.scale;
    const h = height * next.scale;
    const keep = 96;
    const x = w <= el.clientWidth ? (el.clientWidth - w) / 2 : Math.min(keep, Math.max(el.clientWidth - w - keep, next.x));
    const y = h <= el.clientHeight ? (el.clientHeight - h) / 2 : Math.min(keep, Math.max(el.clientHeight - h - keep, next.y));
    return {
      scale: next.scale,
      x,
      y
    };
  };
  const fit = () => {
    const el = viewport.current;
    if (!el) return;
    const scale = long ? Math.min(1, el.clientWidth * 0.94 / width) : Math.min(1, el.clientWidth * 0.94 / width, el.clientHeight * 0.88 / height);
    fitScale.current = scale;
    setView(clampView({
      scale,
      x: (el.clientWidth - width * scale) / 2,
      y: long ? 72 : (el.clientHeight - height * scale) / 2
    }));
  };
  const zoomAt = (factor, cx, cy) => {
    setView(current => {
      const el = viewport.current;
      if (!current || !el) return current;
      const px = cx ?? el.clientWidth / 2;
      const py = cy ?? el.clientHeight / 2;
      const scale = Math.min(Math.max(fitScale.current * 0.5, current.scale * factor), Math.max(1.5, fitScale.current * 6));
      const ratio = scale / current.scale;
      return clampView({
        scale,
        x: px - (px - current.x) * ratio,
        y: py - (py - current.y) * ratio
      });
    });
  };
  const panBy = (dx, dy) => setView(current => current && clampView({
    ...current,
    x: current.x + dx,
    y: current.y + dy
  }));
  const close = () => {
    setOpen(false);
    setView(null);
    opener.current?.focus();
  };
  const show = event => {
    opener.current = event.currentTarget;
    setOpen(true);
  };
  const actions = useRef({});
  actions.current = {
    fit,
    zoomAt,
    panBy,
    close
  };
  useEffect(() => {
    const modal = dialog.current;
    if (!open || !modal) return undefined;
    if (!modal.open) modal.showModal();
    const el = viewport.current;
    actions.current.fit();
    closeButton.current?.focus();
    const onResize = () => actions.current.fit();
    const onKey = event => {
      const {zoomAt: zoom, panBy: pan} = actions.current;
      if (event.key === '+' || event.key === '=') zoom(1.25); else if (event.key === '-' || event.key === '_') zoom(0.8); else if (event.key === '0') actions.current.fit(); else if (event.key === 'ArrowUp') pan(0, 120); else if (event.key === 'ArrowDown') pan(0, -120); else if (event.key === 'ArrowLeft') pan(120, 0); else if (event.key === 'ArrowRight') pan(-120, 0); else return;
      event.preventDefault();
    };
    const onWheel = event => {
      event.preventDefault();
      const rect = el.getBoundingClientRect();
      if (event.ctrlKey || event.metaKey) actions.current.zoomAt(Math.exp(-event.deltaY * 0.0022), event.clientX - rect.left, event.clientY - rect.top); else actions.current.panBy(-event.deltaX, -event.deltaY);
    };
    const root = document.documentElement;
    const overflow = root.style.overflow;
    root.style.overflow = 'hidden';
    window.addEventListener('resize', onResize);
    document.addEventListener('keydown', onKey);
    el?.addEventListener('wheel', onWheel, {
      passive: false
    });
    return () => {
      root.style.overflow = overflow;
      window.removeEventListener('resize', onResize);
      document.removeEventListener('keydown', onKey);
      el?.removeEventListener('wheel', onWheel);
      if (modal.open) modal.close();
    };
  }, [open]);
  const onPointerDown = event => {
    if (event.button !== 0) return;
    drag.current = {
      x: event.clientX,
      y: event.clientY,
      travel: 0
    };
    event.currentTarget.setPointerCapture(event.pointerId);
  };
  const onPointerMove = event => {
    const start = drag.current;
    if (!start) return;
    const dx = event.clientX - start.x;
    const dy = event.clientY - start.y;
    start.travel += Math.abs(dx) + Math.abs(dy);
    start.x = event.clientX;
    start.y = event.clientY;
    panBy(dx, dy);
  };
  const onPointerUp = event => {
    const start = drag.current;
    drag.current = null;
    if (!start || start.travel > 6 || !view) return;
    const rect = viewport.current.getBoundingClientRect();
    const x = event.clientX - rect.left;
    const y = event.clientY - rect.top;
    const inside = x >= view.x && x <= view.x + width * view.scale && y >= view.y && y <= view.y + height * view.scale;
    if (!inside) close();
  };
  const onDoubleClick = event => {
    const rect = viewport.current.getBoundingClientRect();
    if (view && view.scale > fitScale.current * 1.4) fit(); else zoomAt(2.2, event.clientX - rect.left, event.clientY - rect.top);
  };
  const percent = view ? Math.round(view.scale / fitScale.current * 100) : 100;
  const viewer = open && <dialog ref={dialog} className="cm-overlay cm-lightbox" aria-label={alt} onCancel={event => {
    event.preventDefault();
    actions.current.close();
  }} onClick={event => {
    if (!event.target.closest('button, a, .cm-lightbox-viewport')) close();
  }}>
			<div className="cm-overlay-bar">
				<span className="cm-overlay-title">{alt}</span>
				<span className="cm-overlay-tools">
					<button type="button" className="cm-tool" onClick={() => zoomAt(0.8)} aria-label="Alejar" title="Alejar (−)">
						{icon(ZOOM_OUT)}
					</button>
					<button type="button" className="cm-tool cm-tool-text" onClick={fit} aria-label="Ajustar a la pantalla" title="Ajustar a la pantalla (0)">
						{percent}%
					</button>
					<button type="button" className="cm-tool" onClick={() => zoomAt(1.25)} aria-label="Acercar" title="Acercar (+)">
						{icon(ZOOM_IN)}
					</button>
					<button type="button" className="cm-tool" onClick={fit} aria-label="Ajustar a la pantalla" title="Ajustar a la pantalla (0)">
						{icon(FIT)}
					</button>
					<a className="cm-tool" href={src} download aria-label="Descargar imagen" title="Descargar imagen">
						{icon(DOWNLOAD)}
					</a>
					<span className="cm-tool-gap" />
					<button type="button" ref={closeButton} className="cm-tool" onClick={close} aria-label="Cerrar" title="Cerrar (Esc)">
						{icon(CLOSE)}
					</button>
				</span>
			</div>
			<div className="cm-lightbox-viewport" ref={viewport} onPointerDown={onPointerDown} onPointerMove={onPointerMove} onPointerUp={onPointerUp} onPointerCancel={() => {
    drag.current = null;
  }} onDoubleClick={onDoubleClick}>
				{view && <img className="cm-lightbox-img" src={src} alt={alt} width={width} height={height} draggable={false} style={{
    transform: `translate(${view.x}px, ${view.y}px) scale(${view.scale})`
  }} />}
			</div>
			<p className="cm-lightbox-help">Arrastra para moverte · ⌘ o Ctrl + rueda para acercar · Doble clic para ampliar · Clic afuera o Esc para cerrar</p>
		</dialog>;
  if (variant === 'guide') {
    return <figure className="cm-guide">
				<button type="button" className="cm-guide-open" onClick={show} aria-label={`Ver la guía completa: ${alt}`}>
					<img src={preview ?? src} alt={alt} loading="lazy" decoding="async" />
					<span className="cm-guide-button">
						{icon(ZOOM_IN, 17)}
						Ver la guía completa
					</span>
				</button>
				{caption && <figcaption className="cm-figure-caption">{caption}</figcaption>}
				{viewer}
			</figure>;
  }
  return <figure className={variant === 'terminal' ? 'cm-figure cm-figure-terminal' : 'cm-figure'}>
			<button type="button" className="cm-figure-open" onClick={show} aria-label={`Ampliar la imagen: ${alt}`}>
				<img src={preview ?? src} alt={alt} width={width} height={height} loading="lazy" decoding="async" />
				<span className="cm-figure-hint">
					{icon(ZOOM_IN, 15)}
					Ampliar
				</span>
			</button>
			{caption && <figcaption className="cm-figure-caption">{caption}</figcaption>}
			{viewer}
		</figure>;
};

export const GuideVideo = ({src, poster, title, duration, caption}) => {
  const dialog = useRef(null);
  const player = useRef(null);
  const opener = useRef(null);
  const resumeAt = useRef(0);
  const pageOverflow = useRef('');
  const icon = (d, size = 18, fill = false) => <svg className="cm-icon" width={size} height={size} viewBox="0 0 24 24" fill={fill ? 'currentColor' : 'none'} stroke="currentColor" strokeWidth={fill ? 1.6 : 2} strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
			<path d={d} />
		</svg>;
  const PLAY = 'M9 6.5 18.5 12 9 17.5z';
  const MAXIMIZE = 'M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3';
  const CLOSE = 'M18 6 6 18M6 6l12 12';
  const open = event => {
    const modal = dialog.current;
    const video = player.current;
    if (!modal || !video || modal.open) return;
    opener.current = event.currentTarget;
    pageOverflow.current = document.documentElement.style.overflow;
    document.documentElement.style.overflow = 'hidden';
    modal.showModal();
    video.currentTime = resumeAt.current;
    video.play().catch(() => {});
    video.focus();
  };
  const onClose = () => {
    const video = player.current;
    if (video) {
      resumeAt.current = video.ended ? 0 : video.currentTime;
      video.pause();
    }
    document.documentElement.style.overflow = pageOverflow.current;
    opener.current?.focus();
  };
  const close = () => {
    if (dialog.current?.open) dialog.current.close();
  };
  const fullscreen = () => {
    const video = player.current;
    if (!video) return;
    video.play().catch(() => {});
    if (video.requestFullscreen) video.requestFullscreen().catch(() => {}); else if (video.webkitEnterFullscreen) video.webkitEnterFullscreen();
  };
  return <figure className="cm-video">
			<button type="button" className="cm-video-frame" onClick={open} aria-label={`Ver el video: ${title}`}>
				<img className="cm-video-thumb" src={poster} alt="" decoding="async" />
				<span className="cm-video-play">{icon(PLAY, 34, true)}</span>
				<span className="cm-video-pill">
					{icon(PLAY, 12, true)}
					Video tutorial
				</span>
				{duration && <span className="cm-video-duration">{duration}</span>}
			</button>
			{caption && <figcaption className="cm-video-caption">{caption}</figcaption>}
			<dialog ref={dialog} className="cm-overlay" aria-label={title} onClose={onClose} onClick={event => {
    if (!event.target.closest('video, button, a')) close();
  }}>
				<div className="cm-theater">
					<div className="cm-overlay-bar">
						<span className="cm-overlay-title">{title}</span>
						<span className="cm-overlay-tools">
							<button type="button" className="cm-tool" onClick={fullscreen} aria-label="Pantalla completa" title="Pantalla completa">
								{icon(MAXIMIZE)}
							</button>
							<button type="button" className="cm-tool" onClick={close} aria-label="Cerrar" title="Cerrar (Esc)">
								{icon(CLOSE)}
							</button>
						</span>
					</div>
					<video ref={player} className="cm-theater-video" src={src} poster={poster} controls playsInline preload="none" tabIndex={-1}>
						Tu navegador no puede reproducir este video.
					</video>
				</div>
			</dialog>
		</figure>;
};

Cuando cambia quién cobra en tu negocio, o cuando el PIN ya lo conoce más gente de la que debería, conviene poner uno nuevo. Se cambia en la misma terminal, con el PIN actual a la mano, y el anterior deja de servir en ese momento.

<GuideVideo src="https://docs-media.compago.com/manual/terminal/cambiar-el-pin-de-bloqueo/video.mp4" poster="/media/manual/terminal/cambiar-el-pin-de-bloqueo/poster.webp" title="Cómo cambiar el PIN de bloqueo" duration="1:42" caption="Mira el paso a paso y síguelo en tu terminal." />

## Dónde está en la app

* En el inicio, toca el engrane, arriba a la derecha, para abrir **Configuración**. Si tu terminal abre en **Nuevo cobro**, toca antes la **X** de arriba a la izquierda.
* En **Configuración**, bajo **Esta terminal**, toca **Bloqueo con PIN** y escribe el PIN actual.
* En **Bloqueo con PIN**, toca la fila **PIN de bloqueo**.

## Antes de empezar

* La terminal ya debe tener un PIN de bloqueo. Si todavía no lo tiene, créalo con la guía [Bloqueo con PIN](/manual/terminal/bloqueo-con-pin).
* Necesitas saber el PIN actual: sin él, la terminal no abre **Bloqueo con PIN**.
* Ten la sesión iniciada. La app no tiene roles: cualquier vendedor con la sesión iniciada que conozca el PIN actual puede cambiarlo.
* Piensa antes el PIN nuevo, de 6 dígitos, y a quién se lo vas a dar.

## Paso a paso

<Steps titleSize="h3">
  <Step title="Entra a «Bloqueo con PIN»" id="paso-1">
    <GuideImage variant="terminal" src="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-1.webp" preview="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-1-vista.webp" width={1341} height={2860} alt="Paso 1: la pantalla «Configuración» de la terminal, con la fila «Bloqueo con PIN» marcada y su estado, «1 de 2»" />

    El PIN se cambia en **Configuración**, que abres con el engrane del inicio. Si tu terminal abre en **Nuevo cobro**, toca antes la **X**. Ahí, en el grupo **Esta terminal**, toca **Bloqueo con PIN**.
  </Step>

  <Step title="Escribe el PIN actual" id="paso-2">
    <GuideImage variant="terminal" src="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-2.webp" preview="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-2-vista.webp" width={1341} height={2860} alt="Paso 2: la pantalla «PIN de bloqueo» con el texto «Escribe el PIN para cambiar estos ajustes», los seis puntos llenos y el botón «Continuar» marcado" />

    Antes de abrir estos ajustes, la terminal pide el PIN que tiene ahora. Escríbelo y toca **Continuar**.

    <Tip>Con otro PIN, la terminal avisa **PIN incorrecto** y te deja intentarlo de nuevo.</Tip>
  </Step>

  <Step title="Toca «PIN de bloqueo»" id="paso-3">
    <GuideImage variant="terminal" src="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-3.webp" preview="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-3-vista.webp" width={1341} height={2860} alt="Paso 3: la pantalla «Bloqueo con PIN», con «Cobros manuales» encendido y la fila «PIN de bloqueo» marcada, con la etiqueta «Configurado»" />

    Ya estás en **Bloqueo con PIN**. Debajo de los interruptores, la fila **PIN de bloqueo** dice **Configurado**: tócala para elegir uno nuevo.
  </Step>

  <Step title="Elige el PIN nuevo" id="paso-4">
    <GuideImage variant="terminal" src="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-4.webp" preview="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-4-vista.webp" width={1341} height={2860} alt="Paso 4: la pantalla «PIN de bloqueo» con «Elige un PIN de 6 dígitos», los seis puntos llenos y el botón «Continuar» marcado" />

    La terminal pide el PIN que va a reemplazar al anterior. Escribe 6 dígitos y toca **Continuar**.

    <Tip>El mismo PIN sirve para **Cobros manuales** y para **Devoluciones**.</Tip>
  </Step>

  <Step title="Repite el PIN nuevo" id="paso-5">
    <GuideImage variant="terminal" src="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-5.webp" preview="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-5-vista.webp" width={1341} height={2860} alt="Paso 5: la pantalla «PIN de bloqueo» con «Repite el PIN», los seis puntos llenos y el botón «Guardar PIN» marcado" />

    La terminal lo pide una vez más antes de guardarlo. Escribe otra vez el PIN nuevo y toca **Guardar PIN**.

    <Tip>¿Prefieres otro? La flecha de arriba a la izquierda te regresa a elegirlo.</Tip>
  </Step>

  <Step title="Revisa el aviso" id="paso-6">
    <GuideImage variant="terminal" src="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-6.webp" preview="/media/manual/terminal/cambiar-el-pin-de-bloqueo/paso-6-vista.webp" width={1341} height={2860} alt="Paso 6: la pantalla «Bloqueo con PIN» con el aviso «PIN configurado» marcado en la parte de abajo y los bloqueos igual que antes" />

    El aviso **PIN configurado** confirma que el PIN nuevo quedó guardado. Desde ahora la terminal pide ese, y el anterior deja de servir. Tus bloqueos siguen como estaban.

    <Tip>Avisa a quien cobra en esta terminal: el PIN anterior ya no funciona.</Tip>
  </Step>
</Steps>

## Qué pasa después

* El PIN anterior deja de servir en cuanto tocas **Guardar PIN**. No hay un periodo en el que funcionen los dos.
* Cambiar el PIN no enciende ni apaga nada: **Cobros manuales** y **Devoluciones** se quedan como los tenías.
* La terminal pide el PIN nuevo en los mismos momentos que antes: al tocar **Cobrar** si **Cobros manuales** está encendido, al tocar **Devolver cobro** si **Devoluciones** está encendido, y cada vez que entras a **Bloqueo con PIN**.
* El cambio es de esta terminal. Si tu negocio tiene varias, las demás conservan su propio PIN.
* Si sales con **Cancelar** antes de tocar **Guardar PIN**, la terminal conserva el PIN anterior.

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Qué hago si olvidé el PIN actual?">
    La app no tiene una opción para recuperar el PIN ni para cambiarlo sin escribir el actual, y la terminal nunca lo muestra. Pregunta primero en tu equipo si alguien lo recuerda. Si nadie lo sabe, escríbenos por los medios que están al final de esta página.
  </Accordion>

  <Accordion title="¿Tengo que apagar los bloqueos para cambiar el PIN?">
    No. El PIN se cambia con los bloqueos encendidos, y al terminar siguen igual.
  </Accordion>

  <Accordion title="¿Puedo quitar el PIN por completo?">
    No hay una opción para borrarlo. Si apagas **Cobros manuales** y **Devoluciones**, la terminal deja de pedirlo al cobrar y al devolver, pero lo sigue pidiendo para entrar a **Bloqueo con PIN**.
  </Accordion>

  <Accordion title="¿Es el mismo PIN que el del modo kiosko?">
    No. El modo kiosko tiene su propio **PIN de salida**, que se configura en **Modo kiosko**. Cambiar el PIN de bloqueo no lo modifica.
  </Accordion>

  <Accordion title="¿El PIN se borra al cerrar sesión?">
    No. El PIN se queda guardado en la terminal y aplica para cualquier vendedor que inicie sesión en ella.
  </Accordion>
</AccordionGroup>

## Errores comunes

### «PIN incorrecto»

Aparece al entrar a **Bloqueo con PIN** cuando el PIN que escribiste no es el que tiene la terminal. Los puntos se vacían: escríbelo otra vez, sin prisa. Si tienes varias terminales, confirma que es el PIN de esta.

### «Demasiados intentos fallidos»

Después de cinco intentos con un PIN incorrecto, la terminal deja de aceptar intentos hasta por un minuto. El aviso completo dice **Demasiados intentos fallidos. Espera 60 segundos.** y va contando los segundos que faltan. Aprovecha la pausa para confirmar el PIN con tu equipo antes de volver a intentarlo.

### «El PIN debe tener 6 dígitos»

Tocaste **Continuar** antes de completar los seis puntos. Escribe los dígitos que faltan y vuelve a tocarlo.

### «Los PINs no coinciden»

Al repetir el PIN nuevo escribiste algo distinto de lo que elegiste. La terminal vacía la repetición para que la escribas otra vez. Si ya no estás seguro de lo que elegiste, toca la flecha de arriba a la izquierda y elige el PIN de nuevo.

## Guía en una imagen

Todos los pasos en una sola imagen, para tenerla a mano o compartirla con tu equipo.

<GuideImage variant="guide" src="/media/manual/terminal/cambiar-el-pin-de-bloqueo/guia.webp" preview="/media/manual/terminal/cambiar-el-pin-de-bloqueo/guia-vista.webp" width={4560} height={8727} alt="Cómo cambiar el PIN de bloqueo: todos los pasos en una imagen" caption="Ábrela para acercarte a cada paso o descárgala." />

## Guías relacionadas

<CardGroup cols={2}>
  <Card title="Bloqueo con PIN" icon="lock" href="/manual/terminal/bloqueo-con-pin">
    Pide un PIN antes de cobrar o de devolver un cobro.
  </Card>

  <Card title="Devuelve un cobro" icon="rotate-left" href="/manual/terminal/devolver-un-cobro">
    Regresa el dinero completo a la tarjeta de tu cliente.
  </Card>

  <Card title="Cierra sesión" icon="right-from-bracket" href="/manual/terminal/cerrar-sesion">
    Sal de la terminal para que entre el siguiente vendedor.
  </Card>

  <Card title="Conoce la terminal" icon="compass" href="/manual/terminal/conoce-la-terminal">
    El inicio, la configuración y cómo moverte entre pantallas.
  </Card>
</CardGroup>

## ¿Necesitas ayuda?

<SupportBox />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.