Saltar al contenido principal

Guía de Cotizaciones

Esta guía te muestra cómo crear y consultar cotizaciones usando el SDK de Retorna.

Crear una Cotización

Crea una nueva cotización para conocer el tipo de cambio y los montos:

import com.retorna.sdk.quotation.CreateQuoteInput;
import com.retorna.sdk.quotation.QuoteResponse;
import com.retorna.sdk.quotation.AmountType;

CreateQuoteInput quoteInput = new CreateQuoteInput(
"USD", // sourceCurrency: Moneda origen
"CO", // targetCountry: País destino
"COP", // targetCurrency: Moneda destino
100.0, // amount: Monto
"BANK_TRANSFER", // payoutType: Tipo de pago
AmountType.SOURCE // amountType: Tipo de monto (SOURCE o TARGET)
);

QuoteResponse quote = client.quotation.createQuote(quoteInput);

System.out.println("Cotización ID: " + quote.getId());
System.out.println("Monto origen: " + quote.getSourceAmount());
System.out.println("Monto destino: " + quote.getTargetAmount());
System.out.println("Tasa de cambio: " + quote.getExchangeRate());

Parámetros de Cotización

CreateQuoteInput

ParámetroTipoDescripciónRequerido
sourceCurrencyStringCódigo de moneda origen (ej: "USD")
targetCountryStringCódigo de país destino (ej: "CO")
targetCurrencyStringCódigo de moneda destino (ej: "COP")
amountDoubleMonto a cotizar
payoutTypeStringTipo de plataforma de pago
amountTypeAmountTypeSOURCE o TARGET

AmountType

  • SOURCE: El monto especificado es en la moneda origen
  • TARGET: El monto especificado es en la moneda destino

Ejemplo con TARGET:

CreateQuoteInput quoteInput = new CreateQuoteInput(
"USD", // sourceCurrency
"CO", // targetCountry
"COP", // targetCurrency
500000.0, // amount en COP (moneda destino)
"BANK_TRANSFER", // payoutType
AmountType.TARGET // amountType: el monto es en destino
);

QuoteResponse quote = client.quotation.createQuote(quoteInput);
// quote.getSourceAmount() mostrará el equivalente en USD
// quote.getTargetAmount() será 500000.0 COP

Consultar una Cotización

Obtén los detalles de una cotización existente por su ID:

String quoteId = "12345";
QuoteResponse quote = client.quotation.getQuoteById(quoteId);

System.out.println("ID: " + quote.getId());
System.out.println("Estado: " + quote.getStatus());
System.out.println("Monto origen: " + quote.getSourceAmount() + " " + quote.getSourceCurrency());
System.out.println("Monto destino: " + quote.getTargetAmount() + " " + quote.getTargetCurrency());
System.out.println("Tasa: " + quote.getExchangeRate());
System.out.println("Válida hasta: " + quote.getExpiresAt());

Con Parámetros Opcionales

import java.util.HashMap;
import java.util.Map;

Map<String, Object> params = new HashMap<>();
params.put("includeDetails", true);

QuoteResponse quote = client.quotation.getQuoteById(quoteId, params);

Plataformas de Pago Disponibles

Diferentes países soportan diferentes plataformas:

PaísPlataformas Disponibles
ArgentinaBANK_TRANSFER_AR
ColombiaCASH_PICKUP_CO, INTERBANK_TRANSFER_CO
España/EUBANK_TRANSFER_EU
PerúBANK_TRANSFER_USD_PE, BANK_TRANSFER_PEN_PE, CASH_PICKUP_PEN_PE, WALLET_PEN_PE
USABANK_TRANSFER_USD
VenezuelaBANK_TRANSFER, P2P_PHONE_TRANSFER, CASH_PICKUP_USD_VE

Ejemplo Completo

import com.retorna.sdk.config.Environment;
import com.retorna.sdk.config.LoggingLevel;
import com.retorna.sdk.core.RetornaClient;
import com.retorna.sdk.core.RetornaClientOptions;
import com.retorna.sdk.quotation.CreateQuoteInput;
import com.retorna.sdk.quotation.QuoteResponse;
import com.retorna.sdk.quotation.AmountType;

public class QuotationExample {
public static void main(String[] args) {
RetornaClient client = RetornaClient.create(
RetornaClientOptions.builder()
.environment(Environment.DEVELOP)
.loggingLevel(LoggingLevel.INFO)
.clientId(System.getenv("RETORNA_CLIENT_ID"))
.clientSecret(System.getenv("RETORNA_CLIENT_SECRET"))
.privateKey(System.getenv("RETORNA_PRIVATE_KEY"))
.build()
);

try {
// Crear cotización: 100 USD a COP
CreateQuoteInput quoteInput = new CreateQuoteInput(
"USD",
"CO",
"COP",
100.0,
"BANK_TRANSFER",
AmountType.SOURCE
);

QuoteResponse quote = client.quotation.createQuote(quoteInput);

System.out.println("=== Cotización Creada ===");
System.out.println("ID: " + quote.getId());
System.out.println("Origen: " + quote.getSourceAmount() + " " + quote.getSourceCurrency());
System.out.println("Destino: " + quote.getTargetAmount() + " " + quote.getTargetCurrency());
System.out.println("Tasa: " + quote.getExchangeRate());
System.out.println("Válida hasta: " + quote.getExpiresAt());

// Consultar cotización
QuoteResponse retrievedQuote = client.quotation.getQuoteById(quote.getId().toString());
System.out.println("\n=== Cotización Consultada ===");
System.out.println("Estado: " + retrievedQuote.getStatus());

} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}
}
}

Validación de Cotizaciones

Las cotizaciones tienen un tiempo de validez. Verifica siempre:

QuoteResponse quote = client.quotation.getQuoteById(quoteId);

if (quote.getExpiresAt() != null) {
LocalDateTime expiresAt = LocalDateTime.parse(quote.getExpiresAt());
if (LocalDateTime.now().isAfter(expiresAt)) {
System.out.println("⚠️ La cotización ha expirado. Crea una nueva.");
}
}

Manejo de Errores

try {
QuoteResponse quote = client.quotation.createQuote(quoteInput);
} catch (IllegalArgumentException e) {
// Parámetros inválidos
System.err.println("Error de validación: " + e.getMessage());
} catch (RuntimeException e) {
// Error de API
System.err.println("Error de API: " + e.getMessage());
} catch (Exception e) {
// Error general
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}

Flujo Recomendado

  1. Crear cotización antes de crear una orden
  2. Verificar validez de la cotización
  3. Usar el ID de cotización al crear la orden
  4. Consultar cotización si necesitas verificar detalles

Siguiente Paso

Envía dinero
Desde Latinoamérica
ChileColombiaPerú
Desde Europa
EspañaItaliaFranciaAlemaniaPortugalPaíses Bajos
Recursos
Blog
Encuéntranos en redes
Para denuncias, por favor contactar al correo electrónico denuncias@retorna.app
Pertenecemos a la Unidad de Análisis Financiero (UAF).
Supervisados por
Registration number is C100000211.
Miembros de
Con el apoyo deCon el apoyo de
Copyright © Retorna Holding Spa 2024