> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/nfc-wallet-sdk-ios/es/implement-nfc-wallet/make-payments/replenish-payment-keys.md).

# Reponer claves de pago

## Resumen

Se requieren claves de pago para calcular criptogramas EMV para pagos sin contacto.

En un modelo de emulación de tarjeta en el host (HCE), las claves de pago son temporales. Renuévalas antes de que se agoten para evitar interrupciones en los pagos.

Esta guía cubre cuándo renovarlas y cómo activarlo.

{% hint style="info" %}
El SDK de NFC Wallet admite varios tipos de claves de pago:

* **SUK (Clave de un solo uso)**: Una clave de pago de un solo uso utilizada para cada transacción individual. Aplicable para Mastercard y Thales EMV White Label (PURE).
* **LUK (Clave de uso limitado)**: Una clave de pago que puede usarse para múltiples transacciones antes de expirar. Aplicable para Visa.
  {% endhint %}

## Requisitos previos

### Configurar umbrales de renovación (incorporación)

Configura los umbrales de renovación durante la incorporación con el **equipo de entrega de Thales**.

{% hint style="info" %}
Al definir los umbrales, considera:

* **SUK**: la cantidad restante de SUK que debería activar la renovación.
* **LUK**: la cantidad restante de transacciones y el tiempo de expiración de la LUK.
  {% endhint %}

## Integración del SDK

### Detectar cuándo se requiere renovación

Usa una (o ambas) de estas señales:

* **Comprobación proactiva**: lee `DigitalCard.PaymentKeyInfo.needsReplenishment`.
* **Push reactivo (activado por el TSP)**: procesa `MG:ReplenishmentNeededNotification` notificaciones push del **TSP**.

Para la entrega y el enrutamiento de las notificaciones push, consulta [Gestionar notificaciones push](/nfc-wallet-sdk-ios/es/get-started/configuration/4.-push-notifications/handle-push-notifications.md).

#### Comprobación proactiva

Comprueba regularmente cada tarjeta digital, por ejemplo después de cada pago o al iniciar la aplicación.

```swift
func checkReplenishment(digitalCard: DigitalCard) async throws -> Bool {
    return try await digitalCard.paymentKeyInfo.needsReplenishment
}
```

Realiza esta comprobación proactiva:

* Después de **SDK de NFC Wallet** inicialización.
* Después de un pago.
* Cuando la tarjeta se establece como predeterminada.
* Después de que se recupere la conectividad (sin conexión → en línea).

{% hint style="info" %}
Activa la renovación tan pronto como el SDK indique que es necesaria. Evita cerrar la aplicación mientras la renovación está en curso.
{% endhint %}

### Activar renovación

Llama a `ReplenishmentService.replenish(digitalCardID:)` cuando decidas renovarla.

{% code expandable="true" %}

```swift
func replenishment(digitalCard: DigitalCard) async {
    do {
        if try await digitalCard.paymentKeyInfo.needsReplenishment {
            let replenishmentService = ReplenishmentService()
            try await replenishmentService.replenish(digitalCardID: digitalCard.digitalCardID)
         
            // El backend de NFC Wallet envía una notificación push para confirmar la operación.
            // Tu aplicación debe procesarla. Consulta "Gestionar notificaciones push".
        }
    } catch let error {
        switch (error as? ReplenishmentService.Error) {
            case .networkError:
                break
            case .missingWalletSecureEnrollment:
                break
            case .deviceEnvironmentUnsafe(let error):
                break
            case .clientError(let message):
                break
            case .serverError(let message):
                break
            case .unknown(let underlying):
                break
            @unknown default:
                break
        }
    }
}
```

{% endcode %}

Después de enviar la solicitud de renovación, el **backend de NFC Wallet** envía una notificación push. Tu aplicación la procesa y el SDK recupera las nuevas claves de pago.

{% hint style="info" %}
**Activado por el TSP** Cuando recibas `MG:ReplenishmentNeededNotification`llama a `ReplenishmentService.replenish(digitalCardID:isForced:)` con `isForced: true`.

Consulta [Procesar notificaciones de MG (renovación)](/nfc-wallet-sdk-ios/es/get-started/configuration/4.-push-notifications/handle-push-notifications.md#process-mg-notifications-replenishment).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.payments.thalescloud.io/nfc-wallet-sdk-ios/es/implement-nfc-wallet/make-payments/replenish-payment-keys.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
