Refunded status.
If you’re just getting started, please check out our quick start guide.
Refunded status, see Transactions.
How refunds work
When a transaction is created, Borderless builds a refund plan for it. The plan records how a refund would be handled if it becomes necessary — where the funds should be returned (the refund destination) and whether the refund should be triggered automatically. If the transaction later fails or is reversed:- When the plan has auto-refund enabled (the default), Borderless dispatches the refund automatically.
- When auto-refund is disabled, the plan stays eligible but waits until the refund is dispatched manually through the refund endpoint.
Whether a refund is supported, and which return paths are available, depends on the partner financial institution (PFI) handling the transaction.
Refund destinations
A refund destination describes where returned funds should go. It is configured with the following fields:string enum
required
How the refund should be handled. One of:
Address— return funds to a specific crypto address.Source— return funds to the original on-chain sender.ProviderBalance— leave the funds in your account balance at the PFI.
string
The crypto address that should receive the refund. Required when
type is Address.boolean
Whether Borderless should automatically trigger the refund on failure. Defaults to
true. Setting it to false records the plan as eligible but keeps it waiting until the refund is dispatched manually.refundDestination when creating a withdrawal. The examples below show each destination type:
Where the destination comes from
The refund destination is resolved from three layers. Each layer overrides the one before it, so the most specific configuration always wins:- Organization default — an org-wide fallback applied to every transaction. Resolves to
destinationSource: OrganizationDefault. - Withdrawal — the
refundDestinationyou set on the create request. Overrides the organization default and resolves todestinationSource: PerTransaction. - Execute Plan — a
refundDestinationoverride passed to the refund endpoint, applied just before the refund is dispatched. Takes precedence over everything and resolves todestinationSource: Manual.
destinationSource values can appear when the PFI, rather than your configuration, determines where the money goes: OriginalSender when the funds are reversed to the on-chain sender, and ProviderLocked when the PFI returns them to a destination you cannot influence. None means no destination could be resolved.
Organization default refund destination
The organization default is the fallback applied to any transaction that has no per-transaction destination. Reading it is available to any authenticated caller; creating, replacing, re-confirming, and removing it require the Owner role.string enum
required
One of
Address, Source, or ProviderBalance, as described above.array of objects
Required when
type is Address. Each entry is a network and the address that should receive refunds on it. At least one entry.boolean
Whether Borderless automatically triggers the refund on failure. Defaults to
true.boolean
Whether Borderless automatically returns a failed fiat payout as crypto, by re-converting the fiat held at the PFI and paying out to the refund destination. Defaults to
false; when disabled the plan is marked for manual handling instead. This field has no per-transaction equivalent.Keeping the default confirmed
The default carries averifiedAt timestamp and two staleness flags:
boolean
True once the default is older than 30 days. Refunds still run — treat it as a prompt to re-confirm.
boolean
True once the default is older than 90 days. Automatic refunds to the default are paused until it is re-confirmed.
POST /v1/refunds/config/reconfirm to reset verifiedAt to now and clear both flags without changing the destination.
Refund capabilities
Before creating a transaction, you can check which refund behavior is supported for an off-ramp corridor. The capabilities endpoint reports, per partner financial institution (PFI), the refund paths, accepted destination types, supported chains, and estimated timing for a given country and fiat currency. Both query parameters are required:string enum
required
Destination country of the withdrawal corridor, such as
MX.string enum
required
Destination fiat currency of the withdrawal corridor, such as
MXN.string enum
The partner financial institution the capabilities apply to.
array of strings
The refund paths the PFI supports for this corridor. One or more of
PfiAutoReversal, BalancePayout, ReturnToSender, PfiAutoReturn, ManualRequired, or Unsupported.array of strings
The refund destination
type values you may specify on a transaction. Either ["Address"] or empty.array of strings
How the refund destination is determined:
none, address_optional, address_required, or provider_locked.array of strings
The assets/chains available for refunds on this corridor, such as
USDC_POLYGON.object
The expected refund time as
minSeconds, maxSeconds, and a businessDays flag indicating whether the range is measured in business days.boolean
Whether the auto-refund preference can be overridden for this corridor. Currently always
false.array of strings
Any prerequisites that must be met before a refund can be processed.
Capabilities are scoped to the PFIs currently enabled for your organization. An empty array means no enabled PFI serves that corridor.
Executing a refund plan
When auto-refund is disabled, or when you need to override the stored destination, you can dispatch the refund manually:202 Accepted and returns the current refund resolution.
The response includes a dispatchable flag telling you whether the plan can be dispatched through this endpoint right now, so you can check it before calling:
boolean
Whether the refund plan can be dispatched now. True for plans in
Created or Eligible status, and for ManualRequired plans parked after a failed fiat payout.object
Present when a refund attempt has failed. Contains a human-readable
message and a details array of provider-level error details. null otherwise.Dispatching a refund through this endpoint bypasses the
autoRefund: false preference, so it is the way to trigger refunds for transactions created with auto-refund disabled. Any refundDestination override is re-validated against the PFI’s refund capability before it is applied.If you have any questions, please don’t hesitate to reach out to us via email or slack.