> ## Documentation Index
> Fetch the complete documentation index at: https://docs.paysway.io/llms.txt
> Use this file to discover all available pages before exploring further.

# United Kingdom (CoP)

The UK Confirmation of Payee (CoP) scheme enables real-time verification of account details before making payments.
This synchronous verification service validates account numbers, sort codes, and account holder names against the receiving bank's records.

**Processing mode:** synchronous

## Verification capabilities

* Account status: `ACTIVE`, `NOT_FOUND`, `FORBIDDEN`
* Beneficiary name match status: `FULL_MATCH`, `PARTIAL_MATCH`, `NO_MATCH`
* Optional beneficiary name disclosure (in cases of `PARTIAL_MATCH`)
* Account type match status: `MATCH` or `NO_MATCH`

<Accordion title="Supported banks">
  All banks participating in the UK Confirmation of Payee (CoP) scheme are supported.
</Accordion>

<Accordion title="Required fields">
  <ParamField path="country" type="string" required>
    Must be one of `GB`, `GG`, `GI`, `IM`, `JE`
  </ParamField>

  <ParamField path="creditorAccount.id.value" type="string" required>
    Account number in local format (8 digits)
  </ParamField>

  <ParamField path="creditorAccount.id.type" type="string" required>
    Must be `ACCOUNT_NUMBER`
  </ParamField>

  <ParamField path="creditorAgent.clearingSystemMemberId.memberId" type="string" required>
    Sort code (6 digits)
  </ParamField>

  <ParamField path="creditor.type" type="string" required>
    Account holder type. Must be one of:

    * `INDIVIDUAL` - Personal account
    * `BUSINESS` - Business account
  </ParamField>

  <ParamField path="creditor.name" type="string" required>
    Account holder name for matching
  </ParamField>
</Accordion>

## Scheme response codes

The CoP scheme returns specific response codes that indicate the verification outcome.
These codes are mapped to high-level status fields.

| schemeResponseCode | Description                                                              | accountStatus | nameMatchStatus | accountTypeMatchStatus |
| ------------------ | ------------------------------------------------------------------------ | ------------- | --------------- | ---------------------- |
| *(none)*           | Full match                                                               | `ACTIVE`      | `FULL_MATCH`    | `MATCH`                |
| `UK_COP_ANNM`      | Not a match                                                              | `ACTIVE`      | `NO_MATCH`      |                        |
| `UK_COP_MBAM`      | Close match                                                              | `ACTIVE`      | `PARTIAL_MATCH` | `MATCH`                |
| `UK_COP_BANM`      | Name matches, account type mismatch (expected personal, actual business) | `ACTIVE`      | `FULL_MATCH`    | `NO_MATCH`             |
| `UK_COP_PANM`      | Name matches, account type mismatch (expected business, actual personal) | `ACTIVE`      | `FULL_MATCH`    | `NO_MATCH`             |
| `UK_COP_BAMM`      | Close match, account type mismatch (expected personal, actual business)  | `ACTIVE`      | `PARTIAL_MATCH` | `NO_MATCH`             |
| `UK_COP_PAMM`      | Close match, account type mismatch (expected business, actual personal)  | `ACTIVE`      | `PARTIAL_MATCH` | `NO_MATCH`             |
| `UK_COP_AC01`      | Account does not exist                                                   | `NOT_FOUND`   |                 |                        |
| `UK_COP_IVCR`      | Unable to locate account based on the reference data                     | `NOT_FOUND`   |                 |                        |
| `UK_COP_ACNS`      | Account not supported for CoP                                            | `FORBIDDEN`   |                 |                        |
| `UK_COP_OPTO`      | Payee has opted out of CoP                                               | `FORBIDDEN`   |                 |                        |
| `UK_COP_CASS`      | Account has been switched using the Current Account Switch Service       | `FORBIDDEN`   |                 |                        |
| `UK_COP_SCNS`      | Sort code does not belong to the responder                               | `FORBIDDEN`   |                 |                        |

<Tip>
  You can either use `schemeResponseCode` directly, or rely on the derived `accountStatus`, `accountHolderName.matchStatus`, and `accountType.matchStatus` fields in your integration.
</Tip>

## Examples

### Full match

When the name, account, and account type all match perfectly, no scheme response code is returned.

```json Request theme={null}
{
  "details": {
    "country": "GB",
    "creditorAccount": {
      "id": {
        "value": "55065204",
        "type": "ACCOUNT_NUMBER"
      }
    },
    "creditorAgent": {
      "clearingSystemMemberId": {
        "memberId": "300000"
      }
    },
    "creditor": {
      "type": "INDIVIDUAL",
      "name": "Jonathan Smith"
    }
  }
}
```

```json Response theme={null}
{
  "id": "5a0a2fc7-0946-4774-ae37-3cbefed212c0",
  "createdDate": "2026-08-22T15:18:51.801733Z",
  "updatedDate": "2026-08-22T15:18:51.801733Z",
  "state": "COMPLETED",
  "result": {
    "accountStatus": "ACTIVE",
    "accountHolderName": {
      "matchStatus": "FULL_MATCH"
    },
    "accountType": {
      "matchStatus": "MATCH"
    }
  }
}
```

### Not a match

The provided name does not match the account holder name.

