List Credit Memos
curl --request GET \
--url https://api.meetcampfire.com/coa/api/v1/credit-memoimport requests
url = "https://api.meetcampfire.com/coa/api/v1/credit-memo"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.meetcampfire.com/coa/api/v1/credit-memo', 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.meetcampfire.com/coa/api/v1/credit-memo",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meetcampfire.com/coa/api/v1/credit-memo"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.meetcampfire.com/coa/api/v1/credit-memo")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetcampfire.com/coa/api/v1/credit-memo")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"count": 150,
"next": "http://api.example.com/credit-memos/?limit=20&offset=20",
"previous": null,
"results": [
{
"id": 4258,
"lines": [
{
"id": 5449,
"account_number": "4107",
"account_name": "4107 - Subscription fees",
"product_name": "Annual Subscription",
"department_name": "Engineering",
"tags": [
{
"id": 7736,
"parent_name": null,
"parent": null,
"name": "Other",
"created_at": "2025-06-18T21:09:34+0000",
"last_modified_at": "2025-06-18T21:09:34+0000",
"group": null
}
],
"description": "Credit for overpayment on annual subscription",
"amount": 1000.23,
"created_at": "2025-07-25T21:04:38+0000",
"last_modified_at": "2025-07-25T21:04:38+0000",
"product": 3679,
"account": 169208,
"department": 35
}
],
"payments": [],
"total_amount": 1000.23,
"amount_used": 0,
"amount_remaining": 1000.23,
"entity_name": "Top Level",
"entity_currency": "USD",
"client_name": "Client A",
"credit_account_name": "5230 - Cloud Credits",
"attachments": [],
"credit_memo_number": "CM-0000008",
"voided_date": null,
"ref_number": null,
"credit_memo_date": "2025-07-01",
"applied_date": null,
"message_on_credit_memo": "Credit memo for annual subscription overpayment. Thank you for your business.",
"application_status": "open",
"currency": "USD",
"exchange_rate": 1,
"exchange_rate_book": 1,
"created_at": "2025-07-25T21:04:38+0000",
"last_modified_at": "2025-07-25T21:04:38+0000",
"customer": 2,
"entity": 54,
"client": 33973,
"credit_account": 41905,
"journal_entry": 7491953,
"contract": null,
"voided_journal_entry": null
}
]
}
]
}Accounts Receivable
List Credit Memos
Retrieves a paginated list of accounting credit memos with comprehensive filtering and sorting capabilities.
This endpoint provides a powerful interface for browsing and searching credit memos with:
- Advanced filtering by date ranges, status, clients, entities, and contracts
- Full-text search across credit memo numbers, messages, and client names
- Flexible sorting by multiple fields including amounts and relationships
- Optimized performance with efficient database queries and pagination
- Complete credit memo details including line items, payment status, and accounting relationships
Key Features:
- Date range filtering for credit memo creation and application dates
- Status-based filtering (open, partially_used, used, voided)
- Client and entity-based filtering with hierarchical client support
- Contract association filtering for revenue recognition workflows
- Full-text search capabilities across key fields
Query Parameters:
start_date,end_date: Filter by credit memo date rangestatus: Filter by application status (open, partially_used, used, voided)q: Full-text search across credit memo number, message, and client nameclient: Filter by specific client IDs (supports multiple values)entity: Filter by specific entity IDs (supports multiple values)contract: Filter by specific contract IDs (supports multiple values)sort: Sort by various fields (credit_memo_date, client_name, total_amount, etc.)limit,offset: Pagination controls for large result sets
GET
/
coa
/
api
/
v1
/
credit-memo
List Credit Memos
curl --request GET \
--url https://api.meetcampfire.com/coa/api/v1/credit-memoimport requests
url = "https://api.meetcampfire.com/coa/api/v1/credit-memo"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.meetcampfire.com/coa/api/v1/credit-memo', 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.meetcampfire.com/coa/api/v1/credit-memo",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.meetcampfire.com/coa/api/v1/credit-memo"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.meetcampfire.com/coa/api/v1/credit-memo")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetcampfire.com/coa/api/v1/credit-memo")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"count": 150,
"next": "http://api.example.com/credit-memos/?limit=20&offset=20",
"previous": null,
"results": [
{
"id": 4258,
"lines": [
{
"id": 5449,
"account_number": "4107",
"account_name": "4107 - Subscription fees",
"product_name": "Annual Subscription",
"department_name": "Engineering",
"tags": [
{
"id": 7736,
"parent_name": null,
"parent": null,
"name": "Other",
"created_at": "2025-06-18T21:09:34+0000",
"last_modified_at": "2025-06-18T21:09:34+0000",
"group": null
}
],
"description": "Credit for overpayment on annual subscription",
"amount": 1000.23,
"created_at": "2025-07-25T21:04:38+0000",
"last_modified_at": "2025-07-25T21:04:38+0000",
"product": 3679,
"account": 169208,
"department": 35
}
],
"payments": [],
"total_amount": 1000.23,
"amount_used": 0,
"amount_remaining": 1000.23,
"entity_name": "Top Level",
"entity_currency": "USD",
"client_name": "Client A",
"credit_account_name": "5230 - Cloud Credits",
"attachments": [],
"credit_memo_number": "CM-0000008",
"voided_date": null,
"ref_number": null,
"credit_memo_date": "2025-07-01",
"applied_date": null,
"message_on_credit_memo": "Credit memo for annual subscription overpayment. Thank you for your business.",
"application_status": "open",
"currency": "USD",
"exchange_rate": 1,
"exchange_rate_book": 1,
"created_at": "2025-07-25T21:04:38+0000",
"last_modified_at": "2025-07-25T21:04:38+0000",
"customer": 2,
"entity": 54,
"client": 33973,
"credit_account": 41905,
"journal_entry": 7491953,
"contract": null,
"voided_journal_entry": null
}
]
}
]
}Query Parameters
Filter by client IDs (can specify multiple)
Filter by contract IDs (can specify multiple)
Filter credit memos created on or before this date (YYYY-MM-DD format)
Filter by entity IDs (can specify multiple)
Number of results to return per page
Number of results to skip for pagination
Search credit memo numbers, messages, and client names
Sort results by field (prefix with - for descending)
Available options:
-amount_used, -client_name, -credit_memo_date, -credit_memo_number, -total_amount, amount_used, client_name, credit_memo_date, credit_memo_number, total_amount Filter credit memos created on or after this date (YYYY-MM-DD format)
Filter by application status
Available options:
open, partially_used, used, voided