# Agreement

**Agreement** is a smart contract that tracks how many **Certificates** were delivered from a **buyer** to a **seller**.

It implements the `onERC1155Received` interface and detects when a Certificate is sent to the agreement, then immediately forwards it to the buyer and accounts for the delivery.

Once the Agreement is fulfilled, it can no longer receive Certificates tokens.

![](https://1042227828-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJ1hmZlUO8raciusperMH%2Fuploads%2FWJsfPY9f1WFnqHpSWfJN%2Fimage.png?alt=media\&token=564aac2f-2f1b-4c7c-860e-7622248bb216)
