---
title: Validate Account Details via NPP
slug: api/validate-account-details-via-npp
docTags: 
createdAt: 2026-09-15T06:22:27.331Z
---

{
  "id": "PY_2jTZAakPi0F7W8VsXA",
  "type": "api-oas-v2",
  "data": {
    "method": "POST",
    "url": "https://api.mpay.com.au/verify/v1/aba/nppvalidate",
    "servers": [
      {
        "url": "https://api.mpay.com.au/verify/v1/aba/nppvalidate",
        "description": "Production URL"
      },
      {
        "url": "https://api.m-pay.com.au/verify/v1/aba/nppvalidate",
        "description": "Sandbox URL"
      }
    ],
    "name": "Validate Account Details via NPP",
    "description": "Validates a bank account or PayID via the NPP rail and returns the registered account owner name together with the fees that apply to the request.",
    "contentType": "application/json",
    "request": {
      "pathParameters": [],
      "headerParameters": [
        {
          "name": "accept",
          "type": "string",
          "kind": "optional",
          "description": "Generated from available response content types",
          "enum": [
            "application/json"
          ],
          "default": "application/json"
        }
      ],
      "queryParameters": [],
      "bodyDataParameters": [
        {
          "kind": "required",
          "name": "body",
          "type": "object",
          "description": "Request payload used to validate a bank account or PayID via the NPP rail.",
          "customType": "verifyNppValidateBody_V1",
          "schema": [
            {
              "name": "creditMethod",
              "kind": "required",
              "type": "string<NppCreditBankAccount | NppCreditPayId>",
              "description": "<p><strong>Required.</strong> Credit method. Possible values: 'NppCreditBankAccount' or 'NppCreditPayId'. This value determines which of the account fields below are <strong>Conditional</strong> and must be supplied.</p>",
              "example": "NppCreditBankAccount",
              "default": "NppCreditBankAccount",
              "enum": [
                "NppCreditBankAccount",
                "NppCreditPayId"
              ],
              "pattern": "^(NppCreditBankAccount|NppCreditPayId)$"
            },
            {
              "name": "bsb",
              "kind": "optional",
              "type": "string",
              "description": "<p><strong>Conditional.</strong> BSB number of associated bank account. BSB format is '999-999'. Required when creditMethod is 'NppCreditBankAccount'.</p>",
              "example": "032-001",
              "default": "032-001",
              "pattern": "^\\d{3}-\\d{3}$"
            },
            {
              "name": "bankAccountNumber",
              "kind": "optional",
              "type": "string",
              "description": "<p><strong>Conditional.</strong> Bank account number of associated bank account. Required when creditMethod is 'NppCreditBankAccount'.</p>",
              "example": "123456789",
              "default": "123456789",
              "pattern": "^\\d{5,10}$"
            },
            {
              "name": "accountName",
              "kind": "optional",
              "type": "string",
              "description": "<p><strong>Optional.</strong> Bank account title or name of associated bank account.</p>",
              "example": "Acme Pty Ltd",
              "default": "Acme Pty Ltd",
              "maxLength": 32,
              "pattern": "^[A-Za-z0-9 .,'&\\-\\/]{1,32}$"
            },
            {
              "name": "payId",
              "kind": "optional",
              "type": "string",
              "description": "<p><strong>Conditional.</strong> PayId Identifier of the Payee. Required when creditMethod is 'NppCreditPayId'.</p>",
              "example": "accounts@acme.com.au",
              "default": "accounts@acme.com.au",
              "maxLength": 256,
              "pattern": "^.{1,256}$"
            },
            {
              "name": "payIdType",
              "kind": "optional",
              "type": "string<ABN | Email | PhoneNumber | OrganisationId | ACN>",
              "description": "<p><strong>Conditional.</strong> PayId Type. Possible values: ABN, Email, PhoneNumber, OrganisationId, ACN. Required when creditMethod is 'NppCreditPayId'.</p>",
              "example": "Email",
              "default": "Email",
              "enum": [
                "ABN",
                "Email",
                "PhoneNumber",
                "OrganisationId",
                "ACN"
              ],
              "pattern": "^(ABN|Email|PhoneNumber|OrganisationId|ACN)$"
            },
            {
              "name": "remitter",
              "kind": "optional",
              "type": "string",
              "description": "<p><strong>Optional.</strong> The code contained in the remitter name field.</p>",
              "example": "ACME PTY LTD",
              "default": "ACME PTY LTD",
              "maxLength": 16,
              "pattern": "^[A-Za-z0-9 .,'&\\-]{1,16}$"
            },
            {
              "name": "lodgementReference",
              "kind": "optional",
              "type": "string",
              "description": "<p><strong>Optional.</strong> The reference recorded against the transaction and shown on the recipient's bank statement.</p>",
              "example": "ACCT VERIFY 4821",
              "default": "ACCT VERIFY 4821",
              "maxLength": 18,
              "pattern": "^[A-Za-z0-9 .,'&\\-]{1,18}$"
            },
            {
              "name": "verificationIdentifier",
              "kind": "optional",
              "type": "string",
              "description": "<p><strong>Optional.</strong> A description supplied by the VerificationSigninMerchant to distinguish this entry from others in a listing. This could be an encoded string from the signon merchant.</p>",
              "example": "SUPPLIER-ONBOARD-4821",
              "default": "SUPPLIER-ONBOARD-4821",
              "maxLength": 128,
              "pattern": "^.{1,128}$"
            }
          ],
          "modelRef": "#/components/schemas/verifyNppValidateBody_V1",
          "isExpanded": true
        }
      ],
      "formDataParameters": [],
      "oAuthParameters": [
        {
          "id": "basicAuth",
          "name": "basicAuth",
          "kind": "optional",
          "type": "http",
          "description": "<p>To authenticate using basic authentication, generate an API key and pass it as the username. No password is required.</p>",
          "scheme": "basic"
        }
      ],
      "cookieParameters": []
    },
    "responses": [
      {
        "statusCode": "200",
        "description": "Success. The account details were validated successfully.",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "Response returned when a bank account or PayID is validated via the NPP rail.",
            "customType": "verifyAccountNppValidateResponse_V1",
            "schema": [
              {
                "name": "feeAmountExGst",
                "kind": "optional",
                "type": "number<double>",
                "description": "<p><strong>Required.</strong> The fee amount excluding GST.</p>",
                "example": 0.3,
                "default": 0.3,
                "format": "double",
                "minimum": 0,
                "pattern": "^\\d+(\\.\\d{1,2})?$",
                "multipleOf": 0.01
              },
              {
                "name": "feeAmountIncGst",
                "kind": "optional",
                "type": "number<double>",
                "description": "<p><strong>Required.</strong> The fee amount including GST.</p>",
                "example": 0.33,
                "default": 0.33,
                "format": "double",
                "minimum": 0,
                "pattern": "^\\d+(\\.\\d{1,2})?$",
                "multipleOf": 0.01
              },
              {
                "name": "feeAmountGstComp",
                "kind": "optional",
                "type": "number<double>",
                "description": "<p><strong>Required.</strong> The GST Component of the fee amount.</p>",
                "example": 0.03,
                "default": 0.03,
                "format": "double",
                "minimum": 0,
                "pattern": "^\\d+(\\.\\d{1,2})?$",
                "multipleOf": 0.01
              },
              {
                "name": "ownerName",
                "kind": "optional",
                "type": "string",
                "nullable": true,
                "description": "<p><strong>Conditional.</strong> This is the PayId Name set up by account holder. When creditMethod is 'NppCreditBankAccount' this field is always Null.</p>",
                "example": "Acme Pty Ltd",
                "default": "Acme Pty Ltd",
                "pattern": "^.{0,140}$"
              },
              {
                "name": "durationMs",
                "kind": "optional",
                "type": "integer<int32>",
                "description": "<p><strong>Required.</strong> This value represents the total time in milliseconds that the Platform took to process the request.</p>",
                "example": 96,
                "default": 96,
                "format": "int32",
                "minimum": 0,
                "pattern": "^[0-9]{1,10}$"
              },
              {
                "name": "status",
                "kind": "optional",
                "type": "string",
                "description": "<p><strong>Required.</strong> This is the status of the request. A code of 'Ok' indicates no errors.</p>",
                "example": "Ok",
                "default": "Ok",
                "pattern": "^[A-Za-z0-9]{1,32}$"
              },
              {
                "name": "statusDescription",
                "kind": "optional",
                "type": "string",
                "description": "<p><strong>Required.</strong> This is a description of the status. If an 'Ok' status is returned, then this will be 'Operation completed successfully'.</p>",
                "example": "Operation completed successfully",
                "default": "Operation completed successfully",
                "pattern": "^.{0,512}$"
              }
            ],
            "modelRef": "#/components/schemas/verifyAccountNppValidateResponse_V1",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "400",
        "description": "<p>Bad Request. The request could not be processed because one or more fields are missing, malformed, or failed validation. Check <code>statusDescription</code> for the specific field or rule that failed.</p>",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"durationMs\":12,\"status\":\"Error\",\"statusDescription\":\"Validation failed: 'bsb' must be in the format '000-000'.\"}",
            "description": "Standard error envelope returned by every Account Verification endpoint.",
            "customType": "errorResponse",
            "schema": [
              {
                "name": "durationMs",
                "kind": "optional",
                "type": "integer<int32>",
                "description": "<p><strong>Required.</strong> This value represents the total time in milliseconds that the Platform took to process the request.</p>",
                "example": 12,
                "default": 12,
                "format": "int32",
                "minimum": 0,
                "pattern": "^[0-9]{1,10}$"
              },
              {
                "name": "status",
                "kind": "optional",
                "type": "string",
                "description": "<p><strong>Required.</strong> This is the status of the request. A code of 'Ok' indicates no errors. Any other code indicates that the request failed.</p>",
                "example": "Error",
                "default": "Error",
                "pattern": "^[A-Za-z0-9]{1,32}$"
              },
              {
                "name": "statusDescription",
                "kind": "optional",
                "type": "string",
                "description": "<p><strong>Required.</strong> This is a description of the status. When the request fails, this explains which field or rule caused the failure.</p>",
                "example": "Validation failed: 'bsb' must be in the format '000-000'.",
                "default": "Validation failed: 'bsb' must be in the format '000-000'.",
                "pattern": "^.{0,512}$"
              }
            ],
            "modelRef": "#/components/schemas/errorResponse",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "401",
        "description": "<p>Unauthorized. The API key was missing, malformed, or is not valid for this environment. Pass your API key as the basic authentication username with no password.</p>",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"durationMs\":4,\"status\":\"Unauthorized\",\"statusDescription\":\"Authentication failed. Supply a valid API key as the basic authentication username.\"}",
            "description": "Standard error envelope returned by every Account Verification endpoint.",
            "customType": "errorResponse",
            "schema": [
              {
                "name": "durationMs",
                "kind": "optional",
                "type": "integer<int32>",
                "description": "<p><strong>Required.</strong> This value represents the total time in milliseconds that the Platform took to process the request.</p>",
                "example": 12,
                "default": 12,
                "format": "int32",
                "minimum": 0,
                "pattern": "^[0-9]{1,10}$"
              },
              {
                "name": "status",
                "kind": "optional",
                "type": "string",
                "description": "<p><strong>Required.</strong> This is the status of the request. A code of 'Ok' indicates no errors. Any other code indicates that the request failed.</p>",
                "example": "Error",
                "default": "Error",
                "pattern": "^[A-Za-z0-9]{1,32}$"
              },
              {
                "name": "statusDescription",
                "kind": "optional",
                "type": "string",
                "description": "<p><strong>Required.</strong> This is a description of the status. When the request fails, this explains which field or rule caused the failure.</p>",
                "example": "Validation failed: 'bsb' must be in the format '000-000'.",
                "default": "Validation failed: 'bsb' must be in the format '000-000'.",
                "pattern": "^.{0,512}$"
              }
            ],
            "modelRef": "#/components/schemas/errorResponse",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "500",
        "description": "Internal Server Error. An unexpected error occurred while processing the request. The request was not completed and can be safely retried.",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"durationMs\":1503,\"status\":\"Error\",\"statusDescription\":\"An unexpected error occurred while processing the request. Please try again later.\"}",
            "description": "Standard error envelope returned by every Account Verification endpoint.",
            "customType": "errorResponse",
            "schema": [
              {
                "name": "durationMs",
                "kind": "optional",
                "type": "integer<int32>",
                "description": "<p><strong>Required.</strong> This value represents the total time in milliseconds that the Platform took to process the request.</p>",
                "example": 12,
                "default": 12,
                "format": "int32",
                "minimum": 0,
                "pattern": "^[0-9]{1,10}$"
              },
              {
                "name": "status",
                "kind": "optional",
                "type": "string",
                "description": "<p><strong>Required.</strong> This is the status of the request. A code of 'Ok' indicates no errors. Any other code indicates that the request failed.</p>",
                "example": "Error",
                "default": "Error",
                "pattern": "^[A-Za-z0-9]{1,32}$"
              },
              {
                "name": "statusDescription",
                "kind": "optional",
                "type": "string",
                "description": "<p><strong>Required.</strong> This is a description of the status. When the request fails, this explains which field or rule caused the failure.</p>",
                "example": "Validation failed: 'bsb' must be in the format '000-000'.",
                "default": "Validation failed: 'bsb' must be in the format '000-000'.",
                "pattern": "^.{0,512}$"
              }
            ],
            "modelRef": "#/components/schemas/errorResponse",
            "isExpanded": true
          }
        ]
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "vfXeSLY8cyItkH1hMHQo6",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request POST \\\n     --url https://api.mpay.com.au/verify/v1/aba/nppvalidate \\\n     --header 'accept: application/json' \\\n     --header 'content-type: application/json' \\\n     --data-raw '{\n     \"creditMethod\": \"NppCreditBankAccount\",\n     \"bsb\": \"032-001\",\n     \"bankAccountNumber\": \"123456789\",\n     \"accountName\": \"Acme Pty Ltd\",\n     \"payId\": \"accounts@acme.com.au\",\n     \"payIdType\": \"Email\",\n     \"remitter\": \"ACME PTY LTD\",\n     \"lodgementReference\": \"ACCT VERIFY 4821\",\n     \"verificationIdentifier\": \"SUPPLIER-ONBOARD-4821\"\n     }'"
        },
        {
          "id": "a-g5bTkhCt44gV9qw2S3d",
          "language": "javascript",
          "label": "javascript",
          "code": "var myHeaders = new Headers();\nmyHeaders.append(\"accept\", \"application/json\");\nmyHeaders.append(\"content-type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"creditMethod\": \"NppCreditBankAccount\",\n   \"bsb\": \"032-001\",\n   \"bankAccountNumber\": \"123456789\",\n   \"accountName\": \"Acme Pty Ltd\",\n   \"payId\": \"accounts@acme.com.au\",\n   \"payIdType\": \"Email\",\n   \"remitter\": \"ACME PTY LTD\",\n   \"lodgementReference\": \"ACCT VERIFY 4821\",\n   \"verificationIdentifier\": \"SUPPLIER-ONBOARD-4821\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.mpay.com.au/verify/v1/aba/nppvalidate\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));"
        },
        {
          "id": "9j1sHsrxT-TMUIN2hQtyz",
          "language": "ruby",
          "label": "Ruby",
          "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.mpay.com.au/verify/v1/aba/nppvalidate\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"accept\"] = \"application/json\"\nrequest[\"content-type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"creditMethod\": \"NppCreditBankAccount\",\n   \"bsb\": \"032-001\",\n   \"bankAccountNumber\": \"123456789\",\n   \"accountName\": \"Acme Pty Ltd\",\n   \"payId\": \"accounts@acme.com.au\",\n   \"payIdType\": \"Email\",\n   \"remitter\": \"ACME PTY LTD\",\n   \"lodgementReference\": \"ACCT VERIFY 4821\",\n   \"verificationIdentifier\": \"SUPPLIER-ONBOARD-4821\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n"
        },
        {
          "id": "CB3_YT90Ol75JNr2yjEOh",
          "language": "python",
          "label": "Python",
          "code": "import requests\nimport json\n\nurl = \"https://api.mpay.com.au/verify/v1/aba/nppvalidate\"\n\npayload = json.dumps({\n   \"creditMethod\": \"NppCreditBankAccount\",\n   \"bsb\": \"032-001\",\n   \"bankAccountNumber\": \"123456789\",\n   \"accountName\": \"Acme Pty Ltd\",\n   \"payId\": \"accounts@acme.com.au\",\n   \"payIdType\": \"Email\",\n   \"remitter\": \"ACME PTY LTD\",\n   \"lodgementReference\": \"ACCT VERIFY 4821\",\n   \"verificationIdentifier\": \"SUPPLIER-ONBOARD-4821\"\n})\nheaders = {\n   'accept': 'application/json',\n   'content-type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        }
      ],
      "selectedLanguageId": "vfXeSLY8cyItkH1hMHQo6"
    },
    "results": {
      "languages": [
        {
          "id": "response-0-200",
          "language": "200",
          "code": "// Success. The account details were validated successfully.\n{\n  \"feeAmountExGst\": 0.3,\n  \"feeAmountIncGst\": 0.33,\n  \"feeAmountGstComp\": 0.03,\n  \"ownerName\": \"Acme Pty Ltd\",\n  \"durationMs\": 96,\n  \"status\": \"Ok\",\n  \"statusDescription\": \"Operation completed successfully\"\n}"
        },
        {
          "id": "response-1-400",
          "language": "400",
          "code": "// Bad Request. The request could not be processed because one or more fields are missing, malformed, or failed validation. Check statusDescription for the specific field or rule that failed.\n{\n  \"durationMs\": 12,\n  \"status\": \"Error\",\n  \"statusDescription\": \"Validation failed: 'bsb' must be in the format '000-000'.\"\n}"
        },
        {
          "id": "response-2-401",
          "language": "401",
          "code": "// Unauthorized. The API key was missing, malformed, or is not valid for this environment. Pass your API key as the basic authentication username with no password.\n{\n  \"durationMs\": 12,\n  \"status\": \"Error\",\n  \"statusDescription\": \"Validation failed: 'bsb' must be in the format '000-000'.\"\n}"
        },
        {
          "id": "response-3-500",
          "language": "500",
          "code": "// Internal Server Error. An unexpected error occurred while processing the request. The request was not completed and can be safely retried.\n{\n  \"durationMs\": 12,\n  \"status\": \"Error\",\n  \"statusDescription\": \"Validation failed: 'bsb' must be in the format '000-000'.\"\n}"
        }
      ],
      "selectedLanguageId": "response-0-200"
    }
  },
  "children": [
    {
      "text": ""
    }
  ]
}