| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Submit Merchant for Approval
Submits a merchant's application into the approval workflow and triggers automated underwriting based on the API user's ISO configuration. The request requires a completed underwriting checklist and optionally accepts risk flag thresholds that the system monitors during processing. On success, the response returns the new merchant status.
Endpoint
POST /api/v1/merchant/approve
Authentication
Basic HTTP Authentication required.
Encode username:password in Base64 and pass in the Authorization header:
Authorization: Basic {base64(username:password)}
When to use
Use this endpoint after the merchant application has been fully completed and all required documentation has been reviewed. The underwriting checklist captures what documents and checks have been completed by the underwriter. The optional riskFlagsSetting block configures automated monitoring thresholds (such as large transaction alerts and chargeback percentage limits) that will apply to the merchant once approved. This is a critical step in the boarding flow — merchants cannot be fully onboarded without passing through this approval gate.
Request Body
Top-level fields
| Field | Type | Required | Description |
|---|---|---|---|
| id | integer (int32) | Yes | Merchant profile ID to submit for approval |
| checklist | object | Yes | Underwriting checklist documenting what has been reviewed |
| riskFlagsSetting | object | No | Optional risk monitoring thresholds to apply after approval |
UnderwritingChecklist fields
| Field | Type | Required | Description |
|---|---|---|---|
| underwritersApprovalNotes | string | Yes | Notes from the underwriter supporting the approval decision |
| lowVolumeLowRisk | boolean | No | Merchant is classified as low volume, low risk |
| highVolumeLowRisk | boolean | No | Merchant is classified as high volume, low risk |
| lowVolumeHighRisk | boolean | No | Merchant is classified as low volume, high risk |
| highVolumeHighRisk | boolean | No | Merchant is classified as high volume, high risk |
| signedandCompleteMerchantApplication | boolean | No | Signed and complete merchant application received |
| preprintedCheckorBankReferenceLetter | boolean | No | Voided check or bank reference letter received |
| marketingmaterial | boolean | No | Marketing material reviewed |
| siteSurvey | boolean | No | Site survey completed |
| matchInquiry | boolean | No | MATCH list inquiry completed |
| ofacQuery | boolean | No | OFAC query completed |
| legalInformation | boolean | No | Legal information verified |
| creditReportforPrincipal | boolean | No | Credit report for principal obtained |
| thirdPartySoftwareNameAndVersion | string | No | Name and version of third-party payment software used |
| pcidssCompliant | boolean | No | Merchant is PCI DSS compliant |
| isMerchantPCIDSSCompliant | boolean | No | Alternate PCI DSS compliance flag |
| nameofQSAASV | string | No | Name of the QSA or ASV that performed PCI assessment |
| calledDBA | boolean | No | Verified DBA via phone call |
| calledHomePhoneNumberCreditReport | boolean | No | Called home phone number from credit report |
| calledBank | boolean | No | Called the merchant's bank |
| calledPriorProcessor | boolean | No | Called prior processor for reference |
| signerstateID | boolean | No | Signer state ID verified |
| businessFinancials | boolean | No | Business financials reviewed |
| personalFinancials | boolean | No | Personal financials reviewed |
| thirdMonthsBankStatements | boolean | No | Three months of bank statements received |
| thirdMonthsProcessingStatements | boolean | No | Three months of processing statements received |
| primarySupplierReference | boolean | No | Primary supplier reference obtained |
| executiveSummary | boolean | No | Executive summary reviewed |
| businessPlan | boolean | No | Business plan reviewed |
| processingStatementsReceivedMonths | string (enum) | No | Months of processing statements received: Zero, OneTwo, ThreeFour, FivePlus |
| bankStatementsReceivedMonths | string (enum) | No | Months of bank statements received: Zero, OneTwo, ThreeFour, FivePlus |
| financialsReceivedMonths | string (enum) | No | Months of financials received: Zero, OneTwo, ThreeFour, FivePlus |
| companysOfficialDetails | boolean | No | Company official details verified |
| billedDescriptor | boolean | No | Billing descriptor reviewed |
| customerServiceTelephoneNumber | boolean | No | Customer service phone number verified |
| termsAndConditions | boolean | No | Terms and conditions reviewed on website |
| clearPosting | boolean | No | Clear posting policy verified |
| listingOfProducts | boolean | No | Product listing reviewed |
| websitePayPage | boolean | No | Website pay page reviewed |
| domainRegisteredUnderCompany | boolean | No | Domain registered under company name |
| requireUsernamePassword | boolean | No | Site requires username/password for access |
| checkVisaMasterCardAndAll | boolean | No | Accepted card brands verified on site |
| checkLinksToOtherWebsites | boolean | No | Links to other websites checked |
| checkHowLongOfferRefunds | boolean | No | Refund policy duration verified |
| checkBillingInformation | boolean | No | Billing information verified |
| checkAlexaComRating | boolean | No | Alexa.com rating checked |
| checkNotInvolvedIllegalActivity | boolean | No | Confirmed not involved in illegal activity |
| complianceLegalRegulations | boolean | No | Compliance with legal regulations confirmed |
| complianceRegulationsCreditCardCompanies | boolean | No | Compliance with card brand regulations confirmed |
| nameAndLegalConsistently | boolean | No | Business name and legal name consistent |
| discloseProductLinesOrServices | boolean | No | Products/services clearly disclosed |
| disclosePricingModel | boolean | No | Pricing model disclosed |
| disclosePriceAndComponents | boolean | No | Price components disclosed |
| websiteSecurity | boolean | No | Website security measures verified |
| isCcardholderVerified | boolean | No | Cardholder verification in place |
| isCardCheckDigit | boolean | No | Card check digit validation active |
| isIdentificationCardholder | boolean | No | Cardholder identification process in place |
| isDescriptorListedOnPaypage | boolean | No | Descriptor listed on pay page |
| isOnlineCancellation | boolean | No | Online cancellation option available |
| isCancellationPolicy | boolean | No | Cancellation policy disclosed |
| isOnlineCancellationSubscriptionProcess | boolean | No | Subscription cancellation process available online |
| freeCheapInitialTrialsOffered | boolean | No | Free or discounted trial offers present |
| isProcessCardholderNotified | boolean | No | Cardholder notified before processing |
| isDetailedInformation | boolean | No | Detailed transaction information provided |
| isAutoRenewalMechanism | boolean | No | Auto-renewal mechanism disclosed |
| reserve | boolean | No | Reserve requirement applies |
| reserveType | string (enum) | No | Type of reserve: Upfront, Rolling, NA |
| reservePercentage | integer (int32) | No | Reserve percentage (e.g., 10 for 10%) |
| reservePeriod | string (enum) | No | Reserve period in months: One through Twelve |
| reserveTargetAmount | integer (int32) | No | Target reserve dollar amount |
RiskFlagsSetting fields
| Field | Type | Required | Description |
|---|---|---|---|
| largeTransaction | number (double) | No | Alert threshold for a single large transaction amount |
| averageTicket | number (double) | No | Expected average ticket amount |
| keyedPercentageTransactionByVolume | number (double) | No | Max acceptable keyed transaction percentage by volume |
| keyedPercentageTransactionByCount | number (double) | No | Max acceptable keyed transaction percentage by count |
| monthlyVolume | number (double) | No | Expected monthly processing volume |
| maxMonthlyVolume | number (double) | No | Maximum allowed monthly processing volume |
| chargebacksPercentageTransactionByVolume | number (double) | No | Max acceptable chargeback rate by volume |
| chargebacksPercentageTransactionByCount | number (double) | No | Max acceptable chargeback rate by count |
| enableForeignTransaction | boolean | No | Whether foreign transactions are permitted |
| enableOnHoldTransaction | boolean | No | Whether on-hold transactions trigger alerts |
| enableForcedTransaction | boolean | No | Whether forced transactions are permitted |
| enableStaleAuthorization | boolean | No | Whether stale authorization alerts are enabled |
| enableDeclinedTransaction | boolean | No | Whether declined transaction alerts are enabled |
{
"id": 48291,
"checklist": {
"underwritersApprovalNotes": "All required documentation received and verified. Merchant is a low-risk retail business with 3 years of clean processing history.",
"lowVolumeLowRisk": true,
"signedandCompleteMerchantApplication": true,
"preprintedCheckorBankReferenceLetter": true,
"matchInquiry": true,
"ofacQuery": true,
"creditReportforPrincipal": true,
"pcidssCompliant": true,
"thirdMonthsBankStatements": true,
"thirdMonthsProcessingStatements": true,
"bankStatementsReceivedMonths": "ThreeFour",
"processingStatementsReceivedMonths": "ThreeFour",
"reserve": false,
"reserveType": "NA"
},
"riskFlagsSetting": {
"largeTransaction": 5000.00,
"averageTicket": 85.00,
"monthlyVolume": 50000.00,
"maxMonthlyVolume": 75000.00,
"chargebacksPercentageTransactionByVolume": 1.0,
"chargebacksPercentageTransactionByCount": 1.0,
"enableForeignTransaction": false,
"enableDeclinedTransaction": true
}
}Response
200 OK
| Field | Type | Description |
|---|---|---|
| data.status | string (enum) | Resulting merchant status after approval submission |
| data.success | boolean | true if the approval was successfully initiated |
| status | string | HTTP status label |
| error | string | Error message if the request failed |
| warning | string | Non-fatal warning message, if any |
| validationResults | array | List of field-level validation errors |
| requestId | integer | Unique identifier for this API request |
Possible data.status values include: Approved, PreApproved, Declined, Pending, UnderReview, Underwriting, ConditionallyApproved, RequestChanges, and others.
{
"data": {
"status": "Underwriting",
"success": true
},
"status": "OK",
"error": null,
"warning": null,
"validationResults": [],
"requestId": 90512
}Error Codes
| Code | When it happens |
|---|---|
| 400 | id or checklist is missing, or underwritersApprovalNotes is empty |
| 401 | Invalid or missing Basic Auth credentials |
| 403 | User does not have permission for this operation |
| 404 | Merchant with the specified id not found |
| 500 | Internal server error |
Common Mistakes
- Omitting
underwritersApprovalNotesinside thechecklistobject — it is the only required field within the checklist and cannot be blank. - Setting
reserveTypewithout settingreserve: true— if a reserve applies, both fields should be populated consistently. - Using an invalid enum value for
reservePeriod(e.g., passing"4"instead of"For") — use the exact enum string values. - Not completing the merchant application data before calling this endpoint — the merchant record must be fully populated before approval can succeed.
Related Endpoints
GET /api/v1/merchant/status— check the current merchant statusGET /api/v1/merchant/underwritingNotes— retrieve existing underwriting notesPOST /api/v1/merchant/note— add notes to the merchant record before submitting for approval
Example
curl -X POST https://hq.staging.netevia.dev/api/v1/merchant/approve \
-H "Authorization: Basic $(echo -n 'username:password' | base64)" \
-H "Content-Type: application/json" \
-d '{
"id": 48291,
"checklist": {
"underwritersApprovalNotes": "All documentation verified. Low-risk retail merchant approved.",
"lowVolumeLowRisk": true,
"signedandCompleteMerchantApplication": true,
"matchInquiry": true,
"ofacQuery": true,
"reserve": false,
"reserveType": "NA"
},
"riskFlagsSetting": {
"monthlyVolume": 50000.00,
"maxMonthlyVolume": 75000.00,
"chargebacksPercentageTransactionByCount": 1.0
}
}'