Developers

API and webhooks

Syntharra has a REST API and webhook system for teams that want to go deeper than the accounting software integrations. Trigger calls from your own CRM, receive settlement events in your data warehouse, or sync call outcomes to your support tool.

Common use cases

Most Syntharra customers connect QuickBooks or Xero and never touch the API. The API is for teams with custom billing systems, CRM-managed invoice workflows, or data pipelines that need real-time settlement events.

CRM-triggered calls

Submit invoices via API from Salesforce, HubSpot, or any custom CRM when a deal closes or a milestone payment comes due.

Settlement events

Receive payment.settled webhooks and pipe them into BigQuery, Snowflake, or Redshift for revenue reporting.

Call outcome sync

Receive invoice.called events and write outcomes back into your support tool or customer record.

Webhooks

Syntharra fires events to your HTTPS endpoint for every meaningful state change on an invoice or payment. Each delivery includes an HMAC-SHA256 signature in the X-Syntharra-Signature header so you can verify the payload came from Syntharra.

EventWhen it fires
invoice.calledA call attempt was placed on an invoice (whether answered or not).
invoice.paidThe invoice is marked paid, either through the payment portal or detected in the accounting sync.
invoice.escalated3 call attempts were made with no payment. Invoice moved to human escalation queue.
invoice.dncThe customer opted out during a call. Invoice is closed; no further calls will be placed.
payment.settledFunds settled to your Stripe account for a paid invoice.

Example payload

{
  "event": "payment.settled",
  "invoice_id": "inv_8Kx2mP",
  "amount_cents": 348000,
  "currency": "usd",
  "settled_at": "2026-04-18T14:32:01Z",
  "customer_id": "cus_4nRqL9",
  "syntharra_fee_cents": 34800
}

Delivery is an HTTPS POST to the endpoint you configure in Settings › Developers. Syntharra expects a 200 response within 10 seconds. Any other response code or a timeout counts as a failure.

On failure, Syntharra retries up to 5 times with exponential backoff over 24 hours. After 5 failed attempts, the event is marked failed and visible in the developer dashboard. You can replay failed events manually.

REST API

All requests are authenticated with a Bearer token from the dashboard. Pass an Idempotency-Key header on POST requests to safely retry without creating duplicate invoices.

POST/v1/invoices

Submit an invoice for calling. Use this for non-accounting-integration workflows: CRM-driven invoicing, custom billing systems, or manual submission.

GET/v1/invoices/{id}

Get the current status and full call history for an invoice. Returns call timestamps, outcomes, and settlement status.

DELETE/v1/invoices/{id}/calls

Cancel all pending call attempts on an invoice. Does not delete the invoice or affect call history, only stops future attempts.

Rate limits

  • REST endpoints: 100 requests per minute per API key. Requests over the limit receive a 429 response with a Retry-After header.
  • Webhook delivery: no rate limit on outbound delivery, but your endpoint must respond within 10 seconds or the delivery counts as a failure.

Sandbox environment

The sandbox runs the full Syntharra pipeline without placing real calls or charging anything. Invoices submitted in sandbox go through call simulation, trigger webhook events, and produce realistic outcomes, including DNC, callback requested, and payment.

Separate credentials

Sandbox and production API keys are separate. Generate sandbox keys from Settings › Developers. Sandbox keys never touch the production call queue or Stripe.

Realistic simulation

Simulated calls produce the same webhook events and dashboard entries as real calls. Test your webhook endpoint and integration logic before going live.

Common questions

How do I get API credentials?

Generate API keys from the dashboard under Settings > Developers. Sandbox and production keys are separate; sandbox keys place no real calls and do not charge.

Do you have an OpenAPI/Swagger spec?

Yes. The full OpenAPI spec is available at /api/openapi.json once authenticated. You can import it into Postman, Insomnia, or any other tool that reads OpenAPI 3.0.

What happens if my webhook endpoint is down?

Syntharra retries delivery up to 5 times with exponential backoff over 24 hours. After that, the event is marked failed and visible in the developer dashboard under Events > Failed. You can manually replay failed events from there.

Can I submit invoices via API instead of syncing my accounting software?

Yes. POST /v1/invoices accepts all the same fields as the accounting sync. This is the right path for CRM-driven workflows, custom billing systems, or any situation where your invoices live outside QuickBooks, Xero, FreshBooks, or Sage.

Start with the sandbox

Sandbox credentials are available immediately after connecting. No real calls, no charges.