Este servicio te permite autorizar transacciones.
Las transacciones solo tienen dos estados posibles:
APPROVED
: Si la transacción es aprobada.REJECTED
: Si la transacción es rechazada.Todas las transacciones que son aprobadas modificarán el balance de la cuenta por el monto especificado.
Todos los montos de las transacciones están expresados en la moneda de la cuenta y con signo positivo.
Para distinguir si la intención de la transacción es ingresar o retirar dinero de una cuenta utiliza el parámetro entry_type
. Este parámetro puede tomar estos valores:
DEBIT
: Para transacciones que quieran retirar dinero de la cuenta.CREDIT
: Para transacciones que quieran ingresar dinero a la cuenta.Todas las transacciones tienen un tipo, que indicamos con el parámetro type
.
Cada tipo de transacción tiene distintos datos que se envían con la transacción dentro del objeto tx_properties
.
Podrás solicitar datos extras de todas las transacciones usando el objeto metadata
.
La propiedad details
se puede usar para descomponer el monto total de una transacción en las partes que lo componen. Por ejemplo supongamos que se está procesando una transacción que representa una compra en una tienda digital por un total de $149,99. Supongamos además, que este total se compone por:
Esta descomposición se puede informar agregando multiples items a la lista details
. Cada detalle debe tener un tipo asociado:
BASE
: Gasto base de la transacción.FEE
: Gastos de comisión.TAX
: Impuestos.EXTRACASH
: Extracciones de dinero.DISCOUNT
: Descuentos.Es posible agregar más de un detalle con el mismo tipo. La única restricción es que la sumatoria de los montos de los detalles sea igual al monto total de la transacción.
Cada transacción lleva un campo process_type
que puede tomar alguno de estos valores:
ORIGINAL
: Transacción nueva.ADJUSTMENT
: Ajuste.REFUND
: Reintegro o devolución.REVERSAL
: Reversa.Para las transacciones que sean REFUND
, REVERSAL
o ADJUSTMENT
se puede especificar la transacción originaria que las motiva. Esa transacción se conoce como “transacción padre” y la indicamos mediante el campo parent_tx_id
.
Los pedidos de autorización de transacciones tienen un mecanismo de idempotencia para prevenir el procesamiento duplicado.
Deberás acompañar cada request de autorización con un header X-Idempotency-Key
que tenga un identificador único para la transacción a procesar. En caso de que no obtengas respuesta o recibas una respuesta con status code del tipo 5xx, deberás volver a repetir el request con la misma key de idempotencia hasta obtener una respuesta exitosa (code 201).
Los requests repetidos que utilicen la misma key de idempotencia solo tendrán como resultado la creación de una transacción. El primer request creará la transacción y los siguientes devolverán la misma respuesta que se devolvió para el primer request, pero no crearán una transacción nueva.
Si un pedido de autorización tiene una key de idempotencia que ya usaste en otra transacción, responderemos con un error.
Las transacciones que procesamos correctamente se informan con un status code 201
. Pero atención: este estado no indica si la transacción fue aprobada. Para saber eso, tendrás que leer el campo 'result' de la respuesta e identificar si su valor es APPROVED
o REJECTED
.
Cualquier otro status code indica que algo salió mal y te indicaremos el motivo de rechazo en el campo rejection_reason
.
Este campo puede tomar los siguientes valores:
INSUFFICIENT_FUNDS
: La cuenta no tiene fondos suficientes.ACCOUNT_DISABLED
: La cuenta está deshabilitada.ACCOUNT_FROZEN
: La cuenta no puede procesar transacciones de débito (DEBIT
).CLIENT_MONTHLY_AMOUNT_LIMIT_REACHED
: Superó el límite de movimientos mensual que teníaCLIENT_DAILY_AMOUNT_LIMIT_REACHED
: Superó el límite de movimientos diarios que tenía.BRIDGE_ACCOUNT_MONTHLY_AMOUNT_LIMIT_REACHED
: Superó el límite de movimientos mensuales que tenía para cuenta bridge.BRIDGE_ACCOUNT_DAILY_AMOUNT_LIMIT_REACHED
: Superó el límite de movimientos diarios que tenía para cuenta bridge.PROCESS_TIME_EXPIRED
: La transacción no comenzó a procesarse antes del tiempo indicado por el campo process_before
, que es opcional.MAX_BRIDGE_ACCOUNT_FUNDING_LIMIT_EXCEEDED
: Superó el límite máximo de fondeos para cuenta bridge.SOURCE_ACCOUNT_TX_REJECTED
: Este motivo de rechazo solo aplica para transacciones P2P. La transacción fue rechazada debido a que la cuenta de origen rechazó la transacción.DESTINATION_ACCOUNT_TX_REJECTED
: Este motivo de rechazo solo aplica para transacciones P2P. La transacción fue rechazada debido a que la cuenta de destino rechazó la transacción.FRAUD_SCORING_REJECTED
: La transacción fue rechazada debido a que el análisis de prevención de fraude no la permitió.MONTHLY_AMOUNT_LIMIT_REACHED
: Superó el límite de transacción mensual.DAILY_AMOUNT_LIMIT_REACHED
: Superó el límite de transacción diario.Cuando no podemos procesar una transacción devolveremos una respuesta de error con el campo error_code
indicando el motivo:
ACCOUNT_NOT_FOUND
: No encontramos la cuenta.INVALID_AUTHORIZATION_REQUEST
: El request para autorizar la transacción no es válido.INVALID_PARENT_TX_ID
: La transacción padre que especificaste es inválida.DUPLICATED_IDEMPOTENCY_KEY
: Ya usaste la key de idempotencia en otra transacción./core/transactions/v1
te permite autorizar transacciones de entrada y salida de dinero de las cuentas digitales. Las transacciones procesadas correctamente devolverán el status code 201
, ya sea que fueran aprobadas o rechazadas. Revisa el campo result
para ver el resultado.CREDIT
y para debitar DEBIT
./core/transactions/v1/p2p
te permite autorizar movimientos de terceros (P2P) de entrada y salida de dinero entre la cuenta de usuario y cuenta bridge. Las transacciones procesadas correctamente devolverán el status code 201
, ya sea que fueran aprobadas o rechazadas. Revisa el campo result
para ver el resultado.