Every endpoint lives under https://portal.ipay.global · production target: https://api.ipay.global (DNS pending). Authentication: JWT bearer (7-day TTL). Complete machine-readable spec at https://portal.ipay.global/api/openapi.json · interactive Swagger UI · ReDoc.
Tenant-scoped REST API for orders, shipments, tracking, webhooks and audit-log. All endpoints require JWT bearer (merchant or operator role).
/api/merchant-api/meIdentify the calling user + supported events + rate limits./api/merchant-api/ordersList orders (paginated, filter by status)./api/merchant-api/orders/{order_id}Fetch order detail./api/merchant-api/ordersCreate a new order. Emits `order.created` webhook./api/merchant-api/orders/{order_id}Update fields on an existing order. Emits `order.updated`./api/merchant-api/orders/{order_id}/cancelCancel order. Emits `order.cancelled`./api/merchant-api/shipmentsList shipments (filter by order_id, status)./api/merchant-api/shipments/{shipment_id}Fetch shipment detail./api/merchant-api/shipments/{shipment_id}/trackingAggregated carrier + release events timeline./api/merchant-api/shipments/{shipment_id}/tracking-eventPush a tracking update. Emits matching `shipment.*` webhook./api/merchant-api/webhooks/event-typesList the 19 supported event types./api/merchant-api/webhooks/endpointsList configured webhook endpoints (secret redacted)./api/merchant-api/webhooks/endpointsCreate endpoint. Returns signing secret ONCE./api/merchant-api/webhooks/endpoints/{endpoint_id}Update URL, subscribed events or active flag./api/merchant-api/webhooks/endpoints/{endpoint_id}Delete an endpoint./api/merchant-api/webhooks/endpoints/{endpoint_id}/rotate-secretGenerate a new signing secret. Old one stops immediately./api/merchant-api/webhooks/deliveriesList delivery attempts (filter by status, endpoint, event)./api/merchant-api/webhooks/dead-lettersList deliveries that failed after 5 retries./api/merchant-api/webhooks/deliveries/{delivery_id}/retryManually re-queue a delivery./api/merchant-api/webhooks/testFire a synthetic event to all subscribed endpoints./api/merchant-api/audit-logAppend-only immutable log of writes + auth + sensitive reads.Tenant-scoped AI helper powered by Claude Sonnet 4.5. Knowledge: per-merchant FAQ + global IPAY help articles.
/api/merchant-api/assistant/profileRead assistant config (name, tone, language, instructions, topics)./api/merchant-api/assistant/profileUpdate profile. Custom instructions sanitised + capped at 500 chars./api/merchant-api/assistant/faqsList FAQ entries (tenant-scoped)./api/merchant-api/assistant/faqsCreate FAQ — question, answer, tags./api/merchant-api/assistant/faqs/{faq_id}Update a FAQ./api/merchant-api/assistant/faqs/{faq_id}Delete a FAQ./api/merchant-api/assistant/chatSend a message. Returns answer + sources (FAQ + article IDs)./api/merchant-api/assistant/conversationsList recent chat sessions (90d retention)./api/merchant-api/assistant/conversations/{session_id}Full message thread for one session./api/merchant-api/assistant/conversations/{session_id}GDPR purge — irreversible.Register, login, fetch current user. JWT bearer tokens (7-day TTL).
/api/auth/registerCreate a new merchant / operator account./api/auth/loginReturns JWT token + user payload./api/auth/meCurrent user from JWT.Create manual or bulk orders, fetch detail, kick off IPAY payment session.
/api/ordersList orders for the current merchant (paginated)./api/ordersCreate a single order. Body: customer + items + carrier_code + ipay_flag./api/orders/uploadBulk-upload CSV / XLSX with column auto-mapping./api/orders/{id}/create-sessionGenerate the 18-digit IPAY reference + pay URL + QR./api/orders/sample.csvDownload a sample CSV template.The 18-digit IPAY reference flow. Filterable by country, carrier, PSP, payment_method, status.
/api/payment-sessionsList + filter sessions./api/payment-sessions/{id}Session detail with event log./api/payment-sessions/{id}/parcel-statusAdvance the parcel state (PICKED_UP → IN_DELIVERY → DELIVERED)./api/session/{token}Public consumer endpoint (used by /pay/{token})./api/session/{token}/start-paymentKick off Stripe checkout / simulate.Verify the 4-digit OTP at the door, release parcel.
/api/driver/verify-otpBody: ipay_reference_18 + otp_4 → release parcel.Connect Shopify / PrestaShop / WooCommerce / Odoo / Shopware / Magento / BigCommerce / Lightspeed / bol.com. Each connector exposes the same shape: GET / setup-info / connect / disconnect / sync / simulate / webhook.
/api/integrations/statusPer-merchant connection status for all providers./api/integrations/{provider}/connectSave credentials, verify via the provider's API./api/integrations/{provider}/syncPull recent orders (limit 50)./api/integrations/{provider}/simulateFire a test order without live credentials./api/integrations/{provider}/webhookReal-time push from the platform (HMAC-signed where supported).488 carriers × multi-origin (NL/BE/FR) tariff database. Operator-managed.
/api/admin/carrier-tariffs/importUpload UPS / DHL / etc. tariff Excel./api/admin/carrier-tariffs/cost-previewCompute carrier cost for a {origin, destination, weight, dimensions} query./api/admin/carrier-tariffs/{carrier}/fuelUpdate fuel surcharge (published % + IPAY discount %).Upload carrier invoices, auto-match against shipped orders, flag MISMATCH / UNMATCHED_IN_DB.
/api/admin/carrier-tariffs/{cc}/invoice-uploadUpload CSV invoice file (carrier code = UPS / DHL / …)./api/admin/carrier-tariffs/{cc}/invoicesList uploaded invoices with reconciliation aggregates./api/admin/carrier-tariffs/{cc}/billing-coverageWhich shipments have been invoiced vs not?Internal CRM mirroring HubSpot. Two pipelines: merchant_sales + partner_sales.
/api/sales/companiesList companies (filterable by type / status / segment / search)./api/sales/companiesCreate company (auto-score + auto-segment)./api/sales/hubspot/connectConnect HubSpot Private App token./api/sales/hubspot/sync/push-qualifiedPush every A/B/qualified company to HubSpot./api/sales/target-segmentsChina→EU strategic 4.186B-parcel target pool.Generate branded customer quotes with full cost+margin breakdown.
/api/quotesCreate a new quote draft./api/quotes/{id}/external.pdfCustomer-facing PDF (with IPAY green header + logo)./api/quotes/{id}/internal.xlsxInternal margin-protection Excel.15-min interval auto-sync for every CONNECTED merchant integration. Admin only.
/api/admin/scheduler/statusIs the scheduler running? Next run time./api/admin/scheduler/run-nowTrigger an immediate pass./api/admin/scheduler/sync-logPer-merchant × provider run log (latest 100)./api/admin/scheduler/summaryAggregate per-provider stats.Server-sent events for live operator dashboards.
/api/events/stream?token=...Open an EventSource. Heartbeat every 15s; merchants only see their own sessions.Generate real carrier return labels with an IPAY emerald overlay (QR + warning).
/api/returns/openConsumer opens a return case for a paid order./api/labels/createGenerate Sendcloud label + IPAY composite PDF./api/webhooks/sendcloud/returnsInbound webhook: parcel_status_changed./api/returns/{token}Public consumer return-portal.Line-by-line reconciliation → PDF statement → emailed to carrier via Resend.
/api/admin/carrier-tariffs/{cc}/reconciliations/{id}/request-creditFlag a row for credit (reason required, goes on the statement)./api/admin/carrier-tariffs/{cc}/reconciliations/{id}/excludeMark a delta as accepted (exclusion reason required)./api/admin/carrier-tariffs/{cc}/statements/{import_id}/previewInline PDF preview of the statement./api/admin/carrier-tariffs/{cc}/statements/{import_id}/sendSend PDF to carrier via Resend (logs to db.carrier_statement_log)./api/admin/carrier-statements/aging-reportOutstanding statements bucketed 0-7d / 7-30d / 30-60d / 60+d./api/admin/carrier-statements/{statement_id}/mark-resolvedCarrier credited — remove from aging report.Fixed-fee IPAY commercial model — gross − (count × fee_per_order) = net. PDF + accountant export.
/api/merchant-portal/ipay/settlementSettlement totals + daily breakdown for a period. Returns fee_per_order_eur + fee_source./api/merchant-portal/ipay/settlement/pdfBranded PDF statement for finance/accountant/audit./api/admin/merchants/{id}Update merchant — set ipay_fee_per_order_eur + ipay_contract_signed_at. Audit-trail in ipay_fee_history[].Mirror qualified companies to HubSpot; auto-graduate on Closed-Won.
/api/sales/hubspot/connectSave HubSpot Private App token./api/sales/hubspot/sync/push-qualifiedPush every A/B-graded company to HubSpot./api/webhooks/hubspotInbound webhook (deal stage / company property changes). Closed-Won → auto-graduate./api/sales/hubspot/webhook-eventsRecent webhook events (audit).Granular access: 32 resources × 6 actions × 3 data scopes. Multi-role per user.
/api/rbac/rolesList roles (auto-seeds 4 system roles on first call)./api/rbac/rolesCreate a custom role./api/rbac/roles/{id}/permissionsEdit a role's permission matrix./api/rbac/users/{id}/assign-roleAssign a role to a user./api/rbac/me/permissionsEffective permissions for the current user (merged across roles).~30 daily controls (data integrity, settlement match, PSP health, …) + CFO approval + Resend digest.
/api/internal-controls/overviewToday's control snapshot + last 30 days history./api/internal-controls/{control_id}/approveCFO approves a RED control. Body: {initials}. Appends to control_approvals (permanent)./api/data-integrity/snapshots30-day snapshot retention for data integrity./api/admin/compliance/registerCompliance register (GDPR/PSD2/Sendcloud T&C/etc.)NL master + 17 Claude-translated languages. AI-fill missing keys with one POST.
/api/admin/translation-healthPer-language coverage % + missing/identical/extra-key breakdown by namespace./api/admin/translation-health/{lang}/ai-fillClaude Sonnet 4.5 translates all missing keys from NL → target language. Optional ?namespace=consumer./api/admin/translation-health/ai-fill-all1-click mega-fill: AI-fill all 16 target languages sequentially./api/admin/translation-health/{lang}/editBulk-edit specific keys in a language.Daily batch generation, CFO approval, post-to-Exact (mocked), accrual reconciliation.
/api/finance/batchesDaily accounting batches with status (pending/approved/rejected/posted)./api/finance/batches/{id}/approveCFO approves the batch./api/finance/batches/{id}/post-to-exactPost journal entries to Exact Online (currently MOCKED)./api/finance/reconciliationAccrual reconciliation: accrued vs settled cash.Shopify · WooCommerce · PrestaShop · Magento · Shopware · BigCommerce · Lightspeed · bol.com · Picqer · Odoo · Lazada · TikTok · Amazon NL/DE/FR/IT/ES · Shopee · Temu · AliExpress · Vinted.
/api/integrations/{provider}/Per-provider connection status./api/integrations/{provider}/setup-infoWhere to obtain credentials + scopes required./api/integrations/{provider}/connectSave credentials + verify./api/integrations/{provider}/syncPull recent orders./api/integrations/{provider}/simulateFire a sample order without live creds (development/demo).Magic-link login · Share payment · Points · Deals · Wallet · Loyalty cards.
/api/consumer/magic-link/requestRequest a one-time login link via email./api/consumer/magic-link/redeemRedeem the link → returns JWT./api/wallet/balanceConsumer wallet balance + recent transactions./api/wallet/transferWallet-to-wallet transfer to another consumer./api/points/meLoyalty points balance + history./api/deals/feedPersonalized deals feed./api/share-payment/{session_id}Generate a share-payment short URL.Every authenticated user can upload their own logo (≤256 KB PNG/JPG, auto-resized to 240×80) and set a company name. Renders in the persona banner across the portal. Designed to migrate to AWS S3 later — only the storage backend changes.
/api/user-branding/meFetch the current user's branding (company_name + logo_data_url)./api/user-branding/meUpdate the current user's company_name. Body: { company_name }./api/user-branding/me/logoUpload a logo (multipart/form-data: file). Returns the inline base64 data URL./api/user-branding/me/logoRemove the current user's logo./api/admin/user-branding/list?role=carrierAdmin · list all users with their branding (optional ?role filter)./api/admin/user-branding/{user_id}/logoAdmin uploads a logo on behalf of another user./api/admin/user-branding/{user_id}Admin updates company_name for another user./api/admin/user-branding/{user_id}/logoAdmin removes a user's logo.Surfaces 'Vandaag: 5 factuurregels met verschil — review nodig' in the persona banner. Returns role-aware action items (Operator / Carrier / Partner / Investor / Sales / Merchant). Read-only; sources from existing collections.
/api/user-actions/meReturns {role, emoji, count, items[5]} — clickable items with priority + deep-link.Operator can read PRD / SSL ticket / marketing links / persona audit inside the portal — no filesystem access needed. Whitelist approach (7 fixed filenames).
/api/admin/internal-docs/listList of allowed documents with size + mtime./api/admin/internal-docs/{filename}Return the raw markdown of one document (text/plain).Generate a talking-head video from text using D-ID Talks API + per-tenant presenter configuration.
/api/avatar/statusIs D-ID configured? + current presenter ID./api/avatar/settingsSave presenter / voice configuration./api/avatar/talkGenerate a talking-head video clip from text input.56 customer-friendly articles in NL + EN with `?lang=` query param. Fallback chain: requested-lang → en → nl → legacy. Extending to 16 more languages in Q3 2026.
/api/help/articles?lang=nlList all articles grouped by category in chosen language./api/help/articles/{article_id}?lang=enFetch one article (title + summary + body) in chosen language. Body is Markdown.44 automated controls covering payments, security, data integrity, audit logs. Runs in parallel via asyncio.gather.
/api/control-room/run-all-autoRun every catalogue control in parallel; returns status_distribution + per-control results./api/control-room/catalogueList catalogue items (control_id, title, block, automated)./api/control-room/cfo-digest/previewRender the weekly CFO snapshot — JSON summary + HTML preview./api/control-room/cfo-digest/send-nowTrigger Resend send of the digest immediately (operator only).Append-only audit of who refunds what to whom · state machine + aging buckets + bulk transitions.
/api/refund-ledger/balanceOpen obligations + aging buckets (>7d/>30d/>90d) + oldest_open + closed_last_30d./api/refund-ledger/entriesFiltered list with status/from_party/to_party/days_back/date_from/date_to./api/refund-ledger/bulk-transitionApply same status transition to ≤100 entries at once (v0.92.79)./api/refund-ledger/export.csvCSV download with same filters as /entries./api/refund-ledger/search?q={q}Lookup by id/psp_refund_id/session_id/transaction_id (min 4 chars).QR-coded PDF upload, GPT-4o-mini Vision analysis, Phase 2 trackable action items.
/api/meeting-notes/uploadUpload PDF, auto-link via QR if covered./api/meeting-notes/{note_id}/analyzeRun GPT-4o-mini Vision to extract summary + action_items + decisions./api/meeting-notes/{note_id}/action-items/promoteBulk-promote AI action items into trackable tasks./api/meeting-notes/action-itemsList action items with filters (status, assignee, overdue_only) + summary KPIs./api/meeting-notes/action-items/{id}Update status/assignee/due_date/priority/notes.Hierarchical document vault. Each doc has rank_required (1-5); users see docs ≤ their rank.
/api/internal-filing/treeBrowse sections + documents visible to current user./api/internal-filing/documents/uploadUpload PDF with section_code + rank_required + title./api/internal-filing/documents/{file_id}/levelRe-classify a document's rank_required (1-5). v0.92.79. Audits to doc_level_changes.Phase-gated investor docs. Migrated v0.92.79 from 2-tier to 5-tier hierarchical access.
/api/investor/sessions/startBegin investor session; returns visible docs for their phase + access_level./api/investor/documents/uploadOperator uploads doc with required_phase + access_level (1-5)./api/admin/investor/documents/{file_id}/levelRe-classify an investor doc's access_level (1-5). v0.92.79.Daily ZIP of companies/contacts/deals/activities CSVs into GridFS bucket with 30d retention.
/api/crm/backup/csvLive download of fresh ZIP (operator/cfo)./api/crm/backup/historyList nightly snapshots from GridFS (newest first)./api/crm/backup/run-nowManual trigger — write fresh backup to GridFS now (operator only).Hash-based snapshots of master/event/audit collections for compliance + drift detection.
/api/audit/data-integrity/master-collectionsList registered collections; supports ?category=master|event|audit filter./api/audit/data-integrity/snapshotTake a fresh snapshot of all critical collections.Inbound webhooks let your shop/WMS/carrier push events into IPAY. Outbound webhooks let IPAY notify your systems when relevant business events fire.
Each e-commerce / WMS / carrier connector exposes an inbound webhook URL. Configure the URL + secret in the provider's admin panel, IPAY validates the signature (where supported) and creates/updates orders + sessions.
/api/integrations/shopify/webhookX-Shopify-Hmac-Sha256/api/integrations/woocommerce/webhookX-WC-Webhook-Signature/api/integrations/prestashop/webhook/api/integrations/magento/webhook/api/integrations/shopware/webhookshopware-shop-signature/api/integrations/bigcommerce/webhookX-Hub-Signature/api/integrations/lightspeed/webhookX-Lightspeed-Shop/api/integrations/bol/webhook/api/integrations/picqer/webhookX-Picqer-Subdomain/api/integrations/odoo/webhook/api/integrations/sendcloud/webhookSendcloud-Signature/api/lockers/{carrier}/issue-code OR /api/lockers/issue-codeX-IPAY-Signature (HMAC-SHA256)/api/payments/webhookStripe-Signature/api/webhooks/multisafepayAuth (base64 timestamp:HMAC-SHA512)/api/webhooks/hubspotX-HubSpot-Signature-v3 (sha256-base64)/api/integrations/lazada/webhookX-Lazada-Sign/api/integrations/tiktok_shop/webhookX-Tts-Signature/api/integrations/amazon/webhookAWS Sig-v4 (delivered via EventBridge / SQS)/api/integrations/{provider}/webhookVaries per platform/api/integrations/{provider}/webhookPending — handlers to be built once direct contracts signed/api/webhooks/resend (planned)Svix-SignatureMerchants can subscribe to IPAY events. Configure the URL in /app/integrations or via API. Payload is JSON, signed with HMAC-SHA256 using your merchant secret.
order.createdsession.createdsession.paidsession.otp_verifiedparcel.deliveredreturn.openedreturn.refundedlocker.code_issuedinvoice.mismatchThe full catalog of 1628 endpoints across 58 domains, regenerated on every backend reload — guaranteed never to drift from what's actually live. Click a domain to expand.