curl --request POST \
--url https://public-test.blips.network/transfer-out \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"source": {
"accountId": "InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123"
},
"destination": {
"accountId": "ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965"
},
"amount": 12550,
"description": "Customer withdrawal"
}
'import requests
url = "https://public-test.blips.network/transfer-out"
payload = {
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"source": { "accountId": "InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123" },
"destination": { "accountId": "ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965" },
"amount": 12550,
"description": "Customer withdrawal"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: 'Customer:019542f5-b3e7-1d02-0000-000000000001',
source: {accountId: 'InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123'},
destination: {accountId: 'ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965'},
amount: 12550,
description: 'Customer withdrawal'
})
};
fetch('https://public-test.blips.network/transfer-out', 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://public-test.blips.network/transfer-out",
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([
'customerId' => 'Customer:019542f5-b3e7-1d02-0000-000000000001',
'source' => [
'accountId' => 'InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123'
],
'destination' => [
'accountId' => 'ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965'
],
'amount' => 12550,
'description' => 'Customer withdrawal'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$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://public-test.blips.network/transfer-out"
payload := strings.NewReader("{\n \"customerId\": \"Customer:019542f5-b3e7-1d02-0000-000000000001\",\n \"source\": {\n \"accountId\": \"InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123\"\n },\n \"destination\": {\n \"accountId\": \"ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965\"\n },\n \"amount\": 12550,\n \"description\": \"Customer withdrawal\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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://public-test.blips.network/transfer-out")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"Customer:019542f5-b3e7-1d02-0000-000000000001\",\n \"source\": {\n \"accountId\": \"InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123\"\n },\n \"destination\": {\n \"accountId\": \"ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965\"\n },\n \"amount\": 12550,\n \"description\": \"Customer withdrawal\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-test.blips.network/transfer-out")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"Customer:019542f5-b3e7-1d02-0000-000000000001\",\n \"source\": {\n \"accountId\": \"InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123\"\n },\n \"destination\": {\n \"accountId\": \"ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965\"\n },\n \"amount\": 12550,\n \"description\": \"Customer withdrawal\"\n}"
response = http.request(request)
puts response.read_body{
"type": "OUTGOING",
"status": "COMPLETED",
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"platformCustomerId": "dbs_cust_7Kf3Qx9Lm2Pd8vBn6sWyT",
"source": {
"accountId": "InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123"
},
"destination": {
"accountId": "ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965"
},
"amount": 12550,
"currency": "USD",
"description": "Customer withdrawal",
"createdAt": "2025-07-21T17:32:28Z",
"updatedAt": "2025-07-21T17:32:28Z",
"settledAt": "2025-07-21T17:32:28Z",
"id": "gpid_transfer_out_001"
}Create same-currency outgoing payout or withdrawal
Create a same-currency outgoing payout or withdrawal from a customer internal account to a bound external account.
curl --request POST \
--url https://public-test.blips.network/transfer-out \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"source": {
"accountId": "InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123"
},
"destination": {
"accountId": "ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965"
},
"amount": 12550,
"description": "Customer withdrawal"
}
'import requests
url = "https://public-test.blips.network/transfer-out"
payload = {
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"source": { "accountId": "InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123" },
"destination": { "accountId": "ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965" },
"amount": 12550,
"description": "Customer withdrawal"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: 'Customer:019542f5-b3e7-1d02-0000-000000000001',
source: {accountId: 'InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123'},
destination: {accountId: 'ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965'},
amount: 12550,
description: 'Customer withdrawal'
})
};
fetch('https://public-test.blips.network/transfer-out', 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://public-test.blips.network/transfer-out",
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([
'customerId' => 'Customer:019542f5-b3e7-1d02-0000-000000000001',
'source' => [
'accountId' => 'InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123'
],
'destination' => [
'accountId' => 'ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965'
],
'amount' => 12550,
'description' => 'Customer withdrawal'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$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://public-test.blips.network/transfer-out"
payload := strings.NewReader("{\n \"customerId\": \"Customer:019542f5-b3e7-1d02-0000-000000000001\",\n \"source\": {\n \"accountId\": \"InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123\"\n },\n \"destination\": {\n \"accountId\": \"ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965\"\n },\n \"amount\": 12550,\n \"description\": \"Customer withdrawal\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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://public-test.blips.network/transfer-out")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"Customer:019542f5-b3e7-1d02-0000-000000000001\",\n \"source\": {\n \"accountId\": \"InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123\"\n },\n \"destination\": {\n \"accountId\": \"ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965\"\n },\n \"amount\": 12550,\n \"description\": \"Customer withdrawal\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-test.blips.network/transfer-out")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"Customer:019542f5-b3e7-1d02-0000-000000000001\",\n \"source\": {\n \"accountId\": \"InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123\"\n },\n \"destination\": {\n \"accountId\": \"ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965\"\n },\n \"amount\": 12550,\n \"description\": \"Customer withdrawal\"\n}"
response = http.request(request)
puts response.read_body{
"type": "OUTGOING",
"status": "COMPLETED",
"customerId": "Customer:019542f5-b3e7-1d02-0000-000000000001",
"platformCustomerId": "dbs_cust_7Kf3Qx9Lm2Pd8vBn6sWyT",
"source": {
"accountId": "InternalAccount:a12dcbd6-dced-4ec4-b756-3c3a9ea3d123"
},
"destination": {
"accountId": "ExternalAccount:e85dcbd6-dced-4ec4-b756-3c3a9ea3d965"
},
"amount": 12550,
"currency": "USD",
"description": "Customer withdrawal",
"createdAt": "2025-07-21T17:32:28Z",
"updatedAt": "2025-07-21T17:32:28Z",
"settledAt": "2025-07-21T17:32:28Z",
"id": "gpid_transfer_out_001"
}Authorizations
Integration-key Basic Auth (clientId:clientSecret) as documented in docs/public/AUTHENTICATION.md.
Headers
Optional idempotency key for safely retrying the same outgoing transfer request.
Body
BLIPS customer identifier in Customer:<uuid> format that owns the internal source account and bound external destination account.
Customer internal source account that funds the same-currency outgoing payout.
Show child attributes
Show child attributes
Bound external destination account that receives the same-currency payout.
Show child attributes
Show child attributes
Outgoing payout or withdrawal amount in minor units.
x >= 1Optional payout description stored with the transfer.
Response
Same-currency outgoing payout / withdrawal created.
Canonical transaction identifier in Transaction:<uuid> format for the created same-currency outgoing payout or withdrawal.
Same-currency outgoing transfer type for this endpoint.
OUTGOING Current same-currency outgoing payout or withdrawal status.
PENDING, PROCESSING, COMPLETED, FAILED BLIPS customer identifier in Customer:<uuid> format that owns the transfer.
Platform-side customer mapping identifier in <platformslug>_cust_<base58uuid> format echoed from the bound customer.
Customer internal source account.
Show child attributes
Show child attributes
Bound external destination account.
Show child attributes
Show child attributes
Same-currency transfer amount in minor units.
x >= 1ISO 4217 currency code shared by the source and destination accounts.
Optional payout description echoed from the create request when present.
Creation timestamp.
Last update timestamp.
Settlement timestamp when the outgoing payout has completed.