Ir al contenido

↑↓ navegar ↵ abrir Ctrl↵ nueva pestaña esc cerrar

Crea una única transacción de venta. Para crear varias transacciones a la vez, consulta la página Envío por lotes.

POST https://api.rapidchargeback.com/api/v1/transactions
Authorization: Basic base64(client_id:client_secret)
Content-Type: application/json

CampoTipoDescripción
merchant_id o merchant_refstringInforma exactamente uno: merchant_id (UUID del merchant en Rapid, debe pertenecer a tu empresa) o merchant_ref (ID del vendedor en tu sistema, hasta 100 caracteres, para canales/plataformas con varios vendedores). Si merchant_ref es desconocido, el merchant se crea automáticamente con merchant_name (opcional, hasta 255 caracteres; se ignora cuando el merchant ya existe). Enviar los dos → 422 VALIDATION_ERROR. Tus merchants y sus merchant_id están en Listar merchants.
external_idstringID de la transacción en el sistema de origen
amountnumberMonto de la transacción (debe ser positivo)
currencystringCódigo ISO 4217 con 3 letras mayúsculas (ej.: USD, BRL)
transaction_datestringFecha de la transacción en formato ISO 8601 (ej.: 2026-04-01T15:30:00Z)
card_last4stringÚltimos 4 dígitos de la tarjeta (exactamente 4 dígitos numéricos)
itemsarrayAl menos 1 ítem (ver los campos del ítem abajo)
CampoTipoDescripción
product_descriptionstringDescripción del producto (hasta 1000 caracteres; por encima de eso la solicitud falla)
unit_pricenumberPrecio unitario
CampoTipoDescripción
product_namestringNombre del producto
quantitynumberCantidad
unit_of_measurestringUnidad de medida
categorystringCategoría del producto

CampoTipoDescripción
external_sourcestringSistema de origen (por defecto: custom)
order_numberstringNúmero de pedido
transaction_idstringID de la transacción en el gateway de pago. Ver la nota abajo
arnstringAcquirer Reference Number
banknet_refstringReferencia Banknet (Mastercard)
auth_codestringCódigo de autorización
networkstringRed de la tarjeta: visa, mastercard, amex, discover, other
card_binstringBIN de la tarjeta (6 a 8 dígitos numéricos)
ip_addressstringDirección IP del comprador
clearing_datetimestringFecha de compensación (ISO 8601)
mccstringMerchant Category Code
ecistringElectronic Commerce Indicator
pos_entry_modestringModo de entrada POS
descriptorstringDescriptor de cobro
correlation_idstringID de correlación
device_idstringID del dispositivo (mín. 15 caracteres)
device_fingerprintstringFingerprint del dispositivo (mín. 20 caracteres)
customerobjectDatos del comprador (ver abajo)
addressesarrayDirecciones de envío y/o de facturación (ver abajo)
paymentsarrayDatos de pago (ver abajo)
refundsarrayDatos de reembolso (ver abajo)

Todo campo de texto tiene un tope. Por encima de él la respuesta es 422 VALIDATION_ERROR señalando el campo, nunca un error de servidor.

LímiteCampos
1000product_description
255descriptor, merchant_name, product_name, device_fingerprint, street, reason (refund)
200billing_name
100external_id, order_number, transaction_id, arn, banknet_ref, correlation_id, merchant_ref, device_id, first_name, last_name, city, state, category
64method_masked, reference_number
45ip_address (cabe IPv6)
50external_source, auth_code, account_id
32unit_of_measure
30phone, postal_code, wallet_indicator
20number (dirección)
16payment_type
10mcc, pos_entry_mode
7card_expiry
5eci
2cvv2_presence_indicator, avs_result

email sigue el límite de 255 y necesita un formato válido. currency, card_bin, card_last4, country y network tienen formato fijo, descrito en la tabla de campos.

Es opcional, pero complétalo siempre que el cobro haya pasado por un gateway de pago: es por este campo que Rapid vincula un contracargo futuro a la transacción. Envía el identificador del cobro en el gateway, no tu número de pedido (ese es el order_number).

Si usas un gateway cuyas disputas llegan a Rapid y el campo viene vacío, el contracargo igual se recibe, pero sin transacción asociada: sin historial, sin evidencia adjunta y sin los datos de autenticación, que son justamente el material de la defensa. Alternativa equivalente: enviar external_source con el nombre del gateway y external_id con el id del cobro.


CampoTipoDescripción
first_namestringNombre
last_namestringApellido
emailstringCorreo electrónico (formato válido)
billing_namestringNombre en la tarjeta
account_idstringID de la cuenta del comprador en tu sistema
phonestringTeléfono
CampoTipoObligatorioDescripción
typestringSíshipping o billing
streetstringNoCalle
numberstringNoNúmero
citystringNoCiudad
statestringNoEstado/Región
postal_codestringNoCódigo postal
countrystringNoCódigo de país ISO 3166-1, 2 o 3 letras mayúsculas (BR/BRA, US/USA). Se recomienda alpha-3.

Campos de autenticación del pago (raíz, todos opcionales)

Sección titulada «Campos de autenticación del pago (raíz, todos opcionales)»

Insumos de la protección contra fraude y de 3-DS. Cuanto más completes, más fuerte la deflexión y la defensa.

CampoTipoDescripción
cvv2_presence_indicatorstringIndicador de presencia del CVV2 en la autorización
cvv2_resultstringResultado de la verificación del CVV2: M, N, P, S, U o Y, tal como vino en la respuesta de la autorización
avs_resultstringResultado del AVS (verificación de dirección)
cardholder_verification_approvedboolean3-DS/verificación del titular aprobada
authentication_response_typestringTipo de respuesta de la autenticación 3-DS: attempt (intento) o confirm (autenticación confirmada)
wallet_indicatorstringBilletera digital usada (ej.: Apple Pay, Google Pay)

