1. México 🇲🇽
  • API Docs Mexico 🇲🇽
  • Online Payments
    • Release Notes
    • Card Payments
      • Request a card token
      • Make a charge or deferred charge
      • Create payment (tokenless)
      • Request deferred options
      • Refund a transaction
      • Authorize payments
      • Preauthorization (tokenless)
      • Void a transaction
      • Reauthorize payments
      • Capture an authorized payment
      • Bin Info V2
      • Bin Info
      • Validate OTP
      • Verify Account
    • One-Click and Scheduled Payments
      • Request a recurring charge token
      • Create a recurring charge
      • Make an One-click payment
      • Update recurring charge card data
      • Cancel a recurring charge
      • Update a recurring charge
      • Add a temporary charge or discount
      • Authorize payments
      • Capture an authorized payment
      • Get recurring charge Info
    • Transfer in
      • Get Bank List
      • Request a Transfer In token
      • Init Transaction
      • Get Status
    • Transfer Out
      • Get Bank List
      • Get Bank List V2
      • Request a Transfer Out token
      • Init Transaction
      • Get Status
      • Balance for Payouts
    • Smartlinks
      • Create a Smartlink
      • Get a Smartlink
      • Delete a smartlink
      • Update a Smartlink
    • Payment Button
      • Create a payment button
    • Analytics
      • Get transactions list v1
      • Get transactions list v2
    • Chargebacks
      • Query chargebacks
      • Request chargeback export
    • Commissions
      • Get Commission Configuration
    • Payment Credentials
      • Create a credential
      • Activate or deactivate
      • Delete credential
      • Regenerate a credential
      • Update credential
      • Advanced search
      • Search credentials
    • Platform Status
      • Get platform status
      • Get gateway status
    • Settlement
      • Query settlement
    • Subscription Transactions
      • Get subscription transactions
  • Card Present Billpocket
    • Get Started
      • Create Account
      • User Token
      • API Keys
    • Webhooks
      • Webhooks — Transfer Funds (v1)
      • Webhooks — Transfer Funds to Your Bank Account
      • Transfer Funds Errors
    • Terminals
      • App Review
      • Splash Screen
    • Card Present Payment Services
      • Cloud Terminal API
        • Collect card payments
        • Print Ticket
        • Cancel Push Notification
        • Get transaction status
        • Collect card payments v2
      • App-to-App
        • Android intents
        • App to App — iOS
        • App to App — Mobile Web
      • Terminal SDK
        • Terminal SDK
        • Android SDK errors
    • Card not Present Billpocket Services
      • 3DS Checkout
        • Create checkout
        • Get checkout details
      • E-commerce Flex
        • Get token
        • Validate token
        • Collect payments
        • Refund
        • Capture an authorized payment
        • Get status
    • Catalogs
      • States
      • Municipalities
      • Tax companies
      • Commercial activities
    • User Settings
      • Create user
    • Accounts
      • Clabe Account Setup
        • Add CLABE account
      • Deposit Accounts
        • Add or update CLABE account
    • Transactions
      • Transaction List
        • Get token
        • Get transaction list
        • Get transaction list v2
        • Get transaction list v3
        • Get transaction list v4
      • Cancel Payments
        • Cancel payments Error Codes
        • Cancel payments
  • API Raw Card Present
    • The Amount Object
    • Error Catalog
    • Key Exchange Process
    • Release Notes
    • Test Data
    • One-time payments
      • Single payment
    • Two-step-payments
      • Authorization and capture
    • Voids & Refunds
      • Refund a transaction
    • Card information
      • Get BIN Info
      • Balance inquiries
      • Bin Info V2
      • Request deferred options
    • Query Transactions
      • Transaction Search
    • Webhooks
      • Webhooks — Introduction
      • Good Practices
      • Webhooks — Card Payments
      • Webhooks — Refunds
      • Check Your Webhooks
  • Kushki One
    • Cloud Services
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
      • Search
        • Transaction Search
      • Print
        • Create Print Job
        • Get Print Job Status
    • Local Services
      • Print
        • Create Print Job
        • Get Print Job Status
        • Print Job Webhook (inbound — implemented by your POS)
      • Payment
        • Charge
        • Authorization (Pre-auth)
        • Capture
        • Re-authorization
        • Post-tip
        • Void
        • Refund
        • Abort
      • Search
        • Transaction Search — Online
        • Transaction Search — Local
  • Appian - Submerchant Register
    • Submerchant Validation in Batch
    • Query submerchant status by requestId/submerchantId
    • Submerchant Document Upload
    • Get submerchantIds
    • Get credentials for submerchants
  • Schemas
    • RequestBodies
      • one-and-two-step-payment
    • Card
    • Channel
    • Amount-cash-in
    • ChargebackListResponse
    • StatusComponent
    • SettlementDateRangeRequest
    • SubscriptionTransactionsResponse
    • amount
    • AmountWithTaxes
    • PrintJobRequest
    • networkToken
    • ChargebackItem
    • SettlementTicketRequest
    • SubscriptionTransaction
    • extra_taxes
    • AmountCore
    • CommandText
    • currency
    • ErrorResponse400
    • ErrorResponse
    • SettlementResponse
    • webhooksItem
    • card
    • ExtraTaxes
    • CommandColumns
    • Amount
    • Country
    • ErrorResponse401
    • SettlementRecord
    • card_details
    • ColumnItem
    • extraTaxes
    • ErrorResponse403
    • enc_tlv
    • TransactionResponse
    • CommandDivider
    • Deferred
    • payment_method
    • ErrorResponse500
    • deferred
    • RawResponse
    • CommandFeed
    • Metadata
    • pos_details
    • CardData
    • CommandSpace
    • ContactDetails
    • contact_details
    • sub_merchant
    • AmountWithTip
    • CommandCut
    • documentType
    • Subscription
    • metadata
    • LinkFailure
    • CommandImage
    • orderDetails
    • Language
    • TransactionSearchRequest
    • CommandQR
    • Shipping Address
    • payment_submethod
    • CommandBarcode
    • Billing-Address
    • SubscriptionUpdate
    • PrinterError
    • product
    • SubscriptionAdjustmentRequest
    • PrintJobStatus
    • threeDomainSecure
    • PrintWebhookPayload
    • webhooks
    • headers
    • webhooksChargeback
    • citMit
    • network
    • binInfo
    • messageFields
    • UnexpectedErrorResponse
    • transactionType
    • ExternalReferenceId
    • ExternalSubscriptionId
