Fix Common Issues

Troubleshooting

Diagnose and resolve the issues sender and integrators hit most often, uploads, sends, signer errors, webhooks, API keys, rate limits, and billing.

If you see “File too large” when uploading a PDF:

  • Check your plan’s upload ceiling (Solopreneur ~5 MB, Business much higher)
  • If close to the limit, compress the PDF using any PDF compressor (Adobe, ILovePDF, Smallpdf) and try again
  • For huge files (100+ MB), consider whether you need every page (splitting is fine, since one envelope per file is the standard flow)

Business and Enterprise plans support very large files (targeting up to ~2 GiB) via direct-to-S3 upload, but the specific ceiling depends on your workspace’s configured limits.

“Invalid PDF” errors typically mean:

  • The file isn’t actually a PDF (check the extension is .pdf, not .doc or .pages)
  • The PDF is password-protected (remove the password before uploading)
  • The PDF is corrupted (try opening it in a PDF reader; if it fails there too, it’s corrupted)
  • The PDF uses unsupported features (rare, but exotic PDF variants can fail)
Tip. If a specific PDF keeps failing, try re-saving it via Print → Save as PDF (or “Print to PDF”) from Preview / Adobe / Chrome. This “cleans” the PDF into a standard form that almost always uploads correctly.

Common reasons the Send button is grayed out:

  • No signer fields placed. Every envelope needs at least one interactive field (signature, name, etc.). Drop at least one on the PDF.
  • No recipients added. Add at least one recipient with a valid email.
  • Missing required data on a field. A field is missing its assigned recipient (click the field and pick a recipient in the right rail).
  • Envelope limit reached. You’ve hit your plan’s monthly envelope quota. Upgrade or wait for the next cycle.
  • Insufficient PAYG balance. On PAYG, you don’t have enough balance for this send. Top up.

Hover the disabled button to see the specific reason.

Signing links can expire when:

  • The envelope’s expiration date passed
  • You cancelled the envelope
  • All signers already completed (link resolves to the sealed-document view, but new signing is not possible)

Fix:

  • Extend the expiration in the envelope details (if the envelope is still pending)
  • Or duplicate the envelope as a new one and send fresh links
Note. Sequential envelopes: signer B doesn’t have a link until signer A completes. If B says “no link”, check whether it’s B’s turn yet.

If a signer opens the link but can’t find where to sign:

  • Check the field is on the right page. Open the envelope in the Desk and preview. If the field is on page 10 of a 12-page PDF, the signer might not scroll far enough.
  • Check the field is assigned to that recipient. Fields must be assigned; unassigned fields don’t appear in the signer’s task list.
  • Check the field isn’t behind a static element. If a large image or highlight covers the signer field, the field is unclickable. Rearrange in the editor.
  • Check the field is large enough to tap on mobile. Very small fields (under 20px tall) can be hard to hit on phones. Resize to at least 30-40px tall.

When a signer clicks Finish and it seems to hang, most likely:

  • The envelope is large (100+ pages) and finalization is asynchronous. The API returned 202 Accepted and a background worker is assembling the sealed PDF. Wait a few more seconds.
  • Weak network. The signer’s connection dropped mid-request. Ask them to retry.
  • Browser cache/extension issue. Ask them to try incognito mode or a different browser.

If Finish consistently fails for a specific envelope regardless of signer, check the envelope’s status:

  • If it’s still pending, the finalization job failed. Contact support with the envelope ID.
  • If it moved to signed, the operation succeeded despite the UI hang; the signer can close and reload.

Debug systematically:

  1. Check the webhook is configured. Settings → Integrations → Webhooks should show your URL and be enabled.
  2. Check the webhook log. signID logs every attempted delivery with the response code. Look for your event.
  3. Test with the “Send test event” button. This fires a synthetic event to your endpoint, useful for confirming the endpoint is reachable.
  4. Check firewalls. Your endpoint must be accessible from signID’s outbound IPs (any HTTPS host reachable from AWS should work).
  5. Confirm you subscribed to the right events. If you only subscribed to envelope.declined, you won’t receive envelope.signed.

If your endpoint receives webhooks but signature verification always fails:

  • Are you hashing the raw body? Some frameworks parse the body into JSON before your handler sees it. You need the raw bytes, not the parsed object. Use express.raw() in Express, request.body in Flask, or equivalent.
  • Are you using the right secret? The signing secret is workspace-specific and shown in Settings → Integrations → Webhooks. Double-check you copied it correctly.
  • Are you stripping sha256= from the header? The header format is sha256=<hex>. Compare just the hex portion.
  • Constant-time comparison. Use crypto.timingSafeEqual() or equivalent; a plain === is vulnerable to timing attacks (though it should still match a valid signature).

See Webhooks for reference code.

Check in order:

  • Is the key in the correct format? Should start with sk_live_.
  • Is the Authorization header formatted correctly? Must be Authorization: Bearer sk_live_..., with the word “Bearer” followed by a space.
  • Was the key revoked? Check Settings → Integrations → API keys. Revoked keys show as inactive.
  • Did you downgrade your plan? Downgrading below Business auto-revokes API keys. Upgrade to restore access.
  • Is your workspace suspended? Contact support if you suspect this.

A 429 Too Many Requests means you exceeded a rate limit. Response headers tell you which limit and when to retry:

X-RateLimit-Resource: envelopes:create
X-RateLimit-Remaining: 0
Retry-After: 30

Handle correctly:

  • Respect Retry-After. Wait the number of seconds specified before retrying.
  • Implement exponential backoff for repeated 429s. If you keep hitting the limit, back off further.
  • Batch or queue requests. If you’re bulk-creating envelopes, spread them over time rather than sending all at once.

If you consistently hit rate limits at legitimate volumes, contact support to discuss a plan upgrade or custom limits.

Common causes:

  • Insufficient funds or credit limit exceeded. Try a different card.
  • Card expired or declined by bank. Update the card in the billing portal.
  • 3D Secure challenge not completed. Some cards require an extra step; retry from the billing portal on a fresh browser tab.
  • Foreign transaction blocked. Some cards block international payments by default; ask your bank to allow them.
  • PayPal balance too low. Add funds or link a card.

signID retries failed subscription payments a few times before downgrading you. During this window you get emails and a red banner in the Desk. Fix the underlying issue and retry.

If a send is blocked with “Insufficient balance”:

  • Your PAYG balance is below the required amount for this send
  • The send is not processed; the envelope stays in draft
  • Neither you nor the signers are charged (nothing happened)

Fix:

  1. Go to Settings → Billing → PAYG balance
  2. Add funds via Stripe Checkout
  3. Return to the envelope and click Send again
Tip. Turn on auto-recharge to prevent this happening again. Set a threshold higher than your typical send cost.

Ready to send your first envelope?

Create a free signID account, or book a demo to see how it fits your team or platform.

Back to Knowledge Base