Handle signatures


The transactionRequiresSignature delegate is called when a signature must be confirmed as part of processing a transaction. Handle the transactionRequiresSignature delegate by writing the POS app to call either [ADYSignatureRequest submitConfirmedSignature:] or [ADYSignatureRequest submitUnconfirmedSignature:].

After this method has been called, the transaction will be paused until either submitConfirmedSignature: or submitUnconfirmedSignature: has been called on the given signatureRequest.

This method must be implemented in two different ways, depending on the presence of a printer on the payment-device (as determined by the paymentDeviceHasPrinter method on the Adyen class).

If the device has a printer:

  1. The device prints a receipt, which must be signed by the customer.
  2. The attendant compares this signature to the signature on the card, and either confirm that they are identical, or not.
  3. Implement the method to show a user-interface where the attendant can choose between Confirmed or Not confirmed, for example by pressing a button.
  4. The method must call either submitConfirmedSignature: or submitUnconfirmedSignature: on the signatureRequest, both with nil as the signatureImage parameter, to continue transaction processing.

If the device does not have a printer:

  1. Implement the method to display a user-interface on which the customer can draw a signature.
  2. Implement the method to allow the attendant to confirm or deny the drawn signature after comparing it to the signature on the card - for example, by pressing a button.
  3. The method must call either submitConfirmedSignature: or submitUnconfirmedSignature: on the given signatureRequest, both with the drawn image as signatureImage parameter.

Instead of calling submitConfirmedSignature: or submitUnconfirmedSignature:, it is also possible to cancel the transaction at this point as usual, by calling [ADYTransactionRequest requestCancel]. After a transaction has been cancelled, subsequent calls to submitConfirmedSignature: or submitUnconfirmedSignature: will have no effect.


Name Type Required Description



Request-object used to continue transaction processing.

Declaration code example


- (void)transactionRequiresSignature:(ADYSignatureRequest *)signatureRequest;


func transactionRequiresSignature(_ signatureRequest: ADYSignatureRequest!)