Refund payments

Learn how to refund a payment.

You can partially or fully refund any successful payment. Refunds draw from your available Fintoc balance, which excludes any pending balance. If your available balance doesn’t cover the amount of the refund, the refund is retried for 5 business days before it expires.

Additionally, Fintoc doesn’t return processing fees from the original payment if it’s refunded.

🚧

Refunds for E-Commerce Plugins

You can issue refunds directly from your e-commerce platform (VTEX or Shopify), but due to how the plugins work, refunds requested from e-commerce plugin platforms cannot be cancelled from their dashboards.

If you issued a refund from one of these platforms and wish to cancel it, you can use our Cancel Refunds API endpoint or contact our support team, but the cancellation does not appear in your VTEX or Shopify Dashboard.

Refund destinations

The destination of a refund depends on the payment method used.

For most payments, Fintoc refunds to the original bank account used for the payment. You don't need to specify a destination.

For alternative payment methods, Fintoc doesn't have access to the payer's account because the customer authorizes the payment through the bank's own checkout. To refund these payments, you collect the destination account from the customer and pass it as recipient_account when you create the refund.

If a customer has closed their bank account, the refund is marked as failed.

If you plan on using refunds, include a customer_email when creating your Checkout Session so Fintoc can notify the customer about the progress of their refund request.

Refund lifecycle

Chile 🇨🇱

You can create refunds 24/7. Fintoc begins disbursing each refund when you create it, instead of holding it for the next daily payout cycle.

At 14:00 Santiago time each day, Fintoc reserves the balance accumulated up to that point to fund your daily payout. A refund you create after 14:00 can't draw on that reserved balance, so Fintoc disburses the refund only once new balance accumulates.

  1. A new refund starts with the pending status. You can cancel a refund while it's pending.
  2. Fintoc starts disbursing the refund, which transitions to the in_progress status.
  3. After Fintoc finishes the disbursal, the refund transitions to the succeeded status, and your customer sees the refund on their bank statement.
  4. If you have insufficient funds in your Fintoc balance, Fintoc retries the refund for 5 business days. If the refund doesn't succeed within 5 business days, it transitions to the failed status. Any other failure when transferring the funds also marks the refund as failed, and the funds are included in your next payout.

Mexico 🇲🇽

You can create refunds 24/7. Fintoc begins disbursing each refund when you create it, instead of holding it for the next daily payout cycle.

  1. A new refund starts with the pending status. You can cancel a refund while it's pending.
  2. Fintoc starts disbursing the refund, which transitions to the in_progress status.
  3. After Fintoc finishes the disbursal, the refund transitions to the succeeded status, and your customer sees the refund on their bank statement.
  4. If you have insufficient funds in your Fintoc balance, Fintoc retries the refund for 5 business days. If the refund doesn't succeed within 5 business days, it transitions to the failed status. Any other failure when transferring the funds also marks the refund as failed, and the funds are included in your next payout.

Issue refunds

You can issue refunds from the Dashboard or by using the Refunds API. Treat the refund as complete after it reaches the succeeded status. You can issue more than one refund against a payment, but you can't refund a total greater than the original payment amount.

Issue refund using the API

To refund a payment with the API, create a refund with the payment's ID and set resource_type to payment_intent. You receive this ID as part of the checkout_session.finished webhook event. You can also find it in the Dashboard.

curl --request POST "https://api.fintoc.com/v1/refunds" \
--header 'Authorization: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "resource_id": "pi_ja12Nqa3Lb4s",
  "resource_type": "payment_intent"
}'

To partially refund a payment, provide an amount in the smallest currency unit. For example, use 1000 for $1000 CLP or 100 for $1.00 MXN.

curl --request POST "https://api.fintoc.com/v1/refunds" \
--header 'Authorization: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "resource_id": "pi_ja12Nqa3Lb4s",
  "resource_type": "payment_intent",
  "amount": 1000
}'

Cancel a refund

You can cancel any refund while its status is pending, from the Dashboard or using the API.

Cancel a refund using the API

To cancel a refund using the API, use the cancel refund providing the refund's ID.

curl --request POST "https://api.fintoc.com/v1/refunds/REFUND_ID/cancel" \
--header 'Authorization: YOUR_API_KEY' \
--header 'Content-Type: application/json'

Refund status updates

Fintoc sends webhook events to your server when the status of a Refund changes. Use them to notify your customer about updates, for example by emailing them when the refund appears in their bank statement.

We recommend handling the following events when refunding a payment:

EventDescriptionAction
refund.in_progressSent when Fintoc starts disbursing the refund.Notify your customer that the refund is in progress, and wait for the refund.succeeded event before treating the refund as complete.
refund.succeededSent when Fintoc successfully processed the refund.Notify your customer that the money is already in their bank account.
refund.failedSent when the refund failed. For example, your customer's bank couldn't process it or you have insufficient funds.Notify your customer that the refund could not be completed.

Refund vouchers

Fintoc offers Refund Vouchers as confirmation of a successful refund to your customer's bank account. To download them, use our Retrieve Refund Voucher endpoint. When doing so, keep in mind that there is an expiration time of 5 minutes to start your download.

Refund notifications

When setting up a Checkout Session, you can include a customer_email for notifications. If a valid email is provided, it will be used to inform the user about the creation of a refund, the successful transfer of funds to their bank account, and in the event of a refund failure.

Refund fees

Refund fees are calculated upon discounting them from your payout. If a Refund turns out to be failed, it will be reimbursed in your following payout.