cURL
curl --request POST \
--url https://api-sandbox.paychoice.com.au/api/v5/Charge \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"currency": "<string>",
"amount": 123,
"reference": "<string>",
"card[name]": "<string>",
"card[number]": "<string>",
"card[expiry_month]": 123,
"card[expiry_year]": 123,
"card[cvv]": "<string>",
"card_token": "<string>",
"bank[name]": "<string>",
"bank[bsb]": "<string>",
"bank[number]": "<string>",
"bank_token": "<string>",
"pre_authid": "<string>",
"merchant_guid": "<string>",
"phone": "<string>",
"charge_id": "<string>",
"meta_data_reference": "<string>",
"contact[phone]": "<string>",
"contact[email]": "<string>",
"address[address_line_1]": "<string>",
"address[address_line_2]": "<string>",
"address[suburb]": "<string>",
"address[state]": "<string>",
"address[post_code]": "<string>",
"address[country]": "<string>",
"3ds_charge_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"challenge_reference": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
currency: '<string>',
amount: 123,
reference: '<string>',
'card[name]': '<string>',
'card[number]': '<string>',
'card[expiry_month]': 123,
'card[expiry_year]': 123,
'card[cvv]': '<string>',
card_token: '<string>',
'bank[name]': '<string>',
'bank[bsb]': '<string>',
'bank[number]': '<string>',
bank_token: '<string>',
pre_authid: '<string>',
merchant_guid: '<string>',
phone: '<string>',
charge_id: '<string>',
meta_data_reference: '<string>',
'contact[phone]': '<string>',
'contact[email]': '<string>',
'address[address_line_1]': '<string>',
'address[address_line_2]': '<string>',
'address[suburb]': '<string>',
'address[state]': '<string>',
'address[post_code]': '<string>',
'address[country]': '<string>',
'3ds_charge_id': '3c90c3cc-0d44-4b50-8888-8dd25736052a',
challenge_reference: '<string>'
})
};
fetch('https://api-sandbox.paychoice.com.au/api/v5/Charge', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-sandbox.paychoice.com.au/api/v5/Charge"
payload = {
"currency": "<string>",
"amount": 123,
"reference": "<string>",
"card[name]": "<string>",
"card[number]": "<string>",
"card[expiry_month]": 123,
"card[expiry_year]": 123,
"card[cvv]": "<string>",
"card_token": "<string>",
"bank[name]": "<string>",
"bank[bsb]": "<string>",
"bank[number]": "<string>",
"bank_token": "<string>",
"pre_authid": "<string>",
"merchant_guid": "<string>",
"phone": "<string>",
"charge_id": "<string>",
"meta_data_reference": "<string>",
"contact[phone]": "<string>",
"contact[email]": "<string>",
"address[address_line_1]": "<string>",
"address[address_line_2]": "<string>",
"address[suburb]": "<string>",
"address[state]": "<string>",
"address[post_code]": "<string>",
"address[country]": "<string>",
"3ds_charge_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"challenge_reference": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api-sandbox.paychoice.com.au/api/v5/Charge");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Basic <encoded-value>");
request.AddJsonBody("{\n \"currency\": \"<string>\",\n \"amount\": 123,\n \"reference\": \"<string>\",\n \"card[name]\": \"<string>\",\n \"card[number]\": \"<string>\",\n \"card[expiry_month]\": 123,\n \"card[expiry_year]\": 123,\n \"card[cvv]\": \"<string>\",\n \"card_token\": \"<string>\",\n \"bank[name]\": \"<string>\",\n \"bank[bsb]\": \"<string>\",\n \"bank[number]\": \"<string>\",\n \"bank_token\": \"<string>\",\n \"pre_authid\": \"<string>\",\n \"merchant_guid\": \"<string>\",\n \"phone\": \"<string>\",\n \"charge_id\": \"<string>\",\n \"meta_data_reference\": \"<string>\",\n \"contact[phone]\": \"<string>\",\n \"contact[email]\": \"<string>\",\n \"address[address_line_1]\": \"<string>\",\n \"address[address_line_2]\": \"<string>\",\n \"address[suburb]\": \"<string>\",\n \"address[state]\": \"<string>\",\n \"address[post_code]\": \"<string>\",\n \"address[country]\": \"<string>\",\n \"3ds_charge_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"challenge_reference\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sandbox.paychoice.com.au/api/v5/Charge",
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([
'currency' => '<string>',
'amount' => 123,
'reference' => '<string>',
'card[name]' => '<string>',
'card[number]' => '<string>',
'card[expiry_month]' => 123,
'card[expiry_year]' => 123,
'card[cvv]' => '<string>',
'card_token' => '<string>',
'bank[name]' => '<string>',
'bank[bsb]' => '<string>',
'bank[number]' => '<string>',
'bank_token' => '<string>',
'pre_authid' => '<string>',
'merchant_guid' => '<string>',
'phone' => '<string>',
'charge_id' => '<string>',
'meta_data_reference' => '<string>',
'contact[phone]' => '<string>',
'contact[email]' => '<string>',
'address[address_line_1]' => '<string>',
'address[address_line_2]' => '<string>',
'address[suburb]' => '<string>',
'address[state]' => '<string>',
'address[post_code]' => '<string>',
'address[country]' => '<string>',
'3ds_charge_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'challenge_reference' => '<string>'
]),
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;
}{
"charge": {
"id": "f33a990c-237c-4e88-9bd1-eb2d655bb88c",
"reference": "INV-4325454",
"amount": "10.00",
"currency": "AUD",
"status": "Approved",
"status_code": "0",
"error": "Transaction Approved",
"error_code": "00",
"created": "2026-11-04T02:15:31.118Z",
"merchantguid": "315564b9-b863-4016-8c53-02c9d8cc80b7",
"aggregator_reference": "123456789012",
"meta_data_reference": null,
"link": { "href": "/api/v5/charge/f33a990c-237c-4e88-9bd1-eb2d655bb88c", "rel": "self" }
},
"object_type": "charge",
"from_item": 0,
"to_item": 0,
"total_count": 0
}
{
"charge": {
"id": "0c7b2e91-4d3a-4f8e-9b6c-1a2d3e4f5a6b",
"reference": "INV-4325457",
"amount": "10.51",
"currency": "AUD",
"status": "Dishonoured",
"status_code": "5",
"error": "Insufficient Funds",
"error_code": "51",
"created": "2026-11-04T02:16:02.004Z",
"merchantguid": "315564b9-b863-4016-8c53-02c9d8cc80b7",
"aggregator_reference": "123456789014",
"meta_data_reference": null,
"link": { "href": "/api/v5/charge/0c7b2e91-4d3a-4f8e-9b6c-1a2d3e4f5a6b", "rel": "self" }
},
"object_type": "charge",
"from_item": 0,
"to_item": 0,
"total_count": 0
}
Charges
Create a charge
POST
/
api
/
v5
/
Charge
cURL
curl --request POST \
--url https://api-sandbox.paychoice.com.au/api/v5/Charge \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"currency": "<string>",
"amount": 123,
"reference": "<string>",
"card[name]": "<string>",
"card[number]": "<string>",
"card[expiry_month]": 123,
"card[expiry_year]": 123,
"card[cvv]": "<string>",
"card_token": "<string>",
"bank[name]": "<string>",
"bank[bsb]": "<string>",
"bank[number]": "<string>",
"bank_token": "<string>",
"pre_authid": "<string>",
"merchant_guid": "<string>",
"phone": "<string>",
"charge_id": "<string>",
"meta_data_reference": "<string>",
"contact[phone]": "<string>",
"contact[email]": "<string>",
"address[address_line_1]": "<string>",
"address[address_line_2]": "<string>",
"address[suburb]": "<string>",
"address[state]": "<string>",
"address[post_code]": "<string>",
"address[country]": "<string>",
"3ds_charge_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"challenge_reference": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
currency: '<string>',
amount: 123,
reference: '<string>',
'card[name]': '<string>',
'card[number]': '<string>',
'card[expiry_month]': 123,
'card[expiry_year]': 123,
'card[cvv]': '<string>',
card_token: '<string>',
'bank[name]': '<string>',
'bank[bsb]': '<string>',
'bank[number]': '<string>',
bank_token: '<string>',
pre_authid: '<string>',
merchant_guid: '<string>',
phone: '<string>',
charge_id: '<string>',
meta_data_reference: '<string>',
'contact[phone]': '<string>',
'contact[email]': '<string>',
'address[address_line_1]': '<string>',
'address[address_line_2]': '<string>',
'address[suburb]': '<string>',
'address[state]': '<string>',
'address[post_code]': '<string>',
'address[country]': '<string>',
'3ds_charge_id': '3c90c3cc-0d44-4b50-8888-8dd25736052a',
challenge_reference: '<string>'
})
};
fetch('https://api-sandbox.paychoice.com.au/api/v5/Charge', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-sandbox.paychoice.com.au/api/v5/Charge"
payload = {
"currency": "<string>",
"amount": 123,
"reference": "<string>",
"card[name]": "<string>",
"card[number]": "<string>",
"card[expiry_month]": 123,
"card[expiry_year]": 123,
"card[cvv]": "<string>",
"card_token": "<string>",
"bank[name]": "<string>",
"bank[bsb]": "<string>",
"bank[number]": "<string>",
"bank_token": "<string>",
"pre_authid": "<string>",
"merchant_guid": "<string>",
"phone": "<string>",
"charge_id": "<string>",
"meta_data_reference": "<string>",
"contact[phone]": "<string>",
"contact[email]": "<string>",
"address[address_line_1]": "<string>",
"address[address_line_2]": "<string>",
"address[suburb]": "<string>",
"address[state]": "<string>",
"address[post_code]": "<string>",
"address[country]": "<string>",
"3ds_charge_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"challenge_reference": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)using RestSharp;
var options = new RestClientOptions("https://api-sandbox.paychoice.com.au/api/v5/Charge");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Basic <encoded-value>");
request.AddJsonBody("{\n \"currency\": \"<string>\",\n \"amount\": 123,\n \"reference\": \"<string>\",\n \"card[name]\": \"<string>\",\n \"card[number]\": \"<string>\",\n \"card[expiry_month]\": 123,\n \"card[expiry_year]\": 123,\n \"card[cvv]\": \"<string>\",\n \"card_token\": \"<string>\",\n \"bank[name]\": \"<string>\",\n \"bank[bsb]\": \"<string>\",\n \"bank[number]\": \"<string>\",\n \"bank_token\": \"<string>\",\n \"pre_authid\": \"<string>\",\n \"merchant_guid\": \"<string>\",\n \"phone\": \"<string>\",\n \"charge_id\": \"<string>\",\n \"meta_data_reference\": \"<string>\",\n \"contact[phone]\": \"<string>\",\n \"contact[email]\": \"<string>\",\n \"address[address_line_1]\": \"<string>\",\n \"address[address_line_2]\": \"<string>\",\n \"address[suburb]\": \"<string>\",\n \"address[state]\": \"<string>\",\n \"address[post_code]\": \"<string>\",\n \"address[country]\": \"<string>\",\n \"3ds_charge_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"challenge_reference\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sandbox.paychoice.com.au/api/v5/Charge",
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([
'currency' => '<string>',
'amount' => 123,
'reference' => '<string>',
'card[name]' => '<string>',
'card[number]' => '<string>',
'card[expiry_month]' => 123,
'card[expiry_year]' => 123,
'card[cvv]' => '<string>',
'card_token' => '<string>',
'bank[name]' => '<string>',
'bank[bsb]' => '<string>',
'bank[number]' => '<string>',
'bank_token' => '<string>',
'pre_authid' => '<string>',
'merchant_guid' => '<string>',
'phone' => '<string>',
'charge_id' => '<string>',
'meta_data_reference' => '<string>',
'contact[phone]' => '<string>',
'contact[email]' => '<string>',
'address[address_line_1]' => '<string>',
'address[address_line_2]' => '<string>',
'address[suburb]' => '<string>',
'address[state]' => '<string>',
'address[post_code]' => '<string>',
'address[country]' => '<string>',
'3ds_charge_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'challenge_reference' => '<string>'
]),
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;
}{
"charge": {
"id": "f33a990c-237c-4e88-9bd1-eb2d655bb88c",
"reference": "INV-4325454",
"amount": "10.00",
"currency": "AUD",
"status": "Approved",
"status_code": "0",
"error": "Transaction Approved",
"error_code": "00",
"created": "2026-11-04T02:15:31.118Z",
"merchantguid": "315564b9-b863-4016-8c53-02c9d8cc80b7",
"aggregator_reference": "123456789012",
"meta_data_reference": null,
"link": { "href": "/api/v5/charge/f33a990c-237c-4e88-9bd1-eb2d655bb88c", "rel": "self" }
},
"object_type": "charge",
"from_item": 0,
"to_item": 0,
"total_count": 0
}
{
"charge": {
"id": "0c7b2e91-4d3a-4f8e-9b6c-1a2d3e4f5a6b",
"reference": "INV-4325457",
"amount": "10.51",
"currency": "AUD",
"status": "Dishonoured",
"status_code": "5",
"error": "Insufficient Funds",
"error_code": "51",
"created": "2026-11-04T02:16:02.004Z",
"merchantguid": "315564b9-b863-4016-8c53-02c9d8cc80b7",
"aggregator_reference": "123456789014",
"meta_data_reference": null,
"link": { "href": "/api/v5/charge/0c7b2e91-4d3a-4f8e-9b6c-1a2d3e4f5a6b", "rel": "self" }
},
"object_type": "charge",
"from_item": 0,
"to_item": 0,
"total_count": 0
}
Creates a charge against a credit card, a bank account, or a stored token. The same endpoint captures a pre-authorisation when
A declined card charge returns HTTP
pre_authid is supplied.
- Card: supply the
card[...]fields or acard_token. Approved or declined immediately. - Bank account: supply the
bank[...]fields or abank_token. ReturnsProcessing("9"); the final result arrives through the webhook. - Capture: supply
pre_authidfrom a pre-authorisation plusamount,currencyandreference.
The JSON body uses the same bracketed key names as v4 form-data (
card[name], bank[bsb]). Send them as literal keys.402 with the same charge object and the decline details in status, error and error_code. See the guide for the full walkthrough.
{
"charge": {
"id": "f33a990c-237c-4e88-9bd1-eb2d655bb88c",
"reference": "INV-4325454",
"amount": "10.00",
"currency": "AUD",
"status": "Approved",
"status_code": "0",
"error": "Transaction Approved",
"error_code": "00",
"created": "2026-11-04T02:15:31.118Z",
"merchantguid": "315564b9-b863-4016-8c53-02c9d8cc80b7",
"aggregator_reference": "123456789012",
"meta_data_reference": null,
"link": { "href": "/api/v5/charge/f33a990c-237c-4e88-9bd1-eb2d655bb88c", "rel": "self" }
},
"object_type": "charge",
"from_item": 0,
"to_item": 0,
"total_count": 0
}
{
"charge": {
"id": "0c7b2e91-4d3a-4f8e-9b6c-1a2d3e4f5a6b",
"reference": "INV-4325457",
"amount": "10.51",
"currency": "AUD",
"status": "Dishonoured",
"status_code": "5",
"error": "Insufficient Funds",
"error_code": "51",
"created": "2026-11-04T02:16:02.004Z",
"merchantguid": "315564b9-b863-4016-8c53-02c9d8cc80b7",
"aggregator_reference": "123456789014",
"meta_data_reference": null,
"link": { "href": "/api/v5/charge/0c7b2e91-4d3a-4f8e-9b6c-1a2d3e4f5a6b", "rel": "self" }
},
"object_type": "charge",
"from_item": 0,
"to_item": 0,
"total_count": 0
}
Response fields
uuid
The charge ID. Use it to retrieve or refund the charge, and to match webhook notifications.
string
The
reference you supplied.string
Decimal with two places.
string
The
currency you supplied.string
Approved, Dishonoured, Blocked, Errored or Processing.string
string | null
Processor result description.
datetime
UTC.
uuid
The merchant the charge belongs to.
string | null
Processor reference.
string | null
Any
meta_data_reference supplied on the request.Present only when a surcharge was applied.
Authorizations
Basic Authorization header using the Bearer scheme.
Body
application/jsontext/jsonapplication/*+json
Response
200
OK

