Migrar de v1 a v2
En la versión 1, el pago se debita de la cuenta principal de tu empresa en la
moneda que indicas en originCurrency. En la versión 2 eliges qué cuenta
se debita con walletId, y la moneda de origen es la de esa cuenta. El resto
del payload (REMITTANCE, P2P y EXCHANGE), el permiso TRANSACTIONS y la
respuesta 200 no cambian. Para conocer el walletId, tu credencial también
necesita el permiso MOVEMENTS.
Antes de empezar, revisa Versiones del API para conocer cómo se elige la versión.
Pasos para migrar
-
Obtén el
walletIdde la cuenta de origenAutentícate con
POST /b2b/authy consultaGET /b2b/accounts. Cada cuenta de la respuesta trae suwalletId(un número entero). Elige la cuenta por moneda, alias oisPrincipal, y verifica que tenga saldo suficiente. Solo se aceptan cuentas de la empresa autenticada.GET /b2b/accountsexige el permisoMOVEMENTS, además delTRANSACTIONSque ya usas para pagar. Si tu credencial no lo tiene, la consulta responde403 INSUFFICIENT_SCOPE. -
Agrega el header de versión
Envía
X-Api-Version: 2en la petición de pago. Solo el valor exacto2activa la versión 2; cualquier otro valor se atiende como versión 1 sin devolver un error. -
Envía
walletIdy quitaoriginCurrencyAgrega
walletIdcomo número entero (nunca como texto) en el lugar deoriginCurrency. Si envíasoriginCurrencyen v2, se ignora. -
Expresa
amountsegúnwayCon
way: "ORIGIN", elamountes el monto que envías y se expresa en la moneda de la cuenta elegida: si tu cuenta es enCOP, el monto está enCOP. Conway: "DESTINY", elamountes el monto que recibe el beneficiario. -
Consulta el resultado
El flujo de consulta no cambia: usa
GET /b2b/transactions/detailcon el identificador que devuelve el pago.
El flujo completo de una integración en v2 es: POST /b2b/auth, GET /b2b/accounts,
POST /b2b/transactions/payments con el header y GET /b2b/transactions/detail.
Antes y después
Versión 1 (sin header, con originCurrency):
Versión 2 (con el header y walletId en lugar de originCurrency):
Errores nuevos en la versión 2
| HTTP | Regla | Cuándo ocurre |
|---|---|---|
400 | NOT_NULL sobre walletId | Falta el walletId (“The wallet id is required.”). |
400 | ORIGIN_WALLET_NOT_FOUND | El walletId no existe o no pertenece a tu empresa (“The walletId was not found or does not belong to the company.”). |
502 | ACCOUNT_ENRICHMENT_FAILED | No se pudo consultar la cuenta por un error interno. |
Después de un rechazo, corrige la causa y reintenta con un externalReferenceId
nuevo. El detalle de cada respuesta está en
Errores y reintentos.