1. Inbound Webhooks
marketplace-doc
  • Data Ingestion
  • Errors
  • Introduction
  • Loan API & Deduction Lifecycle
  • Getting Started
  • OAuth
  • Webhooks
  • Embedded Journey
  • OpenSylo Marketplace Integration API
    • OAuth 2.0
      • Start OAuth authorization
      • Exchange authorization code or refresh token
      • Revoke a token
      • Discover OAuth capabilities
    • Data Ingestion
      • Submit single merchant data
      • Submit bulk merchant data
      • Poll batch processing status
      • Get merchant credit score
      • Data ingestion health check
    • Sales & Events
      • Submit a sales event
      • Submit a repayment event
      • Submit an account flag
    • Loan API
      • Get active loans for a merchant
      • Get loan status
      • Validate deduction amounts
      • Bulk loan status
    • Inbound Webhooks
      • Repayment events
        POST
      • Settlement events
        POST
    • Outbound Webhooks
      • loan.approved
      • loan.disbursed
      • loan.repayment_updated
      • loan.nearly_complete
      • loan.completed
      • loan.defaulted
      • merchant.created
      • kyc.submitted
      • kyc.approved
      • kyc.rejected
      • funding_request.created
      • funding_request.fulfilled
      • funding_request.rejected
    • Embedded Journey (Marketplace API)
      • Create (or fetch) a merchant
      • Get merchant status (KYC, credit score, funding requests)
      • Update business KYC information
      • Add directors (bulk)
      • Attach a KYC document
      • Submit KYC for review
      • Submit sales data for credit scoring
      • Create a funding request
      • Mint an embed token for the hosted journey
  • OpenSylo Marketplace API
    • OAuth 2.0
      • Start OAuth authorization
      • Exchange code or refresh token
      • Revoke a token
      • OAuth discovery / client metadata
    • Data Ingestion
      • Submit single merchant data
      • Submit bulk merchant data
      • Get merchant credit score
      • Integration health check
    • Loan API
      • Get active loans for a merchant
      • Get loan status
      • Validate deduction amounts
      • Bulk loan status check
    • Inbound Webhooks
      • Send repayment webhook
      • Send settlement webhook
  1. Inbound Webhooks

Repayment events

POST
/api/v1/webhooks/marketplace/repayment
Receives repayment events from the marketplace: deductions, failures, and reversals.
The request body is polymorphic, discriminated by the event field.
Supported events:
repayment.deducted -- A repayment was successfully deducted from a sale
repayment.failed -- A repayment deduction attempt failed
repayment.reversed -- A previously successful deduction was reversed
Idempotency: Events are deduplicated by event_id. Duplicate events
receive a duplicate status in the response.

Request

Authorization
API Key
Add parameter in header
X-Marketplace-Signature
Example:
X-Marketplace-Signature: ********************
or
Header Params

Body Params application/jsonRequired

Examples

Responses

🟢200OK
application/json
Webhook processed.
Bodyapplication/json

🟠400Bad Request
🟠401Unauthorized
🟠409
🟠429
Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://api.opensylo.com/api/v1/webhooks/marketplace/repayment' \
--header 'X-Marketplace-Timestamp: 1712495400' \
--header 'X-Marketplace-Id: mkt_live_abc123def456' \
--header 'X-Marketplace-Event-Id: evt_rp_20260407_001' \
--header 'X-Marketplace-Signature: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
    "event": "repayment.deducted",
    "event_id": "evt_rp_deducted_20260407_001",
    "timestamp": "2026-04-07T14:30:00.000Z",
    "marketplace": {
        "id": "mkt_live_abc123def456",
        "name": "Jumia Nigeria"
    },
    "merchant": {
        "marketplace_id": "PLT_MERCH_001",
        "opensylo_id": "mch_a1b2c3d4-e5f6-7890-abcd-ef1234567890"
    },
    "loan": {
        "opensylo_id": "loan_f1e2d3c4-b5a6-7890-1234-567890abcdef",
        "opensylo_reference": "OSL-2026-00142"
    },
    "deduction": {
        "reference": "DED-20260407-001",
        "amount": 5000,
        "currency": "NGN",
        "deducted_at": "2026-04-07T14:30:00.000Z"
    },
    "source_transaction": {
        "id": "ORD-2026-00543",
        "type": "sale",
        "gross_amount": 50000,
        "timestamp": "2026-04-07T14:25:00.000Z"
    },
    "loan_balance": {
        "total_due": 1725000,
        "total_paid": 350000,
        "outstanding": 1375000
    }
}'
Response Response Example
200 - Success Example
{
    "status": "received",
    "event_id": "evt_rp_20260407_001",
    "opensylo_reference": "txn_a1b2c3d4",
    "received_at": "2026-04-07T14:30:00.000Z"
}
Modified at 2026-08-05 07:02:04
Previous
Bulk loan status
Next
Settlement events
Built with