# Contract
source: https://developer.mastercard.com/mastercard-processing-core/documentation/api-basics-section/contract/index.md

### Contract {#contract}

A contract is a category of objects that exist in two forms: account contract and card contract. Although they are objects of the same class, both are inherited from contract objects. This allows some CMS functionalities (for example, usage limits, transactions, addresses, and classifiers) to be available on the contract level. These functionalities are accessible with one common operation that requires `contractId` in the path. You can provide the `accountContractId` or `cardContractId` depending on which object the operation is to be performed on.

### Account Contract {#account-contract}

Represents an account owned by a client who is in the account owner role. An account contract must be created for each client. An account contract can have multiple card contracts or account contracts linked as sub-accounts forming a hierarchical tree. The mandatory dataset for creating an `AccountContract` object contains the following:

* Account [object identifiers](https://developer.mastercard.com/mastercard-processing-core/documentation/api-basics-section/object-identifiers/index.md).
* A `productCode` that determines a set of general [configuration parameters](https://developer.mastercard.com/mastercard-processing-core/documentation/api-basics-section/product-config/index.md) including currency. ![](https://static.developer.mastercard.com/content/mastercard-processing-core/uploads/processing_10.png)
