> 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 Host Card Emulation (HCE), las claves de pago son temporales. Renuévalas antes de que se agoten para evitar interrupciones en los pagos.

Esta guía explica cuándo reponer y cómo desencadenar la reposición.

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

* **SUK (Clave de Uso Único)**: 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 se puede usar en múltiples transacciones antes de que caduque. Aplicable para Visa.
  {% endhint %}

## Requisitos previos

### Configurar umbrales de reposición (onboarding)

Configure los umbrales de reposición durante el onboarding con el **equipo de entrega de Thales**.

{% hint style="info" %}
Al definir los umbrales, tenga en cuenta:

* **SUK**: el recuento restante de SUK que debería desencadenar la reposición.
* **LUK**: el recuento de transacciones restantes y el tiempo de expiración de la LUK.
  {% endhint %}

## Integración del SDK

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

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

* **Verificación proactiva**: leer `DigitalCard.PaymentKeyInfo.needsReplenishment`.
* **Push reactivo (disparado por TSP)**: procesar `MG:ReplenishmentNeededNotification` notificaciones push desde el **TSP**.

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

#### Verificación proactiva

Verifique regularmente para 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
}
```

Realice esta verificación proactiva:

* Después de **inicialización del SDK de NFC Wallet** .
* Después de un pago.
* Cuando la tarjeta se establece como predeterminada.
* Después de que vuelva la conectividad (offline → online).

{% hint style="info" %}
Active la reposición tan pronto como el SDK indique que es necesaria. Evite terminar la aplicación mientras la reposición esté en progreso.
{% endhint %}

### Activar la reposición

Llame a `ReplenishmentService.replenish(digitalCardID:)` cuando decida reponer.

{% 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.
            // Su aplicación debe procesarla. Vea "Manejar 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 reposición, el **backend de NFC Wallet** envía una notificación push. Su aplicación la procesa y el SDK recupera las nuevas claves de pago.

{% hint style="info" %}
**Disparado por TSP** Cuando reciba `MG:ReplenishmentNeededNotification`llame a `ReplenishmentService.replenish(digitalCardID:isForced:)` con `isForced: true`.

Vea [Procesar notificaciones MG (reposició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:

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

The question should be specific, self-contained, and written in natural language.
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.