Cuenta del comprador (dentro de customer, todos opcionales)

Sección titulada «Cuenta del comprador (dentro de customer, todos opcionales)»

Indican si la compra la hizo una cuenta conocida, y desde cuándo existe. Son el material más fuerte de la defensa en una disputa por fraude: un comprador con una cuenta antigua y con sesión iniciada es difícil de disputar como “no lo reconozco”.

CampoTipoDescripción
registered_atstring (ISO 8601)Cuándo se creó la cuenta del comprador en tu sistema
registered_at_sourcestringDe dónde viene registered_at: merchant_api (registro de la cuenta en tu sistema) o client_declared (declaración tuya, sin ese registro)
account_authenticatedbooleanEl comprador tenía la sesión iniciada en la cuenta al comprar
account_authenticated_sourcestringCómo lo sabes: per_account (verificado en esta compra) o onboarding_flag (regla de tu tienda, por ejemplo, toda compra exige login)
account_authenticated_atstring (ISO 8601)Cuándo fue el login
auth_methodstringCómo entró el comprador: password, otp, 2fa, biometric, oauth u other
account_source_methodstringDe dónde vienen los datos de la cuenta: merchant_api o client_declared
checkout_typestringCómo se hizo la compra: guest (sin cuenta), authenticated (cuenta existente, con sesión iniciada) o registered_at_checkout (cuenta creada durante la compra)

Un valor fuera de las listas responde 422 VALIDATION_ERROR.

CampoTipoDescripción
payment_typestringTipo de pago (credit, debit, pix, etc.)
method_maskedstringNúmero enmascarado
matched_paymentbooleanSi este pago fue el utilizado (por defecto: true)
card_binstringBIN (6-8 dígitos)
card_last4stringÚltimos 4 dígitos (4 dígitos numéricos)
installmentsintegerNúmero de cuotas
card_expirystringVencimiento (MM/YYYY)
CampoTipoObligatorioDescripción
amountnumberSíMonto del reembolso (positivo)
currencystringSíMoneda (3 letras mayúsculas, ISO 4217)
reference_numberstringNoIdentificador del reembolso
reasonstringNoMotivo del reembolso
refund_datetimestringNoFecha del reembolso (ISO 8601)

  • transaction_date debe estar en ISO 8601 con zona horaria
  • currency debe ser un código ISO 4217 (3 letras mayúsculas)
  • amount debe ser mayor que cero
  • card_last4 debe tener exactamente 4 dígitos numéricos
  • card_bin debe tener de 6 a 8 dígitos numéricos
  • device_id debe tener como mínimo 15 caracteres
  • device_fingerprint debe tener como mínimo 20 caracteres
  • La combinación external_source + external_id no puede duplicar una transacción existente de tu empresa

La API devuelve avisos (sin bloquear la creación) cuando faltan campos opcionales importantes:

CuándoAviso
Sin card_bincard_bin missing: reduces match accuracy
Sin order_numberorder_number missing: recommended to identify the order in dispute responses
Sin ip_address, device_id y device_fingerprintip_address, device_id and device_fingerprint missing: recommended, fraud protection relies on them

Basta uno de los tres identificadores para que desaparezca el último aviso: la IP no es obligatoria. Y a propósito no hay aviso de dirección: quien vende bienes digitales no debe enviar dirección de envío (ver protección contra fraude).

La clave warnings solo aparece en la respuesta cuando hay al menos un aviso. No cuentes con warnings: [].


Las credenciales vienen de variables de entorno (RAPID_CLIENT_ID y RAPID_CLIENT_SECRET), nunca escritas en el código.

Ventana de terminal
curl -X POST https://api.rapidchargeback.com/api/v1/transactions \
-H "Authorization: Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=" \
-H "Content-Type: application/json" \
-d '{
"merchant_id": "00000000-0000-0000-0000-000000000001",
"external_source": "shopify",
"external_id": "TXN-2026-001",
"transaction_date": "2026-04-01T15:30:00Z",
"amount": 150.00,
"currency": "USD",
"card_last4": "4242",
"card_bin": "424242",
"order_number": "ORD-001",
"auth_code": "AUTH999",
"network": "visa",
"descriptor": "LOJA EXEMPLO",
"ip_address": "203.0.113.10",
"items": [
{
"product_description": "Assinatura Premium - Mensal",
"product_name": "Plano Premium",
"quantity": 1,
"unit_price": 150.00
}
],
"customer": {
"first_name": "João",
"last_name": "Silva",
"email": "joao@exemplo.com"
},
"addresses": [
{
"type": "shipping",
"street": "Rua das Flores",
"number": "123",
"city": "São Paulo",
"state": "SP",
"postal_code": "01001000",
"country": "BRA"
}
]
}'

{
"data": {
"id": "00000000-0000-0000-0000-000000000042",
"company_id": "...",
"merchant_id": "00000000-0000-0000-0000-000000000001",
"external_id": "TXN-2026-001",
"amount": 150.00,
"currency": "USD",
"transaction_date": "2026-04-01T15:30:00.000Z",
"card_last4": "4242",
"created_at": "2026-04-01T15:31:00.000Z",
"transaction_items": [...],
"transaction_customers": [...],
"transaction_addresses": [...]
}
}
{
"error": {
"code": "TRANSACTION_DUPLICATE",
"message": "Transaction already exists"
}
}
{
"error": {
"code": "VALIDATION_ERROR",
"message": "card_last4 must be exactly 4 digits"
}
}