Guide

How to Send Batch Documents for Signature

When you need to send more than a handful of documents — offer letters, NDAs, invoices — batch signing automates the entire process.

Steps

  1. 1

    Prepare your document list with recipient details (name, email, content)

  2. 2

    Chunk the list into groups of 10-20 concurrent requests

  3. 3

    Send each chunk using Promise.allSettled for fault tolerance

  4. 4

    Pause between chunks to respect rate limits (1s between groups)

  5. 5

    Track completion via webhooks and retry any failures with exponential backoff

Try it with curl

curl
curl -X POST https://signb.ee/api/send \
  -H "Content-Type: application/json" \
  -d '{
    "content": "# Your Document\n\nContent here...",
    "senderName": "Your Name",
    "senderEmail": "you@email.com",
    "recipientName": "Recipient",
    "recipientEmail": "recipient@email.com"
  }'

Legal validity

Electronic signatures are legally binding under the ESIGN Act (US), eIDAS Regulation (EU), and Electronic Communications Act (UK). Every Signbee document includes a SHA-256 tamper-proof certificate.

More details

Batch signing isn't a niche use case — it's the default for any company past seed stage. HR sends offer letters in waves. Legal distributes NDAs to entire vendor lists. Finance runs monthly invoice signing cycles.

The key insight: most e-signature APIs don't have a native batch endpoint. You call the send endpoint once per document. The batch pattern handles concurrency, rate limits, and partial failures.

Critical implementation details:

Use Promise.allSettled, not Promise.all — With Promise.all, a single 429 (rate limit) or 500 (server error) aborts the entire batch. Promise.allSettled completes every request and reports which succeeded and which failed.

Chunk size matters — Sending 500 requests simultaneously will trigger rate limits immediately. Chunk into groups of 10-20 and add a 1-second delay between chunks.

Retry with exponential backoff — For failed documents, retry with increasing delays: 2s, 4s, 8s. After 3 retries, add to a dead letter queue and alert your team.

Performance benchmarks: - Signbee (paid): 1,000 req/min, <2s response → ~500 docs/min - DocuSign: 1,000 req/hour → ~17 docs/min - HelloSign: 100 req/min → ~50 docs/min

Monitor three metrics: 429 rate (<1%), retry success rate (>99%), and dead letter queue size (should be 0).

Frequently asked questions

Can I send multiple documents in one API call?

Most e-signature APIs process one document per call. Use Promise.allSettled with chunked concurrency (10-20 at a time) to send in bulk. 500 documents finish in under 2 minutes with Signbee.

What happens if some documents fail in a batch?

With Promise.allSettled, failures don't abort the batch. Log failed documents with recipient details, then retry with exponential backoff (2s, 4s, 8s). Alert your team after 3 failures.

How do I track when batch documents are signed?

Register a webhook endpoint to receive real-time notifications when each document is signed. This eliminates the need for polling and lets you trigger downstream workflows immediately.

Related resources

Try Signbee — free, no credit card.