Entornos
Dos entornos con el mismo contrato. Una integración que pasa el sandbox de punta a punta usa la misma API en producción; producción se habilita por cliente.
Producción y sandbox
| Producción | Sandbox | |
|---|---|---|
| Host | https://api.fcmpayments.com |
https://empresas-sandbox.fcmpayments.com |
| API keys | fcm_live_… |
fcm_test_… |
| Dinero | Real. Las transferencias por COELSA son irreversibles. | Simulado. Libro y riel propios del sandbox. |
Simuladores (/v1/simulations/*) |
No existen (404) | Sí |
Una clave de un entorno usada en el otro responde 403 environment_mismatch.
Servidores declarados en el contrato
https://api.fcmpayments.com— Producción. Dinero real; las transferencias por COELSA son irreversibles.https://empresas-sandbox.fcmpayments.com— Sandbox. Libro y riel simulados; nunca mueve dinero real.
Sandbox
- Las transferencias salientes se completan solas a los ~2 s, salvo por los centavos del importe:
…13terminafailedcondestination_closed(COELSA 7502),…70terminafailedconrail_expired(COELSA 7570) y…99quedasubmittedhasta que lo resuelvas conPOST /v1/simulations/outgoing_transfers/{id}/rail_result. - Alias de prueba para validar contrapartes:
sbx.valida(válida),sbx.inactiva,sbx.inexistente,sbx.bloqueada(control de cumplimiento) ysbx.otro.titular(un CUIT distinto del esperado si mandásexpected_cuit). Cualquier CBU o CVU con dígitos verificadores correctos valida con un titular sintético. POST /v1/simulations/incoming_transferssimula un crédito entrante: recorre el mismo camino que un aviso real de COELSA (asiento, comisión, evento y webhook).- Reloj de prueba por entidad:
GET /v1/simulations/clockyPOST /v1/simulations/clock/advancemueven la hora de la entidad hacia adelante (topes diarios y mensuales, reintentos de webhooks, vencimientos). - Acreditación tardía, en dos pasos: sobre una transferencia
failedque salió por COELSA (por ejemplo, una…13),POST /v1/simulations/outgoing_transfers/{id}/rail_resultcon{"outcome":"completed"}simula que COELSA la acreditó después, por el mismo camino que en producción (débito compensatorio del importe, salidas deshabilitadas,submittedconlate_settlement_reviewy el eventotransfer.outgoing.reopened). Después,POST /v1/simulations/outgoing_transfers/{id}/late_settlement_reviewcon{"outcome":"completed"}simula que dos personas de Grip Rails confirman la acreditación: unos segundos después Grip Rails la cierra encompleted, sin cargo, con el eventotransfer.outgoing.completed. Como en producción, desde el primer paso tus transferencias salientes quedan deshabilitadas (403 entity_suspended). Sólo en el sandbox, unos segundos después de esetransfer.outgoing.completedGrip Rails las vuelve a habilitar sola (GET /v1/entityvuelve aactive; no si Grip Rails bloqueó tu entidad en el medio) y podés seguir probando; en producción siguen deshabilitadas hasta que Grip Rails las rehabilite.