curl --request POST \
--url https://qubesync.com/api/v1/connections/{connection_id}/credit_memos \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"customer_list_id": "80000001-1234567890",
"transaction_date": "2026-06-02",
"ref_number": "CM-1001",
"bill_address": {
"addr1": "123 Main St",
"city": "Austin",
"state": "TX",
"postal_code": "78701"
},
"memo": "Created via pre-built endpoint",
"lines": [
{
"item_list_id": "80000002-1234567890",
"description": "Returned merchandise",
"quantity": 1,
"rate": "150.00"
}
]
}
'import requests
url = "https://qubesync.com/api/v1/connections/{connection_id}/credit_memos"
payload = {
"customer_list_id": "80000001-1234567890",
"transaction_date": "2026-06-02",
"ref_number": "CM-1001",
"bill_address": {
"addr1": "123 Main St",
"city": "Austin",
"state": "TX",
"postal_code": "78701"
},
"memo": "Created via pre-built endpoint",
"lines": [
{
"item_list_id": "80000002-1234567890",
"description": "Returned merchandise",
"quantity": 1,
"rate": "150.00"
}
]
}
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({
customer_list_id: '80000001-1234567890',
transaction_date: '2026-06-02',
ref_number: 'CM-1001',
bill_address: {addr1: '123 Main St', city: 'Austin', state: 'TX', postal_code: '78701'},
memo: 'Created via pre-built endpoint',
lines: [
{
item_list_id: '80000002-1234567890',
description: 'Returned merchandise',
quantity: 1,
rate: '150.00'
}
]
})
};
fetch('https://qubesync.com/api/v1/connections/{connection_id}/credit_memos', 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://qubesync.com/api/v1/connections/{connection_id}/credit_memos",
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([
'customer_list_id' => '80000001-1234567890',
'transaction_date' => '2026-06-02',
'ref_number' => 'CM-1001',
'bill_address' => [
'addr1' => '123 Main St',
'city' => 'Austin',
'state' => 'TX',
'postal_code' => '78701'
],
'memo' => 'Created via pre-built endpoint',
'lines' => [
[
'item_list_id' => '80000002-1234567890',
'description' => 'Returned merchandise',
'quantity' => 1,
'rate' => '150.00'
]
]
]),
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://qubesync.com/api/v1/connections/{connection_id}/credit_memos"
payload := strings.NewReader("{\n \"customer_list_id\": \"80000001-1234567890\",\n \"transaction_date\": \"2026-06-02\",\n \"ref_number\": \"CM-1001\",\n \"bill_address\": {\n \"addr1\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"postal_code\": \"78701\"\n },\n \"memo\": \"Created via pre-built endpoint\",\n \"lines\": [\n {\n \"item_list_id\": \"80000002-1234567890\",\n \"description\": \"Returned merchandise\",\n \"quantity\": 1,\n \"rate\": \"150.00\"\n }\n ]\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://qubesync.com/api/v1/connections/{connection_id}/credit_memos")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"customer_list_id\": \"80000001-1234567890\",\n \"transaction_date\": \"2026-06-02\",\n \"ref_number\": \"CM-1001\",\n \"bill_address\": {\n \"addr1\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"postal_code\": \"78701\"\n },\n \"memo\": \"Created via pre-built endpoint\",\n \"lines\": [\n {\n \"item_list_id\": \"80000002-1234567890\",\n \"description\": \"Returned merchandise\",\n \"quantity\": 1,\n \"rate\": \"150.00\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://qubesync.com/api/v1/connections/{connection_id}/credit_memos")
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 \"customer_list_id\": \"80000001-1234567890\",\n \"transaction_date\": \"2026-06-02\",\n \"ref_number\": \"CM-1001\",\n \"bill_address\": {\n \"addr1\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"postal_code\": \"78701\"\n },\n \"memo\": \"Created via pre-built endpoint\",\n \"lines\": [\n {\n \"item_list_id\": \"80000002-1234567890\",\n \"description\": \"Returned merchandise\",\n \"quantity\": 1,\n \"rate\": \"150.00\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"state": "waiting",
"request_xml": "<QBXML><QBXMLMsgsRq onError='stopOnError'><CustomerQueryRq requestID='1'><MaxReturned>100</MaxReturned></CustomerQueryRq></QBXMLMsgsRq></QBXML>",
"connection_id": "123e4567-e89b-12d3-a456-426614174000",
"webhook_state": "not_applicable",
"request_json": {
"version": "13.0",
"request": {
"name": "CustomerQueryRq",
"attributes": {
"requestID": "1"
},
"children": [
{
"name": "MaxReturned",
"text": "100"
}
]
}
},
"response_xml": "<QBXML><QBXMLMsgsRs statusCode='0' statusSeverity='Info' statusMessage='Status OK'><CustomerQueryRs requestID='1' statusCode='0' statusSeverity='Info' statusMessage='Status OK'><CustomerRet><ListID>80000001-1234567890</ListID><Name>Sample Customer</Name></CustomerRet></CustomerQueryRs></QBXMLMsgsRs></QBXML>",
"response_json": [
{}
],
"webhook_url": "https://example.com/webhook",
"webhook_attempts": [
{
"attempted_at": "2023-11-07T05:31:56Z",
"response": "<string>"
}
],
"webhook_error": "<string>",
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
},
"links": {
"self": "/api/v1/connections/123e4567-e89b-12d3-a456-426614174000/queued_requests/550e8400-e29b-41d4-a716-446655440000",
"ui": "/app/queued_requests/550e8400-e29b-41d4-a716-446655440000",
"connection_ui": "/app/connections/123e4567-e89b-12d3-a456-426614174000"
},
"inserted_at": "2023-01-01T12:00:00Z",
"updated_at": "2023-01-01T12:00:01Z"
}
}{
"error": {
"code": "invalid_request",
"message": "The request was invalid"
}
}{
"error": {
"code": "unauthorized",
"message": "Authentication required"
}
}{
"error": {
"code": "not_found",
"message": "The requested resource was not found"
}
}Create Credit Memo
Create a credit memo in QuickBooks.
curl --request POST \
--url https://qubesync.com/api/v1/connections/{connection_id}/credit_memos \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"customer_list_id": "80000001-1234567890",
"transaction_date": "2026-06-02",
"ref_number": "CM-1001",
"bill_address": {
"addr1": "123 Main St",
"city": "Austin",
"state": "TX",
"postal_code": "78701"
},
"memo": "Created via pre-built endpoint",
"lines": [
{
"item_list_id": "80000002-1234567890",
"description": "Returned merchandise",
"quantity": 1,
"rate": "150.00"
}
]
}
'import requests
url = "https://qubesync.com/api/v1/connections/{connection_id}/credit_memos"
payload = {
"customer_list_id": "80000001-1234567890",
"transaction_date": "2026-06-02",
"ref_number": "CM-1001",
"bill_address": {
"addr1": "123 Main St",
"city": "Austin",
"state": "TX",
"postal_code": "78701"
},
"memo": "Created via pre-built endpoint",
"lines": [
{
"item_list_id": "80000002-1234567890",
"description": "Returned merchandise",
"quantity": 1,
"rate": "150.00"
}
]
}
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({
customer_list_id: '80000001-1234567890',
transaction_date: '2026-06-02',
ref_number: 'CM-1001',
bill_address: {addr1: '123 Main St', city: 'Austin', state: 'TX', postal_code: '78701'},
memo: 'Created via pre-built endpoint',
lines: [
{
item_list_id: '80000002-1234567890',
description: 'Returned merchandise',
quantity: 1,
rate: '150.00'
}
]
})
};
fetch('https://qubesync.com/api/v1/connections/{connection_id}/credit_memos', 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://qubesync.com/api/v1/connections/{connection_id}/credit_memos",
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([
'customer_list_id' => '80000001-1234567890',
'transaction_date' => '2026-06-02',
'ref_number' => 'CM-1001',
'bill_address' => [
'addr1' => '123 Main St',
'city' => 'Austin',
'state' => 'TX',
'postal_code' => '78701'
],
'memo' => 'Created via pre-built endpoint',
'lines' => [
[
'item_list_id' => '80000002-1234567890',
'description' => 'Returned merchandise',
'quantity' => 1,
'rate' => '150.00'
]
]
]),
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://qubesync.com/api/v1/connections/{connection_id}/credit_memos"
payload := strings.NewReader("{\n \"customer_list_id\": \"80000001-1234567890\",\n \"transaction_date\": \"2026-06-02\",\n \"ref_number\": \"CM-1001\",\n \"bill_address\": {\n \"addr1\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"postal_code\": \"78701\"\n },\n \"memo\": \"Created via pre-built endpoint\",\n \"lines\": [\n {\n \"item_list_id\": \"80000002-1234567890\",\n \"description\": \"Returned merchandise\",\n \"quantity\": 1,\n \"rate\": \"150.00\"\n }\n ]\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://qubesync.com/api/v1/connections/{connection_id}/credit_memos")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"customer_list_id\": \"80000001-1234567890\",\n \"transaction_date\": \"2026-06-02\",\n \"ref_number\": \"CM-1001\",\n \"bill_address\": {\n \"addr1\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"postal_code\": \"78701\"\n },\n \"memo\": \"Created via pre-built endpoint\",\n \"lines\": [\n {\n \"item_list_id\": \"80000002-1234567890\",\n \"description\": \"Returned merchandise\",\n \"quantity\": 1,\n \"rate\": \"150.00\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://qubesync.com/api/v1/connections/{connection_id}/credit_memos")
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 \"customer_list_id\": \"80000001-1234567890\",\n \"transaction_date\": \"2026-06-02\",\n \"ref_number\": \"CM-1001\",\n \"bill_address\": {\n \"addr1\": \"123 Main St\",\n \"city\": \"Austin\",\n \"state\": \"TX\",\n \"postal_code\": \"78701\"\n },\n \"memo\": \"Created via pre-built endpoint\",\n \"lines\": [\n {\n \"item_list_id\": \"80000002-1234567890\",\n \"description\": \"Returned merchandise\",\n \"quantity\": 1,\n \"rate\": \"150.00\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"state": "waiting",
"request_xml": "<QBXML><QBXMLMsgsRq onError='stopOnError'><CustomerQueryRq requestID='1'><MaxReturned>100</MaxReturned></CustomerQueryRq></QBXMLMsgsRq></QBXML>",
"connection_id": "123e4567-e89b-12d3-a456-426614174000",
"webhook_state": "not_applicable",
"request_json": {
"version": "13.0",
"request": {
"name": "CustomerQueryRq",
"attributes": {
"requestID": "1"
},
"children": [
{
"name": "MaxReturned",
"text": "100"
}
]
}
},
"response_xml": "<QBXML><QBXMLMsgsRs statusCode='0' statusSeverity='Info' statusMessage='Status OK'><CustomerQueryRs requestID='1' statusCode='0' statusSeverity='Info' statusMessage='Status OK'><CustomerRet><ListID>80000001-1234567890</ListID><Name>Sample Customer</Name></CustomerRet></CustomerQueryRs></QBXMLMsgsRs></QBXML>",
"response_json": [
{}
],
"webhook_url": "https://example.com/webhook",
"webhook_attempts": [
{
"attempted_at": "2023-11-07T05:31:56Z",
"response": "<string>"
}
],
"webhook_error": "<string>",
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
},
"links": {
"self": "/api/v1/connections/123e4567-e89b-12d3-a456-426614174000/queued_requests/550e8400-e29b-41d4-a716-446655440000",
"ui": "/app/queued_requests/550e8400-e29b-41d4-a716-446655440000",
"connection_ui": "/app/connections/123e4567-e89b-12d3-a456-426614174000"
},
"inserted_at": "2023-01-01T12:00:00Z",
"updated_at": "2023-01-01T12:00:01Z"
}
}{
"error": {
"code": "invalid_request",
"message": "The request was invalid"
}
}{
"error": {
"code": "unauthorized",
"message": "Authentication required"
}
}{
"error": {
"code": "not_found",
"message": "The requested resource was not found"
}
}Authorizations
Use your app's API_KEY as the username, and leave the password blank
Path Parameters
ID of the connection to use for credit memo creation
Query Parameters
A custom ID that can be used to identify the request and response. This could be your local ID for the request.
"1"
Optional URL to receive a webhook when the request is completed
Body
Customer ListID for the credit memo
Credit memo transaction date (YYYY-MM-DD)
Credit memo line items
1Show child attributes
Show child attributes
Optional class ListID applied to the credit memo (and line items unless overridden)
Optional accounts receivable account ListID
Optional credit memo template ListID
Optional user-defined reference number
Optional bill-to address
Show child attributes
Show child attributes
Optional ship-to address
Show child attributes
Show child attributes
Whether the credit memo is pending/draft
Optional customer PO number
Optional payment terms ListID
Optional due date (YYYY-MM-DD)
Optional sales rep ListID
Optional FOB point
Optional ship date (YYYY-MM-DD)
Optional shipping method ListID
Optional tax item or tax group ListID applied to the entire credit memo
Optional memo for reports
Optional customer message ListID
Whether the credit memo should be queued for print
Whether the credit memo should be queued for email
Whether the line item amounts include tax
Optional customer sales tax code ListID applied to the credit memo
Optional custom field for report layouts
Optional currency exchange rate
Optional external GUID used to avoid duplicate creation
Response
Credit memo create request accepted and queued for processing. Returns a queued request object.
Show child attributes
Show child attributes

