The result of a CoP verification is returned on the payment instrument's details.verification object. This guide covers the verification statuses, the shape of the verification object, and how to interpret each possible outcome.
This guide covers:
- Verification Status: Tracking the state of a verification
- Verification Object: The fields common to every verification method
- CoP Details: The CoP fields, including whether the account can send and receive NPP payments
- Match Results: How to interpret
match,close_match, andno_match - Verification Errors: What to do when verification cannot be completed
Verification Status
The details.verification.status field reflects the current state of the verification process:
| Status | Description |
|---|---|
in_progress | Verification has been initiated and is awaiting a response from the financial institution |
completed | Verification has finished. The outcome is in details |
failed | Verification cannot be completed (e.g., institution unavailable) |
Verification Object
When verification has been initiated, the details.verification object is present on the payment instrument resource. Its top-level fields are the same for every verification method; the fields specific to the method are in its details object:
{
"verification": {
"status": "completed",
"verified_at": "2025-12-02T16:35:01.987654Z",
"details": {
"method": "cop",
"result": "match",
"registered_account_owner_names": ["Jane Smith"],
"can_receive_npp_payments": true,
"can_send_npp_payments": true
}
}
}
| Field | Type | Description |
|---|---|---|
status | string | The verification process status: in_progress, completed, or failed |
verified_at | string | The date and time the verification was created (ISO 8601) |
details | object | The fields specific to the verification method, identified by details.method. See CoP Details |
latest_error | object | Details of the error if status is failed |
CoP Details
For CoP, details contains:
| Field | Type | Description |
|---|---|---|
method | string | The verification method used: cop |
result | string | The match outcome: match, close_match, or no_match. Only present when status is completed |
registered_account_owner_names | array of string | Up to five names registered against the account at the financial institution. Only present when status is completed. May be omitted for privacy reasons |
can_receive_npp_payments | boolean | Whether the account can receive NPP payments. Only present when returned by the financial institution |
can_send_npp_payments | boolean | Whether the account can send NPP payments. Only present when returned by the financial institution |
NPP Capabilities
Alongside the match result, the financial institution may report whether the account can take part in NPP (New Payments Platform) payments, in can_receive_npp_payments and can_send_npp_payments.
Check can_receive_npp_payments before sending a payout to the account. If it is false, a payment over NPP to this account will not succeed, so confirm the account details with the recipient or ask for another account. can_send_npp_payments matters when the account will be used to pay you.
If a field is absent, the financial institution did not return it: the capability is unknown.
Match Results
When status is completed, registered_account_owner_names contains the names registered against the account at the financial institution, up to five. These may be individual names, trading names, or AKAs. For joint accounts, " and others" is added to the last name, for example "Jane Smith and others". Some financial institutions may omit the names for privacy reasons.
Match
Meaning: The name provided very closely matches the name registered on the account. The match threshold allows for minor variations (a transposed letter or hyphenation difference, for example), so names like "Johnathan Smith" (provided) and "Jonathan Smith" (registered), or "Sarah-Jane Lee" and "Sarah Jane Lee", may still return match.
What you receive:
{
"verification": {
"status": "completed",
"verified_at": "2025-12-02T16:35:01.987654Z",
"details": {
"method": "cop",
"result": "match",
"registered_account_owner_names": ["Jane Smith"],
"can_receive_npp_payments": true,
"can_send_npp_payments": true
}
}
}
Recommended action: Proceed with the payout. The account details are confirmed.
Close Match
Meaning: The name is similar but not identical. Common causes include spelling errors, shortened names, missing middle names, and formatting differences. For example, "Jane Smith" (provided) and "Jane A Smith" (registered), or "J P Richards" and "John-Paul Richards".
What you receive:
{
"verification": {
"status": "completed",
"verified_at": "2025-12-02T16:35:05.123456Z",
"details": {
"method": "cop",
"result": "close_match",
"registered_account_owner_names": ["Jane A Smith"],
"can_receive_npp_payments": true,
"can_send_npp_payments": true
}
}
}
Recommended action: Review the registered_account_owner_names (if returned) for discrepancies and confirm the account details with the intended recipient before proceeding.
No Match
Meaning: The names do not meaningfully align. The name provided bears no sufficient resemblance to the name registered against this account.
What you receive:
{
"verification": {
"status": "completed",
"verified_at": "2025-12-02T16:35:08.654321Z",
"details": {
"method": "cop",
"result": "no_match",
"can_receive_npp_payments": true,
"can_send_npp_payments": true
}
}
}
Recommended action: Do not proceed with the payout without investigating further. A no_match result typically means one of:
- The BSB and/or account number belong to a different person than intended
- The account owner name provided is incorrect
- The recipient supplied incorrect account details
Contact the intended recipient to confirm their details before retrying. If the details have changed, create a new payment instrument with the corrected information and run verification again.
Sending a payout to an account that returned no_match carries a significant risk of misdirected payment and potential fraud. Always treat no_match as a blocker unless you have independently confirmed the discrepancy.
Verification Errors
When status is failed, CoP could not check the name. Some causes are temporary, such as the verification service being unavailable; others mean the account details are wrong, such as the account being closed or not found. This is distinct from no_match, where the check completed but the names did not align. The details object contains only the method.
What you receive:
{
"verification": {
"status": "failed",
"verified_at": "2025-12-02T16:35:10.000000Z",
"details": {
"method": "cop"
},
"latest_error": {
"code": "ACCOUNT_VERIFICATION_SERVICE_UNAVAILABLE",
"message": "Account verification service unavailable"
}
}
}
Recommended action: Check latest_error.code and act accordingly:
| Error Code | Message | Recommended Action |
|---|---|---|
ACCOUNT_VERIFICATION_SERVICE_UNAVAILABLE | Account verification service unavailable | Retry after a short delay |
ACCOUNT_VERIFICATION_LIMIT_REACHED | Daily account verification limit reached | Retry the following day, or contact support to have your limit reviewed |
ACCOUNT_VERIFICATION_NO_MATCH_LIMIT_REACHED | Daily account verification no match limit reached | Retry the following day, or contact support to have your limit reviewed |
DATA_INVALID_INSTITUTIONAL_IDENTIFIER | Institutional Identifier (e.g. BSB, ABN, BIC) is Not Valid | Review the account details with the recipient |
PAYEE_ACCOUNT_CLOSED | Payee Account is Closed | The account is closed or could not be found. Review the account details with the recipient |
UNKNOWN | An Unexpected Error Occurred | Contact support for assistance |
If the issue persists, contact [email protected].
Next Steps
- CoP Webhooks - Full webhook payload reference for all CoP outcomes
- Getting Started with CoP - Step-by-step implementation guide