```json Request theme={null}
{
  "details": {
    "country": "GB",
    "creditorAccount": {
      "id": {
        "value": "55065204",
        "type": "ACCOUNT_NUMBER"
      }
    },
    "creditorAgent": {
      "clearingSystemMemberId": {
        "memberId": "300000"
      }
    },
    "creditor": {
      "type": "INDIVIDUAL",
      "name": "John Smith"
    }
  }
}
```

```json Response theme={null}
{
  "id": "0713a7e4-7051-490c-80ad-de45d63fb2ae",
  "createdDate": "2026-08-22T15:19:25.241335Z",
  "updatedDate": "2026-08-22T15:19:25.241335Z",
  "state": "COMPLETED",
  "result": {
    "accountStatus": "ACTIVE",
    "accountHolderName": {
      "matchStatus": "NO_MATCH"
    },
    "schemeResponseCode": "UK_COP_ANNM"
  }
}
```

### Close match

The name is a close match and the account type is correct.

```json Request theme={null}
{
  "details": {
    "country": "GB",
    "creditorAccount": {
      "id": {
        "value": "55065204",
        "type": "ACCOUNT_NUMBER"
      }
    },
    "creditorAgent": {
      "clearingSystemMemberId": {
        "memberId": "300000"
      }
    },
    "creditor": {
      "type": "INDIVIDUAL",
      "name": "Jonathan Smyth"
    }
  }
}
```

```json Response theme={null}
{
  "id": "d472fb1a-6db7-4aa7-a0b3-091806a11de1",
  "createdDate": "2026-08-22T15:24:07.595352Z",
  "updatedDate": "2026-08-22T15:24:07.595352Z",
  "state": "COMPLETED",
  "result": {
    "accountStatus": "ACTIVE",
    "accountHolderName": {
      "verifiedName": "Jonathan Smith",
      "matchStatus": "PARTIAL_MATCH"
    },
    "accountType": {
      "matchStatus": "MATCH"
    },
    "schemeResponseCode": "UK_COP_MBAM"
  }
}
```

### Name match, account type mismatch

The payer intended to pay a business account, but the actual account is a personal account. The name matches.

```json Request theme={null}
{
  "details": {
    "country": "GB",
    "creditorAccount": {
      "id": {
        "value": "55065204",
        "type": "ACCOUNT_NUMBER"
      }
    },
    "creditorAgent": {
      "clearingSystemMemberId": {
        "memberId": "300000"
      }
    },
    "creditor": {
      "type": "BUSINESS",
      "name": "Jonathan Smith"
    }
  }
}
```

```json Response theme={null}
{
  "id": "77e7a5a9-0f24-431a-af05-7a711f5b1d3b",
  "createdDate": "2026-08-22T15:29:38.905247Z",
  "updatedDate": "2026-08-22T15:29:38.905247Z",
  "state": "COMPLETED",
  "result": {
    "accountStatus": "ACTIVE",
    "accountHolderName": {
      "matchStatus": "FULL_MATCH"
    },
    "accountType": {
      "matchStatus": "NO_MATCH"
    },
    "schemeResponseCode": "UK_COP_PANM"
  }
}
```

### Close match, account type mismatch

The payer intended to pay a business account, but the actual account is a personal account. The name is a close match.

```json Request theme={null}
{
  "details": {
    "country": "GB",
    "creditorAccount": {
      "id": {
        "value": "55065204",
        "type": "ACCOUNT_NUMBER"
      }
    },
    "creditorAgent": {
      "clearingSystemMemberId": {
        "memberId": "300000"
      }
    },
    "creditor": {
      "type": "BUSINESS",
      "name": "Jonathan Smyth"
    }
  }
}
```

```json Response theme={null}
{
  "id": "de64f40d-25ce-47d1-9c80-9b0f9366a327",
  "createdDate": "2026-08-22T15:30:53.536011Z",
  "updatedDate": "2026-08-22T15:30:53.536011Z",
  "state": "COMPLETED",
  "result": {
    "accountStatus": "ACTIVE",
    "accountHolderName": {
      "verifiedName": "Jonathan Smith",
      "matchStatus": "PARTIAL_MATCH"
    },
    "accountType": {
      "matchStatus": "NO_MATCH"
    },
    "schemeResponseCode": "UK_COP_PAMM"
  }
}
```

### Account does not exist

The account does not exist in the CoP Responder's books.

```json Request theme={null}
{
  "details": {
    "country": "GB",
    "creditorAccount": {
      "id": {
        "value": "55065205",
        "type": "ACCOUNT_NUMBER"
      }
    },
    "creditorAgent": {
      "clearingSystemMemberId": {
        "memberId": "300000"
      }
    },
    "creditor": {
      "type": "INDIVIDUAL",
      "name": "Jonathan Smith"
    }
  }
}
```

```json Response theme={null}
{
  "id": "0beaa1b3-fd9a-4885-80ad-b4bf23638452",
  "createdDate": "2026-08-22T15:34:08.871065Z",
  "updatedDate": "2026-08-22T15:34:08.871065Z",
  "state": "COMPLETED",
  "result": {
    "accountStatus": "NOT_FOUND",
    "schemeResponseCode": "UK_COP_AC01"
  }
}
```
