Skip to Content
Conceptos ClaveÓrdenes y Tipos de Orden

Órdenes y Tipos de Orden

Referencia rápida de orders create

Esquema autoritativo: npx @koyweforest/cli orders create --schema imprime el esquema JSON completo y actualizado para la solicitud de creación. Si el resumen de abajo alguna vez difiere de esa salida, el esquema del CLI es la fuente de verdad.

Endpoint (PAYIN / PAYOUT / BALANCE_TRANSFER / PAYMENT_LINK / INTER_MERCHANT_TRANSFER): POST /organizations/{orgId}/merchants/{merchantId}/orders

ONRAMP y OFFRAMP no se crean en este endpoint. Las operaciones cripto pasan por el endpoint deals (POST /organizations/{orgId}/merchants/{merchantId}/deals) porque un deal se puede pagar en una sola cuota o en varias parciales, y cada pago crea su propia orden. Ver las secciones ONRAMP y OFFRAMP más abajo, o usa npx @koyweforest/cli flow deal.

Campos requeridos:

  • type — siempre requerido.
  • originCurrencySymbol, destinationCurrencySymbol — requeridos salvo que pases quoteId (en cuyo caso omítelos junto con amountIn/amountOut; la cotización los aporta).

Enum de type (7 valores — ONRAMP y OFFRAMP se enrutan por /deals, el resto por /orders):

PAYIN · PAYOUT · BALANCE_TRANSFER · PAYMENT_LINK · INTER_MERCHANT_TRANSFER — vía /orders

ONRAMP · OFFRAMP — vía /deals (ver abajo)

Especificación de monto (mutuamente excluyentes — elige exactamente uno):

  • amountIn — monto en la moneda de origen.
  • amountOut — monto en la moneda de destino.
  • quoteId — ID de una cotización previa que fija el tipo de cambio. Cuando pasas quoteId, omite originCurrencySymbol, destinationCurrencySymbol, amountIn y amountOut — la cotización los provee.

Requisitos condicionales (para los tipos enrutados por /orders):

Tipo de ordenTambién requerido
PAYINpaymentMethods (exactamente un elemento)
PAYOUTdestinationAccountId
BALANCE_TRANSFERPolicy activa con regla coincidente (ver Passkeys y Aprobaciones). Auto-asigna isMerchantSelfOrder=true si no se provee.
PAYMENT_LINKpaymentMethods puede ser []
INTER_MERCHANT_TRANSFERdestinationMerchantId

Para ONRAMP / OFFRAMP, ver las secciones de Deals — esos tipos requieren destinationAccountId y un network del enum de abajo.

Enum de network (ONRAMP/OFFRAMP, pasado en el deal):

ETHEREUM · POLYGON · SOLANA · TRON · BSC · BITCOIN · BASE · ALGORAND

Forma de paymentMethods:

[ { "method": "KHIPU" } ]
[ { "method": "PSE", "extra": { "bankAccount": { "name": "BANCOLOMBIA" } } } ]

Policy y MFA: Las operaciones bloqueadas por policy devuelven POL00007 (428 Precondition Required) y la orden queda en ON_HOLD hasta aprobarse. Pasa --mfa-token <token> para confirmar en línea, o usa npx @koyweforest/cli flow order --wait para bloquear en polling.

Ver la referencia CLI para orders create, el Catálogo de Códigos de Error para todos los códigos OR* / BAA* / POL*, y la especificación completa de la API.


Las órdenes son las entidades de transacción centrales en Koywe Pagos. Cada tipo de orden sirve un propósito específico en tus operaciones de pago.

Resumen de Tipos de Orden

Koywe Pagos soporta siete tipos distintos de orden:

