> ## Documentation Index
> Fetch the complete documentation index at: https://developers.paychoice.com.au/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a charge

Creates a charge against a credit card, a bank account, or a stored token. The same endpoint captures a pre-authorisation when `pre_authid` is supplied.

* **Card**: supply the `card[...]` fields or a `card_token`. Approved or declined immediately.
* **Bank account**: supply the `bank[...]` fields or a `bank_token`. Returns `Processing` (`"9"`); the final result arrives through the [webhook](https://developers.paychoice.com.au/getting-the-result/webhooks.md).
* **Capture**: supply `pre_authid` from a [pre-authorisation](https://developers.paychoice.com.au/after-the-payment/pre-authorisations.md) plus `amount`, `currency` and `reference`.

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

A declined card charge returns HTTP `402` with the same `charge` object and the decline details in `status`, `error` and `error_code`. See the [guide](https://developers.paychoice.com.au/taking-payments/charging-via-the-api.md) for the full walkthrough.

```json 200 — Approved theme={null}
{
  "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
}
```

```json 402 — Declined theme={null}
{
  "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

**charge.id** `uuid`

The charge ID. Use it to retrieve or refund the charge, and to match webhook notifications.

**charge.reference** `string`

The `reference` you supplied.

**charge.amount** `string`

Decimal with two places.

**charge.currency** `string`

The `currency` you supplied.

**charge.status** `string`

`Approved`, `Dishonoured`, `Blocked`, `Errored` or `Processing`.

**charge.status\_code** `string`

`"0"` Approved, `"4"` Blocked, `"5"` Dishonoured, `"6"` Errored, `"9"` Processing. See [Charge status](https://developers.paychoice.com.au/reference/charge-status.md).

**charge.error** `string | null`

Processor result description.

**charge.error\_code** `string | null`

Processor error code. See [Errors](https://developers.paychoice.com.au/reference/errors.md).

**charge.created** `datetime`

UTC.

**charge.merchantguid** `uuid`

The merchant the charge belongs to.

**charge.aggregator\_reference** `string | null`

Processor reference.

**charge.meta\_data\_reference** `string | null`

Any `meta_data_reference` supplied on the request.

**charge.feeapplied / feeamount / orginal\_amount**

Present only when a surcharge was applied.


## OpenAPI

````yaml POST /api/v5/Charge
openapi: 3.0.1
info:
  title: Paychoice
  version: v5
servers: []
security:
  - basic: []
paths:
  /api/v5/Charge:
    post:
      tags:
        - Charge
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankChargeDto'
          text/json:
            schema:
              $ref: '#/components/schemas/BankChargeDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/BankChargeDto'
      responses:
        '200':
          description: OK
components:
  schemas:
    BankChargeDto:
      type: object
      properties:
        currency:
          type: string
          nullable: true
        amount:
          type: number
          format: double
        reference:
          type: string
          nullable: true
        card[name]:
          type: string
          nullable: true
        card[number]:
          type: string
          nullable: true
        card[expiry_month]:
          type: integer
          format: int32
        card[expiry_year]:
          type: integer
          format: int32
        card[cvv]:
          type: string
          nullable: true
        card_token:
          type: string
          nullable: true
        bank[name]:
          type: string
          nullable: true
        bank[bsb]:
          type: string
          nullable: true
        bank[number]:
          type: string
          nullable: true
        bank_token:
          type: string
          nullable: true
        pre_authid:
          type: string
          nullable: true
        merchant_guid:
          type: string
          nullable: true
        phone:
          type: string
          nullable: true
        charge_id:
          type: string
          nullable: true
        meta_data_reference:
          type: string
          nullable: true
        contact[phone]:
          type: string
          nullable: true
        contact[email]:
          type: string
          nullable: true
        address[address_line_1]:
          type: string
          nullable: true
        address[address_line_2]:
          type: string
          nullable: true
        address[suburb]:
          type: string
          nullable: true
        address[state]:
          type: string
          nullable: true
        address[post_code]:
          type: string
          nullable: true
        address[country]:
          type: string
          nullable: true
        3ds_charge_id:
          type: string
          format: uuid
          nullable: true
        challenge_reference:
          type: string
          nullable: true
      additionalProperties: false
  securitySchemes:
    basic:
      type: http
      description: Basic Authorization header using the Bearer scheme.
      scheme: basic

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.