Developers

This page is a ZenPay-styled copy of the Zenith Payments developer documentation. View the original docs

Customers API

A customer represents a payer enrolled with a merchant. Each customer holds a profile, payment account details, payment options, and subscription status.

List customers#

GET/v2/customers

View this endpoint in the original docs

Returns customers that match the supplied filter criteria.

Authentication: Api-Key + BasicAuth

Parameters

NameInTypeDescription
customerReferencequerystring

Filter by the merchant's unique reference for the customer.

customerStatusesqueryarray of integer <int32>

Filter by customer status. Defaults to all statuses.

Allowed values: 0 Open, 1 AwaitingEmailVerfication, 2 AwaitingSignature, 3 SetUpIncomplete, 4 Restricted, 5 Closed, 6 OnHold, 7 PendingBankAccountVerification, 8 ReferCustomerAccount
fromOpenDatequerystring <date-time>

Return customers opened on or after this date. Format: yyyy-MM-dd.

toOpenDatequerystring <date-time>

Return customers opened on or before this date. Format: yyyy-MM-dd.

fromClosedDatequerystring <date-time>

Return customers closed on or after this date. Format: yyyy-MM-dd.

toClosedDatequerystring <date-time>

Return customers closed on or before this date. Format: yyyy-MM-dd.

paymentOptionsqueryarray of integer <int32>

Filter by payment option. Defaults to all options.

Allowed values: 22 AutoPay, 23 EmailReminder, 24 SmsReminder, 25 FixedTerm, 26 BatchPay, 27 ScheduledPay, 28 OneOff, 148 PayID, 149 BPAY
offsetqueryinteger <int32>

The zero-based index of the first record to return. Default: 0.

Default: 0
limitqueryinteger <int32>

The maximum number of records to return. Default: 20. Maximum: 2000.

Default: 20

Responses

200 Return all the customers satisfies the filters.

application/json · array of object (CustomerResponse)

Example: Customer found by reference

One compact list example; show filtering and pagination through parameter documentation.

JSON
[
  {
    "account": {
      "bankAccount": {
        "accountName": "Test Customer",
        "accountNumber": "12345678",
        "bsb": "062000",
        "isPayTo": false,
        "label": "Sweep test account",
        "payToStatus": 0
      }
    },
    "paymentOption": {
      "notificationMethod": 0,
      "paymentAmount": 0,
      "paymentFrequency": 34,
      "paymentOption": 26
    },
    "profile": {
      "abn": "51824753556",
      "address": {
        "address1": "1 Test Street",
        "address2": "Unit 2",
        "country": "AU",
        "postcode": "2000",
        "state": "NSW",
        "suburb": "Sydney"
      },
      "companyName": "Test Company Pty Ltd",
      "customerCode": "BB11226984",
      "customerReference": "cust-6052270595449",
      "customerStatus": "Open",
      "dateOfBirth": "1999-05-08T14:20:58",
      "email": "test@zenpay.com.au",
      "enableBPayOption": false,
      "fax": "0299999998",
      "firstName": "Test",
      "lastName": "Customer",
      "merchantStaffMember": "Example Operator",
      "mobile": "0400000000",
      "openDate": "2026-09-24T00:20:58.597",
      "phone": "0299999999",
      "title": "Mr"
    }
  }
]

400 Invalid get request.

application/json · object

404 Unable to find the customers by the filters provided.

application/json · object

500 Something went wrong. Please try again.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X GET 'https://api.sandbox.zenpay.com.au/v2/customers' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Accept: application/json'

Create a customer#

POST/v2/customers

View this endpoint in the original docs

Creates a customer from the supplied request payload.

Authentication: Api-Key + BasicAuth

Request body

Customer details required to create a customer.

Content types: application/json, application/x-www-form-urlencoded · required

Schema: NewCustomer

FieldTypeDescription
abnstring

Australian Business Number.

additionalPaymentAccountProxiesarray of object (AccountProxy)

Additional PaymentAccountProxies. Proxy is generated using the Payments Plugin for Bank and Credit/Debit Card or /cardProxies api for Credit/Debit Card.

additionalReferencesarray of object (AdditionalReference)

Additional references if you have more than one references to manage. Eg: Parents paying childcare fee for more than one kid.

addressobject (CustomerAddress)

Customer address.

bankAccountobject (BankAccount)

Customer bank account details.

cardobject (CreditCardProxy)