TipoPropósitoOrigenDestinoCaso de Uso
PAYINAceptar pagos de clientesExterna (cliente)Saldo virtualCheckout e-commerce
PAYOUTPagar proveedoresSaldo virtualExterna (banco proveedor)Pagos a vendedores
BALANCE_TRANSFERCambio de divisaSaldo virtual (moneda A)Saldo virtual (moneda B)Convertir COP a USD
ONRAMPComprar criptoSaldo virtual (fiat)Billetera criptoComprar USDC con COP
OFFRAMPVender criptoBilletera criptoSaldo virtual (fiat)Vender BTC por COP
PAYMENT_LINKEnlace de pagoExterna (cliente)Saldo virtualPago de factura
INTER_MERCHANT_TRANSFERMover fondos entre comercios de la misma organizaciónSaldo virtual (comercio A)Saldo virtual (comercio B)Operaciones de tesorería dentro de una organización

Ciclo de Vida del Estado de Orden

Todas las órdenes siguen una progresión de estado similar:

Descripciones de Estados:

EstadoDescripciónAcciones Disponibles
PENDINGOrden creada, esperando pagoCancelar, Verificar estado
ON_HOLDEn espera por verificación MFA o aprobación humana bajo una policy activa (POL00007 al crear). Ver Policy y MFA y Passkeys y Aprobaciones.Aprobar / rechazar desde el dashboard, pasar --mfa-token, o hacer polling con npx @koyweforest/cli flow order --wait
PROCESSINGPago siendo procesadoVerificar estado
PAIDPago confirmado, liquidación en progresoVerificar estado
COMPLETEDFondos entregados, orden completaVer detalles
FAILEDPago o liquidación fallóReintentar, Contactar soporte
CANCELLEDOrden cancelada (o aprobación rechazada)Ver detalles
EXPIREDVentana de pago expiróCrear nueva orden

PAYIN - Aceptar Pagos de Clientes

Acepta pagos de clientes en tu saldo virtual.

Cuándo Usar

  • Checkout e-commerce
  • Pagos de servicios
  • Facturación de suscripciones
  • Pagos de facturas
  • Recolección de donaciones

Diagrama de Flujo

Campos Requeridos

{ "type": "PAYIN", // Tipo de orden "originCurrencySymbol": "COP", // Moneda fiat "destinationCurrencySymbol": "COP", // Misma que origen "amountIn": 50000, // Monto a cobrar "description": "Pago por Orden #12345", // Descripción visible para cliente "paymentMethods": [ // Al menos un método de pago { "method": "PSE", // Código de método de pago "extra": { "bankAccount": { "name": "BANCOLOMBIA" } } // Datos adicionales por método } ], "successUrl": "https://tusitio.com/exitoso", // Redirección después de éxito "failedUrl": "https://tusitio.com/fallido" // Redirección después de fallo }

Campos Opcionales

{ "contactId": "cnt_abc123", // Vincular a contacto cliente "externalId": "order-12345", // Tu referencia interna "metadata": { "orderId": "12345" }, // Datos personalizados "dueDate": "2025-11-14T23:59:59Z" // Fecha límite de pago }

Ejemplo

async function createPayinOrder(token, orgId, merchantId) { const response = await axios.post( `https://api-sandbox.koywe.com/api/v1/organizations/${orgId}/merchants/${merchantId}/orders`, { type: 'PAYIN', originCurrencySymbol: 'COP', destinationCurrencySymbol: 'COP', amountIn: 50000, description: 'Pago por Orden #12345', externalId: `order-${Date.now()}`, paymentMethods: [ { method: 'PSE', extra: { bankAccount: { name: 'BANCOLOMBIA' } } } ], successUrl: 'https://tusitio.com/exitoso', failedUrl: 'https://tusitio.com/fallido' }, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } } ); return response.data; } const order = await createPayinOrder(token, orgId, merchantId); console.log('URL de Pago:', order.paymentUrl); // Redirige al cliente a order.paymentUrl

Guía Completa de Integración PAYIN →


PAYOUT - Pagar Proveedores

Envía pagos desde tu saldo virtual a cuentas bancarias externas.

