curl --request POST \
--url https://api.fintoc.com/v1/refunds \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"resource_id": "pi_jsperFI9bnyM2RTo",
"resource_type": "payment_intent",
"amount": 5000,
"metadata": {
"order_id": "9182"
}
}
'{
"id": "ref_8XzNbCv1LqKjWp4R",
"object": "refund",
"amount": 5000,
"created_at": "2026-03-04T17:04:10Z",
"currency": "CLP",
"failure_code": null,
"metadata": {
"order_id": "9182"
},
"mode": "live",
"recipient_account": {
"holder_id": "111111111",
"holder_name": "Jane Doe",
"institution_id": "cl_banco_de_chile",
"number": "123456789",
"type": "checking_account"
},
"resource_id": "pi_jsperFI9bnyM2RTo",
"resource_type": "payment_intent",
"status": "pending",
"updated_at": "2026-03-04T17:04:10Z"
}Create a refund
Creates a refund for a succeeded payment in the live or test mode of the API key used. The refund starts in pending status and Fintoc disburses the funds asynchronously. Omit amount to refund the resource in full, or pass a lower value for a partial refund. Payments with a split support only full refunds. Each split recipient funds the original allocation. The recipient that pays the payment processing fee also pays the refund fee. If any recipient has insufficient balance, the refund remains pending for a later attempt. The sum of all refunds for a resource cannot exceed the resource’s amount.
curl --request POST \
--url https://api.fintoc.com/v1/refunds \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"resource_id": "pi_jsperFI9bnyM2RTo",
"resource_type": "payment_intent",
"amount": 5000,
"metadata": {
"order_id": "9182"
}
}
'{
"id": "ref_8XzNbCv1LqKjWp4R",
"object": "refund",
"amount": 5000,
"created_at": "2026-03-04T17:04:10Z",
"currency": "CLP",
"failure_code": null,
"metadata": {
"order_id": "9182"
},
"mode": "live",
"recipient_account": {
"holder_id": "111111111",
"holder_name": "Jane Doe",
"institution_id": "cl_banco_de_chile",
"number": "123456789",
"type": "checking_account"
},
"resource_id": "pi_jsperFI9bnyM2RTo",
"resource_type": "payment_intent",
"status": "pending",
"updated_at": "2026-03-04T17:04:10Z"
}Authorizations
Body
ID of the resource to refund.
"pi_jsperFI9bnyM2RTo"
Type of the resource to refund. Currently only payment_intent is supported.
payment_intent "payment_intent"
Amount to refund, as an integer in the smallest unit of the resource's currency (for example, 5000 for $5000 CLP, since CLP has no minor unit). Defaults to the full amount of the resource. For payments with a split, amount must equal the full payment amount.
5000
Set of key-value pairs you can attach to the refund. Useful for storing additional information in a structured format.
{ "order_id": "9182" }
Bank account that receives the refunded funds. Required for payments where Fintoc cannot determine the payer's account (for example, Botón BancoEstado payments), and not allowed otherwise.
Show child attributes
Show child attributes
Response
Refund created. The refund starts in pending status and the funds are disbursed asynchronously.
A refund returns funds from a succeeded payment to the payer. Fintoc disburses refunds asynchronously. Refund outcomes are succeeded, failed, canceled, or returned. Before disbursement completes, a refund is pending or in_progress. In Mexico, a refund can move from succeeded to the terminal status returned if the bank returns the transfer. The amount and currency are denominated in the smallest unit of the refunded resource's currency.
Unique identifier of the refund.
"ref_8XzNbCv1LqKjWp4R"
Type of the object. Always refund.
Amount refunded, as an integer in the smallest unit of currency (for example, 5000 for $5000 CLP, since CLP has no minor unit).
5000
ISO 8601 timestamp of when the refund was created.
"2026-03-04T17:04:10Z"
Three-letter ISO 4217 currency code. Always matches the currency of the refunded resource.
CLP, MXN "CLP"
Reason why the refund failed. One of fraud_risk (the disbursement was blocked by Fintoc's fraud checks) or insufficient_funds (your organization did not have enough funds to cover the refund). null unless the refund failed.
Set of key-value pairs attached to the refund when it was created.
{ "order_id": "9182" }
Mode of the object. live objects use real institution data, test objects use fake data for integration testing.
test, live "live"
Bank account that receives the refunded funds. null for refunds that are not disbursed by bank transfer (for example, card refunds).
Show child attributes
Show child attributes
ID of the refunded resource.
"pi_jsperFI9bnyM2RTo"
Type of the refunded resource. Always payment_intent.
payment_intent "payment_intent"
Current status of the refund. One of pending (the disbursement has not started), in_progress (Fintoc is disbursing the funds), succeeded (the funds reached the recipient account), returned (the bank transfer was returned after succeeding), failed (the disbursement failed; see failure_code), or canceled (the refund was canceled before disbursing).
pending, in_progress, succeeded, returned, failed, canceled "succeeded"
ISO 8601 timestamp of when the refund was last updated.
"2026-03-04T17:04:10Z"
Was this page helpful?