Refunds for Bank Transfer Payments

Process secure and efficient bank transfer refunds through Localpayment. Our guide explains how to use our automated system to manage refunds.

Overview

Refunds allow you to return funds from a completed Bank Transfer payin back to the original payer. When you issue a refund, the funds are debited from your Localpayment account balance and dispersed back to the customer. This means you must have sufficient balance available in your account at the time of processing. If your balance is not enough, you can either add funds via a wire-in or transfer funds from another Localpayment account before approving the refund.

When Refunds Apply

Refunds are available in scenarios such as:

  • The payer requests their money back.

  • A purchase is canceled after the payment has been completed.

  • You need to return funds due to operational, compliance, or customer service reasons.

Conditions for Refunds

Refunds can only be created when:

  • The payin status is Completed.

  • The refund amount equals the total payment amount (partial refunds are not supported).

  • Please note that all refunds initiated via the Localpayment Dashboard require approval.

User Roles

To create or approve a refund, your user account must have the necessary permissions. The tables below describe the default user roles capable of these actions.

Info

You can also create custom roles with specific permissions to match your team's workflow. For instructions, see our User Roles documentation.

Refund Creation Permissions
Role
API
Dashboard

Admin

Yes

Yes

AM

No

No

API USER

No

No

Authorizer level 1

No

No

Authorizer level 2

No

No

OPERATIONS CHARGEBACK LEVEL 1

No

No

OPERATIONS CHARGEBACK LEVEL 2

No

Yes

OPERATIONS LEVEL 1

No

Yes

OPERATIONS LEVEL 2

No

Yes

RECONCILIATION LEVEL 1

No

No

RECONCILIATION LEVEL 2

No

No

TREASURY

No

No

Refund Approval Permissions
Role
API
Dashboard

Admin

No

No

AM

No

No

API USER

No

No

Authorizer level 1

No

Yes

Authorizer level 2

No

Yes

OPERATIONS CHARGEBACK LEVEL 1

No

No

OPERATIONS CHARGEBACK LEVEL 2

No

No

OPERATIONS LEVEL 1

No

No

OPERATIONS LEVEL 2

No

No

RECONCILIATION LEVEL 1

No

No

RECONCILIATION LEVEL 2

No

No

TREASURY

No

No

Refund Types

Refunds can be processed in two flows:

Direct Refunds

Direct refunds require only the externalId of the original transaction. No additional payer details are needed. You can issue a direct refund via API or Dashboard.

Supported products:

Virtual Accounts

Data-Required Refunds

Data-required refunds require additional payer and bank details in the request body. You can issue a data-required refund via API or Dashboard.

Supported products:

Alternative Payment Methods (APMs)

Method-Specific Requirements

Some payment methods have additional refund restrictions:

Chile

  • Virtual Accounts:

    • Low-Value Transactions (Up to CLP 7,000,000): Refunds can be processed without restrictions using the Direct Refund flow.

    • High-Value Transactions (Above CLP 7,000,000): Refunds must be processed using the Data-Required Refunds flow. The only exception is for transactions originating from Banco Security accounts; these are to be processed through the Direct Refund flow.

México

  • Virtual Accounts:

    • Refund Availability: Refunds are not currently available for payments processed through Banco Azteca in Mexico.

Refund a Payment

Refunds can be requested via API or Dashboard.

Create a Refund via Localpayment API

To request a refund through the API, send a PATCH request to the refund endpoint with the required information. The API supports both refund flows: Direct Refunds (only externalId required) and Data-Required Refunds (additional beneficiary and bank details required).

Endpoint

PATCH {api_base_url}api/payin/{externalId}/refund

Headers

Parameter
Type
Required
Description

Authorization

string

Required

Bearer token for authentication.

Path Parameters

Parameter
Type
Required
Description

externalId

string

Required

Unique ID of the original transaction.

Request Body

Note: The request body applies only to Data-Required Refunds.

Parameter
Type
Required
Description

comment

string

Optional

Optional comment about the refund.

beneficiary

object

Required

Beneficiary details.

beneficiary.type

string

Required

Beneficiary type (INDIVIDUAL / COMPANY).

beneficiary.name

string

Required

First name of the beneficiary.

beneficiary.lastName

string

Required

Last name of the beneficiary. Required only for INDIVIDUAL

beneficiary.document.type

string

Required

Document type of the beneficiary.

beneficiary.document.id

string

Required

Document ID of the beneficiary.

beneficiary.bank.name

string

Required

Name of the beneficiary’s bank.

beneficiary.bank.branch.code

string

Optional

Branch code. Only mandatory for Brazilian bank accounts.

beneficiary.bank.branch.name

string

Optional

Branch name. Only mandatory for Brazilian bank accounts.

beneficiary.bank.account.type

string

Required

beneficiary.bank.account.number

string

Required

Account number of the beneficiary

Request Example

curl --location --request PATCH 'https://api.stage.localpayment.com/api/payin/{{externalId}}/refund' \
--header 'x-client-code: 0000' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <your_access_token>' \
--data '{
}'

Response Example

Note: The response payload is the same for both Direct Refunds and Data-Required Refunds.

{
    "externalId": "1c364061-1f3d-4b94-c270-bf915c22e8f5",
    "internalId": "8a9abd31-31e0-429a-32a6-cca8b9e1e536",
    "status": {
        "code": "902",
        "description": "REFUNDED",
        "detail": "The payin was refunded"
    }
}

Error Handling

Common errors when issuing refunds via API:

  • 400 Bad Request: Missing or invalid beneficiary data (for data-required flow).

  • 403 Forbidden: Missing or invalid permissions.

  • 404 Not Found: The externalId does not exist.

Create a Refund via Localpayment Dashboard

Refunds can also be created via Localpayment Dashboard (with the proper user role). The Dashboard supports both refund flows: Direct Refunds and Data-Required Refunds. If additional information is required (Data-Required Refunds), the system will prompt you to provide the necessary beneficiary and bank details during the refund request process.

Steps:

  1. Access your Localpayment Dashboard.

  2. Click "PayIn".

  3. Click "Refunds".

  4. Click "Create Refund".

  5. Click "Manual" to create one refund, or Batch to process multiple refunds at once.

  6. Choose the Client, Country, Account Number, Payment Method (Bank Transfer) and Date Range.

    • You may also search directly by externalId.

  7. Click "Search."

  8. Select the transactions to refund.

  9. Click "Create Refund".

  10. Review the refund details. If additional data is required, the system will prompt you.

  11. Click Confirm to submit the refund request or Cancel to discard it.

  12. A confirmation screen will display refund details.

    • Click Close to return to the dashboard.

    • Click Expand to view full details.

    • Click Authorizations to go to pending refund approvals.

Approve a Refund

All refunds must be reviewed and approved by a user with the appropriate role.

Steps to approve or reject a refund:

  1. Access your Localpayment Dashboard.

  2. Click "PayIn".

  3. Click "Refunds".

  4. Click "Pending Authorization".

  5. Select the Client, Country, and Date Range.

    • You may also search directly by externalId.

  6. Click "Search."

  7. Select the transaction to refund and click "Authorize" to approve the refund, or Discard to reject it.

  8. Review the refund detail and click "Yes."

  9. Check your email and enter the confirmation code you received.

    • This code must be entered in the Dashboard to finalize and approve the refund. The refund will not be processed until this step is completed.

  10. Click "Authorize".

  11. A confirmation message will appear.

Webhooks

Localpayment sends webhook notifications whenever a refund is Completed.

Key points:


Last updated

Was this helpful?