Cuándo Usar

  • Pagos a vendedores
  • Pagos a contratistas
  • Reembolsos a clientes
  • Comisiones de afiliados
  • Liquidaciones con socios

Diagrama de Flujo

Campos Requeridos

{ "type": "PAYOUT", // Tipo de orden "originCurrencySymbol": "COP", // Moneda fiat "destinationCurrencySymbol": "COP", // Misma que origen "amountIn": 100000, // Monto a enviar "destinationAccountId": "ba_xyz789", // ID cuenta bancaria proveedor "description": "Pago por Factura #456" // Descripción interna }

Campos Opcionales

{ "contactId": "cnt_provider123", // Vincular a contacto proveedor "externalId": "invoice-456", // Tu referencia interna "metadata": { "invoiceId": "456" } // Datos personalizados }

Ejemplo

async function createPayoutOrder(token, orgId, merchantId, contactId, bankAccountId) { // 1. Verificar saldo primero const balances = await getMerchantBalances(token, orgId, merchantId); const copBalance = balances.find(b => b.currencySymbol === 'COP'); if (copBalance.availableBalance < 100000) { throw new Error('Saldo insuficiente'); } // 2. Crear orden de payout const response = await axios.post( `https://api-sandbox.koywe.com/api/v1/organizations/${orgId}/merchants/${merchantId}/orders`, { type: 'PAYOUT', originCurrencySymbol: 'COP', destinationCurrencySymbol: 'COP', amountIn: 100000, contactId: contactId, destinationAccountId: bankAccountId, description: 'Pago por Factura #456', externalId: `invoice-456-${Date.now()}` }, { headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } } ); return response.data; } const payout = await createPayoutOrder(token, orgId, merchantId, 'cnt_provider', 'ba_xyz789'); console.log('Payout creado:', payout.id);

Importante: Siempre verifica el saldo de tu cuenta virtual antes de crear órdenes PAYOUT. La orden fallará si tienes fondos insuficientes.

Guía Completa de Integración PAYOUT →


BALANCE_TRANSFER - Cambio de Divisa

Transfiere fondos entre diferentes cuentas virtuales de moneda (cambio de divisa instantáneo).

Cuándo Usar

  • Convertir COP a USD para pagos internacionales
  • Rebalancear tenencias de moneda
  • Bloquear tasas de cambio
  • Preparar fondos para pagos en moneda específica

Diagrama de Flujo

Campos Requeridos

{ "type": "BALANCE_TRANSFER", // Tipo de orden "originCurrencySymbol": "COP", // Moneda origen "destinationCurrencySymbol": "USD", // Moneda destino "amountIn": 1000000 // Monto a convertir (1M COP) }

Ejemplo

async function transferCurrency(token, orgId, merchantId) { // 1. Obtener cotización para tasa de cambio const quote = await axios.post( `https://api-sandbox.koywe.com/api/v1/organizations/${orgId}/merchants/${merchantId}/quotes`, { type: 'BALANCE_TRANSFER', originCurrencySymbol: 'COP', destinationCurrencySymbol: 'USD', amountIn: 1000000 }, { headers: { 'Authorization': `Bearer ${token}` } } ); console.log('Tasa de cambio:', quote.data.exchangeRate); console.log('Recibirás:', quote.data.amountOut, 'USD'); // 2. Crear orden de transferencia — pasar quoteId fija tasa y montos, // así que omite originCurrencySymbol / destinationCurrencySymbol / amountIn / amountOut const response = await axios.post( `https://api-sandbox.koywe.com/api/v1/organizations/${orgId}/merchants/${merchantId}/orders`, { type: 'BALANCE_TRANSFER', quoteId: quote.data.id }, { headers: { 'Authorization': `Bearer ${token}` } } ); return response.data; } const transfer = await transferCurrency(token, orgId, merchantId); console.log('Transferencia completada instantáneamente:', transfer.status); // "COMPLETED"

Liquidación Instantánea: Las órdenes BALANCE_TRANSFER se completan instantáneamente. Sin esperar confirmaciones externas.

Guía Completa de Transferencias de Saldo →


ONRAMP - Comprar Criptomoneda

Convierte moneda fiat a criptomoneda.

Usa Endpoint de Deals: Las operaciones ONRAMP usan el endpoint /deals. Los deals pueden pagarse completa o parcialmente, y cada pago crea órdenes que ejecutan la compra de cripto.

Cuándo Usar

  • Comprar cripto para tesorería
  • Ofrecer compras de cripto a usuarios
  • Cobertura con stablecoins
  • Pagar proveedores nativos en cripto

Criptomonedas Soportadas

SímboloNombreRedes
USDCUSD CoinEthereum, Polygon, BSC
USDTTetherEthereum, Polygon, BSC
ETHEthereumEthereum
BTCBitcoinBitcoin
MATICPolygonPolygon
BNBBNBBSC

Campos Requeridos para Cotización

{ "type": "ONRAMP", "originCurrencySymbol": "COP", // Moneda fiat "destinationCurrencySymbol": "USDC", // Moneda cripto "amountIn": 50000 // Monto fiat }

Campos Requeridos para Deal

{ "type": "ONRAMP", "destinationAccountId": "wallet_abc123", // ID billetera cripto "quoteId": "quote_xyz789" // ID cotización }

Simplificado: Los deals solo necesitan la cuenta de destino y el ID de cotización. Los montos y monedas vienen de la cotización.

Ejemplo

async function buyUSDC(token, orgId, merchantId, walletId) { // 1. Obtener cotización const quote = await axios.post( `https://api-sandbox.koywe.com/api/v1/organizations/${orgId}/merchants/${merchantId}/quotes`, { type: 'ONRAMP', originCurrencySymbol: 'COP', destinationCurrencySymbol: 'USDC', amountIn: 50000 }, { headers: { 'Authorization': `Bearer ${token}` } } ); console.log('Recibirás:', quote.data.amountOut, 'USDC'); console.log('Tasa de cambio:', quote.data.exchangeRate); console.log('Comisión de red:', quote.data.networkFee); // 2. Crear deal (¡no orden!) const response = await axios.post( `https://api-sandbox.koywe.com/api/v1/organizations/${orgId}/merchants/${merchantId}/deals`, { type: 'ONRAMP', destinationAccountId: walletId, quoteId: quote.data.id }, { headers: { 'Authorization': `Bearer ${token}` } } ); return response.data; } const deal = await buyUSDC(token, orgId, merchantId, 'wallet_abc123'); console.log('Deal ONRAMP creado:', deal.id); console.log('El deal puede pagarse completa o parcialmente');

Pagos Parciales: Los deals ONRAMP pueden pagarse en múltiples cuotas. Cada pago crea una orden que compra la cantidad proporcional de cripto. ¡Ideal para promedio de costo en dólares!

Saldo Requerido: Por defecto, se requiere saldo suficiente en tu cuenta virtual para cerrar un deal ONRAMP. Los deals se ejecutan automáticamente cuando se acreditan fondos a tu cuenta. Los comercios pre-aprobados pueden operar sin saldo inicial.

Guía Completa ONRAMP →


OFFRAMP - Vender Criptomoneda

Convierte criptomoneda a moneda fiat.

Usa Endpoint de Deals: Las operaciones OFFRAMP usan el endpoint /deals. A diferencia de ONRAMP, los deals OFFRAMP deben pagarse completamente (sin pagos parciales). El deal crea órdenes cuando está completamente financiado.

Cuándo Usar

  • Vender tenencias de cripto
  • Convertir pagos cripto a fiat
  • Realizar ganancias cripto
  • Preparar fiat para operaciones

Campos Requeridos para Cotización

{ "type": "OFFRAMP", "originCurrencySymbol": "USDC", // Moneda cripto "destinationCurrencySymbol": "COP", // Moneda fiat "amountIn": 10 // Monto cripto (10 USDC) }

Campos Requeridos para Deal

{ "type": "OFFRAMP", "destinationAccountId": "va_cop_12345", // ID cuenta virtual "quoteId": "quote_xyz789" // ID cotización }

Solo Pago Completo: Los deals OFFRAMP deben financiarse completamente. No se soportan pagos parciales.

Ejemplo

async function sellUSDC(token, orgId, merchantId) { // 1. Obtener cotización const quote = await axios.post( `https://api-sandbox.koywe.com/api/v1/organizations/${orgId}/merchants/${merchantId}/quotes`, { type: 'OFFRAMP', originCurrencySymbol: 'USDC', destinationCurrencySymbol: 'COP', amountIn: 10 // 10 USDC }, { headers: { 'Authorization': `Bearer ${token}` } } ); console.log('Recibirás:', quote.data.amountOut, 'COP'); // 2. Crear deal (¡no orden!) const response = await axios.post( `https://api-sandbox.koywe.com/api/v1/organizations/${orgId}/merchants/${merchantId}/deals`, { type: 'OFFRAMP', destinationAccountId: 'va_cop_12345', // Cuenta virtual para COP quoteId: quote.data.id }, { headers: { 'Authorization': `Bearer ${token}` } } ); return response.data; } const deal = await sellUSDC(token, orgId, merchantId); console.log('Deal OFFRAMP creado:', deal.id); console.log('Dirección de depósito:', deal.cryptoDestinationWallet); console.log('Envía el monto completo de cripto para completar'); // Los fondos se acreditarán a la cuenta virtual COP después de recibir el cripto.

Financiamiento Completo: Después de crear el deal, debes enviar el monto completo de cripto a la dirección de depósito proporcionada. Una vez recibido, el deal crea órdenes y acredita tu cuenta virtual con fiat.

Guía Completa OFFRAMP →


Genera enlaces de pago compartibles con un flujo de checkout completo de marca Koywe - ¡sin necesidad de contacto o método de pago por adelantado!

user-slashSin Contacto Requerido

El cliente ingresa su propia información en el checkout

💳Sin Método de Pago

El cliente selecciona su método de pago preferido

window-maximizeUI de Marca Koywe

Hermoso checkout seguro alojado por Koywe

share-nodesCompartir en Cualquier Lugar

Envía vía email, WhatsApp, SMS o código QR

Cuándo Usar

  • Checkout e-commerce: Colección de pagos simple sin integración compleja
  • Pagos de facturas: Envía enlace de pago para facturas emitidas
  • Email/WhatsApp: Comparte solicitudes de pago directamente
  • Pagos con QR: Genera QR para pagos en persona
  • Colecciones únicas: Solicitudes de pago rápidas sin almacenar datos del cliente

Cómo Funciona

Diferencias con PAYIN

CaracterísticaPAYINPAYMENT_LINK
ContactoOpcional pero recomendadoNo necesario - cliente ingresa datos
Método de PagoDebe especificarseCliente selecciona de todos disponibles
UI de CheckoutRedirige a proveedor de pagoFlujo de checkout de marca Koywe
Recolección de DatosTú recolectas datos del clienteKoywe recolecta datos del cliente
Mejor ParaExperiencia de checkout integradaSolicitudes de pago independientes

Campos Mínimos Requeridos

¡Eso es todo! Sin contacto, sin método de pago, sin detalles del cliente necesarios. Solo monto y descripción.

{ "type": "PAYMENT_LINK", // Tipo de orden "originCurrencySymbol": "COP", // Moneda "destinationCurrencySymbol": "COP", // Igual que origen "amountIn": 75000, // Monto a cobrar "description": "Factura #789" // Muestra al cliente }

Campos Opcionales

{ "dueDate": "2025-11-14T23:59:59Z", // Expiración del enlace "externalId": "invoice-789", // Tu referencia "successUrl": "https://tusite.com/exitoso", // Redireccionar después de pago "failedUrl": "https://tusite.com/fallido" // Redireccionar en fallo }

Ejemplo Completo

// Ejemplo mínimo - ¡solo crear y compartir! async function createPaymentLink(amount, description) { const response = await axios.post( `https://api-sandbox.koywe.com/api/v1/organizations/${orgId}/merchants/${merchantId}/orders`, { type: 'PAYMENT_LINK', originCurrencySymbol: 'COP', destinationCurrencySymbol: 'COP', amountIn: amount, description: description }, { headers: { 'Authorization': `Bearer ${token}` } } ); return response.data; } // Uso const link = await createPaymentLink(75000, 'Factura #789 - Diseño Web'); console.log('Comparte este enlace:', link.paymentUrl); // Enviar vía email, WhatsApp, SMS o generar código QR await sendEmail(customerEmail, { subject: 'Solicitud de Pago - Factura #789', body: `Por favor paga aquí: ${link.paymentUrl}` });
// Ejemplo completo con todas las opciones async function createPaymentLinkWithOptions(invoiceData) { const dueDate = new Date(); dueDate.setHours(dueDate.getHours() + 24); // Expira en 24h const response = await axios.post( `https://api-sandbox.koywe.com/api/v1/organizations/${orgId}/merchants/${merchantId}/orders`, { type: 'PAYMENT_LINK', originCurrencySymbol: 'COP', destinationCurrencySymbol: 'COP', amountIn: invoiceData.amount, description: invoiceData.description, externalId: invoiceData.invoiceNumber, dueDate: dueDate.toISOString(), successUrl: 'https://tusitio.com/pago/exitoso', failedUrl: 'https://tusitio.com/pago/fallido' }, { headers: { 'Authorization': `Bearer ${token}` } } ); return response.data; } // Uso const link = await createPaymentLinkWithOptions({ amount: 150000, description: 'Suscripción Mensual - Noviembre 2025', invoiceNumber: 'INV-2025-11-789' }); console.log('Enlace de pago:', link.paymentUrl);
def create_payment_link(amount, description): response = requests.post( f'https://api-sandbox.koywe.com/api/v1/organizations/{org_id}/merchants/{merchant_id}/orders', json={ 'type': 'PAYMENT_LINK', 'originCurrencySymbol': 'COP', 'destinationCurrencySymbol': 'COP', 'amountIn': amount, 'description': description }, headers={'Authorization': f'Bearer {token}'} ) return response.json() # Uso link = create_payment_link(75000, 'Factura #789 - Diseño Web') print(f"Comparte este enlace: {link['paymentUrl']}")

Respuesta:

{ "id": "ord_abc123", "type": "PAYMENT_LINK", "status": "PENDING", "paymentUrl": "https://checkout.koywe.com/pay/ord_abc123", "amountIn": 75000, "originCurrencySymbol": "COP", "description": "Factura #789 - Diseño Web", "createdAt": "2025-11-13T15:00:00Z" }

Experiencia del Cliente: Cuando los clientes abren el enlace de pago, verán un checkout de marca Koywe donde pueden:

  1. Revisar detalles del pago
  2. Ingresar su información personal
  3. Seleccionar su método de pago preferido (PSE, PIX, Nequi, etc.)
  4. Completar el pago

Metadata de Orden e IDs Externos

ID Externo (Idempotencia)

Usa externalId para asegurar creación de orden idempotente:

{ "externalId": "order-12345-20251113" // Tu identificador único }

Beneficios:

  • Seguro reintentar solicitudes fallidas
  • Previene órdenes duplicadas
  • Vincula a tus sistemas internos

Metadata

Almacena datos personalizados con órdenes:

{ "metadata": { "orderId": "12345", "customerId": "cust_67890", "source": "mobile_app", "campaign": "summer_sale" } }

Casos de uso:

  • Rastrear origen de orden
  • Almacenar información de campaña
  • Vincular a sistemas internos
  • Campos de reportes personalizados

INTER_MERCHANT_TRANSFER - Mover Fondos Entre Comercios

Mueve fondos de saldo virtual de un comercio a otro dentro de la misma organización, en la misma moneda y sin tocar un banco externo. Útil para operaciones de tesorería, liquidación de comisiones y rebalanceo interno entre comercios que controlas.

Cuándo Usar

  • Consolidar saldos entre tus propios comercios dentro de una organización
  • Liquidar comisiones internas entre un comercio padre y uno hijo
  • Rebalancear liquidez para que un comercio específico tenga fondos para un próximo payout

Diagrama de Flujo

Campos Requeridos

  • typeINTER_MERCHANT_TRANSFER
  • destinationMerchantIdRequerido. Comercio dentro de la misma organización. Transferencias entre organizaciones son rechazadas (IMT00002).
  • originCurrencySymbol / destinationCurrencySymbol — deben ser la misma moneda (IMT00008; misma-moneda es comportamiento MVP).
  • amountIn o amountOut — uno de los dos (misma regla que los otros tipos de /orders).

Ejemplo — Crear Orden

const response = await axios.post( `https://api-sandbox.koywe.com/api/v1/organizations/${orgId}/merchants/${sourceMerchantId}/orders`, { type: 'INTER_MERCHANT_TRANSFER', destinationMerchantId: 'mer_destination_abc', originCurrencySymbol: 'USD', destinationCurrencySymbol: 'USD', amountIn: 1000, description: 'Liquidación comisiones julio' }, { headers: { 'Authorization': `Bearer ${token}` } } ); // En sandbox se completa instantáneamente como BALANCE_TRANSFER: console.log(response.data.status); // "COMPLETED"

Ejemplo — Respuesta

{ "id": "ord_imt_xyz789", "type": "INTER_MERCHANT_TRANSFER", "status": "COMPLETED", "originMerchantId": "mer_source_123", "destinationMerchantId": "mer_destination_abc", "originCurrencySymbol": "USD", "destinationCurrencySymbol": "USD", "amountIn": 1000, "amountOut": 1000, "description": "Liquidación comisiones julio", "createdAt": "2026-04-24T12:00:00Z", "completedAt": "2026-04-24T12:00:01Z" }

Listado y Filtros

El enum del filtro orders list en la spec OpenAPI omite hoy INTER_MERCHANT_TRANSFER. A pesar de eso, el query param ?type=INTER_MERCHANT_TRANSFER sí filtra correctamente contra la API — es un gap de la spec, no del runtime.

# Vía CLI (el CLI refleja los 7 tipos correctamente): npx @koyweforest/cli orders list --type INTER_MERCHANT_TRANSFER --format table # Vía HTTP directo: curl -H "Authorization: Bearer $TOKEN" \ "https://api-sandbox.koywe.com/api/v1/organizations/$ORG/merchants/$MERCHANT/orders?type=INTER_MERCHANT_TRANSFER"

Errores Comunes

CódigoCausaFix
IMT00001Comercio destino no encontradoVerifica que destinationMerchantId exista
IMT00002Comercio destino está en otra organizaciónLas transferencias se restringen a comercios de la misma org
IMT00003Comercio origen y destino son el mismoUsa BALANCE_TRANSFER para cambio de moneda en el mismo comercio
IMT00004Comercio destino está deshabilitadoHabilítalo o elige otro destino
IMT00005Saldo insuficiente en cuenta del comercio origenAcredita la cuenta origen o reduce el monto
IMT00007Falta destinationMerchantIdCampo requerido para INTER_MERCHANT_TRANSFER
IMT00008Monedas origen y destino no coincidenSolo misma moneda (MVP)

Ver el Catálogo de Códigos de Error completo para cada código IMT*.


Próximos Pasos

Last updated on