Sales
8- invoice.created
- invoice.updated
- invoice.voided
- invoice.paid
- invoice.overdue
- payment.received
- credit_note.issued
- quote.accepted
INTEGRATIONS
Leverage 40 distinct event types to sync your stack. With exponential retries and cryptographic signatures, your data always arrives securely and on time.
Every meaningful change in your business triggers an event you can capture and process in your systems.
40 events covering every change that matters.
Register your server URL and generate a secret key. Mosce ERP will sign every request with HMAC-SHA256 so you can verify authenticity.
Choose from 40 available events which ones you want to receive. You can adjust your subscription at any time from the dashboard.
Verify the HMAC signature on your server and process the payload with confidence. Use the event_id to guarantee idempotency.
Every delivery is designed to be secure, traceable, and fault-tolerant.
Every request carries a cryptographic signature so you can verify it came from Mosce ERP and that the payload was not altered in transit.
If your endpoint fails or times out, Mosce ERP retries with exponential back-off for up to 24 hours, covering transient outages.
Every event includes a unique event_id. Use it to detect and discard duplicates in your system without the risk of processing the same event twice.
View delivery history, response statuses, and latency for each endpoint directly from the dashboard.
Verify signatures and process events with a few lines of code in any language.
# Verificar firma HMAC en cURL (ejemplo de payload) curl -X POST https://tu-app.com/webhooks/tu-servidor \ -H "Content-Type: application/json" \ -H "X-Helix-Signature: sha256=<firma>" \ -H "X-Helix-Event: invoice.paid" \ -d '{ "event": "invoice.paid", "event_id": "evt_01HXYZ9ABCDE", "timestamp": "2025-05-09T14:30:00Z", "data": { "invoice_id": "inv_01HXYZ123", "amount": 15000, "currency": "DOP", "customer_name": "Empresa ABC" } }'
import crypto from 'crypto'; import express from 'express'; const app = express(); app.use(express.raw({ type: 'application/json' })); app.post('/webhooks/tu-servidor', (req, res) => { const signature = req.headers['x-helix-signature']; const eventId = req.headers['x-helix-event-id']; // Verificar firma HMAC-SHA256 const expected = 'sha256=' + crypto .createHmac('sha256', process.env.WEBHOOK_SECRET) .update(req.body) .digest('hex'); if (!crypto.timingSafeEqual( Buffer.from(signature), Buffer.from(expected) )) { return res.status(401).send('Firma inválida'); } const event = JSON.parse(req.body.toString()); // event.event_id sirve para idempotencia console.log('Evento recibido:', event.event, eventId); res.status(200).send('OK'); });
import hashlib, hmac, json, os from flask import Flask, request, abort app = Flask(__name__) WEBHOOK_SECRET = os.environ['WEBHOOK_SECRET'] @app.post('/webhooks/tu-servidor') def handle_webhook(): signature = request.headers.get('X-Helix-Signature', '') event_id = request.headers.get('X-Helix-Event-Id', '') body = request.get_data() # Calcular firma esperada expected = 'sha256=' + hmac.new( WEBHOOK_SECRET.encode(), body, hashlib.sha256 ).hexdigest() if not hmac.compare_digest(signature, expected): abort(401) payload = json.loads(body) # Usar event_id para idempotencia print(f"Evento: {payload['event']} - ID: {event_id}") return '', 200
Connect Mosce ERP to your stack today and automate the workflows you currently handle manually.