> ## Documentation Index
> Fetch the complete documentation index at: https://commet.co/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Transacciones, Refunds y Retries

> Revisá intentos de pago, devolvé cobros exitosos y reintentá renovaciones fallidas de forma segura.

Una transaction representa un intento de pago. Registra proveedor, monto, customer, recibo, estado y eventos del lifecycle sin exponer credenciales del proveedor.

## Revisá intentos de pago

Abrí **Transactions** para investigar un pago desde el dashboard o listalos desde tu aplicación:

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { Commet } from "@commet/node";

  const commet = new Commet({ apiKey: "ck_xxx" });

  const response = await commet.transactions.list();
  ```

  ```python Python theme={null}
  from commet import Commet

  commet = Commet("ck_xxx")

  transactions_list_result = commet.transactions.list()
  ```

  ```go Go theme={null}
  client, err := commet.New("ck_xxx")
  if err != nil {
  	log.Fatal(err)
  }
  ctx := context.Background()

  transactionsListResult, err := client.Transactions.List(ctx, nil)
  if err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java theme={null}
  import co.commet.Commet;
  import co.commet.params.ListTransactionsParams;

  var commet = Commet.builder().apiKey("ck_xxx").build();

  var transactionsListResult = commet.transactions().list(ListTransactionsParams.builder().build());
  ```

  ```php PHP theme={null}
  use Commet\Commet;

  $commet = new Commet('ck_xxx');

  $transactionsListResult = $commet->transactions->list();
  ```
</CodeGroup>

Un recibo puede tener varias transacciones cuando se reintenta una renovación. La transacción fallida original queda inmutable y el retry crea un intento nuevo.

`provider` indica quién procesó el cobro. `paymentMethod` indica el medio usado en ese intento (`card`, `mercado_pago` u `oxxo`), o `null` si no se conoce. El dato de la transacción no cambia aunque el cliente guarde otro medio después.

`subPaymentMethod` indica de dónde salieron los fondos de un cobro con Mercado Pago cuando dLocal lo informa: `credit_card`, `debit_card`, `prepaid_card`, `bank_transfer` o `account_money`. Es `null` si falta el dato o no se reconoce. El dashboard también muestra la marca y los últimos cuatro dígitos si dLocal los informa para ese cobro.

## Devolvé una transacción exitosa

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { Commet } from "@commet/node";

  const commet = new Commet({ apiKey: "ck_xxx" });

  const refund = await commet.transactions.refund({ id: "transaction_xxx" });
  ```

  ```python Python theme={null}
  from commet import Commet

  commet = Commet("ck_xxx")

  refund = commet.transactions.refund("transaction_xxx")
  ```

  ```go Go theme={null}
  client, err := commet.New("ck_xxx")
  if err != nil {
  	log.Fatal(err)
  }
  ctx := context.Background()

  refund, err := client.Transactions.Refund(ctx, "transaction_xxx", nil)
  if err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java theme={null}
  import co.commet.Commet;
  import co.commet.params.RefundTransactionParams;

  var commet = Commet.builder().apiKey("ck_xxx").build();

  var refund = commet.transactions().refund(
      "transaction_xxx",
      RefundTransactionParams.builder().build()
  );
  ```

  ```php PHP theme={null}
  use Commet\Commet;

  $commet = new Commet('ck_xxx');

  $refund = $commet->transactions->refund(id: 'transaction_xxx');
  ```
</CodeGroup>

La operación solicita un refund completo y devuelve su estado real, normalizado entre proveedores. No otorgues la devolución en tu producto antes de confirmar el resultado. Procesá [`payment.refunded`](/docs/es/webhooks/payment-refunded) de forma idempotente para los cambios posteriores de acceso o balance.

La suscripción y su calendario de renovación quedan como estaban, incluso si se devuelve todo el pago. Para terminar la suscripción, [cancelala por separado](/docs/es/manage-subscriptions).

Cuando Commet procesa el pago como [Merchant of Record](/docs/es/merchant-of-record) y el banco emisor de la tarjeta lo reporta como fraudulento, Commet devuelve automáticamente lo que quede sin reembolsar para evitar un contracargo. La transacción aparece como reembolsada y recibís [`payment.refunded`](/docs/es/webhooks/payment-refunded). El monto devuelto, sin los impuestos reembolsados, se descuenta de tu balance, y las comisiones de Commet y del procesador no se devuelven.

## Reintentá una renovación fallida

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { Commet } from "@commet/node";

  const commet = new Commet({ apiKey: "ck_xxx" });

  const transactionRetry = await commet.transactions.retry({ id: "transaction_xxx" });
  ```

  ```python Python theme={null}
  from commet import Commet

  commet = Commet("ck_xxx")

  transaction_retry = commet.transactions.retry("transaction_xxx")
  ```

  ```go Go theme={null}
  client, err := commet.New("ck_xxx")
  if err != nil {
  	log.Fatal(err)
  }
  ctx := context.Background()

  transactionRetry, err := client.Transactions.Retry(ctx, "transaction_xxx", nil)
  if err != nil {
  	log.Fatal(err)
  }
  ```

  ```java Java theme={null}
  import co.commet.Commet;
  import co.commet.params.RetryTransactionParams;

  var commet = Commet.builder().apiKey("ck_xxx").build();

  var transactionRetry = commet.transactions().retry(
      "transaction_xxx",
      RetryTransactionParams.builder().build()
  );
  ```

  ```php PHP theme={null}
  use Commet\Commet;

  $commet = new Commet('ck_xxx');

  $transactionRetry = $commet->transactions->retry(id: 'transaction_xxx');
  ```
</CodeGroup>

Retry aplica a renovaciones fallidas, no a cualquier pago one-time. Conserva el intento fallido para auditoría y devuelve el nuevo intento sin ocultar su resultado.

En una suscripción `past_due`, preferí las acciones de lifecycle de [Manejar pagos fallidos](/docs/es/handle-failed-payments) cuando el customer necesite un recovery link o actualizar su método de pago.

Cambiar el routing no mueve un método guardado. El retry usa la conexión ya asociada a la suscripción.


## Related topics

- [Refunds y Retries](/docs/es/what-happens-when-you-refund-or-retry-a-transaction.md)
- [Refund transaction](/docs/es/api-reference/2026-07-31/transactions/refund-transaction.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.