1. Data Ingestion
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
        POST
      • Submit bulk merchant data
        POST
      • Poll batch processing status
        GET
      • Get merchant credit score
        GET
      • Data ingestion health check
        GET
    • 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
      • Settlement events
    • 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
    • Schemas
      • TokenRequest
      • TokenResponse
      • OAuthError
      • ClientMetadataResponse
      • MerchantIdentity
      • SalesPerformance
      • RevenueConsistency
      • FulfillmentMetrics
      • PayoutCashFlow
      • PlatformDependency
      • HistoricalCredit
      • BehavioralRisk
      • MonthlyHistoryEntry
      • MerchantDataRequest
      • CreditScore
      • LoanEligibilityResult
      • MerchantDataResponse
      • BulkMerchantDataRequest
      • AsyncBulkProcessingResponse
      • BatchStatusResponse
      • SalesEventRequest
      • RepaymentEventRequest
      • AccountFlagRequest
      • MerchantInfo
      • LenderInfo
      • RepaymentInfo
      • LoanTermsInfo
      • ActiveLoan
      • ActiveLoansSummary
      • ActiveLoansResponse
      • LoanStatusRepayment
      • LoanStatusResponse
      • ValidateDeductionsRequest
      • DeductionItem
      • DeductionSummary
      • ValidateDeductionsResponse
      • BulkLoanStatusRequest
      • BulkLoanStatusItem
      • BulkStatusSummary
      • BulkLoanStatusResponse
      • WebhookMarketplace
      • WebhookMerchant
      • WebhookLoan
      • DeductionDetails
      • SourceTransaction
      • LoanBalance
      • RepaymentDeductedWebhook
      • FailureDetails
      • RepaymentFailedWebhook
      • ReversalDetails
      • RepaymentReversedWebhook
      • SettlementDetails
      • SettlementSummaryByStatus
      • SettlementSummary
      • SettlementLoanIncluded
      • BankTransferDetails
      • SettlementCreatedWebhook
      • SettlementTransferredWebhook
      • TransferDetails
      • WebhookAckResponse
      • OutboundLoan
      • OutboundMerchant
      • OutboundLender
      • LoanTerms
      • RepaymentTerms
      • ScheduleInstallment
      • LoanApprovedPayload
      • DisbursementDetails
      • DisbursedRepayment
      • LoanDisbursedPayload
      • ChangeDetail
      • LoanRepaymentUpdatedPayload
      • RepaymentStatus
      • NearlyCompleteRecommendation
      • LoanNearlyCompletePayload
      • CompletionSummary
      • LoanCompletedPayload
      • DefaultDetails
      • CollectionInstructions
      • LoanDefaultedPayload
      • ApiError
      • RateLimitError
      • EmbedCreateMerchantRequest
      • EmbedCreateMerchantResponse
      • EmbedBusinessKyc
      • EmbedDirectorInfo
      • EmbedBulkDirectors
      • EmbedDirectorListItem
      • EmbedDocumentUpload
      • EmbedSalesDataAccepted
      • EmbedCreateFundingRequest
      • EmbedFundingRequestIntent
      • EmbedMerchantStatusResponse
      • EmbedTokenResponse
      • MarketplaceMerchantRef
      • MerchantCreatedPayload
      • KycStatusPayload
      • FundingRequestEventPayload
  • 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
    • Schemas
      • TokenRequest
      • TokenResponse
      • RevokeRequest
      • ClientMetadataResponse
      • MerchantIdentity
      • SalesPerformance
      • RevenueConsistency
      • FulfillmentMetrics
      • PayoutCashFlow
      • PlatformDependency
      • HistoricalCredit
      • BehavioralRisk
      • MerchantDataRequest
      • ScoreBreakdown
      • CreditScore
      • MerchantDataResponse
      • BulkMerchantDataRequest
      • BulkMerchantDataResponse
      • CreditScoreResponse
      • HealthResponse
      • ActiveLoansResponse
      • LoanStatusResponse
      • ValidateDeductionsRequest
      • ValidateDeductionsResponse
      • BulkLoanStatusRequest
      • BulkLoanStatusResponse
      • RepaymentWebhookRequest
      • SettlementWebhookRequest
      • WebhookAckResponse
      • OAuthError
      • ApiError
  1. Data Ingestion

Submit bulk merchant data

