Skip to main content
POST /charge creates a charge. The same endpoint handles three cases, selected by which fields you send: Every charge needs currency, amount and a reference. The reference is yours — an invoice or order number — and it comes back on the charge, in every webhook, and as a filter on Listing Charges.
If you’d rather not handle card or account details at all, the Widget and the Create Token page capture them on a PayChoice-hosted form.

Card charge

The v5 JSON body uses the same bracketed key names as v4 form-data (card[name], bank[bsb]). Send them as literal keys.

Response

uuid
The charge ID. Use it to retrieve or refund the charge, and to match webhook notifications.
string
Outcome as returned by the processor: Approved, Dishonoured, Blocked, Errored or Processing.
string
"0" Approved, "4" Blocked, "5" Dishonoured, "6" Errored, "9" Processing. A string on this endpoint; an integer when you retrieve the charge later. See Charge status.
string | null
Processor result description.
string | null
Processor error code. See Errors.
string
Decimal with two places.
Present only when a surcharge was applied. orginal_amount is spelt that way in the response.

Declines

A declined card charge returns HTTP 402 Payment Required with the same charge object; read status, error and error_code for the reason. Don’t treat 402 as a transport error.

Bank account charge

The response is the same shape, with status Processing and status_code "9". The charge is not approved yet. The final outcome arrives through the webhook once the bank responds — typically within three business days. bank[bsb] is not required for New Zealand accounts.

Surcharges

When a surcharge applies to a charge, the response includes feeapplied, feeamount and orginal_amount so you can show the customer the breakdown. Whether surcharging is enabled, and at what rate, is configured on your merchant account.

Next