BienvenidaPerú 🇵🇪México 🇲🇽
Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
BienvenidaPerú 🇵🇪México 🇲🇽
Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. México 🇲🇽

Appian - Submerchant Register

Kushki provides an API for Payment Service Providers (PSPs) to create multiple submerchants in a single operation. This API streamlines the onboarding process, allowing businesses to scale efficiently while maintaining compliance with legal and operational requirements.

API Base URL#

EnvironmentURL
Productionhttps://api.kushkipagos.com
Testhttps://core-uat-us-east-1.kushkipagos.com

Main Onboarding Endpoints#

1.
Submerchant Creation in Batch (POST /onboarding/v1/submerchants/batch) — Submit one or more submerchants for initial validation. This step checks structural and operational data but does not onboard the submerchants yet.
1.1. Webhook Notification: Submerchant Status — Once the request is processed, Kushki sends a webhook for each submerchant with their onboarding status. This notification can be individual or batched.
If the status is READY_FOR_ONBOARDING, proceed to the next step to track onboarding progress (step 2).
If the status is ERROR, review the details, correct the data, and resend the request using step 1.
2.
Get Submerchant by requestId or submerchantId (GET /onboarding/v1/submerchants) — Use this endpoint to monitor the onboarding progress of a submerchant after receiving the READY_FOR_ONBOARDING status.
3.
Get All Submerchant IDs (GET /onboarding/v1/psp/submerchantIds) — Retrieve all submerchantIds for one or more submerchants that have completed the onboarding process using the API Key from Appian.
4.
Get Credentials for Submerchants (POST /onboarding/v1/submerchants/credentials) — Retrieve the transactional credentials (public and private keys) for submerchants that have completed onboarding.

Specialized Onboarding Endpoint#

Important: This endpoint is only for submerchants with the Operation Country: Mexico (MX).
This endpoint supports conditional or specific tasks necessary to advance the onboarding process in certain contexts.
Submerchant Document Upload (POST /upload/v1/submerchant/files) — Submit required documents to complete specific KYC tasks. This endpoint is currently exclusive to Mexico (MX).

Submerchant Register Process#

1.
PSP sends a batch creation request with multiple submerchants. Kushki validates the request format.
The batch will only be processed if all submerchants pass validation.
If valid, submerchants move into onboarding.
If invalid, errors must be corrected and the request resubmitted.
2.
Kushki processes the request and returns a requestId along with other details.
3.
PSP queries the status using the requestId or submerchantId to check individual submerchant onboarding progress.

🔔 Webhook Notifications via Appian#

Kushki can automatically notify PSPs of submerchant onboarding results via webhook, based on the configuration established in Appian, as part of the commercial agreement during affiliation.

📌 Configuration Highlights#

Webhook setup is done in the PSP Portal in Appian.
Each PSP can enable or disable webhook notifications and configure:
Notification type: batch or individual
Event scope for individual mode:
Notify only errors
Notify only successes
Notify all results
The target URL where events should be sent

📬 Notification Logic#

If batch is enabled → a summary is sent once the full batch is processed.
If individual is enabled → Kushki can notify:
✅ All submerchant results
❌ Only errors
✔️ Only successes

🔔 Webhook Payload Examples for Submerchant Creation#

