This guide explains how to sign multiple contracts and contract amendments programmatically using the API. The Deel UI requires signing contracts or amendments one by one, but the API enables automation for bulk signing workflows.
Use this workflow when you need to:
Before you begin, ensure you have:
contracts:write scopeContract signatures are legally binding. Only use this workflow for contracts and amendments that have been properly reviewed and approved through your organization’s internal processes.
This example demonstrates signing multiple contract amendments after a company-wide compensation review.
First, retrieve the list of contracts to identify which ones need signatures.
Response:
To identify contracts with pending amendments, you will need to check each contract for amendments in the next step.
For each contract, retrieve the list of amendments to identify which ones require client signature.
Response:
Filter amendments where sign_status is PENDING or WAITING_FOR_APPROVAL. These amendments require client signature.
Always verify amendment details before signing. Ensure the changes match your internal approval records and that the effective date is correct.
Sign the contract or amendment by providing the client signature name. This endpoint handles both initial contract signing and amendment signing.
The signature name should be the full legal name of the authorized signatory on behalf of the client organization. Use a consistent signature format across all contracts.
Response:
The contract or amendment is now signed and will proceed to the next step in the contract workflow.
To sign multiple contracts, iterate through your list and sign each one programmatically.
This script processes multiple contracts and provides a summary of successful and failed signatures.
contracts:write permissionVerify your API token is valid and has the contracts:write scope. Check that the token has
not expired and that you are using the correct authorization header format.
Confirm the contract ID is correct and that the contract exists. Check that you are using the correct API environment (production vs. sandbox). Verify you have access to this contract in your Deel account.
Verify the amendment has been created using the GET /contracts/{contract_id}/amendments endpoint. Check if the sign_status is PENDING or WAITING_FOR_APPROVAL. If the status is already APPROVED, the amendment has already been signed.
Ensure the signature name matches your authorized signatory format. The name should be the full legal name of the person authorized to sign on behalf of the organization. Check for extra spaces or special characters.
Reduce your batch size or implement rate limiting in your script. Deel’s API has rate limits to prevent abuse. Wait for the rate limit window to reset before retrying. Consider processing contracts in smaller batches over a longer time period.
Review the error messages for failed contracts. Common causes include amendments that require additional approval, contracts in unexpected states, or temporary API issues. Retry failed contracts individually after resolving the specific issues.
Allow time for the system to process the signature (usually a few seconds). Refresh the contract details to see updated status. Check webhooks or event logs to confirm the signature was processed successfully.