POST
https://api.opensylo.com/api/marketplace/data/merchants/bulk
Submits performance data for multiple merchants in a single request.
Processing is asynchronous -- the response returns immediately with
a batchId and statusUrl for polling.
Note: For single-merchant OAuth tokens, the bulk payload is filtered
to only include data for the consented merchant.

Request

Authorization
Bearer Token
Provide your bearer token in the
Authorization
header when making requests to protected resources.
Example:
Authorization: Bearer ********************
or
Body Params application/jsonRequired

Examples

Responses

🟢202Accepted
application/json
Bulk data accepted for async processing.
Bodyapplication/json

🟠400Bad Request
🟠401Unauthorized
Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://api.opensylo.com/api/marketplace/data/merchants/bulk' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
    "merchants": [
        {
            "merchantIdentity": {
                "merchantId": "PLT_MERCH_001",
                "businessName": "Adebayo Electronics Limited",
                "businessType": "INDIVIDUAL",
                "marketplaceOnboardingDate": "2023-06-15T00:00:00.000Z",
                "verificationStatus": true,
                "location": "Lagos, Nigeria",
                "country": "NG",
                "category": "Electronics & Gadgets"
            },
            "salesPerformance": {
                "gmv30Days": 4500000,
                "gmv90Days": 12500000,
                "gmv180Days": 24000000,
                "avgMonthlySales": 4000000,
                "orderCount": 320,
                "avgOrderValue": 14062.5,
                "salesGrowthRate": 8.5
            },
            "revenueConsistency": {
                "monthlySalesVariance": 0.15,
                "zeroSalesMonths": 0,
                "longestSalesStreak": 12,
                "revenueConcentration": 25
            },
            "fulfillmentMetrics": {
                "fulfillmentRate": 96.5,
                "cancellationRate": 2.1,
                "refundRate": 1.8,
                "refundAmount": 432000,
                "disputeRate": 0.5,
                "lateDeliveryRate": 3.2
            },
            "payoutCashFlow": {
                "payoutFrequency": "DAILY",
                "avgPayoutValue": 1125000,
                "failedPayouts": 0,
                "walletBalanceUsage": 50000,
                "settlementDelays": 0
            },
            "platformDependency": {
                "topProductGmvPercentage": 15,
                "topCustomerPercentage": 8
            },
            "historicalCredit": {
                "previousAdvances": 2,
                "repaymentRate": 100,
                "daysPastDue": 0,
                "hasDefaults": false,
                "earlyRepayments": 1
            },
            "behavioralRisk": {
                "accountSuspensions": 0,
                "policyViolationsSeverity": null,
                "hasFraudFlags": false,
                "hasSuddenGmvSpikes": false,
                "hasLinkedAccounts": false
            },
            "monthlySalesHistory": [
                {
                    "gmv": 4200000,
                    "orderCount": 310,
                    "monthLabel": "2025-11"
                },
                {
                    "gmv": 4200000,
                    "orderCount": 310,
                    "monthLabel": "2025-11"
                },
                {
                    "gmv": 4200000,
                    "orderCount": 310,
                    "monthLabel": "2025-11"
                },
                {
                    "gmv": 4200000,
                    "orderCount": 310,
                    "monthLabel": "2025-11"
                },
                {
                    "gmv": 4200000,
                    "orderCount": 310,
                    "monthLabel": "2025-11"
                },
                {
                    "gmv": 4200000,
                    "orderCount": 310,
                    "monthLabel": "2025-11"
                }
            ],
            "marketplaceId": "mkt_live_abc123def456",
            "dataTimestamp": "2026-04-07T10:00:00.000Z",
            "correlationId": "corr_20260407_batch_001"
        }
    ],
    "marketplaceId": "mkt_live_abc123def456",
    "batchTimestamp": "2026-04-07T10:00:00.000Z",
    "batchId": "batch_client_20260407_001"
}'
Response Response Example
202 - Success Example
{
    "success": true,
    "message": "Bulk data accepted for processing",
    "batchId": "batch_f1e2d3c4-b5a6-7890-1234-567890abcdef",
    "jobId": "job_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "totalMerchants": 25,
    "status": "pending",
    "statusUrl": "/api/marketplace/data/batch/batch_f1e2d3c4-b5a6-7890-1234-567890abcdef/status",
    "submittedAt": "2026-04-07T10:30:00.000Z"
}
Modified at 2026-06-10 14:59:29
Previous
Submit single merchant data
Next
Poll batch processing status
Built with