APG PayAPG Paydocs

Customers

Update customer

PATCH/customers/{customerId}

Update a customer's mutable attributes.

7 actionsCustUpdateBusinessProfileCustUpdateEmailAddressCustUpdateMetadataCustUpdateNameCustUpdateOrganisationCustUpdatePhoneNumberCustUpdateResetKycAttempts

Permissions

Required permission
merchantCustomers:update

Requires the `update` action on `merchantCustomers` for the supplied runtime context

Path parameters

customerIdstring
required

Request body

This body is a typed union. Pick a variant to see its fields and a matching example.

Discriminated by type
type = "CustUpdateBusinessProfile"

An organisation customer's business identity, as a caller states it.

curl -X PATCH https://api.tst.au.apgpay.dev/customers/{customerId} \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "CustUpdateBusinessProfile",
  "businessProfile": {
    "type": "CustBusinessProfileReplaceAttributes",
    "legalName": "Ada Lovelace",
    "businessRegistrationNumber": "string",
    "taxRegistrationNumber": "string",
    "businessType": "Company",
    "companyType": "string",
    "industry": "string",
    "website": "string",
    "supportSite": "string",
    "tradingCountry": "AU",
    "registeredAddress": {
      "type": "CustAddressAttributes",
      "unitNumber": "string",
      "streetNumber": "string",
      "streetName": "Ada Lovelace",
      "streetType": "string",
      "suburb": "string",
      "city": "string",
      "state": "string",
      "postalCode": "3000",
      "country": "AU"
    },
    "contact": {
      "type": "CustBusinessContactAttributes",
      "title": "string",
      "firstName": "Ada Lovelace",
      "lastName": "Ada Lovelace",
      "emailAddress": "ada@example.com",
      "supportEmailAddress": "ada@example.com",
      "phoneNumber": "+61400000000"
    },
    "timeZone": "string",
    "brandName": "Ada Lovelace"
  }
}'

Responses

The response is a tagged shape: type is always "CustUpdateRspAttributes". Switch on it; subtypes can be added, and a client that already reads it will not break.

Discriminated by type
type = "CustUpdateRspAttributes"

The resource as it stands after the change.

Example
{
  "type": "CustUpdateRspAttributes",
  "updated": {
    "type": "CustViewConsumer",
    "customerId": "cust_9f2Kd8QpLzXw",
    "personId": "pson_9f2Kd8QpLzXw",
    "merchantId": "mcht_9f2Kd8QpLzXw",
    "marketplaceId": "mktp_9f2Kd8QpLzXw",
    "referenceCustomerId": "your-own-reference",
    "givenName": "Ada Lovelace",
    "middleName": "Ada Lovelace",
    "familyName": "Ada Lovelace",
    "emailAddress": "ada@example.com",
    "phoneNumber": "+61400000000",
    "isVerified": true,
    "kycAttempts": {
      "type": "CustKycAttemptsAttributes",
      "withoutDocument": 1250,
      "withDriversLicence": 1250,
      "withPassport": 1250,
      "withDriversLicenceAndPassport": 1250,
      "level": "string"
    },
    "createdAt": "2026-08-19T04:21:07Z",
    "updatedAt": "2026-08-19T04:21:07Z"
  }
}

Error responses