curl --request POST \
--url https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"reason": "Customer asked us to stop this transfer."
}
'import requests
url = "https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel"
payload = { "reason": "Customer asked us to stop this transfer." }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({reason: 'Customer asked us to stop this transfer.'})
};
fetch('https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reason' => 'Customer asked us to stop this transfer.'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel"
payload := strings.NewReader("{\n \"reason\": \"Customer asked us to stop this transfer.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"Customer asked us to stop this transfer.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"Customer asked us to stop this transfer.\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"operationId": "op_acme_abc123",
"status": "cancelled",
"mode": "request",
"cancellationReason": "Customer asked us to stop this transfer.",
"cancelledAt": "2026-08-28T12:10:00.000Z",
"corridorCancel": {
"outcome": "ok",
"error": "<string>"
}
}
}Cancel an operation
Cancels a transfer using the same rules as the widget receipt button. Allowed only inside the cancellation window, and only when the operation is not in flight, already paid out, failed, or already cancelled. void stops the canonical operation before funds move. request also asks the corridor to cancel native execution (that can reverse funds). A refusal is HTTP 409 with error.code, error.data.unavailableReason, error.data.retryable, and error.data.nextStep.
curl --request POST \
--url https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"reason": "Customer asked us to stop this transfer."
}
'import requests
url = "https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel"
payload = { "reason": "Customer asked us to stop this transfer." }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({reason: 'Customer asked us to stop this transfer.'})
};
fetch('https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reason' => 'Customer asked us to stop this transfer.'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel"
payload := strings.NewReader("{\n \"reason\": \"Customer asked us to stop this transfer.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"Customer asked us to stop this transfer.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.raas-widgets.leapfinancial.com/partner/operations/{operationId}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"Customer asked us to stop this transfer.\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"operationId": "op_acme_abc123",
"status": "cancelled",
"mode": "request",
"cancellationReason": "Customer asked us to stop this transfer.",
"cancelledAt": "2026-08-28T12:10:00.000Z",
"corridorCancel": {
"outcome": "ok",
"error": "<string>"
}
}
}Authorizations
Your partner API key. Use raas_sandbox_* keys for the sandbox environment and raas_live_* keys for production.
Path Parameters
Unique operation identifier
"op_acme_abc123"
Body
Why the partner is cancelling. Stored on the operation and sent on the operation.cancelled webhook.
500"Customer asked us to stop this transfer."