Saltar al contenido principal
Traducción Automática

Esta página utiliza traducción automática. Para cualquier inconsistencia, consulte la documentación en inglés.

Verificación de dirección

Crypto2B permite que el sistema cliente compruebe el nivel de riesgo (AML) de cualquier dirección cripto antes de realizar una operación con ella. Un escenario típico es verificar una dirección que el usuario ingresó en un formulario de retiro, antes de que se cree la solicitud de retiro.

La verificación se realiza de forma asíncrona. El sistema cliente registra una verificación llamando a la API /addressChecks/create, y obtiene el resultado de una de dos maneras:

  1. Procesar el callback de Crypto2B con el resultado de la verificación (ver Callbacks).
  2. Volver a llamar a la API /addressChecks/create con los mismos parámetros hasta recibir el resultado.

Proceso de verificación de dirección

Secuencia de acciones

  1. El usuario ingresa una dirección en el sistema cliente, por ejemplo, para un retiro.
  2. El sistema cliente envía a Crypto2B una solicitud para verificar la dirección, especificando la moneda, el protocolo de transporte y la dirección.
  3. Crypto2B valida los parámetros de la solicitud, las restricciones del cliente y la disponibilidad de fondos para pagar la verificación, registra la verificación y devuelve su identificador checkId con estado Pending.
  4. Crypto2B realiza la verificación de la dirección y determina su nivel de riesgo.
  5. Cuando la verificación se completa, Crypto2B descuenta la tarifa de verificación del saldo del cliente y pasa la verificación al estado Completed.
  6. Si el sistema cliente utiliza el mecanismo de callback, Crypto2B envía un callback con el resultado de la verificación.
  7. De lo contrario, el sistema cliente repite la solicitud con los mismos parámetros y recibe el resultado con estado Completed.
  8. El sistema cliente decide si acepta la dirección según el nivel de riesgo amlRiskGrade.

Solicitud

POST /api/v1/addressChecks/create

ParámetroTipoObligatorioDescripción
currencyShortNamestringNombre corto de la moneda, por ejemplo USDT
transportProtocolstringProtocolo de transporte, por ejemplo Tron
addressstringDirección a verificar, no más de 200 caracteres
{
"currencyShortName": "USDT",
"transportProtocol": "Tron",
"address": "TJYeasypBnB2x5hLTpYPQZ6YR9ZL3hLj6b"
}

Respuesta

Verificación registrada o en curso — 202 Accepted

{
"data": {
"checkId": "550e8400-e29b-41d4-a716-446655440000",
"status": "Pending",
"amlRiskGrade": null,
"description": null,
"fromCache": null
}
}

Verificación completada — 200 OK

{
"data": {
"checkId": "550e8400-e29b-41d4-a716-446655440000",
"status": "Completed",
"amlRiskGrade": "Low",
"description": "Exchange wallet",
"fromCache": true
}
}
CampoDescripción
checkIdIdentificador único de la verificación
statusEstado de la verificación: Pending, Completed
amlRiskGradeNivel de riesgo de la dirección (ver Diccionarios). Se completa solo cuando el estado es Completed
descriptionDescripción de la dirección basada en el resultado de la verificación, si está disponible
fromCachetrue si se devuelve un resultado obtenido previamente (ver Verificaciones repetidas)

Errores

Código HTTPCódigo de errorDescripción
400Error de validación de parámetros de la solicitud, incluido un formato de dirección inválido para la moneda y el protocolo especificados
400INVALID_CURRENCYMoneda no encontrada o no compatible con el protocolo especificado
400INVALID_TRANSPORT_PROTOCOLProtocolo de transporte no encontrado
402INSUFFICIENT_BALANCEEl saldo del cliente no tiene fondos suficientes para pagar la verificación
422OPERATION_RESTRICTEDLa verificación de dirección no está disponible para este cliente
422TARIFF_NOT_FOUNDNo hay una tarifa configurada para el cliente

Estados de verificación

EstadoDescripción
PendingLa verificación está registrada y en curso
CompletedLa verificación se completó correctamente, se obtuvo el nivel de riesgo y se cobró la tarifa
ErrorLa verificación falló debido a un error. No se cobra la tarifa
UnknownNo se pudo determinar el resultado de la verificación, por ejemplo, la verificación no es compatible con la moneda especificada. No se cobra la tarifa
info

