--- title: "Configuring Transaction Reminders" slug: "configuring-transaction-reminders" updated: 2025-07-28T11:40:43Z published: 2025-07-28T11:40:43Z canonical: "docs.onespan.com/configuring-transaction-reminders" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.onespan.com/llms.txt > Use this file to discover all available pages before exploring further. # Configuring Transaction Reminders [Java SDK](/v1/docs/configuring-transaction-reminders#java-sdk) [.NET SDK](/v1/docs/configuring-transaction-reminders#net-sdk) [REST API](/v1/docs/configuring-transaction-reminders#rest-api) [APEX SDK](/v1/docs/configuring-transaction-reminders#apex-sdk) ## Java SDK To download the full code sample see our [Code Share](https://community.onespan.com/documentation/onespan-sign/codeshare/reminder-schedule-java-sdk/) site. By setting a reminder schedule, a sender can choose when and how often to notify a signer about a pending signature, in addition to the initial notification sent the moment the transaction is sent for signing. In other words, assuming the transaction is not yet completed, a customizable number of notifications can be sent with a specified interval between each to remind your signer that a signature is required. Reminder emails are sent using a cron job, which is triggered every hour at xx:30. This means that if a reminder is scheduled to be sent at 7:26, it will be sent as part of the cron job at 7:30. ### Creating a Reminder Schedule To create a ReminderSchedule object you will need to pass your packageId object as a parameter to the ReminderScheduleBuilder, along with the settings that suit your requirements. As you need a packageId to set your reminder schedule, you will need to do this AFTER you have created the transaction, but BEFORE you send it. So if you’re using the createAndSendPackage() method to send your packages, you’ll need to split it up. Note the following: - withDaysUntilFirstReminder(): This method allows you to wait a certain amount of days before sending the first reminder. This will not affect the initial notification sent the moment your transaction is sent for signing. - withDaysBetweenReminders(): This method sets the frequency of your reminders. - withNumberOfRepetitions() : This method sets the number of reminders OneSpan Sign will send to your signer(s), with a maximum of 5 reminders. Once you have built your ReminderSchedule object, use the OneSpan Sign ReminderService to create your reminder schedule. The following code will do this: ```java ReminderSchedule reminderScheduleToCreate = ReminderScheduleBuilder.forPackageWithId(packageId)   .withDaysUntilFirstReminder(1)   .withDaysBetweenReminders(1)   .withNumberOfRepetitions(5)   .build();   eslClient.getReminderService().createReminderScheduleForPackage(reminderScheduleToCreate); ``` ### Updating a Reminder Schedule Once you’ve sent your transaction for signing, you can update your reminder schedule. To do this, create a new ReminderSchedule object using different parameters and then once again use the OneSpan Sign ReminderService to update your reminder schedule. The following code will do this: eslClient.getReminderService().updateReminderScheduleForPackage(reminderScheduleToUpdate); ### Retrieving a Reminder Schedule You can also retrieve your ReminderSchedule object by calling on the OneSpan Sign ReminderService. By doing this, you will also get all the reminders that have been sent to your signers, in a list format. The following code will do this: ```java ReminderSchedule reminderSchedule = client.getReminderService().getReminderScheduleForPackage(packageId);   List reminders = reminderSchedule.getReminders();   for (Reminder reminder : reminders) {   System.out.println(reminder.getSentDate());   } ``` ### Deleting a Reminder Schedule To delete your reminder schedule, you once again use the OneSpan Sign ReminderService. The following code will do this: ```java eslClient.getReminderService().clearReminderScheduleForPackage(packageId); ``` ### Results Here is an example of what you can expect to see once you have run your code. This is an example of a reminder email that will be sent to your signers: ![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/reminder_2.png?sv=2026-02-06&spr=https&st=2026-11-13T09%3A59%3A08Z&se=2026-11-13T10%3A59%3A08Z&sr=c&sp=r&sig=T12CJy63mQUtYYluMlVIAOk7U8JU%2BtJ9%2F2VuN4%2FL97I%3D) This is an example of what the reminders list looks like: ![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/reminder_java_1-1.png?sv=2026-02-06&spr=https&st=2026-11-13T09%3A59%3A08Z&se=2026-11-13T10%3A59%3A08Z&sr=c&sp=r&sig=T12CJy63mQUtYYluMlVIAOk7U8JU%2BtJ9%2F2VuN4%2FL97I%3D) ## .NET SDK To download the full code sample see our [Code Share](https://community.onespan.com/documentation/onespan-sign/codeshare/reminder-schedule-net-sdk/) site. By setting a reminder schedule, a sender can choose when and how often to notify a signer about a pending signature, in addition to the initial notification sent the moment the transaction is sent for signing. In other words, assuming the transaction is not yet completed, a customizable number of notifications can be sent with a specified interval between each to remind your signer that a signature is required. Reminder emails are sent using a cron job, which is triggered every hour at xx:30. This means that if a reminder is scheduled to be sent at 7:26, it will be sent as part of the cron job at 7:30. ### Creating a Reminder Schedule To create a ReminderSchedule object you will need to pass your packageId object as a parameter to the ReminderScheduleBuilder, along with the settings that suit your requirements. As you need a packageId to set your reminder schedule, you will need to do this AFTER you have created the transaction, but BEFORE you send it. So if you’re using the createAndSendPackage() method to send your packages, you’ll need to split it up. Note the following: - withDaysUntilFirstReminder(): This method allows you to wait a certain amount of days before sending the first reminder. This will not affect the initial notification sent the moment your transaction is sent for signing. - withDaysBetweenReminders(): This method sets the frequency of your reminders. - withNumberOfRepetitions() : This method sets the number of reminders OneSpan Sign will send to your signer(s), with a maximum of 5 reminders. Once you have built your ReminderSchedule object, use the OneSpan Sign ReminderService to create your reminder schedule. The following code will do this: ```csharp ReminderSchedule reminderScheduleToCreate = ReminderScheduleBuilder.ForPackageWithId(packageId)   .WithDaysUntilFirstReminder(1)   .WithDaysBetweenReminders(1)   .WithNumberOfRepetitions(5)   .Build();   eslClient.ReminderService.CreateReminderScheduleForPackage(reminderScheduleToCreate); ``` ### Updating a Reminder Schedule Once you’ve sent your transaction for signing, you can update your reminder schedule. To do this, create a new ReminderSchedule object using different parameters and then once again use the OneSpan Sign ReminderService to update your reminder schedule. The following code will do this: ```csharp eslClient.ReminderService.UpdateReminderScheduleForPackage(reminderScheduleToUpdate); ``` ### Retrieving a Reminder Schedule You can also retrieve your ReminderSchedule object by calling on the OneSpan Sign ReminderService. By doing this, you will also get all the reminders that have been sent to your signers, in a list format. The following code will do this: ```csharp ReminderSchedule createdReminderSchedule = eslClient.ReminderService.GetReminderScheduleForPackage(packageId);   List reminders = createdReminderSchedule.Reminders;   foreach (Reminder reminder in reminders)   {   Debug.WriteLine(reminder.SentDate);   } ``` ### Deleting a Reminder Schedule To delete your reminder schedule, you once again use the OneSpan Sign ReminderService. The following code will do this: ```csharp eslClient.ReminderService.ClearReminderScheduleForPackage(packageId); ``` ### Results Here is an example of what you can expect to see once you have run your code. This is an example of a reminder email that will be sent to your signers: ![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/reminder_2.png?sv=2026-02-06&spr=https&st=2026-11-13T09%3A59%3A08Z&se=2026-11-13T10%3A59%3A08Z&sr=c&sp=r&sig=T12CJy63mQUtYYluMlVIAOk7U8JU%2BtJ9%2F2VuN4%2FL97I%3D) This is an example of what the reminders list looks like: ![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/reminder_csharp_1.png?sv=2026-02-06&spr=https&st=2026-11-13T09%3A59%3A08Z&se=2026-11-13T10%3A59%3A08Z&sr=c&sp=r&sig=T12CJy63mQUtYYluMlVIAOk7U8JU%2BtJ9%2F2VuN4%2FL97I%3D) ## REST API To download the full code sample see our [Code Share](https://community.onespan.com/documentation/onespan-sign/codeshare/reminder-schedules-rest-api/) site. By setting a reminder schedule, a sender can choose when and how often to notify a signer about a pending signature, in addition to the initial notification sent the moment the transaction is sent for signing. In other words, assuming the transaction is not yet completed, a customizable number of notifications can be sent with a specified interval between each to remind your signer that a signature is required. Reminder emails are sent using a cron job, which is triggered every hour at xx:30. This means that if a reminder is scheduled to be sent at 7:26, it will be sent as part of the cron job at 7:30. You can create a reminder schedule by making the following request: #### HTTP Request ```http POST /api/packages/{packageId}/reminders ``` #### HTTP Headers ```http Accept: application/json   Content-Type: application/json   Authorization: Basic api_key ``` #### Request Payload ```json { "startInDaysDelay": 1, "repetitionsCount": 5, "intervalInDays": 1, "packageId": "{packageId}" } ``` For a complete description of each field, see the Request Payload table below. #### Response Payload ```json { "startInDaysDelay": 1, "repetitionsCount": 5, "intervalInDays": 1, "reminders": [], "packageId": "{packageId}" } ``` To create a ReminderSchedule object you will need to pass your packageId object as a parameter to the ReminderScheduleBuilder, along with the settings that suit your requirements. Note the following: - startInDaysDelay: This object allows you to wait a certain amount of days before sending the first reminder. This will not affect the initial notification sent the moment you sent your transaction for signing. - intervalInDays: This object sets the frequency of your reminders. - repetitionsCount: This object sets the number of reminders OneSpan Sign will send to your signer(s), with a maximum of 5 reminders. To set a reminder schedule, your package must be in DRAFT. ### Updating a Reminder Schedule Once you’ve sent your transaction for signing, you can update your reminder schedule by making a PUT request to the base URL, using different parameters. #### HTTP Request ```http PUT /api/packages/{packageId}/reminders ``` #### HTTP Headers ```http Accept: application/json   Content-Type: application/json   Authorization: Basic api_key ``` #### Request Payload ```json { "startInDaysDelay": 2, "repetitionsCount": 5, "intervalInDays": 3, "packageId": "{packageId}" } ``` #### Response Payload ```json { "startInDaysDelay": 2, "repetitionsCount": 5, "intervalInDays": 3, "reminders": [], "packageId": "{packageId}" } ``` ### Retrieving a Reminder Schedule You can retrieve your reminder schedule by making a GET request to the base URL. By doing this, you will also get all the reminders that have been sent to your signer(s). #### HTTP Request ```http GET /api/packages/{packageId}/reminders ``` #### HTTP Headers ```http Accept: application/json   Content-Type: application/json   Authorization: Basic api_key ``` #### Response Payload ```json { "packageId": "ebfcf18f-7bbc-4ff6-a5db-6352dbbfa9f6", "startInDaysDelay": 2, "repetitionsCount": 5, "intervalInDays": 2, "reminders": [{ "sentDate": "2016-02-26T00:30:02Z", "date": "2016-02-25T16:53:13Z" }, { "sentDate": "2016-02-27T00:30:03Z", "date": "2016-02-26T16:53:13Z" }, { "sentDate": "2016-02-28T00:30:01Z", "date": "2016-02-27T16:53:13Z" }, { "sentDate": "2016-02-29T00:30:02Z", "date": "2016-02-28T16:53:13Z" }, { "sentDate": null, "date": "2016-02-29T16:53:13Z" }, { "sentDate": null, "date": "2016-03-01T16:53:13Z" }] } ``` ### Deleting a Reminder Schedule To delete your reminder schedule, make a DELETE request: #### HTTP Request ```http DELETE /api/packages/{packageId}/reminders ``` #### HTTP Headers ```http Accept: application/json   Content-Type: application/json   Authorization: Basic api_key ``` ### Results Here is an example of what you can expect to see once you have run your code. This is an example of a reminder email that will be sent to your signers: ![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/reminder_2.png?sv=2026-02-06&spr=https&st=2026-11-13T09%3A59%3A08Z&se=2026-11-13T10%3A59%3A08Z&sr=c&sp=r&sig=T12CJy63mQUtYYluMlVIAOk7U8JU%2BtJ9%2F2VuN4%2FL97I%3D) ### Request Payload Table | Property | Type | Editable | Required | Default | Sample Values | | --- | --- | --- | --- | --- | --- | | startInDaysDelay | integer | Yes | No | n/a | 1 / 2 / 3 ... | | repetitionsCount | integer | Yes | No | n/a | 1 / 2 / 3 ... | | intervalInDays | integer | Yes | No | n/a | 1 / 2 / 3 ... | | packageId | string | Yes | No | n/a | 0ab0_b0jzotEqdXx9NJ-pzhJJ1c= | ## APEX SDK To download the full code sample see our [Code Share](https://community.onespan.com/documentation/onespan-sign/codeshare/reminder-schedule-apex-sdk/) site. By setting a reminder schedule, a sender can choose when and how often to notify a signer about a pending signature, in addition to the initial notification sent the moment the transaction is sent for signing. In other words, assuming the transaction is not yet completed, a customizable number of notifications can be sent with a specified interval between each to remind your signer that a signature is required. Reminder emails are sent using a cron job, which is triggered every hour at xx:30. This means that if a reminder is scheduled to be sent at 7:26, it will be sent as part of the cron job at 7:30. The following function will allow you to add a Reminder Schedule to an existing transaction. ```plaintext public void createReminderScheduleForPackage(String packageId,Integer startInDaysDelay,Integer repetitionsCount,Integer intervalInDays) ``` As you need a packageId to set your reminder schedule, you will need to do this AFTER you have created the transaction, but BEFORE you send it. Note the following: - **startInDaysDelay**: This parameter allows you to wait a certain amount of days before sending the first reminder. This will not affect the initial notification sent the moment your transaction is sent for signing. - **intervalInDays**: This parameter sets the frequency of your reminders. - **repetitionsCount**: This parameter sets the number of reminders OneSpan Sign will send to your signer(s), with a maximum of 5 reminders. ### Updating a Reminder Schedule Once you’ve sent your transaction for signing, you can update your reminder schedule. The following code will do this: ```plaintext public void updateReminderScheduleForPackage(String packageId,Integer startInDaysDelay,Integer repetitionsCount,Integer intervalInDays) ``` ### Retrieving a Reminder Schedule You can also retrieve your ReminderSchedule . By doing this, you will also get all the reminders that have been sent to your signers, in a list format. The following code will do this: ```plaintext public TestReminders.ReminderSchedule getReminderScheduleForPackage(String packageId) ``` By doing this, you will also get all the reminders that have been sent to your signers, in a list format. ```plaintext TestReminders.ReminderSchedule reminderSchedule = getReminderScheduleForPackage(packageId);   List reminders = reminderSchedule.reminders;   for(TestReminders.Reminder reminder: reminders){   System.Debug('set date: ' + reminder.date_x + '; sent date: ' + reminder.sentDate);   } ``` ### Deleting a Reminder Schedule To delete your reminder schedule, use the following code: ```plaintext public void clearReminderScheduleForPackage(String packageId) ``` ### Results You can execute this function in Execute Anonymous Window from Developer Console and type in: ```plaintext new TestReminders().testReminders(); ``` Here is an example of what you can expect to see once you have run your code. This is an example of a reminder email that will be sent to your signers: ![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/apex-guides-reminders1.png?sv=2026-02-06&spr=https&st=2026-11-13T09%3A59%3A08Z&se=2026-11-13T10%3A59%3A08Z&sr=c&sp=r&sig=T12CJy63mQUtYYluMlVIAOk7U8JU%2BtJ9%2F2VuN4%2FL97I%3D) This is an example of what the reminders list looks like: ![](https://cdn.document360.io/038f59a7-abd0-4c14-9de7-3434d28b49fd/Images/Documentation/apex-guides-reminders.png?sv=2026-02-06&spr=https&st=2026-11-13T09%3A59%3A08Z&se=2026-11-13T10%3A59%3A08Z&sr=c&sp=r&sig=T12CJy63mQUtYYluMlVIAOk7U8JU%2BtJ9%2F2VuN4%2FL97I%3D)