curl -X POST https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft \
-u "YOUR_UUID:YOUR_SECRET" \
-H "idempotency-Key: cn-req-draft-001" \
-H "X-API-Version: 1.2" \
-H "Content-Type: application/json" \
-d '{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}'
const response = await fetch("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft", {
method: "POST",
headers: {
Authorization: "Basic " + Buffer.from("YOUR_UUID:YOUR_SECRET").toString("base64"),
"idempotency-Key": "cn-req-draft-001",
"X-API-Version": "1.2",
"Content-Type": "application/json",
},
body: JSON.stringify({
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
"https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft",
auth=("YOUR_UUID", "YOUR_SECRET"),
headers={
"idempotency-Key": "cn-req-draft-001",
"X-API-Version": "1.2",
},
json={
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours",
},
)
print(response.json())
require "net/http"
require "json"
require "uri"
uri = URI("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft")
request = Net::HTTP::Post.new(uri)
request.basic_auth("YOUR_UUID", "YOUR_SECRET")
request["idempotency-Key"] = "cn-req-draft-001"
request["X-API-Version"] = "1.2"
request["Content-Type"] = "application/json"
request.body = <<~JSON
{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.parse(response.body)
<?php
$ch = curl_init("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_USERPWD => "YOUR_UUID:YOUR_SECRET",
CURLOPT_HTTPHEADER => [
"idempotency-Key: cn-req-draft-001",
"X-API-Version: 1.2",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => <<<'JSON'
{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}
JSON,
]);
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Base64;
public class Example {
public static void main(String[] args) throws Exception {
String credentials = Base64.getEncoder()
.encodeToString("YOUR_UUID:YOUR_SECRET".getBytes());
String body = String.join("\n",
"{",
" \"invoice_id\": \"24de1b2b-6875-4cca-927d-2ad3c4d564b5\",",
" \"amount\": 100,",
" \"currency\": \"AUD\",",
" \"reason\": \"Customer discount / Service dispute\",",
" \"description\": \"100 AUD credit issued for overbilled service hours\"",
"}"
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft"))
.header("Authorization", "Basic " + credentials)
.header("idempotency-Key", "cn-req-draft-001")
.header("X-API-Version", "1.2")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}`)
req, err := http.NewRequest("POST", "https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft", body)
if err != nil {
panic(err)
}
req.SetBasicAuth("YOUR_UUID", "YOUR_SECRET")
req.Header.Set("idempotency-Key", "cn-req-draft-001")
req.Header.Set("X-API-Version", "1.2")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
data, _ := io.ReadAll(res.Body)
fmt.Println(string(data))
}
using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft");
request.Headers.Authorization = new AuthenticationHeaderValue(
"Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("YOUR_UUID:YOUR_SECRET")));
request.Headers.Add("idempotency-Key", "cn-req-draft-001");
request.Headers.Add("X-API-Version", "1.2");
request.Content = new StringContent(@"{
""invoice_id"": ""24de1b2b-6875-4cca-927d-2ad3c4d564b5"",
""amount"": 100,
""currency"": ""AUD"",
""reason"": ""Customer discount / Service dispute"",
""description"": ""100 AUD credit issued for overbilled service hours""
}", Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
{
"success": true,
"message": "Draft credit note created successfully",
"data": {
"id": 3,
"credit_note_number": "CN-0003",
"client_id": "4407c3ba-10c9-4822-9f51-c2c96692f8d7",
"customer_id": "4407c3ba-10c9-4822-9f51-c2c96692f8d7",
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"invoice_number": "INV-0023",
"payment_id": null,
"total_amount": "100.00",
"remaining_amount": "100.00",
"applied_amount": "0.00",
"currency": "AUD",
"status": "DRAFT",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours",
"date": "2026-09-17T10:45:02.741Z",
"updated_at": "2026-09-17T10:45:02.743Z",
"created_at": "2026-09-17T10:45:02.743Z"
}
}
Credit notes
Create draft credit note
Creates a new credit note in DRAFT state against an invoice. Drafts can be edited or deleted prior to official issuance.
POST
/
credit-notes
/
draft
curl -X POST https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft \
-u "YOUR_UUID:YOUR_SECRET" \
-H "idempotency-Key: cn-req-draft-001" \
-H "X-API-Version: 1.2" \
-H "Content-Type: application/json" \
-d '{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}'
const response = await fetch("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft", {
method: "POST",
headers: {
Authorization: "Basic " + Buffer.from("YOUR_UUID:YOUR_SECRET").toString("base64"),
"idempotency-Key": "cn-req-draft-001",
"X-API-Version": "1.2",
"Content-Type": "application/json",
},
body: JSON.stringify({
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
"https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft",
auth=("YOUR_UUID", "YOUR_SECRET"),
headers={
"idempotency-Key": "cn-req-draft-001",
"X-API-Version": "1.2",
},
json={
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours",
},
)
print(response.json())
require "net/http"
require "json"
require "uri"
uri = URI("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft")
request = Net::HTTP::Post.new(uri)
request.basic_auth("YOUR_UUID", "YOUR_SECRET")
request["idempotency-Key"] = "cn-req-draft-001"
request["X-API-Version"] = "1.2"
request["Content-Type"] = "application/json"
request.body = <<~JSON
{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.parse(response.body)
<?php
$ch = curl_init("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_USERPWD => "YOUR_UUID:YOUR_SECRET",
CURLOPT_HTTPHEADER => [
"idempotency-Key: cn-req-draft-001",
"X-API-Version: 1.2",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => <<<'JSON'
{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}
JSON,
]);
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Base64;
public class Example {
public static void main(String[] args) throws Exception {
String credentials = Base64.getEncoder()
.encodeToString("YOUR_UUID:YOUR_SECRET".getBytes());
String body = String.join("\n",
"{",
" \"invoice_id\": \"24de1b2b-6875-4cca-927d-2ad3c4d564b5\",",
" \"amount\": 100,",
" \"currency\": \"AUD\",",
" \"reason\": \"Customer discount / Service dispute\",",
" \"description\": \"100 AUD credit issued for overbilled service hours\"",
"}"
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft"))
.header("Authorization", "Basic " + credentials)
.header("idempotency-Key", "cn-req-draft-001")
.header("X-API-Version", "1.2")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}`)
req, err := http.NewRequest("POST", "https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft", body)
if err != nil {
panic(err)
}
req.SetBasicAuth("YOUR_UUID", "YOUR_SECRET")
req.Header.Set("idempotency-Key", "cn-req-draft-001")
req.Header.Set("X-API-Version", "1.2")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
data, _ := io.ReadAll(res.Body)
fmt.Println(string(data))
}
using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft");
request.Headers.Authorization = new AuthenticationHeaderValue(
"Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("YOUR_UUID:YOUR_SECRET")));
request.Headers.Add("idempotency-Key", "cn-req-draft-001");
request.Headers.Add("X-API-Version", "1.2");
request.Content = new StringContent(@"{
""invoice_id"": ""24de1b2b-6875-4cca-927d-2ad3c4d564b5"",
""amount"": 100,
""currency"": ""AUD"",
""reason"": ""Customer discount / Service dispute"",
""description"": ""100 AUD credit issued for overbilled service hours""
}", Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
{
"success": true,
"message": "Draft credit note created successfully",
"data": {
"id": 3,
"credit_note_number": "CN-0003",
"client_id": "4407c3ba-10c9-4822-9f51-c2c96692f8d7",
"customer_id": "4407c3ba-10c9-4822-9f51-c2c96692f8d7",
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"invoice_number": "INV-0023",
"payment_id": null,
"total_amount": "100.00",
"remaining_amount": "100.00",
"applied_amount": "0.00",
"currency": "AUD",
"status": "DRAFT",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours",
"date": "2026-09-17T10:45:02.741Z",
"updated_at": "2026-09-17T10:45:02.743Z",
"created_at": "2026-09-17T10:45:02.743Z"
}
}
Headers
string
default:"1.2"
required
The API version to use. Supported versions are
1.1 and 1.2.string
A unique key so a retried request is not processed twice.
Request Body Parameters
string
required
The unique identifier (UUID) of the target invoice to credit.
number
required
The total amount to credit. Must be greater than 0.
string
Three-letter ISO currency code (e.g.
AUD, USD, EUR). Defaults to AUD.string
required
Reason category for issuing credit (e.g. Overbilled service hours, Customer discount / Service dispute, Billing error / Price adjustment).
string
Detailed explanatory notes or accounting memo.
Response Body
number
HTTP status code (200 / 201).
string
Confirmation message describing the operation result.
string
Unique identifier of the created credit note draft.
string
Set to
DRAFT until the credit note is officially issued.string
Current lifecycle state, initially
DRAFT.number
The total credit amount for this credit note.
number
Unallocated credit balance remaining.
Response Codes
| Code | Description |
|---|---|
| 200 | Draft credit note created successfully. |
| 400 | Bad Request. Missing required fields or invalid credit amount. |
| 401 | Unauthorized. Missing or invalid credentials. |
| 404 | Not Found. Target invoice not found. |
| 500 | Internal server error. |
curl -X POST https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft \
-u "YOUR_UUID:YOUR_SECRET" \
-H "idempotency-Key: cn-req-draft-001" \
-H "X-API-Version: 1.2" \
-H "Content-Type: application/json" \
-d '{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}'
const response = await fetch("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft", {
method: "POST",
headers: {
Authorization: "Basic " + Buffer.from("YOUR_UUID:YOUR_SECRET").toString("base64"),
"idempotency-Key": "cn-req-draft-001",
"X-API-Version": "1.2",
"Content-Type": "application/json",
},
body: JSON.stringify({
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
"https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft",
auth=("YOUR_UUID", "YOUR_SECRET"),
headers={
"idempotency-Key": "cn-req-draft-001",
"X-API-Version": "1.2",
},
json={
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours",
},
)
print(response.json())
require "net/http"
require "json"
require "uri"
uri = URI("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft")
request = Net::HTTP::Post.new(uri)
request.basic_auth("YOUR_UUID", "YOUR_SECRET")
request["idempotency-Key"] = "cn-req-draft-001"
request["X-API-Version"] = "1.2"
request["Content-Type"] = "application/json"
request.body = <<~JSON
{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}
JSON
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.parse(response.body)
<?php
$ch = curl_init("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_USERPWD => "YOUR_UUID:YOUR_SECRET",
CURLOPT_HTTPHEADER => [
"idempotency-Key: cn-req-draft-001",
"X-API-Version: 1.2",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => <<<'JSON'
{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}
JSON,
]);
$response = curl_exec($ch);
curl_close($ch);
print_r(json_decode($response, true));
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Base64;
public class Example {
public static void main(String[] args) throws Exception {
String credentials = Base64.getEncoder()
.encodeToString("YOUR_UUID:YOUR_SECRET".getBytes());
String body = String.join("\n",
"{",
" \"invoice_id\": \"24de1b2b-6875-4cca-927d-2ad3c4d564b5\",",
" \"amount\": 100,",
" \"currency\": \"AUD\",",
" \"reason\": \"Customer discount / Service dispute\",",
" \"description\": \"100 AUD credit issued for overbilled service hours\"",
"}"
);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft"))
.header("Authorization", "Basic " + credentials)
.header("idempotency-Key", "cn-req-draft-001")
.header("X-API-Version", "1.2")
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"amount": 100,
"currency": "AUD",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours"
}`)
req, err := http.NewRequest("POST", "https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft", body)
if err != nil {
panic(err)
}
req.SetBasicAuth("YOUR_UUID", "YOUR_SECRET")
req.Header.Set("idempotency-Key", "cn-req-draft-001")
req.Header.Set("X-API-Version", "1.2")
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
data, _ := io.ReadAll(res.Body)
fmt.Println(string(data))
}
using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://qa-payments.mygigsters.com.au/api/v1/credit-notes/draft");
request.Headers.Authorization = new AuthenticationHeaderValue(
"Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("YOUR_UUID:YOUR_SECRET")));
request.Headers.Add("idempotency-Key", "cn-req-draft-001");
request.Headers.Add("X-API-Version", "1.2");
request.Content = new StringContent(@"{
""invoice_id"": ""24de1b2b-6875-4cca-927d-2ad3c4d564b5"",
""amount"": 100,
""currency"": ""AUD"",
""reason"": ""Customer discount / Service dispute"",
""description"": ""100 AUD credit issued for overbilled service hours""
}", Encoding.UTF8, "application/json");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
{
"success": true,
"message": "Draft credit note created successfully",
"data": {
"id": 3,
"credit_note_number": "CN-0003",
"client_id": "4407c3ba-10c9-4822-9f51-c2c96692f8d7",
"customer_id": "4407c3ba-10c9-4822-9f51-c2c96692f8d7",
"invoice_id": "24de1b2b-6875-4cca-927d-2ad3c4d564b5",
"invoice_number": "INV-0023",
"payment_id": null,
"total_amount": "100.00",
"remaining_amount": "100.00",
"applied_amount": "0.00",
"currency": "AUD",
"status": "DRAFT",
"reason": "Customer discount / Service dispute",
"description": "100 AUD credit issued for overbilled service hours",
"date": "2026-09-17T10:45:02.741Z",
"updated_at": "2026-09-17T10:45:02.743Z",
"created_at": "2026-09-17T10:45:02.743Z"
}
}
Last modified on November 10, 2026
Was this page helpful?
