LayUp Technologies MerchantService API

The MerchantService API from LayUp Technologies — 4 operation(s) for merchantservice.

Operations 6

POST /v1/merchants #
GET /v1/merchants-to-settle #
GET /v1/merchants/shop-directory #
GET /v1/merchants/{_id} #
DELETE /v1/merchants/{_id} #
PUT /v1/merchants/{_id} #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/layup-technologies-merchantservice-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

layup-technologies-merchantservice-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Layup endpoints AbsaDebiCheckService Merchant Service API
  version: 1.4.16
  description: 'Welcome to The Layup Swagger page. This page allows developers to interactively explore the API. For more detailed documentation see [The Layup documentation page](https://documentation.layup.co.za/).


    # Introduction


    ## What is LayUp


    LayUp is a lay-by payment solution. LayUp Schedules payments and ensures that your clients pay securely, effectively and on time. Depending on your parameters LayUp schedules a payment plan for your clients. Once a payment plan has been completed we notify you. There are 3 stories that are of importance to a merchant:


    1. Order Creation

    2. Deposit Received (and holding Stock for your client)

    3. Order Completion.


    LayUp allows you to take full control over the entire payment process if you wish to do so. We also provide a convenient front-end for users to use. The front-end should significantly reduce the time to integrate and get you started using LayUp as soon as possible.


    Once an order is completed a notification will be sent to the merchant so that you can provide the client with their product.


    ## How to use LayUp


    As a merchant who wants to place an order through LayUp, you want to send the relevant information to the LayUp API to create the order. The API will return an order ID. Unless your integration is using a custom user interface, you want to send the user to the LayUp customer payment widget. The URL for this widget is <u>https://shopper.layup.co.za/order/{orderId}</u> for production and <u>https://sandbox.layup.co.za/order/{orderId}</u> for sandbox.

    '
servers:
- url: http://localhost:3000
- url: https://localhost:3000
- url: wss://localhost:3000
security:
- apiKey:
  - read
  - write
tags:
- name: MerchantService
paths:
  /v1/merchants:
    post:
      operationId: MerchantService_Create
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelMerchantResponse'
        '204':
          description: Successfully processed the request, no content.
        '403':
          description: Returned when the user does not have permission to access the resource.
        '404':
          description: Returned when the resource does not exist.
      parameters:
      - name: _id
        in: query
        required: false
        schema:
          type: string
      - name: avs
        in: query
        required: false
        schema:
          type: string
      tags:
      - MerchantService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/modelMerchantRequest'
        required: true
  /v1/merchants-to-settle:
    get:
      operationId: MerchantService_getMerchantsToSettle
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelMerchantToSettleResponse'
        '204':
          description: Successfully processed the request, no content.
        '403':
          description: Returned when the user does not have permission to access the resource.
        '404':
          description: Returned when the resource does not exist.
      tags:
      - MerchantService
  /v1/merchants/shop-directory:
    get:
      operationId: MerchantService_getShops
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelMerchantResponseShops'
        '204':
          description: Successfully processed the request, no content.
        '403':
          description: Returned when the user does not have permission to access the resource.
        '404':
          description: Returned when the resource does not exist.
      parameters:
      - name: featured
        in: query
        required: false
        schema:
          type: boolean
      tags:
      - MerchantService
  /v1/merchants/{_id}:
    get:
      operationId: MerchantService_Get
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelMerchantResponse'
        '204':
          description: Successfully processed the request, no content.
        '403':
          description: Returned when the user does not have permission to access the resource.
        '404':
          description: Returned when the resource does not exist.
      parameters:
      - name: _id
        in: path
        required: true
        schema:
          type: string
      tags:
      - MerchantService
    delete:
      operationId: MerchantService_Del
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelMerchantResponse'
        '204':
          description: Successfully processed the request, no content.
        '403':
          description: Returned when the user does not have permission to access the resource.
        '404':
          description: Returned when the resource does not exist.
      parameters:
      - name: _id
        in: path
        required: true
        schema:
          type: string
      tags:
      - MerchantService
    put:
      operationId: MerchantService_Update
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/modelMerchantResponse'
        '204':
          description: Successfully processed the request, no content.
        '403':
          description: Returned when the user does not have permission to access the resource.
        '404':
          description: Returned when the resource does not exist.
      parameters:
      - name: _id
        in: path
        required: true
        schema:
          type: string
      - name: avs
        in: query
        required: false
        schema:
          type: string
      tags:
      - MerchantService
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/modelMerchantRequest'
        required: true
