APG PayAPG Paydocs

Identity

Create KYC identifications

POST/kyc-identifications

Put a person through an identity check. Which person is decided by the credential you present.

4 actionsKycidCmdConsumerKycidCmdDelegateKycidCmdManualKycidCmdSelf

Permissions

Required permission
merchantCustomers:update

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

Request body

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

Discriminated by type
type = "KycidCmdConsumer"
merchantIdMchtIdrequired

The merchant whose consumer this is. The check and the customer both belong to it.

Example mcht_9f2Kd8QpLzXw

emailAddressstringrequired

Example ada@example.com

phoneNumberstringrequired

E.164 format, e.g. +61400000000.

Example +61400000000

referenceCustomerIdstring

Your own identifier for this customer, carried through to the customer record.

Example your-own-reference

customerVerifiedbooleanrequired

true where you have already verified the email address and phone number yourself, so the platform does not send codes.

Example true

Who a person says they are, and the documents that prove it.

curl -X POST https://api.tst.au.apgpay.dev/kyc-identifications \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "type": "KycidCmdConsumer",
  "merchantId": "mcht_9f2Kd8QpLzXw",
  "emailAddress": "ada@example.com",
  "phoneNumber": "+61400000000",
  "referenceCustomerId": "your-own-reference",
  "customerVerified": true,
  "identification": {
    "type": "KycidIdentificationAttributes",
    "name": {
      "type": "KycidNameAttributes",
      "givenName": "Ada Lovelace",
      "middleName": "Ada Lovelace",
      "familyName": "Ada Lovelace"
    },
    "dateOfBirth": "2026-08-19",
    "address": {
      "type": "KycidAddressAttributes",
      "address": "string",
      "componentised": {
        "type": "MchtAddressAttributes",
        "unitNumber": "string",
        "streetNumber": "string",
        "streetName": "Ada Lovelace",
        "streetType": "string",
        "suburb": "string",
        "city": "string",
        "state": "string",
        "postalCode": "3000",
        "country": "AU"
      },
      "addressIdentifier": "string"
    },
    "documents": [
      {
        "type": "KycidDocAustralianLicence",
        "number": "string",
        "state": "string",
        "documentNumber": "string"
      }
    ]
  }
}'

Responses

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

Discriminated by type
type = "KycidResultAttributes"

What the platform already holds about this person, present on the delegate arm, where the business check named them as a beneficial owner. Prefill from it rather than asking again.

Example
{
  "type": "KycidResultAttributes",
  "outcome": {
    "type": "KycidOutcomeDetailsRequired",
    "message": "string"
  },
  "knownDetails": {
    "type": "PersonAttributes",
    "givenName": "Ada Lovelace",
    "middleName": "Ada Lovelace",
    "familyName": "Ada Lovelace",
    "dateOfBirth": "2026-08-19",
    "address": {
      "type": "MchtAddressAttributes",
      "unitNumber": "string",
      "streetNumber": "string",
      "streetName": "Ada Lovelace",
      "streetType": "string",
      "suburb": "string",
      "city": "string",
      "state": "string",
      "postalCode": "3000",
      "country": "AU"
    }
  }
}

Error responses