Los estados Error y Unknown solo se entregan en el callback. Si la solicitud se repite después de una verificación de este tipo, Crypto2B registra una nueva verificación y devuelve 202 Accepted con un nuevo checkId.

Verificaciones repetidas

El resultado de una verificación exitosa se almacena durante 10 minutos. Una solicitud repetida con la misma moneda, protocolo y dirección dentro de este tiempo:

  • mientras la verificación está en curso — devuelve 202 Accepted con el mismo checkId; no se crea una nueva verificación;
  • después de completarse — devuelve 200 OK con el resultado almacenado y fromCache: true; la tarifa no se cobra nuevamente.

Después de 10 minutos, la solicitud registra una nueva verificación, por la cual se cobra la tarifa.

tip

Si el sistema cliente no utiliza callbacks, se recomienda repetir la solicitud cada pocos segundos hasta recibir 200 OK. Un cambio en el checkId de la respuesta significa que la verificación anterior terminó en error y se registró una nueva.

Tarifa de verificación

Por cada verificación completada con éxito, se descuenta del saldo del cliente una tarifa fija en USD; su monto lo determina la tarifa contratada por el cliente (ver Facturación).

  • La tarifa se cobra cuando la verificación se completa con estado Completed.
  • La tarifa se descuenta del saldo en stablecoins del cliente (USDT o USDC) al tipo de cambio vigente en el momento del cobro. El monto y la moneda del cobro se envían en el callback.
  • Si ninguno de los saldos en stablecoins tiene fondos suficientes, la solicitud se rechaza con el código 402.
  • No se cobra tarifa por verificaciones con estado Error o Unknown.
  • Los cargos por verificación de dirección se muestran en la lista de operaciones de la cuenta personal.

Callback

Si hay una URL de callback configurada para el cliente, Crypto2B envía un callback cuando la verificación se completa en cualquier estado final: Completed, Error, Unknown.

{
"data": {
"type": "AddressCheck",
"checkId": "550e8400-e29b-41d4-a716-446655440000",
"address": "TJYeasypBnB2x5hLTpYPQZ6YR9ZL3hLj6b",
"status": "Completed",
"amlRiskGrade": "Low",
"description": "Exchange wallet",
"currency": "USDT",
"protocol": "Tron",
"feeAmount": 0.5,
"feeCurrencyShortName": "USDT",
"timestamp": "2024-01-15T10:30:00Z",
"errorCode": null,
"errorMessage": null
}
}
CampoDescripción
typeTipo de operación: AddressCheck
checkIdIdentificador de la verificación
addressDirección verificada
statusEstado de la verificación: Completed, Error, Unknown
amlRiskGradeNivel de riesgo de la dirección. Se completa solo cuando el estado es Completed
descriptionDescripción de la dirección basada en el resultado de la verificación, si está disponible
currencyNombre corto de la moneda
protocolProtocolo de transporte
feeAmountMonto de la tarifa cobrada, en la moneda feeCurrencyShortName. null si no se cobró ninguna tarifa
feeCurrencyShortNameMoneda en la que se cobró la tarifa
timestampFecha y hora en que se generó el callback (ISO 8601)
errorCodeCódigo de error para los estados Error y Unknown
errorMessageDescripción del error para los estados Error y Unknown

Códigos de error del callback

CódigoEstadoDescripción
INSUFFICIENT_BALANCEErrorEn el momento del cobro, el saldo del cliente no tenía fondos suficientes para pagar la verificación
ANTIFRAUD_ERRORErrorError al realizar la verificación
ANTIFRAUD_INVALID_RESULTUnknownLa verificación se completó sin determinar un nivel de riesgo
CURRENCY_NOT_SUPPORTEDUnknownLa verificación de dirección no es compatible con la moneda o el protocolo especificados
INTERNAL_ERRORErrorError interno de procesamiento
nota

Para los callbacks de verificación de dirección, la unicidad se determina por la combinación de type y checkId, no de type e id como en otras operaciones.