Depending on the configuration (individual or batch), Kushki will send webhook notifications to the PSP's configured URL with the status of the submerchant onboarding process.

Response Handling#

When a batch creation request is submitted, Kushki validates the format of each submerchant in the payload. The response includes a status field with one of the following values:
StatusDescription
READY_FOR_ONBOARDINGThe submerchant has passed validation and is ready for the onboarding process.
ERRORThe submerchant creation failed due to validation or processing issues. The issue must be corrected and the creation request resubmitted.

Batch Webhook Notification — Successful Submerchants#

[
  {
    "requestId": "d7eb557c-8385-4282-b196-6fb1ccec6a06",
    "submerchantId": "e5c40357-7bed-4e43-bd6c-4815e9341eaf",
    "status": "READY_FOR_ONBOARDING",
    "message": "Success"
  },
  {
    "requestId": "d7eb557c-8385-4282-b196-6fb1ccec6a06",
    "submerchantId": "bf5cbdd3-625f-4734-9559-6cf208f9e2de",
    "status": "READY_FOR_ONBOARDING",
    "message": "Success"
  }
]

📦 Batch Webhook Notification — With Errors#

[
  {
    "requestId": "d7eb557c-8385-4282-b196-6fb1ccec6a06",
    "submerchantId": "e5c40357-7bed-4e43-bd6c-4815e9341eaf",
    "status": "ERROR",
    "message": "Submerchant Onboarding Request has failed",
    "errorDetails": {
      "message": "Submerchant Onboarding Request has failed",
      "fields": {
        "customerId": "Select a valid operation country",
        "operationType": "Select a valid operation country",
        "operationCountry": "Operation Country not registered",
        "legalRepresentative": {
          "firstName": "Value is required",
          "firstLastName": "Value is required",
          "secondLastName": "Second Last Name is required",
          "dateBirth": "Date of Birth was invalid, select a new date",
          "disabled": false
        },
        "ubo": {
          "disabled": true
        }
      }
    }
  },
  {
    "requestId": "d7eb557c-8385-4282-b196-6fb1ccec6a06",
    "submerchantId": "bf5cbdd3-625f-4734-9559-6cf208f9e2de",
    "status": "ERROR",
    "message": "Submerchant Onboarding Request has failed",
    "errorDetails": {
      "message": "Submerchant Onboarding Request has failed",
      "fields": {
        "customerId": "Select a valid operation country",
        "operationType": "Select a valid operation country",
        "operationCountry": "Operation Country not registered",
        "legalRepresentative": {
          "firstName": "Value is required",
          "firstLastName": "Value is required",
          "secondLastName": "Second Last Name is required",
          "dateBirth": "Date of Birth was invalid, select a new date",
          "disabled": false
        },
        "ubo": {
          "disabled": true
        }
      }
    }
  }
]

📦 Individual Webhook Notification — With Error#

[
  {
    "requestId": "98d7e553-a1fd-43e5-ad7a-8e019e76745c",
    "submerchantId": "804e0d11-f298-4015-8662-1c31af577164",
    "status": "ERROR",
    "message": "Submerchant Onboarding Request has failed",
    "errorDetails": {
      "message": "Submerchant Onboarding Request has failed",
      "fields": {
        "customerId": "Select a valid operation country",
        "operationType": "Select a valid operation country",
        "operationCountry": "Operation Country not registered",
        "legalRepresentative": {
          "firstName": "Value is required",
          "firstLastName": "Value is required",
          "secondLastName": "Second Last Name is required",
          "dateBirth": "Date of Birth was invalid, select a new date",
          "disabled": false
        },
        "ubo": {
          "disabled": true
        }
      }
    }
  }
]

Payload for Document Upload (MX)#

Important: This endpoint is only for submerchants with the Operation Country: Mexico (MX).
This webhook is sent to the webhookUrl specified in the document upload request (POST /upload/v1/submerchant/files) once the documents have been processed and reviewed.
The payload contains the submerchantId and the status of each uploaded document (Approved, Under Review, or Rejected). For continuous, on-demand visibility of the most current status, query the main status endpoint (GET /onboarding/v1/submerchants), which includes the pendingDocuments array when the submerchant is in the PSP Pending Information state.

Response Handling#

StatusDescription
ApprovedThe document was validated and accepted.
Under ReviewThe document is currently undergoing review.
RejectedThe document was rejected and must be corrected and re-uploaded.

Example: Document Webhook Notification#

{
  "submerchantId": "520d8a1c-c849-494e-a479-4aa2a5342a80",
  "documents": [
    {
      "document": "Certificate of Tax Status (CSF)",
      "status": "Approved"
    },
    {
      "document": "Proof of Address",
      "status": "Under Review"
    }
  ]
}
Modified at 2026-07-31 15:35:01
Previous
Transaction Search — Local
Next
Submerchant Validation in Batch
Built with