---
title: "Gestionar errores en el SDK de React Native"
description: "Gestiona errores en el SDK de React Native."
---

Todos los errores que devuelve el SDK son de tipo `AdaptyErrorCode`. A continuación tienes un ejemplo:
:::tip
**Activa los logs detallados antes de depurar.** La mayoría de los `AdaptyError` envuelven un error subyacente de StoreKit, Play Billing, red o backend. Con los logs detallados activados (`adapty.setLogLevel('verbose')` — consulta Logging para [RN puro](sdk-installation-react-native-pure#logging) o [Expo](sdk-installation-react-native-expo#logging)), ese error interno se imprime en la consola, lo que normalmente indica la causa real.
:::

:::important
Si estas soluciones no resuelven tu problema, consulta [Otros problemas](#other-issues) para conocer los pasos a seguir antes de contactar con soporte y ayudarnos a asistirte de forma más eficiente.
:::
```typescript showLineNumbers
try {
  const params: MakePurchaseParamsInput = {};
  await adapty.makePurchase(product, params);
} catch (error) {
  if (
    error instanceof AdaptyError &&
    error.adaptyCode === getErrorCode(ErrorCode['2'])
  ) {
    // payment cancelled
  }
}
```
## Códigos del sistema StoreKit \{#system-storekit-codes\}
| Error | Código | Solución |
|-----|----|-----------|
| [unknown](https://developer.apple.com/documentation/storekit/skerror/code/unknown)                                                         | 0    | Código de error que indica que ocurrió un error desconocido o inesperado. <br/> Reintenta o consulta la sección [Otros problemas](#other-issues).                                                                                                                                                                                                                                                                                                                   |
| [clientInvalid](https://developer.apple.com/documentation/storekit/skerror/code/clientinvalid)                                             | 1    | Este código de error indica que el cliente no tiene permiso para realizar la acción solicitada.                                                                                                                                                                                                                                                                                                                                                           |
| [paymentCancelled](https://developer.apple.com/documentation/storekit/skerror/code/paymentcancelled)                                       | 2    | <p>Este código de error indica que el usuario canceló una solicitud de pago.</p><p>No se requiere ninguna acción, aunque desde el punto de vista del negocio puedes ofrecer un descuento al usuario o recordárselo más adelante.</p>                                                                                                                                                                                                                                             |
| [paymentInvalid](https://developer.apple.com/documentation/storekit/skerror/code/paymentinvalid)                                           | 3    | Este error indica que uno de los parámetros de pago no fue reconocido por el App Store.                                                                                                                                                                                                                                                                                                                                                        |
| [paymentNotAllowed](https://developer.apple.com/documentation/storekit/skerror/code/paymentnotallowed)                                     | 4    | Este código de error indica que el usuario no tiene permiso para autorizar pagos.                                                                                                                                                                                                                                                                                                                                                                       |
| [storeProductNotAvailable](https://developer.apple.com/documentation/storekit/skerror/code/storeproductnotavailable)                       | 5    | Este código de error indica que el producto solicitado no está disponible en el store. <br/>  Intenta reinstalar la app.                                                                                                                                                                                                                                                                                                                               |
| [cloudServicePermissionDenied](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicepermissiondenied)               | 6    | Este código de error indica que el usuario no ha permitido el acceso a la información del servicio en la nube.                                                                                                                                                                                                                                                                                                                                        |
| [cloudServiceNetworkConnectionFailed](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicenetworkconnectionfailed) | 7    | Este código de error indica que el dispositivo no pudo conectarse a la red.                                                                                                                                                                                                                                                                                                                                                                         |
| [cloudServiceRevoked](https://developer.apple.com/documentation/storekit/skerror/code/cloudservicerevoked/)                                | 8    | Este código de error indica que el usuario ha revocado el permiso para usar este servicio en la nube.                                                                                                                                                                                                                                                                                                                                                           |
| [privacyAcknowledgementRequired](https://developer.apple.com/documentation/storekit/skerror/code/privacyacknowledgementrequired)           | 9    | Este código de error indica que el usuario aún no ha aceptado la política de privacidad de Apple.                                                                                                                                                                                                                                                                                                                                                            |
| [unauthorizedRequestData](https://developer.apple.com/documentation/storekit/skerror/code/unauthorizedrequestdata)                         | 10   | Este código de error indica que la app está intentando usar una propiedad para la que no tiene el entitlement necesario.                                                                                                                                                                                                                                                                                                                                         |
| [invalidOfferIdentifier](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferidentifier)                           | 11   | <p>El [`identifier`](https://developer.apple.com/documentation/storekit/skpaymentdiscount/identifier) de la oferta no es válido. Por ejemplo, no has configurado una oferta con ese identificador en el App Store, o la oferta ha sido revocada.</p><p>Asegúrate de configurar las ofertas deseadas en App Store Connect y de pasar un identificador de oferta válido.</p>                                                                                           |
| [invalidSignature](https://developer.apple.com/documentation/storekit/skerror/code/invalidsignature)                                       | 12   | Este código de error indica que la firma en un descuento de pago no es válida.                                                                                                                                                                                                                                                                                                                                                                    |
| [missingOfferParams](https://developer.apple.com/documentation/storekit/skerror/code/missingofferparams)                                   | 13   | Este código de error indica que faltan parámetros en un descuento de pago.                                                                                                                                                                                                                                                                                                                                                                        |
| [invalidOfferPrice](https://developer.apple.com/documentation/storekit/skerror/code/invalidofferprice/)                                    | 14   | Este código de error indica que el precio especificado en App Store Connect ya no es válido. Las ofertas siempre deben representar un precio con descuento.                                                                                                                                                                                                                                                                                                                    |
## Códigos de Android personalizados \{#custom-android-codes\}
| Error | Código | Solución |
|-----|----|-----------|
| adaptyNotInitialized | 20 | Necesitas configurar correctamente el SDK de Adapty mediante el método `Adapty.activate`. Aprende cómo hacerlo [para React Native](sdk-installation-reactnative). |
| productNotFound | 22 | Este error indica que el producto solicitado para la compra no está disponible en el store. |
| invalidJson | 23 | El JSON del paywall no es válido. Corrígelo en el Adapty Dashboard. Consulta el tema [Personalizar el paywall con Remote Config](customize-paywall-with-remote-config) para más detalles sobre cómo solucionarlo. |
| currentSubscriptionToUpdateNotFoundInHistory | 24 | No se encuentra la suscripción original que necesita renovarse. |
| pendingPurchase | 25 | Este error indica que el estado de la compra es pendiente en lugar de completada. Consulta la página [Handling pending transactions](https://developer.android.com/google/play/billing/integrate#pending) en la documentación de Android Developer para más detalles. |
| billingServiceTimeout | 97 | Este error indica que la solicitud ha alcanzado el tiempo de espera máximo antes de que Google Play pueda responder. Esto puede deberse, por ejemplo, a un retraso en la ejecución de la acción solicitada por la llamada a la Play Billing Library. |
| featureNotSupported | 98 | La funcionalidad solicitada no es compatible con Play Store en el dispositivo actual. |
| billingServiceDisconnected | 99 | Este error fatal indica que la conexión de la app cliente con el servicio de Google Play Store a través del `BillingClient` se ha interrumpido. |
| billingServiceUnavailable | 102 | Este error transitorio indica que el servicio Google Play Billing no está disponible en este momento. En la mayoría de los casos, significa que hay un problema de conexión de red entre el dispositivo cliente y los servicios de Google Play Billing. |
| billingUnavailable | 103 | <p>Este error indica que se produjo un error de facturación del usuario durante el proceso de compra. Algunos ejemplos de cuándo puede ocurrir:</p><p></p><p>1\. La app de Play Store en el dispositivo del usuario está desactualizada.</p><p>2. El usuario se encuentra en un país no compatible.</p><p>3. El usuario es un empleado corporativo y su administrador ha desactivado la posibilidad de realizar compras.</p><p>4. Google Play no puede cargar el método de pago del usuario. Por ejemplo, la tarjeta de crédito puede haber caducado.</p><p>5. El usuario no ha iniciado sesión en la app de Play Store.</p> |
| developerError | 105 | Este es un error fatal que indica que estás usando una API de forma incorrecta. |
| billingError | 106 | Este es un error fatal que indica un problema interno en el propio Google Play. |
| itemAlreadyOwned | 107 | El producto consumible ya ha sido comprado. |
| itemNotOwned | 108 | Este error indica que la acción solicitada sobre el artículo falló. |
## Códigos personalizados de StoreKit \{#custom-storekit-codes\}
| Error | Código | Solución |
|-----|----|-----------|
| noProductIDsFound | 1000 | <p>Este error indica que ninguno de los productos que solicitaste en el paywall está disponible para comprar en el App Store, aunque aparezcan listados allí. A veces puede acompañarse de una advertencia `InvalidProductIdentifiers`. Si la advertencia aparece sin un error, puedes ignorarla sin problema.</p><p>Si encuentras este error, sigue los pasos de la sección [Solución para el error Code-1000 `noProductIDsFound`](InvalidProductIdentifiers-react-native).</p> |
| productRequestFailed | 1002 | <p>No se pueden obtener los productos disponibles en este momento. Posible causa:</p><p></p><p>- Aún no se ha creado ninguna caché y tampoco hay conexión a internet.</p> |
| cantMakePayments | 1003 | Las compras in-app no están permitidas en este dispositivo. Consulta la [guía](cantMakePayments-react-native) de solución de problemas. |
| noPurchasesToRestore | 1004 | Este error indica que Google Play no encontró ninguna compra para restaurar. |
| cantReadReceipt | 1005 | <p>No hay ningún recibo válido disponible en el dispositivo. Esto puede ocurrir durante las pruebas en sandbox.</p><p>No es necesario hacer nada, pero en cuanto a la lógica de negocio, puedes ofrecer un descuento al usuario o recordárselo más adelante.</p> |
| productPurchaseFailed | 1006 | La compra del producto ha fallado. Este error envuelve un error subyacente de StoreKit — lee el error interno (o activa los logs detallados para verlo en la consola) para conocer la causa real. Normalmente el error interno es uno de los códigos StoreKit del 0 al 14 de la tabla anterior — los más frecuentes son `paymentCancelled`, `paymentInvalid`, `paymentNotAllowed` o `invalidOfferPrice`. Si no puedes identificar una causa concreta, prueba con un nuevo [perfil de sandbox](test-purchases-in-sandbox); si sigue fallando, contacta con el soporte de Apple. |
| refreshReceiptFailed | 1010 | Este error indica que no se recibió el recibo. Solo aplica a StoreKit 1. |
| receiveRestoredTransactionsFailed | 1011 | La restauración de la compra ha fallado. |
## Códigos de red personalizados \{#custom-network-codes\}
| Error                | Código | Solución                                                                                                                                                                                                                                                                                                                                                                                                                        |
| :------------------- | :--- |:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| notActivated   | 2002 | El SDK de Adapty no está activado. <br/> Suele ocurrir cuando una pantalla de inicio o un hook de interfaz temprano llama a métodos de Adapty antes de que `adapty.activate` haya terminado. El síntoma es intermitente y puede no reproducirse en el simulador porque los tiempos en dispositivo real son distintos. Usa `await` con `activate` antes de programar cualquier otra llamada al SDK. Consulta [Orden de llamadas en el SDK de React Native](react-native-sdk-call-order) para ver la secuencia completa. |
| badRequest     | 2003 | Solicitud incorrecta. <br/> Asegúrate de haber completado todos los pasos necesarios para [integrarte con el App Store](app-store-connection-configuration).                                                                                                                                                                                                                                                                                           |
| serverError    | 2004 | Error del servidor. <br/> Vuelve a intentarlo después de un tiempo. Si el problema persiste, contacta con el equipo de soporte de Adapty.                                                                                                                                                                                                                                                                                                                      |
| networkFailed  | 2005 | Este error indica problemas con la conexión de red en el dispositivo del usuario. <br/> Prueba a desactivar la VPN o a cambiar de red móvil a WiFi, o viceversa.                                                                                                                                                                                                                                                                   |
| decodingFailed | 2006 | Este error indica que falló la decodificación de la respuesta. <br/> Revisa tu código y asegúrate de que los parámetros que envías son válidos. Por ejemplo, este error puede indicar que estás usando una clave de API no válida.                                                                                                                                                                                                                       |
| encodingFailed | 2009 | Este error indica que falló la codificación de la solicitud.                                                                                                                                                                                                                                                                                                                                                                                 |
| missingURL     | 2010 | La URL solicitada es nil.                                                                                                                                                                                                                                                                                                                                                                                                          |
| analyticsDisabled    | 3000 | No podemos gestionar los eventos de análisis porque los has [desactivado](analytics-integration#disabling-external-analytics-for-a-specific-customer).                                                                                                                                                                                                                                                                                         |
| wrongParam           | 3001 | Este error indica que alguno de tus parámetros no es correcto. <br/> Si estás usando el Paywall Builder de Adapty y no puedes mostrar un paywall a causa de este error, activa **Show on device** en el Paywall Builder.<br/> Otra posible causa es que la versión del archivo de [respaldo](fallback-paywalls) local no coincida con la versión del SDK. Descarga un archivo nuevo desde el dashboard. |
| activateOnceError    | 3005 | No es posible llamar al método `.activate` más de una vez.                                                                                                                                                                                                                                                                                                                                                                      |
| profileWasChanged    | 3006 | El perfil de usuario cambió durante la operación. <br/> Esto ocurre cuando se llama a un método mientras `adapty.identify` sigue en curso: la llamada en vuelo llega a un perfil que está a punto de ser reemplazado y el SDK la rechaza. Usa siempre `await` con `identify` antes de cualquier llamada de acción del usuario. Consulta [Orden de llamadas en el SDK de React Native](react-native-sdk-call-order).                                                                                                                                                                                          |
| unsupportedData      | 3007 | Este error indica que el formato de datos no es compatible con el SDK.                                                                                                                                                                                                                                                                                                                                                             |
| persistingDataError  | 3100 | Se produjo un error al guardar los datos.                                                                                                                                                                                                                                                                                                                                                                                                 |
| fetchTimeoutError    | 3101 | Este error indica que la operación de obtención de datos superó el tiempo de espera.                                                                                                                                                                                                                                                                                                                                           |
## Otros problemas \{#other-issues\}

Si todavía no has encontrado una solución, los siguientes pasos pueden ser:
- **Actualiza el SDK a la última versión**: Siempre recomendamos actualizar a las últimas versiones del SDK, ya que son más estables e incluyen correcciones de errores conocidos.
- **Contacta con el equipo de soporte u obtén ayuda de otros desarrolladores** en el [foro de soporte](https://adapty.featurebase.app/).
- **Contacta con el equipo de soporte a través de [support@adapty.io](mailto:support@adapty.io) o por el chat**: Si no estás listo para actualizar el SDK o no ha resuelto el problema, contacta con nuestro equipo de soporte. Ten en cuenta que tu problema se resolverá más rápido si [activas el registro detallado](sdk-installation-reactnative) y compartes los logs con el equipo. También puedes adjuntar fragmentos de código relevantes.