Customer credit / debit card proxy. (Token is generated using the /tokens api.

customerCompanyNamestring

Company name if this is company account.

customerReference requiredstring

Customer / Parent Reference. Should be unique and provided by the merchant. If you are paying the merchant by BPAY, this should be your BPAY Reference.

dateOfBirth requiredstring <date-time>

Date of birth. Customer must be atleast 16 years old.

email requiredstring

Email address.

enableBPayOptionboolean

Allows to enable BPAY option for the customer / parent.

faxstring

Fax number.

firstName requiredstring

First name.

Max length: 30
isBPayCrnPassedboolean

Send this as true when customer reference passed if CRN. Default is set to false if not passed.

lastName requiredstring

Last name.

Max length: 30
merchantStaffMemberstring

Merchant Staff member assigned to this customer / parent.

mobile requiredstring

Mobile number.

notificationMethod requiredinteger <int32>

Notification method used to indicate the communication channel when payment successful or failed.

Allowed values: 0 None, 1 Sms, 2 Email
paymentAccountProxyobject (AccountProxy)

This replaces the BankAccount and Card properties. Proxy is generated using the Payments Plugin for Bank and Credit/Debit Card or /cardProxies api for Credit/Debit Card.

paymentAmount requirednumber <double>

Payment amount. Set the default amount for auto payments or amount for one-off payment.

paymentEndDatestring <date-time>

Payment end date.

paymentFrequency requiredinteger <int32>

Payment frequency. Applicable to auto pay, email reminder and sms reminder.

Allowed values: 32 Weekly, 33 Fortnightly, 38 Monthly, 34 Quarterly, 35 HalfYearly, 36 Yearly, 37 FourWeeks
paymentOption requiredinteger <int32>

Payment option. Use the correct payment option which is supported by the merchant.

Allowed values: 22 AutoPay, 23 EmailReminder, 24 SmsReminder, 25 FixedTerm, 26 BatchPay, 27 ScheduledPay, 28 OneOff, 148 PayID, 149 BPAY
paymentStartDate requiredstring <date-time>

Payment start date.

phonestring

Phone number.

promotionCodestring

Promotion code if any.

sendWelcomeEmailboolean

Sends welcome email if set to true. Default is set to true if not passed.

titlestring

Provide the salutation. Eg: Mr or Mrs.

Max length: 10
websiteUrlstring

Website URL if any.

Example: AutoPay customer

A clearer AutoPay example: the response retains the requested option. One frequency is enough.

JSON
{
  "abn": "51824753556",
  "additionalReferences": [
    {
      "customerReference": "cust-8560263033257-alt",
      "fullName": "Test Customer"
    }
  ],
  "address": {
    "address1": "1 Test Street",
    "address2": "Unit 2",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "bankAccount": {
    "accountName": "Test Customer",
    "accountNumber": "12345678",
    "bankBranch": "Sydney",
    "bankName": "Commonwealth Bank",
    "bsb": "062000",
    "isPayTo": false,
    "label": "bank test",
    "payToStatus": 0
  },
  "customerCompanyName": "Test Company Pty Ltd",
  "customerReference": "cust-8560263033257",
  "dateOfBirth": "1999-05-08T14:20:52",
  "email": "test@zenpay.com.au",
  "enableBPayOption": false,
  "fax": "0299999998",
  "firstName": "Test",
  "isBPayCrnPassed": false,
  "lastName": "Customer",
  "merchantStaffMember": "Example Operator",
  "mobile": "0400000000",
  "notificationMethod": 0,
  "paymentAmount": 1,
  "paymentEndDate": "2027-10-23T14:20:52",
  "paymentFrequency": 33,
  "paymentOption": 22,
  "paymentStartDate": "2026-10-23T14:20:52",
  "phone": "0299999999",
  "promotionCode": "EX2026",
  "sendWelcomeEmail": false,
  "title": "Mr",
  "websiteUrl": "https://www.zenpay.com.au"
}

Example: Customer with a bank account

Baseline bank-account creation; optional profile fields do not earn additional examples.

JSON
{
  "abn": "51824753556",
  "additionalReferences": [
    {
      "customerReference": "cust-6052270595449-alt",
      "fullName": "Test Customer"
    }
  ],
  "address": {
    "address1": "1 Test Street",
    "address2": "Unit 2",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "bankAccount": {
    "accountName": "Test Customer",
    "accountNumber": "12345678",
    "bankBranch": "Sydney",
    "bankName": "Commonwealth Bank",
    "bsb": "062000",
    "isPayTo": false,
    "label": "test account"
  },
  "customerCompanyName": "Test Company Pty Ltd",
  "customerReference": "cust-6052270595449",
  "dateOfBirth": "1999-05-08T14:20:58",
  "email": "test@zenpay.com.au",
  "enableBPayOption": false,
  "fax": "0299999998",
  "firstName": "Test",
  "isBPayCrnPassed": false,
  "lastName": "Customer",
  "merchantStaffMember": "Example Operator",
  "mobile": "0400000000",
  "notificationMethod": 0,
  "paymentAmount": 1,
  "paymentFrequency": 34,
  "paymentOption": 26,
  "paymentStartDate": "2026-10-23T14:20:58",
  "phone": "0299999999",
  "promotionCode": "EX2026",
  "sendWelcomeEmail": false,
  "title": "Mr",
  "websiteUrl": "https://www.zenpay.com.au"
}

Example: Customer with a payment account proxy

Distinct account input using the general payment-account proxy.

JSON
{
  "additionalPaymentAccountProxies": [
    {
      "label": "additional",
      "proxy": "e9430c42020c4750af3f4d046d0034ef"
    }
  ],
  "address": {
    "address1": "1 Test Street",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "customerReference": "cust-7691567123169",
  "dateOfBirth": "1999-05-08T14:21:03",
  "email": "test@zenpay.com.au",
  "firstName": "Test",
  "lastName": "Proxy",
  "mobile": "0400000000",
  "notificationMethod": 0,
  "paymentAccountProxy": {
    "label": "example pap",
    "proxy": "7bd2b35061e2461690eed705f18968a2"
  },
  "paymentAmount": 1,
  "paymentFrequency": 34,
  "paymentOption": 26,
  "paymentStartDate": "2026-10-23T14:21:03",
  "sendWelcomeEmail": false
}

Example: Customer with a stored card

Distinct account input using the card field.

JSON
{
  "address": {
    "address1": "1 Test Street",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "card": {
    "cardProxy": "73898fe3d1044245adbcc1b9b597dc11",
    "label": "workflow card"
  },
  "customerReference": "cust-batch-7880558552220",
  "dateOfBirth": "1999-05-08T14:36:46",
  "email": "test@zenpay.com.au",
  "firstName": "Test",
  "lastName": "Card",
  "mobile": "0400000000",
  "notificationMethod": 0,
  "paymentAmount": 1,
  "paymentFrequency": 34,
  "paymentOption": 26,
  "paymentStartDate": "2026-10-23T14:36:46",
  "sendWelcomeEmail": false
}

Example: PayID customer

Keep the request as well: choosing PayID is a meaningful use even when field names are unchanged.

JSON
{
  "abn": "51824753556",
  "additionalReferences": [
    {
      "customerReference": "cust-2973999445559-alt",
      "fullName": "Test Customer"
    }
  ],
  "address": {
    "address1": "1 Test Street",
    "address2": "Unit 2",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "bankAccount": {
    "accountName": "Test Customer",
    "accountNumber": "12345678",
    "bankBranch": "Sydney",
    "bankName": "Commonwealth Bank",
    "bsb": "062000",
    "isPayTo": false,
    "label": "bank test",
    "payToStatus": 0
  },
  "customerCompanyName": "Test Company Pty Ltd",
  "customerReference": "cust-2973999445559",
  "dateOfBirth": "1999-05-08T14:20:56",
  "email": "test@zenpay.com.au",
  "enableBPayOption": false,
  "fax": "0299999998",
  "firstName": "Test",
  "isBPayCrnPassed": false,
  "lastName": "Customer",
  "merchantStaffMember": "Example Operator",
  "mobile": "0400000000",
  "notificationMethod": 0,
  "paymentAmount": 1,
  "paymentEndDate": "2027-10-23T14:20:56",
  "paymentFrequency": 34,
  "paymentOption": 148,
  "paymentStartDate": "2026-10-23T14:20:56",
  "phone": "0299999999",
  "promotionCode": "EX2026",
  "sendWelcomeEmail": false,
  "title": "Mr",
  "websiteUrl": "https://www.zenpay.com.au"
}

Responses

201 Customer created successfully.

application/json · object (NewCustomer)

Example: AutoPay customer

A clearer AutoPay example: the response retains the requested option. One frequency is enough.

JSON
{
  "abn": "51824753556",
  "additionalPaymentAccountProxies": [],
  "additionalReferences": [
    {
      "customerReference": "cust-8560263033257-alt",
      "fullName": "Test Customer"
    }
  ],
  "address": {
    "address1": "1 Test Street",
    "address2": "Unit 2",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "bankAccount": {
    "accountName": "Test Customer",
    "accountNumber": "12345678",
    "bankBranch": "Sydney",
    "bankName": "Commonwealth Bank",
    "bsb": "062000",
    "isPayTo": false,
    "label": "bank test",
    "payToStatus": 0
  },
  "customerCompanyName": "Test Company Pty Ltd",
  "customerLogin": "test@zenpay.com.au",
  "customerReference": "cust-8560263033257",
  "dateOfBirth": "1999-05-08T14:20:52",
  "email": "test@zenpay.com.au",
  "enableBPayOption": false,
  "fax": "0299999998",
  "firstName": "Test",
  "isBPayCrnPassed": false,
  "lastName": "Customer",
  "merchantCode": "1337",
  "merchantName": "Menethil",
  "merchantStaffMember": "Example Operator",
  "mobile": "0400000000",
  "notificationMethod": 0,
  "passwordGenerationUrl": "https://pay.sandbox.b2bpay.com.au/Password/Reset?token=707bb669-302f-4dc0-9273-128f66b516d3",
  "paymentAmount": 1,
  "paymentEndDate": "2027-10-23T14:20:52",
  "paymentFrequency": 33,
  "paymentOption": 22,
  "paymentStartDate": "2026-10-23T14:20:52",
  "phone": "0299999999",
  "promotionCode": "EX2026",
  "sendWelcomeEmail": false,
  "title": "Mr",
  "websiteUrl": "https://www.zenpay.com.au"
}

Example: Customer with a bank account

Baseline bank-account creation; optional profile fields do not earn additional examples.

JSON
{
  "abn": "51824753556",
  "additionalPaymentAccountProxies": [],
  "additionalReferences": [
    {
      "customerReference": "cust-6052270595449-alt",
      "fullName": "Test Customer"
    }
  ],
  "address": {
    "address1": "1 Test Street",
    "address2": "Unit 2",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "bankAccount": {
    "accountName": "Test Customer",
    "accountNumber": "12345678",
    "bankBranch": "Sydney",
    "bankName": "Commonwealth Bank",
    "bsb": "062000",
    "isPayTo": false,
    "label": "test account",
    "payToStatus": 0
  },
  "customerCompanyName": "Test Company Pty Ltd",
  "customerLogin": "test@zenpay.com.au",
  "customerReference": "cust-6052270595449",
  "dateOfBirth": "1999-05-08T14:20:58",
  "email": "test@zenpay.com.au",
  "enableBPayOption": false,
  "fax": "0299999998",
  "firstName": "Test",
  "isBPayCrnPassed": false,
  "lastName": "Customer",
  "merchantCode": "1337",
  "merchantName": "Menethil",
  "merchantStaffMember": "Example Operator",
  "mobile": "0400000000",
  "notificationMethod": 0,
  "passwordGenerationUrl": "https://pay.sandbox.b2bpay.com.au/Password/Reset?token=f08304ea-dd86-4498-8988-d32f5bcd650b",
  "paymentAmount": 0,
  "paymentFrequency": 34,
  "paymentOption": 26,
  "paymentStartDate": "2026-09-24T00:00:00",
  "phone": "0299999999",
  "promotionCode": "EX2026",
  "sendWelcomeEmail": false,
  "title": "Mr",
  "websiteUrl": "https://www.zenpay.com.au"
}

Example: Customer with a payment account proxy

Distinct account input using the general payment-account proxy.

JSON
{
  "additionalPaymentAccountProxies": [
    {
      "label": "additional",
      "proxy": "e9430c42020c4750af3f4d046d0034ef"
    }
  ],
  "additionalReferences": [],
  "address": {
    "address1": "1 Test Street",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "customerLogin": "test@zenpay.com.au",
  "customerReference": "cust-7691567123169",
  "dateOfBirth": "1999-05-08T14:21:03",
  "email": "test@zenpay.com.au",
  "firstName": "Test",
  "lastName": "Proxy",
  "merchantCode": "1337",
  "merchantName": "Menethil",
  "mobile": "0400000000",
  "notificationMethod": 0,
  "passwordGenerationUrl": "https://pay.sandbox.b2bpay.com.au/Password/Reset?token=4c0de80f-64e9-48f8-a536-d4c1cc2a0389",
  "paymentAccountProxy": {
    "label": "example pap",
    "proxy": "7bd2b35061e2461690eed705f18968a2"
  },
  "paymentAmount": 0,
  "paymentFrequency": 34,
  "paymentOption": 26,
  "paymentStartDate": "2026-09-24T00:00:00",
  "sendWelcomeEmail": false
}

Example: Customer with a stored card

Distinct account input using the card field.

JSON
{
  "additionalPaymentAccountProxies": [],
  "additionalReferences": [],
  "address": {
    "address1": "1 Test Street",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "card": {
    "cardProxy": "73898fe3d1044245adbcc1b9b597dc11",
    "label": "workflow card"
  },
  "customerLogin": "test@zenpay.com.au",
  "customerReference": "cust-batch-7880558552220",
  "dateOfBirth": "1999-05-08T14:36:46",
  "email": "test@zenpay.com.au",
  "firstName": "Test",
  "lastName": "Card",
  "merchantCode": "1337",
  "merchantName": "Menethil",
  "mobile": "0400000000",
  "notificationMethod": 0,
  "passwordGenerationUrl": "https://pay.sandbox.b2bpay.com.au/Password/Reset?token=11bddd3a-604c-4b74-8168-0304e7fbedb4",
  "paymentAmount": 0,
  "paymentFrequency": 34,
  "paymentOption": 26,
  "paymentStartDate": "2026-09-24T00:00:00",
  "sendWelcomeEmail": false
}

Example: PayID customer

Keep the request as well: choosing PayID is a meaningful use even when field names are unchanged.

JSON
{
  "abn": "51824753556",
  "additionalPaymentAccountProxies": [],
  "additionalReferences": [
    {
      "customerReference": "cust-2973999445559-alt",
      "fullName": "Test Customer"
    }
  ],
  "address": {
    "address1": "1 Test Street",
    "address2": "Unit 2",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "bankAccount": {
    "accountName": "Test Customer",
    "accountNumber": "12345678",
    "bankBranch": "Sydney",
    "bankName": "Commonwealth Bank",
    "bsb": "062000",
    "isPayTo": false,
    "label": "bank test",
    "payToStatus": 0
  },
  "billerReference": "9205042477",
  "customerCompanyName": "Test Company Pty Ltd",
  "customerLogin": "test@zenpay.com.au",
  "customerReference": "cust-2973999445559",
  "dateOfBirth": "1999-05-08T14:20:56",
  "email": "test@zenpay.com.au",
  "enableBPayOption": false,
  "fax": "0299999998",
  "firstName": "Test",
  "isBPayCrnPassed": false,
  "lastName": "Customer",
  "merchantCode": "1337",
  "merchantName": "Menethil",
  "merchantStaffMember": "Example Operator",
  "mobile": "0400000000",
  "notificationMethod": 0,
  "passwordGenerationUrl": "https://pay.sandbox.b2bpay.com.au/Password/Reset?token=55062c7a-e83b-440d-be6c-a303adf713a7",
  "payIdDetail": {
    "payId": "payiduat@b2bpay.com.au",
    "payIdName": "B2Bpay",
    "reference": "9205042477"
  },
  "paymentAmount": 0,
  "paymentFrequency": 34,
  "paymentOption": 148,
  "paymentStartDate": "2026-09-24T00:00:00",
  "phone": "0299999999",
  "promotionCode": "EX2026",
  "sendWelcomeEmail": false,
  "title": "Mr",
  "websiteUrl": "https://www.zenpay.com.au"
}

300 Duplicate customer reference.

application/json · object

Example: Customer reference already exists

Shows the operation-specific duplicate-reference response.

JSON
{
  "message": "The customer reference already exists."
}

400 Invalid input detail.

application/json · object

403 Merchant is forbidden to perform this operation.

application/json · object

500 Something went wrong. Customer may or may not be created.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X POST 'https://api.sandbox.zenpay.com.au/v2/customers' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Content-Type: application/json' \
  -d '{
  "abn": "51824753556",
  "additionalReferences": [
    {
      "customerReference": "cust-8560263033257-alt",
      "fullName": "Test Customer"
    }
  ],
  "address": {
    "address1": "1 Test Street",
    "address2": "Unit 2",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "bankAccount": {
    "accountName": "Test Customer",
    "accountNumber": "12345678",
    "bankBranch": "Sydney",
    "bankName": "Commonwealth Bank",
    "bsb": "062000",
    "isPayTo": false,
    "label": "bank test",
    "payToStatus": 0
  },
  "customerCompanyName": "Test Company Pty Ltd",
  "customerReference": "cust-8560263033257",
  "dateOfBirth": "1999-05-08T14:20:52",
  "email": "test@zenpay.com.au",
  "enableBPayOption": false,
  "fax": "0299999998",
  "firstName": "Test",
  "isBPayCrnPassed": false,
  "lastName": "Customer",
  "merchantStaffMember": "Example Operator",
  "mobile": "0400000000",
  "notificationMethod": 0,
  "paymentAmount": 1,
  "paymentEndDate": "2027-10-23T14:20:52",
  "paymentFrequency": 33,
  "paymentOption": 22,
  "paymentStartDate": "2026-10-23T14:20:52",
  "phone": "0299999999",
  "promotionCode": "EX2026",
  "sendWelcomeEmail": false,
  "title": "Mr",
  "websiteUrl": "https://www.zenpay.com.au"
}'

Get a customer#

GET/v2/customers/{customerReference}

View this endpoint in the original docs

Returns the customer for the specified customer reference.

Authentication: Api-Key + BasicAuth

Parameters

NameInTypeDescription
customerReference requiredpathstring

The merchant's unique reference for the customer.

Responses

200 Found the customer.

application/json · object (CustomerResponse)

Example: Customer details

One full customer read; account and payment-option endpoints below demonstrate their variants.

JSON
{
  "account": {
    "bankAccount": {
      "accountName": "Test Customer",
      "accountNumber": "12345678",
      "bsb": "062000",
      "isPayTo": false,
      "label": "Sweep test account",
      "payToStatus": 0
    }
  },
  "paymentOption": {
    "notificationMethod": 0,
    "paymentAmount": 0,
    "paymentFrequency": 34,
    "paymentOption": 26
  },
  "profile": {
    "abn": "51824753556",
    "address": {
      "address1": "1 Test Street",
      "address2": "Unit 2",
      "country": "AU",
      "postcode": "2000",
      "state": "NSW",
      "suburb": "Sydney"
    },
    "companyName": "Test Company Pty Ltd",
    "customerCode": "BB11226984",
    "customerReference": "cust-6052270595449",
    "customerStatus": "Open",
    "dateOfBirth": "1999-05-08T14:20:58",
    "email": "test@zenpay.com.au",
    "enableBPayOption": false,
    "fax": "0299999998",
    "firstName": "Test",
    "lastName": "Customer",
    "merchantStaffMember": "Example Operator",
    "mobile": "0400000000",
    "openDate": "2026-09-24T00:20:58.597",
    "phone": "0299999999",
    "title": "Mr"
  }
}

400 Invalid customer reference.

application/json · object

404 Unable to find the customer by the reference provided.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X GET 'https://api.sandbox.zenpay.com.au/v2/customers/{customerReference}' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Accept: application/json'

Get a customer account#

GET/v2/customers/{customerReference}/account

View this endpoint in the original docs

Returns the account details for the specified customer.

Authentication: Api-Key + BasicAuth

Parameters

NameInTypeDescription
customerReference requiredpathstring

The merchant's unique reference for the customer.

Responses

200 Found the customer account.

application/json · object (CustomerAccountResponse)

Example: Bank account

The bank-account variant of this account lookup.

JSON
{
  "bankAccount": {
    "accountName": "Test Customer",
    "accountNumber": "12345678",
    "bsb": "062000",
    "isPayTo": false,
    "label": "Sweep test account",
    "payToStatus": 0
  }
}

Example: Stored card

The card variant of this account lookup.

JSON
{
  "creditCard": {
    "cardNumber": "555555XXXXXX4444",
    "cardType": "MasterCard",
    "expiry": "1229",
    "label": "example card"
  }
}

400 Invalid customer reference.

application/json · object

404 Unable to find the customer by the reference provided.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X GET 'https://api.sandbox.zenpay.com.au/v2/customers/{customerReference}/account' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Accept: application/json'

Update a customer account#

PUT/v2/customers/{customerReference}/account

View this endpoint in the original docs

Updates the account details for the specified customer.

Authentication: Api-Key + BasicAuth

Parameters

NameInTypeDescription
customerReference requiredpathstring

The merchant's unique reference for the customer.

Request body

Account details required to update the customer account.

Content types: application/json, application/x-www-form-urlencoded · required

Schema: CustomerAccountRequest

FieldTypeDescription
addtionalPaymentAccountProxiesarray of object (AccountProxy)

Additional PaymentAccountProxies. Proxy is generated using the Payments Plugin for bank account and card or /cardProxies API for card.

bankAccountobject (BankAccount)

Customer bank account details. Provide valid BSB and Account Number.

creditCardProxyobject (CreditCardProxy)

Customer credit / debit card proxy. Proxy is generated using the /cardProxies API or Payments Plugin.

paymentAccountProxyobject (AccountProxy)

This replaces the BankAccount and CreditCardProxy. Proxy is generated using the Payments Plugin for bank account and card or /cardProxies API for card.

Example: Bank account replaced

Prefer this ordinary bank-account update over a PayTo-status-focused variant.

JSON
{
  "bankAccount": {
    "accountName": "Test Customer",
    "accountNumber": "12345678",
    "bankBranch": "Sydney",
    "bankName": "Commonwealth Bank",
    "bsb": "062000",
    "isPayTo": false,
    "label": "test account"
  }
}

Example: Switch to a payment account proxy

Distinct account replacement body; preserve the captured field spelling.

JSON
{
  "addtionalPaymentAccountProxies": [
    {
      "label": "additional",
      "proxy": "e4602844c10945c49286d5987bf9eda2"
    }
  ],
  "paymentAccountProxy": {
    "label": "updated pap",
    "proxy": "3836c3b2acea449688c24b6c179f0523"
  }
}

Example: Switch to a stored card

Distinct account replacement body; successful response has no body.

JSON
{
  "creditCardProxy": {
    "cardProxy": "8c8fb346b9c24f13b3b7be78c093d8cc",
    "label": "updated card"
  }
}

Responses

204 Updated the customer account.

400 Invalid input detail.

application/json · object

403 Merchant is forbidden to perform this operation.

application/json · object

500 Something went wrong. Customer account may or may not be updated.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X PUT 'https://api.sandbox.zenpay.com.au/v2/customers/{customerReference}/account' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Content-Type: application/json' \
  -d '{
  "bankAccount": {
    "accountName": "Test Customer",
    "accountNumber": "12345678",
    "bankBranch": "Sydney",
    "bankName": "Commonwealth Bank",
    "bsb": "062000",
    "isPayTo": false,
    "label": "test account"
  }
}'

Update a customer reference#

PUT/v2/customers/{customerReference}/customerReference

View this endpoint in the original docs

Updates the customer reference for the specified customer.

Authentication: Api-Key + BasicAuth

Parameters

NameInTypeDescription
customerReference requiredpathstring

The existing customer reference.

Request body

Customer reference details required to update the customer reference.

Content types: application/json, application/x-www-form-urlencoded · required

Example: Reference renamed

Shows the plain JSON string body, not an object wrapper.

JSON
"upd-a-8625433279667r"

Responses

204 Updated the customer reference.

400 Invalid input detail.

application/json · object

403 Merchant is forbidden to perform this operation.

application/json · object

500 Something went wrong. Customer reference may or may not be updated.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X PUT 'https://api.sandbox.zenpay.com.au/v2/customers/{customerReference}/customerReference' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Content-Type: application/json' \
  -d '"upd-a-8625433279667r"'

Get a customer payment option#

GET/v2/customers/{customerReference}/paymentOption

View this endpoint in the original docs

Returns the payment option for the specified customer.

Authentication: Api-Key + BasicAuth

Parameters

NameInTypeDescription
customerReference requiredpathstring

The merchant's unique reference for the customer.

Responses

200 Found the customer payment option.

application/json · object (CustomerPaymentOption)

Example: Batch payment option

Baseline option without BPAY or PayID details.

JSON
{
  "notificationMethod": 0,
  "paymentAmount": 0,
  "paymentFrequency": 34,
  "paymentOption": 26
}

Example: PayID payment option

Shows the PayID details in this dedicated lookup.

JSON
{
  "notificationMethod": 0,
  "payIdDetail": {
    "payId": "payiduat@b2bpay.com.au",
    "payIdName": "B2Bpay",
    "reference": "9205042477"
  },
  "paymentAmount": 0,
  "paymentFrequency": 34,
  "paymentOption": 148
}

400 Invalid customer reference.

application/json · object

404 Unable to find the customer by the reference provided.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X GET 'https://api.sandbox.zenpay.com.au/v2/customers/{customerReference}/paymentOption' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Accept: application/json'

Update a customer payment option#

PUT/v2/customers/{customerReference}/paymentOption

View this endpoint in the original docs

Updates the payment option for the specified customer.

Authentication: Api-Key + BasicAuth

Parameters

NameInTypeDescription
customerReference requiredpathstring

The merchant's unique reference for the customer.

Request body

Payment option details required to update the customer payment option.

Content types: application/json, application/x-www-form-urlencoded · required

Schema: CustomerPaymentOption

FieldTypeDescription
bPayDetailobject (BPayDetail)

BPAY details.

nextPaymentDate requiredstring <date-time>

Payment start date.

notificationMethod requiredinteger <int32>

Notification method used to indicate the communication channel when payment successful or failed.

Allowed values: 0 None, 1 Sms, 2 Email
payIdDetailobject (PayIdDetail)

PayID details.

paymentAmount requirednumber <double>

Payment amount. Set the default amount for auto payments or amount for one-off payment.

paymentEndDatestring <date-time>

Payment end date.

paymentFrequency requiredinteger <int32>

Payment frequency. Applicable to auto pay, email reminder and sms reminder. Returns monthly if frequency is not available.

Allowed values: 32 Weekly, 33 Fortnightly, 38 Monthly, 34 Quarterly, 35 HalfYearly, 36 Yearly, 37 FourWeeks
paymentOption requiredinteger <int32>

Payment option. Use the correct payment option which is supported by the merchant.

Allowed values: 22 AutoPay, 23 EmailReminder, 24 SmsReminder, 25 FixedTerm, 26 BatchPay, 27 ScheduledPay, 28 OneOff, 148 PayID, 149 BPAY

Example: AutoPay option updated

One recurring-payment option update with a readily understood frequency.

JSON
{
  "nextPaymentDate": "2026-11-02T14:21:17",
  "notificationMethod": 0,
  "paymentAmount": 1,
  "paymentFrequency": 33,
  "paymentOption": 22
}

Example: PayID option update with details

Shows the PayID-specific input. A bodiless acknowledgement alone does not prove supplied details persisted.

JSON
{
  "nextPaymentDate": "2026-11-02T14:21:18",
  "notificationMethod": 0,
  "payIdDetail": {
    "payId": "payiduat@b2bpay.com.au",
    "payIdName": "B2Bpay",
    "reference": "1279162000"
  },
  "paymentAmount": 1,
  "paymentEndDate": "2027-10-28T14:21:18",
  "paymentFrequency": 34,
  "paymentOption": 148
}

Responses

204 Updated the customer payment option.

400 Invalid input detail.

application/json · object

403 Merchant is forbidden to perform this operation.

application/json · object

500 Something went wrong. Customer payment option may or may not be updated.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X PUT 'https://api.sandbox.zenpay.com.au/v2/customers/{customerReference}/paymentOption' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Content-Type: application/json' \
  -d '{
  "nextPaymentDate": "2026-11-02T14:21:17",
  "notificationMethod": 0,
  "paymentAmount": 1,
  "paymentFrequency": 33,
  "paymentOption": 22
}'

Get a customer profile#

GET/v2/customers/{customerReference}/profile

View this endpoint in the original docs

Returns the profile for the specified customer.

Authentication: Api-Key + BasicAuth

Parameters

NameInTypeDescription
customerReference requiredpathstring

The merchant's unique reference for the customer.

Responses

200 Found the customer profile.

application/json · object (ICustomerProfie)

Example: Customer profile

One representative profile read.

JSON
{
  "abn": "51824753556",
  "address": {
    "address1": "1 Test Street",
    "address2": "Unit 2",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "companyName": "Test Company Pty Ltd",
  "customerStatus": "Open",
  "dateOfBirth": "1999-05-08T14:20:58",
  "email": "test@zenpay.com.au",
  "enableBPayOption": false,
  "fax": "0299999998",
  "firstName": "Test",
  "lastName": "Customer",
  "merchantStaffMember": "Example Operator",
  "mobile": "0400000000",
  "openDate": "2026-09-24T00:20:58.597",
  "phone": "0299999999",
  "title": "Mr"
}

400 Invalid customer reference.

application/json · object

404 Unable to find the customer by the reference provided.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X GET 'https://api.sandbox.zenpay.com.au/v2/customers/{customerReference}/profile' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Accept: application/json'

Update a customer profile#

PUT/v2/customers/{customerReference}/profile

View this endpoint in the original docs

Updates the profile for the specified customer.

Authentication: Api-Key + BasicAuth

Parameters

NameInTypeDescription
customerReference requiredpathstring

The merchant's unique reference for the customer.

Request body

Profile details required to update the customer profile.

Content types: application/json, application/x-www-form-urlencoded · required

Schema: CustomerProfileRequest

FieldTypeDescription
abnstring

Australian Business Number.

address requiredobject (CustomerAddress)

Customer postal address.

companyNamestring

Name of the customer company.

dateOfBirth requiredstring <date-time>

Customer date of birth.

email requiredstring

Customer email address.

enableBPayOptionboolean

Whether BPay payment option is enabled for this customer.

faxstring

Customer fax number.

firstName requiredstring

First name.

Max length: 30
lastName requiredstring

Last name.

Max length: 30
merchantStaffMemberstring

Staff member assigned to the customer.

mobilestring

Customer mobile phone number.

phonestring

Customer phone number.

titlestring

Provide the salutation. Eg: Mr or Mrs.

Max length: 10

Example: Profile updated

Baseline profile replacement, including the mobile field in the captured request.

JSON
{
  "abn": "51824753556",
  "address": {
    "address1": "1 Test Street",
    "address2": "Unit 2",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "companyName": "Test Company Pty Ltd",
  "dateOfBirth": "1999-05-08T14:21:21",
  "email": "test@zenpay.com.au",
  "enableBPayOption": false,
  "fax": "0299999998",
  "firstName": "Test",
  "lastName": "Customer",
  "merchantStaffMember": "Example Operator",
  "mobile": "0400000000",
  "phone": "0299999999",
  "title": "Mr"
}

Responses

204 Updated the customer profile.

400 Invalid input detail.

application/json · object

403 Merchant is forbidden to perform this operation.

application/json · object

500 Something went wrong. Customer may or may not be updated.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X PUT 'https://api.sandbox.zenpay.com.au/v2/customers/{customerReference}/profile' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Content-Type: application/json' \
  -d '{
  "abn": "51824753556",
  "address": {
    "address1": "1 Test Street",
    "address2": "Unit 2",
    "country": "AU",
    "postcode": "2000",
    "state": "NSW",
    "suburb": "Sydney"
  },
  "companyName": "Test Company Pty Ltd",
  "dateOfBirth": "1999-05-08T14:21:21",
  "email": "test@zenpay.com.au",
  "enableBPayOption": false,
  "fax": "0299999998",
  "firstName": "Test",
  "lastName": "Customer",
  "merchantStaffMember": "Example Operator",
  "mobile": "0400000000",
  "phone": "0299999999",
  "title": "Mr"
}'

Get customer status#

GET/v2/customers/{customerReference}/status

View this endpoint in the original docs

Returns the status for the specified customer.

Authentication: Api-Key + BasicAuth

Parameters

NameInTypeDescription
customerReference requiredpathstring

The merchant's unique reference for the customer.

Responses

200 Found the customer status.

application/json · string

Example: Customer status

Shows that this endpoint returns a scalar rather than a customer object.

JSON
"Open"

400 Invalid customer reference.

application/json · object

404 Unable to find the customer by the reference provided.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X GET 'https://api.sandbox.zenpay.com.au/v2/customers/{customerReference}/status' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Accept: application/json'

Update customer status#

PUT/v2/customers/{customerReference}/status

View this endpoint in the original docs

Updates the status for the specified customer.

Authentication: Api-Key + BasicAuth

Parameters

NameInTypeDescription
customerReference requiredpathstring

The merchant's unique reference for the customer.

Request body

Status details required to update the customer status.

Content types: application/json, application/x-www-form-urlencoded · required

Schema: CustomerStatusRequest

FieldTypeDescription
closeCustomerboolean

True to close, false to open.

reasonstring

Reason if the customer is closed.

Example: Customer closed

Shows the close request and reason. Do not infer a working reopen flow from this capture.

JSON
{
  "closeCustomer": true,
  "reason": "example capture"
}

Responses

204 Updated the customer status.

400 Invalid input detail.

application/json · object

403 Merchant is forbidden to perform this operation.

application/json · object

500 Something went wrong. Customer payment option may or may not be updated.

application/json · object

Example request (cURL, sandbox host)

cURL
curl -X PUT 'https://api.sandbox.zenpay.com.au/v2/customers/{customerReference}/status' \
  -H 'Api-Key: <your API key>' \
  -u '<username>:<password>' \
  -H 'Content-Type: application/json' \
  -d '{
  "closeCustomer": true,
  "reason": "example capture"
}'
Need help with your integration?Talk to the Zenith Integrations Team.
Email integrationsTalk to us