Rollback Disbursement
POST {api-url}/rollback/start?ns={community}
Starts a rollback asynchronously. This call refunds the value of any unspent vouchers and their associated fees back to the funder.
If the disbursement has already been confirmed (funds released), it will be Reversed. If it is still awaiting confirmation, it will be Cancelled and completely voided. Because this process runs asynchronously in the background, you can poll the /progress endpoint to retrieve the real-time status of the rollback.
Parameters
Section titled βParametersβ| Field | Type | Requirement | Description |
|---|---|---|---|
UIDx | Integer | Required | The unique internal identifier for this disbursement. |
Metadata | String | Optional | Any other detail that the merchant wishes to store on this transaction. |
Example Body
Section titled βExample Bodyβ{ "UIDx": 637, "Metadata": "{\"ActorUserIDs\": \"547828938941114\"}"}Parameters
Section titled βParametersβ| Field | Type | Description |
|---|---|---|
VoucherRoute | Object | The complete and updated VoucherRoute object for the disbursement. |
Example Body
Section titled βExample Bodyβ{ "TID": "14966718673", "ReverseTID": "14969058673", "UIDx": 637, "DisbursementID": "7bcddfd9-5b87-4d61-adb7-16f2c0cb32c1", "Name": "Disbursement Test #1", "Status": "Initializing...", "Username": "FunderDemo", "ExpectedTotal": 208006280, "FeesTotal": 99960, "RollbackTotal": 208006280, "RollbackFeesTotal": 99960, "CostPerManualVoucher": 100, "CostPerUserVoucher": 10, "VoucherCount": 9996, "ScheduledTime": "2025/11/06 13:52", "ShouldNotify": false, "IsSingleUse": true, "ShowVouchers": false, "CheckIDCellMatch": true, "URL": "https://dev1celbux.appspot.com/FAPI?cmd=wbin", "Community": "fundingco"}curl -X POST '{api-url}/rollback/start?ns={community}' \-H 'Authorization: bearer YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"UIDx":637,"Metadata":"{\"ActorUserIDs\": \"547828938941114\"}"}'using System;using System.Net.Http;using System.Text;using System.Threading.Tasks;
class Program{ static async Task Main(string[] args) { var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "{api-url}/rollback/start?ns={community}"); request.Headers.Add("Authorization", "bearer YOUR_TOKEN");
var jsonPayload = @"{ ""UIDx"": 637, ""Metadata"": ""{\""ActorUserIDs\"": \""547828938941114\""}""}"; request.Content = new StringContent(jsonPayload, Encoding.UTF8, "application/json");
var response = await client.SendAsync(request); response.EnsureSuccessStatusCode();
var responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); }}package main
import ( "fmt" "io/ioutil" "net/http" "strings")
func main() { url := "{api-url}/rollback/start?ns={community}" payload := strings.NewReader(`{"UIDx":637,"Metadata":"{\"ActorUserIDs\": \"547828938941114\"}"}`)
req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "bearer YOUR_TOKEN") req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req) defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body) fmt.Println(string(body))}import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;
public class ApiRequest { public static void main(String[] args) throws Exception { var payload = """ { "UIDx": 637, "Metadata": "{\"ActorUserIDs\": \"547828938941114\"}"} """;
var request = HttpRequest.newBuilder() .uri(URI.create("{api-url}/rollback/start?ns={community}")) .header("Authorization", "bearer YOUR_TOKEN") .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(payload)) .build();
var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); }}// Requires Node.js v18+(async () => { const url = '{api-url}/rollback/start?ns={community}'; const payload = { "UIDx": 637, "Metadata": { "ActorUserIDs": "547828938941114" }};
try { const response = await fetch(url, { method: 'POST', headers: { 'Authorization': 'bearer YOUR_TOKEN', 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }); const data = await response.json(); console.log(data); } catch (error) { console.error('Error:', error); }})();<?php$curl = curl_init();
curl_setopt_array($curl, array( CURLOPT_URL => '{api-url}/rollback/start?ns={community}', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => '{ "UIDx": 637, "Metadata": "{\"ActorUserIDs\": \"547828938941114\"}"}', CURLOPT_HTTPHEADER => array( 'Authorization: bearer YOUR_TOKEN', 'Content-Type: application/json' ),));
$response = curl_exec($curl);curl_close($curl);echo $response;import requestsimport json
url = "{api-url}/rollback/start?ns={community}"payload = { "UIDx": 637, "Metadata": { "ActorUserIDs": "547828938941114" }}
headers = { "Authorization": "bearer YOUR_TOKEN", "Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)print(response.json())require 'uri'require 'net/http'require 'json'
url = URI("{api-url}/rollback/start?ns={community}")
http = Net::HTTP.new(url.host, url.port)http.use_ssl = true
request = Net::HTTP::Post.new(url)request["Authorization"] = 'bearer YOUR_TOKEN'request["Content-Type"] = 'application/json'
request.body = JSON.dump({ "UIDx": 637, "Metadata": { "ActorUserIDs": "547828938941114" }})
response = http.request(request)puts response.read_body