--- title: "Handle the Signature callback" url: "https://docs.adyen.com/point-of-sale/classic-library-deprecation/classic-library-integrations/c-library-integration/key-steps-c-library/process-a-basic-transaction-c-library/handle-the-signature-callback-c-library" source_url: "https://docs.adyen.com/point-of-sale/classic-library-deprecation/classic-library-integrations/c-library-integration/key-steps-c-library/process-a-basic-transaction-c-library/handle-the-signature-callback-c-library.md" canonical: "https://docs.adyen.com/point-of-sale/classic-library-deprecation/classic-library-integrations/c-library-integration/key-steps-c-library/process-a-basic-transaction-c-library/handle-the-signature-callback-c-library" last_modified: "2021-01-12T16:02:00+01:00" language: "en" --- # Handle the Signature callback [View source](/point-of-sale/classic-library-deprecation/classic-library-integrations/c-library-integration/key-steps-c-library/process-a-basic-transaction-c-library/handle-the-signature-callback-c-library.md) ## Implement the signature callback Implement the `tender_check_signature_CB` and assign to the function pointer `status_tender_check_signature`. For more information on how to do this, see [Implement callbacks with register\_device\_request](/point-of-sale/classic-library-deprecation/classic-library-integrations/c-library-integration/calls-and-callbacks-c-library/implement-callbacks-with-register_device_request). ### Code example ```cpp void tender_check_signature_CB(response_header *, ped_device_info *, void * echo_struct); ``` ## Handle the check signature callback The `tender_check_signature_CB` is invoked whenever a shopper signature is required, either on the touchscreen of the PED or on a printed paper receipt. The PED must confirm this and accept or decline the signature to proceed. * The shopper can sign on the touch screen display of the PED. The check signature callback then invokes the merchant to accept or decline the signature. In that case, the response header contains a graphic representation of the signature, so it can be shown on the POS. * A signature on the printed paper copy of the receipt also needs to be confirmed. In this scenario, there would not be no graphical representation of the signature. In both cases, it is assumed that a cashier checks the signature against the signature on the back of the card, before confirming and accepting the signature. Create this function and assign to the function pointer  `status_tender_check_signature`. ### Parameters | Field | Description | | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `response_header` | Pointer to the `response_header` struct, this struct contains all the input parameters for this call. This includes the `additional_data` struct and its signature data elements. | | `ped_device_info` | Pointer to the `ped_device_info` struct in the POS. Called with the results of the create tender call. | | `echo_struct` | Pointer to a POS defined struct. Returned in the callback. Can be used to share a POS data struct between the call to the library and the associated callback from the library | The `state` is an enum of type `TENDER_STATE` and contains the transaction state, which is `CHECK_SIGNATURE`. ## Confirming the check signature callback ### Function | Name | Description | | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |  `confirm_signature` | In response to the check signature callback, a call must be made to inform the Library that the merchant has approved or declined the signature of the shopper. The transaction continues after this confirmation is received. | ### Parameters | Field | Description | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `terminal_id` | Terminal id of the PED. | | `tender_reference` | Tender reference of the transaction. | | `confirmation` | Enum of type a `ATTENDANT_ACTION_CODE`, indicating either `ATTENDANT_ACTION_CODE_APPROVED`, `ATTENDANT_ACTION_CODE_DECLINED`, `ATTENDANT_ACTION_CODE_RETRY`. | ### Code example The declaration of the call to confirm the signature callback is as follows: ```cpp  confirm_signature (char *terminal_id, char *tender_reference, ATTENDANT_ACTION_CODE confirmation) ```