Crear Operación
Una vez que el usuario confirma la operación, la billetera debe crearla en InvWallet. A partir de ese momento, InvWallet gestiona de forma asíncrona la ejecución de todos los steps (BUY → PARK → SELL → CASHOUT).
Creación de la operación
Método: POST
URL: /api/v1/mep/operations/
{
"account_id": "ACC-0012345",
"side": "BUY",
"amount": "50000.00",
"currency": "ARS",
"do_cashout": true,
"destiny_account": 42
}
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
account_id | string | Sí | ID de la subcuenta comitente del inversor |
side | string | Sí | "BUY" (ARS → USD) o "SELL" (USD → ARS) |
amount | decimal | Sí | Monto a invertir |
currency | string | No (default: "ARS") | Moneda del monto: "ARS" o "USD" |
do_cashout | boolean | No (default: true) | Si true, transfiere USD al CBU del inversor al finalizar |
destiny_account | integer | Sí si do_cashout=true | PK de la cuenta bancaria USD destino del inversor |
Respuesta 201:
{
"id": 1024,
"account_id": "ACC-0012345",
"side": 1,
"side_display": "Compra",
"state": "pending",
"do_cashout": true,
"initial_amount_ars": "50000.00",
"initial_amount_usd": "44.76",
"final_amount_ars": null,
"final_amount_usd": null,
"parking_days": 3,
"commission": "2.00",
"taxes": "0.60",
"rights": "150.00",
"result": null,
"paysheet": null,
"created": "2026-04-28T14:32:10Z",
"updated": "2026-04-28T14:32:10Z"
}
| Campo | Descripción |
|---|---|
id | ID de la operación — guardar para polling |
state | Estado compuesto de la operación (ver Estados de la operación) |
initial_amount_ars | Monto ARS solicitado |
initial_amount_usd | Estimado de USD a recibir al momento de creación |
final_amount_ars | ARS real operado (se completa al finalizar) |
final_amount_usd | USD real operado (se completa al finalizar) |
parking_days | Días hábiles de parking normativo (snapshot al crear) |
commission | % de comisión aplicado (snapshot al crear) |
taxes | % de impuestos aplicado (snapshot al crear) |
rights | Monto fijo de derechos de mercado (snapshot al crear) |
result | JSON acumulativo con detalle de cada step (ver Estados de la operación) |
paysheet | ID de la nómina asignada (null hasta el corte) |
Los campos commission, taxes, rights y parking_days son snapshots tomados al momento de la creación. Si la configuración del tenant cambia, las operaciones ya creadas no se ven afectadas.
Cancelar una operación
Una operación solo puede cancelarse cuando state = "pending", antes de que se haya enviado cualquier orden al mercado.
Método: POST
URL: /api/v1/mep/operations/{id}/cancel/
Request: sin body.
Respuesta 200: operación con state: "cancelled".
Listar operaciones
Método: GET
URL: /api/v1/mep/operations/
Retorna todas las operaciones del merchant autenticado, ordenadas por fecha de creación descendente.
Errores
| Código | Motivo |
|---|---|
400 | Mercado cerrado, cuenta comitente no está en OPEN, MEP deshabilitado para ese tipo de inversor, límites operativos excedidos |
400 | (cancel) La operación ya está en ejecución o en un estado terminal |
401 | Token inválido o expirado |
403 | El recurso no pertenece al merchant autenticado |
422 | Error de configuración del merchant (comisión no configurada, cuenta bancaria no encontrada) |
503 | OMS no disponible |