curl --request POST \
--url https://api.arcuserp.com/v1/customer-credits/{id}/payout \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": 123,
"reason": "<string>",
"acknowledge_open_invoices": true
}
'import requests
url = "https://api.arcuserp.com/v1/customer-credits/{id}/payout"
payload = {
"amount": 123,
"reason": "<string>",
"acknowledge_open_invoices": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({amount: 123, reason: '<string>', acknowledge_open_invoices: true})
};
fetch('https://api.arcuserp.com/v1/customer-credits/{id}/payout', 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.arcuserp.com/v1/customer-credits/{id}/payout",
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([
'amount' => 123,
'reason' => '<string>',
'acknowledge_open_invoices' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.arcuserp.com/v1/customer-credits/{id}/payout"
payload := strings.NewReader("{\n \"amount\": 123,\n \"reason\": \"<string>\",\n \"acknowledge_open_invoices\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.arcuserp.com/v1/customer-credits/{id}/payout")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 123,\n \"reason\": \"<string>\",\n \"acknowledge_open_invoices\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/customer-credits/{id}/payout")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 123,\n \"reason\": \"<string>\",\n \"acknowledge_open_invoices\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"payout_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credit_memo_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credit_memo_number": "<string>",
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount": 123,
"balance_remaining": 123,
"status": "partially_used",
"bank_check_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"check_number": "<string>",
"journal_entry_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"entry_number": "<string>",
"source_payment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Pay out a customer credit memo by check
Refunds a customer’s credit memo by check instead of applying it to an invoice: one outbound refund check is written for the amount, one journal entry debits customer credits and credits check clearing on the entity’s business day, the memo’s balance and the account’s credit balance go down by the amount, and the memo becomes partially_used or fully_applied (a payout never voids the memo). Requires the ar:approve scope plus the per-user payments.refund_void permission.
curl --request POST \
--url https://api.arcuserp.com/v1/customer-credits/{id}/payout \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": 123,
"reason": "<string>",
"acknowledge_open_invoices": true
}
'import requests
url = "https://api.arcuserp.com/v1/customer-credits/{id}/payout"
payload = {
"amount": 123,
"reason": "<string>",
"acknowledge_open_invoices": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({amount: 123, reason: '<string>', acknowledge_open_invoices: true})
};
fetch('https://api.arcuserp.com/v1/customer-credits/{id}/payout', 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.arcuserp.com/v1/customer-credits/{id}/payout",
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([
'amount' => 123,
'reason' => '<string>',
'acknowledge_open_invoices' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.arcuserp.com/v1/customer-credits/{id}/payout"
payload := strings.NewReader("{\n \"amount\": 123,\n \"reason\": \"<string>\",\n \"acknowledge_open_invoices\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.arcuserp.com/v1/customer-credits/{id}/payout")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 123,\n \"reason\": \"<string>\",\n \"acknowledge_open_invoices\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/customer-credits/{id}/payout")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 123,\n \"reason\": \"<string>\",\n \"acknowledge_open_invoices\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"payout_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credit_memo_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"credit_memo_number": "<string>",
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"amount": 123,
"balance_remaining": 123,
"status": "partially_used",
"bank_check_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"check_number": "<string>",
"journal_entry_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"entry_number": "<string>",
"source_payment_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Headers
Optional idempotency key (UUID). Re-POST with same key returns cached 200 without re-processing.
Path Parameters
Body
The amount to pay out. Omitted, the memo's whole remaining balance.
Why the credit is paid out; recorded on the payout.
500true pays out although the customer has open invoices; otherwise such a payout is refused with the invoices named.
Response
The credit memo was paid out by check.
true The memo's balance after the payout.
partially_used, fully_applied The refund check; its number is read from the check, and it changes when the check is first printed.
The receipt the credit came from, for a credit made from unapplied cash or an overpayment.
Was this page helpful?