components:
  schemas:
    modelDefaultDepositType:
      type: object
      properties:
        depositType:
          type: string
        enabled:
          type: boolean
        percentage:
          type: integer
          format: int32
        flat:
          type: integer
          format: int32
    modelPaymentPlanSettings:
      type: object
      properties:
        weeklyPayments:
          type: boolean
        splitPayments:
          type: boolean
        orderExpiry:
          $ref: '#/components/schemas/modelOrderExpiry'
        maxMonths:
          $ref: '#/components/schemas/modelValueEnabledPair'
        paymentMethods:
          $ref: '#/components/schemas/modelPaymentMethod'
        editPaymentPlanSettings:
          type: boolean
        defaultDepositType:
          $ref: '#/components/schemas/modelDefaultDepositType'
        minMonths:
          $ref: '#/components/schemas/modelValueEnabledPair'
        debiCheckMinimum:
          $ref: '#/components/schemas/modelValueEnabledPair'
        monthlyPayments:
          type: boolean
        suspendOnCancel:
          type: boolean
    modelBillingAddress:
      type: object
      properties:
        country:
          type: string
        province:
          type: string
        streetAddress:
          type: string
        city:
          type: string
        postalCode:
          type: string
    modelCancellationTermRequest:
      type: object
      properties:
        active:
          type: boolean
        definition:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/modelCancellationDefinition'
    modelCustomize:
      type: object
      properties:
        logo:
          $ref: '#/components/schemas/modelLogo'
        imageUrl:
          $ref: '#/components/schemas/modelImageUrl'
        paymentWidget:
          $ref: '#/components/schemas/modelPaymentWidgetLogo'
    modelOrderExpiryReminder:
      type: object
      properties:
        enabled:
          type: boolean
        daysBeforeExpiryInDays:
          type: integer
          format: int32
      title: Communication
    modelCancellationPolicyDefinition:
      type: object
      properties:
        deposit:
          type: boolean
        percentage:
          type: integer
          format: int32
        flatFee:
          type: integer
          format: int32
        percentageShouldUseTotalPaid:
          type: boolean
    modelCancellationType:
      type: object
      properties:
        name:
          type: string
        definition:
          $ref: '#/components/schemas/modelCancellationTypeDefinition'
        finalPaymentMissed:
          type: boolean
    modelMerchantToSettleResponse:
      type: object
      properties:
        merchants:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/modelMerchantIdResponse'
    modelNotification:
      type: object
      properties:
        enabled:
          type: boolean
        emails:
          type: array
          items:
            type: string
    modelMessageNotification:
      type: object
      properties:
        enabled:
          type: boolean
    modelCancellationTypeDefinition:
      type: object
      properties:
        missed:
          type: integer
          format: int32
        percentage:
          type: integer
          format: int32
    modelBankInfo:
      type: object
      properties:
        bankName:
          $ref: '#/components/schemas/modelBankValidation'
        account:
          $ref: '#/components/schemas/modelBankValidation'
        accountType:
          $ref: '#/components/schemas/modelBankValidation'
        branchCode:
          $ref: '#/components/schemas/modelBankValidation'
        idNumber:
          $ref: '#/components/schemas/modelBankValidation'
        verified:
          type: boolean
        clientName:
          $ref: '#/components/schemas/modelBankValidation'
        cellNumber:
          $ref: '#/components/schemas/modelBankValidation'
        initials:
          $ref: '#/components/schemas/modelBankValidation'
        email:
          $ref: '#/components/schemas/modelBankValidation'
        validationResponseErrors:
          type: array
          items:
            type: string
    modelUser:
      type: object
      properties:
        _id:
          type: string
        username:
          type: string
        email:
          type: string
          format: email
        idNumber:
          type: string
        address:
          type: string
        postalCode:
          type: string
        city:
          type: string
        province:
          type: string
        country:
          type: string
        role:
          type: string
          enum:
          - CLIENT
          - MERCHANT
          - ADMIN
          default: CLIENT
        active:
          type: boolean
        merchantId:
          type: string
        cellNumber:
          type: string
        dateOfBirth:
          type: string
        name:
          type: string
        verified:
          type: boolean
        verifiedEmail:
          type: boolean
        verifiedMobile:
          type: boolean
        merchantRole:
          type: string
        merchantIds:
          type: array
          items:
            type: string
      description: This user is loaded in by the authentication middleware.
    modelCommunicationMessage:
      type: object
      properties:
        orderExpiryReminder:
          $ref: '#/components/schemas/modelOrderExpiryReminder'
        orderActivated:
          $ref: '#/components/schemas/modelMessageNotification'
        cancellation:
          $ref: '#/components/schemas/modelMessageNotification'
        refund:
          $ref: '#/components/schemas/modelMessageNotification'
    modelNotification_Percentage:
      type: object
      properties:
        enabled:
          type: boolean
        emails:
          type: array
          items:
            type: string
        value:
          type: integer
          format: int32
    modelPaymentWidgetLogo:
      type: object
      properties:
        enabled:
          type: boolean
        value:
          type: string
    modelImageUrl:
      type: object
      properties:
        enabled:
          type: boolean
        value:
          type: string
    modelshopDirectorySettings:
      type: object
      properties:
        enabled:
          type: boolean
        webAvailability:
          type: string
        webLogoImage:
          type: string
        webCategory:
          type: array
          items:
            type: string
        featured:
          type: boolean
    modelFeature:
      type: object
      properties:
        enableCustomWidgetLogo:
          type: boolean
        enableCustomEmailLogo:
          type: boolean
        enableDefaultPaymentPlanImage:
          type: boolean
        enableDebiCheck:
          type: boolean
        enableCreditCard:
          type: boolean
        enableInstantEFT:
          type: boolean
        enableAutoCancellation:
          type: boolean
        enableManualCancellation:
          type: boolean
        enableLayupFee:
          type: boolean
        enableAmendmentApi:
          type: boolean
        enablePayAt:
          type: boolean
        enableCapitecPay:
          type: boolean
        enableDashpay:
          type: boolean
        enableTerminalCard:
          type: boolean
        enableOfflinePayment:
          type: boolean
        enableEmbeddedCheckout:
          type: boolean
    modelMerchantRequest:
      type: object
      properties:
        name:
          type: string
        domain:
          type: string
        active:
          type: boolean
        flatFee:
          type: integer
          format: int32
        percFee:
          type: number
          format: double
        notifyUrl:
          type: string
        paymentNotifyUrl:
          type: string
        expire:
          type: integer
          format: int32
        merchantTermsLink:
          type: string
        supportEmail:
          type: string
        supportMobile:
          type: string
        imageUrl:
          type: string
        newOrder:
          $ref: '#/components/schemas/modelNotification'
        amendmentOrder:
          $ref: '#/components/schemas/modelNotification'
        cancelledOrder:
          $ref: '#/components/schemas/modelNotification'
        completedOrder:
          $ref: '#/components/schemas/modelNotification'
        successfulPayment:
          $ref: '#/components/schemas/modelNotification'
        failedPayment:
          $ref: '#/components/schemas/modelNotification'
        missedPayment:
          $ref: '#/components/schemas/modelNotification'
        autoSettlement:
          type: boolean
        settlementFrequency:
          type: string
        settlementType:
          type: string
        settlementDay:
          type: integer
          format: int32
        bankDetails:
          $ref: '#/components/schemas/modelBankDetails'
        absorbsFee:
          type: boolean
        cancellationTerms:
          $ref: '#/components/schemas/modelCancellationTermRequest'
        weeklyPayments:
          type: boolean
        paymentPlans:
          $ref: '#/components/schemas/modelPaymentPlanSettings'
        expiredOrder:
          $ref: '#/components/schemas/modelNotification'
        completedOrder_75:
          $ref: '#/components/schemas/modelNotification_Percentage'
        customFeatures:
          $ref: '#/components/schemas/modelCustomize'
        features:
          $ref: '#/components/schemas/modelFeature'
        cancellationRequest:
          $ref: '#/components/schemas/modelNotification'
        billingAddress:
          $ref: '#/components/schemas/modelBillingAddress'
        vatNo:
          type: string
        registeredEntity:
          type: string
        settlements:
          $ref: '#/components/schemas/modelNotification'
        invoices:
          $ref: '#/components/schemas/modelNotification'
        onboardingState:
          type: string
        accountType:
          type: string
        contractDocumentId:
          type: string
        merchantBankingPercFee:
          type: integer
          format: int32
        adminPercFee:
          type: integer
          format: int32
        contractUrl:
          type: string
        contractUpdated:
          type: boolean
        bankDetailsValidation:
          $ref: '#/components/schemas/modelBankInfo'
        bankValidationPendingReference:
          type: string
        merchantContractSigned:
          type: string
        transfers:
          $ref: '#/components/schemas/modelNotification'
        refunds:
          $ref: '#/components/schemas/modelNotification'
        simulated:
          type: boolean
        suspendedOrder:
          $ref: '#/components/schemas/modelNotification'
        monthlyPayments:
          type: boolean
        displayOnWeb:
          $ref: '#/components/schemas/modelshopDirectorySettings'
        tradingName:
          type: string
        pricelistId:
          type: string
        communication:
          $ref: '#/components/schemas/modelCommunication'
        defaultBillingMethod:
          type: string
        enableTwoFactorAuthentication:
          type: boolean
        voucherSettings:
          $ref: '#/components/schemas/modelMerchantVoucherSettings'
        settlementBatchReferencePrefix:
          type: string
      title: -- Communication
    modelMerchantVoucherSettings:
      type: object
      properties:
        active:
          type: boolean
        minimumSavingGoalInCents:
          type: integer
          format: int32
        maximumSavingGoalInCents:
          type: integer
          format: int32
        rewardType:
          type: string
        rewardFlatAmountInCents:
          type: integer
          format: int32
        rewardPercentage:
          type: integer
          format: int32
        voucherProviders:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/modelVoucherProvider'
    modelValueEnabledPair:
      type: object
      properties:
        enabled:
          type: boolean
        value:
          type: integer
          format: int32
    modelMerchantResponse:
      type: object
      properties:
        _id:
          type: string
        name:
          type: string
        domain:
          type: string
        active:
          type: boolean
        flatFee:
          type: integer
          format: int32
        percFee:
          type: number
          format: double
        users:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/modelUser'
        notifyUrl:
          type: string
        paymentNotifyUrl:
          type: string
        timestamp:
          type: number
          format: double
        merchantTermsLink:
          type: string
        settlementDay:
          type: integer
          format: int32
        settlementFrequency:
          type: string
        settlementType:
          type: string
        supportEmail:
          type: string
        supportMobile:
          type: string
        imageUrl:
          type: string
        newOrder:
          $ref: '#/components/schemas/modelNotification'
        amendmentOrder:
          $ref: '#/components/schemas/modelNotification'
        cancelledOrder:
          $ref: '#/components/schemas/modelNotification'
        completedOrder:
          $ref: '#/components/schemas/modelNotification'
        successfulPayment:
          $ref: '#/components/schemas/modelNotification'
        failedPayment:
          $ref: '#/components/schemas/modelNotification'
        missedPayment:
          $ref: '#/components/schemas/modelNotification'
        autoSettlement:
          type: boolean
        absorbsFee:
          type: boolean
        expire:
          type: integer
          format: int32
        cancellationTerms:
          $ref: '#/components/schemas/modelCancellationTermRequest'
        weeklyPayments:
          type: boolean
        paymentPlans:
          $ref: '#/components/schemas/modelPaymentPlanSettings'
        expiredOrder:
          $ref: '#/components/schemas/modelNotification'
        completedOrder_75:
          $ref: '#/components/schemas/modelNotification_Percentage'
        customFeatures:
          $ref: '#/components/schemas/modelCustomize'
        features:
          $ref: '#/components/schemas/modelFeature'
        cancellationRequest:
          $ref: '#/components/schemas/modelNotification'
        merchantName:
          type: string
        billingAddress:
          $ref: '#/components/schemas/modelBillingAddress'
        vatNo:
          type: string
        registeredEntity:
          type: string
        bankDetails:
          $ref: '#/components/schemas/modelBankDetails'
        settlements:
          $ref: '#/components/schemas/modelNotification'
        invoices:
          $ref: '#/components/schemas/modelNotification'
        onboardingState:
          type: string
        accountType:
          type: string
        contractDocumentId:
          type: string
        merchantBankingPercFee:
          type: integer
          format: int32
        adminPercFee:
          type: integer
          format: int32
        contractUrl:
          type: string
        contractUpdated:
          type: boolean
        bankDetailsValidation:
          $ref: '#/components/schemas/modelBankInfo'
        bankValidationPendingReference:
          type: string
        merchantContractSigned:
          type: string
        transfers:
          $ref: '#/components/schemas/modelNotification'
        refunds:
          $ref: '#/components/schemas/modelNotification'
        suspendedOrder:
          $ref: '#/components/schemas/modelNotification'
        monthlyPayments:
          type: boolean
        displayOnWeb:
          $ref: '#/components/schemas/modelshopDirectorySettings'
        tradingName:
          type: string
        pricelistId:
          type: string
        accountSettings:
          $ref: '#/components/schemas/modelMerchantAccountSettings'
        feeSystem:
          type: string
        communication:
          $ref: '#/components/schemas/modelCommunication'
        defaultBillingMethod:
          type: string
        enableTwoFactorAuthentication:
          type: boolean
        voucherSettings:
          $ref: '#/components/schemas/modelMerchantVoucherSettings'
        settlementBatchReferencePrefix:
          type: string
        terminalSettings:
          $ref: '#/components/schemas/modelTerminalSettings'
    modelMerchantAccountSettings:
      type: object
      properties:
        numberOfUsers:
          type: integer
          format: int32
        apiAccess:
          type: boolean
    modelBankValidation:
      type: object
      properties:
        verified:
          type: boolean
        value:
          type: string
    modelCancellationPolicy:
      type: object
      properties:
        name:
          type: string
          enum:
          - Deposit
          - Percentage
          - FlatFee
          - Combination
        definition:
          $ref: '#/components/schemas/modelCancellationPolicyDefinition'
    modelPaymentMethod:
      type: object
      properties:
        creditOrDebitCard:
          type: boolean
        eft:
          type: boolean
        debiCheck:
          type: boolean
        payAt:
          type: boolean
        capitecPay:
          type: boolean
        dashpay:
          type: boolean
        terminalCard:
          type: boolean
        offline:
          type: boolean
        embeddedCheckout:
          type: boolean
    modelCancellationDefinition:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/modelCancellationType'
        policy:
          $ref: '#/components/schemas/modelCancellationPolicy'
        start:
          type: integer
          format: int32
        end:
          type: integer
          format: int32
        gracePeriod:
          type: integer
          format: int32
    modelMerchantIdResponse:
      type: object
      properties:
        _id:
          type: string
    modelMerchantResponseGetShops:
      type: object
      properties:
        _id:
          type: string
        name:
          type: string
        domain:
          type: string
        displayOnWeb:
          $ref: '#/components/schemas/modelshopDirectorySettings'
        createdAt:
          type: string
    modelOrderExpiry:
      type: object
      properties:
        enabled:
          type: boolean
        value:
          type: integer
          format: int32
    modelCommunication:
      type: object
      properties:
        channels:
          type: array
          items:
            type: string
        messages:
          $ref: '#/components/schemas/modelCommunicationMessage'
    modelMerchantResponseShops:
      type: object
      properties:
        categories:
          type: array
          items:
            type: string
        shops:
          type: array
          items:
            type: object
            $ref: '#/components/schemas/modelMerchantResponseGetShops'
    modelTerminalSettings:
      type: object
      properties:
        requireOrderReference:
          type: boolean
        forceUniqueOrderReference:
          type: boolean
        requireDeposit:
          type: boolean
        editableDescription:
          type: boolean
    modelVoucherProvider:
      type: object
      properties:
        name:
          type: string
        apiKey:
          type: string
        apiUrl:
          type: string
    modelLogo:
      type: object
      properties:
        enabled:
          type: boolean
        value:
          type: string
    modelBankDetails:
      type: object
      properties:
        accountType:
          type: string
        accountNumber:
          type: string
        branchCode:
          type: string
        bankName:
          type: string
        verified:
          type: boolean
  securitySchemes:
    apiKey:
      type: apiKey
      name: apikey
      in: header