{
  "openapi": "3.0.3",
  "info": {
    "title": "MerchantE Account Updater Service (AUS) API",
    "description": "# MerchantE Account Updater Service (AUS) API Specification\n\n**Version:** 3.0 (March 2024)\n**Document Date:** March 2024\n\n## Overview\n\nThe MerchantE (ME) Account Updater Service (AUS) helps merchants who do installment, recurring, or on-demand billing obtain updated credit card expiration dates and/or account numbers.\n\n### What Gets Updated\n- Expiration date changes\n- Card reissued with new account number\n- Account closed status\n\n### Card Association Programs\n- **VAU** - Visa Account Updater\n- **ABU** - MasterCard Automatic Billing Updater\n- **DAU** - Discover Network Account Updater\n\n### Transmission Methods\n1. API Method - Programmatic upload/download\n2. Web Interface - Manual upload through ME Web Reporting\n\n### Critical Timelines\n- Response File Availability: 4 calendar days from posting\n- Activity Table Retention: 30 calendar days\n- Typical Processing Time: Within 24 hours\n\n### Email Notifications\nAll emails from: accountupdater@merchante-solutions.com\n\n## Company Information\n- **Company:** Merchant eSolutions, Inc.\n- **Address:** 1150 Sanctuary Parkway, Suite 300, Alpharetta, GA 30009\n- **Copyright:** ©2024 Merchant eSolutions, Inc.\n- **Website:** www.merchante.com\n- **Support:** 888-288-2692 | help@merchante.com\n\n## Banking Relationships\nRegistered Agent of KeyBank, Cleveland, OH, and registered ISO/MSP of Synovus Bank, Columbus, GA and FFB, Fresno, CA.\n\n## File Format Requirements\n**CRITICAL:** All fields must be exact length, padded with trailing spaces.\n",
    "version": "100000",
    "contact": {
      "name": "MerchantE 24-hour Help Desk",
      "email": "help@merchante.com",
      "url": "https://www.merchante.com"
    },
    "x-support": {
      "phone": "888-288-2692",
      "hours": "24/7"
    }
  },
  "servers": [
    {
      "url": "https://test.merchante-solutions.com/srv/api",
      "description": "Test Server"
    }
  ],
  "tags": [
    {
      "name": "File Operations",
      "description": "API operations for uploading, checking status, and downloading AUS files"
    }
  ],
  "paths": {
    "/ausStatus": {
      "get": {
        "tags": [
          "File Operations"
        ],
        "summary": "Check File Status",
        "description": "Query status of request files and availability of response files.\n\nReturns indexed status sets (_0, _1, _2, etc.) for multiple files.\n\n**Status Types:**\n- PENDING - Request file received, response pending\n- FAILED - Request file generated errors while being processed\n- SUCCESS - Response file received\n\n**Filter Options:**\n- ALL - All available response files plus all pending request files (default)\n- RESPONSE - All available response files\n- NEW - All available response files that have not previously been downloaded\n- ERROR - Any request files that have an error status\n",
        "operationId": "getFileStatus",
        "x-parameterGroups": [
          {
            "name": "Required",
            "fields": [
              "userId",
              "userPass",
              "merchId"
            ]
          },
          {
            "name": "Others",
            "fields": [
              "statusFilter",
              "reqfId"
            ]
          }
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "required": true,
            "description": "User login name",
            "schema": {
              "type": "string",
              "maxLength": 75
            }
          },
          {
            "name": "userPass",
            "in": "query",
            "required": true,
            "description": "User login password",
            "schema": {
              "type": "string",
              "maxLength": 32,
              "format": "password"
            }
          },
          {
            "name": "merchId",
            "in": "query",
            "required": true,
            "description": "ME merchant number, must be linked to userId in AUS system",
            "schema": {
              "type": "string",
              "maxLength": 32
            }
          },
          {
            "name": "statusFilter",
            "in": "query",
            "required": false,
            "description": "Optional filter for returned statuses",
            "schema": {
              "type": "string",
              "maxLength": 16,
              "enum": [
                "ALL",
                "RESPONSE",
                "NEW",
                "ERROR"
              ],
              "default": "ALL"
            }
          },
          {
            "name": "reqfId",
            "in": "query",
            "required": false,
            "description": "Optional. Returns all response files associated with the indicated request file",
            "schema": {
              "type": "string",
              "maxLength": 12,
              "pattern": "^\\d{1,12}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status inquiry response in URL-encoded format.\n\nContains indexed parameter sets (_0, _1, etc.) when multiple files returned.\n",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                },
                "examples": {
                  "singleSuccess": {
                    "summary": "Single file with response available",
                    "value": "rspCode=0&rspMessage=OK&statusCount=1&reqfId_0=123456&reqfName_0=test_file.txt&status_0=SUCCESS&rspfId_0=987654&dlCount_0=0"
                  },
                  "multipleFiles": {
                    "summary": "Multiple files in response",
                    "value": "rspCode=0&rspMessage=OK&statusCount=2&reqfId_0=123456&reqfName_0=file1.txt&status_0=SUCCESS&rspfId_0=987654&dlCount_0=1&reqfId_1=123457&reqfName_1=file2.txt&status_1=PENDING"
                  },
                  "pending": {
                    "summary": "File still pending",
                    "value": "rspCode=0&rspMessage=OK&statusCount=1&reqfId_0=123456&reqfName_0=test_file.txt&status_0=PENDING"
                  },
                  "failed": {
                    "summary": "File processing failed",
                    "value": "rspCode=0&rspMessage=OK&statusCount=1&reqfId_0=123456&reqfName_0=test_file.txt&status_0=FAILED"
                  },
                  "statusFilterError": {
                    "summary": "Invalid status filter (code 101)",
                    "value": "rspCode=101&rspMessage=AUS+status+error%2C+the+statusFilter+value+sent+was+invalid"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "UploadRequest": {
        "type": "object",
        "description": "Request parameters for uploading an AUS request file.\n\nPer PDF Page 10 - Upload file request parameters.\n",
        "required": [
          "userId",
          "userPass",
          "merchId",
          "file"
        ],
        "x-parameterGroups": [
          {
            "name": "Required",
            "fields": [
              "userId",
              "userPass",
              "merchId",
              "file"
            ]
          },
          {
            "name": "Recommended",
            "fields": []
          },
          {
            "name": "Others",
            "fields": []
          }
        ],
        "properties": {
          "userId": {
            "type": "string",
            "description": "User login name",
            "maxLength": 75,
            "example": "ausmerchant"
          },
          "userPass": {
            "type": "string",
            "description": "User login password",
            "maxLength": 32,
            "format": "password",
            "example": "SecureP@ss123"
          },
          "merchId": {
            "type": "string",
            "description": "ME merchant number, must be linked to userId in AUS system",
            "maxLength": 32,
            "example": "941000057778"
          },
          "file": {
            "type": "string",
            "format": "binary",
            "description": "AUS request file containing Header (H1) + Detail Records (D1/D2) + Trailer (T1).\n\nAll fields must be exact length, padded with trailing spaces.\n"
          }
        }
      },
      "UploadResponse": {
        "type": "object",
        "description": "Upload response parameters (URL-encoded in text/plain body).\n\nPer PDF Page 10 - Upload file response parameters.\n\nNote: reqfId only present on success (rspCode=0).\n",
        "x-parameterGroups": [
          {
            "name": "Common",
            "fields": [
              "rspCode",
              "rspMessage"
            ]
          },
          {
            "name": "When Provided",
            "fields": [
              "reqfId"
            ]
          }
        ],
        "properties": {
          "rspCode": {
            "type": "string",
            "description": "Response code, 0 = OK, see error table",
            "maxLength": 4,
            "example": "0"
          },
          "rspMessage": {
            "type": "string",
            "description": "Response message",
            "maxLength": 200,
            "example": "Upload successful"
          },
          "reqfId": {
            "type": "string",
            "description": "AUS system generated request file ID (only on success)",
            "maxLength": 12,
            "pattern": "^\\d{1,12}$",
            "example": "123456789012"
          }
        }
      },
      "StatusResponse": {
        "type": "object",
        "description": "Status inquiry response parameters (URL-encoded in text/plain body).\n\nPer PDF Pages 11-12 - Status inquiry response parameters.\n\nContains indexed parameter sets (_0, _1, etc.) for multiple files.\nThe 'n' suffix indicates the index starting from 0.\n",
        "x-parameterGroups": [
          {
            "name": "Common",
            "fields": [
              "rspCode",
              "rspMessage",
              "statusCount"
            ]
          },
          {
            "name": "When Provided",
            "fields": [
              "reqfId_n",
              "reqfName_n",
              "status_n",
              "rspfId_n",
              "dlCount_n"
            ]
          }
        ],
        "properties": {
          "rspCode": {
            "type": "string",
            "description": "Response code, 0 = OK",
            "maxLength": 4
          },
          "rspMessage": {
            "type": "string",
            "description": "Response message",
            "maxLength": 200
          },
          "statusCount": {
            "type": "string",
            "description": "Number of status parameter sets in this response",
            "maxLength": 4
          },
          "reqfId_n": {
            "type": "string",
            "description": "AUS system generated request file ID (indexed)",
            "maxLength": 12
          },
          "reqfName_n": {
            "type": "string",
            "description": "Request file name (indexed)",
            "maxLength": 64
          },
          "status_n": {
            "type": "string",
            "description": "File status (indexed) - PENDING, FAILED, or SUCCESS",
            "maxLength": 16,
            "enum": [
              "PENDING",
              "FAILED",
              "SUCCESS"
            ]
          },
          "rspfId_n": {
            "type": "string",
            "description": "Response file ID (indexed) - only present if response available",
            "maxLength": 12
          },
          "dlCount_n": {
            "type": "string",
            "description": "Download count (indexed) - only present if response available. 0 indicates new file.",
            "maxLength": 4
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "description": "Error response for download failures (URL-encoded in text/plain body).\n\nPer PDF Page 12 - Download error response.\n",
        "required": [
          "rspCode",
          "rspMessage"
        ],
        "x-parameterGroups": [
          {
            "name": "Common",
            "fields": [
              "rspCode",
              "rspMessage"
            ]
          }
        ],
        "properties": {
          "rspCode": {
            "type": "string",
            "description": "Response code (see error table)",
            "maxLength": 4
          },
          "rspMessage": {
            "type": "string",
            "description": "Response message",
            "maxLength": 200
          }
        }
      },
      "AUSResponseFile": {
        "type": "string",
        "description": "Fixed-width AUS response file containing:\n- Header Record (H1): 40 characters\n- Detail Records (D1/D2): 124 characters each\n- Trailer Record (T1): 8 characters\n\nLine endings separate records.\n"
      },
      "TestCardData": {
        "type": "object",
        "description": "## Complete Test Card Table for Certification\n\n**Test Mode:** No data sent to associations. Only specific test values produce responses.\n\n**Card Store Testing:** Create new Card ID for each test returning new card number.\n\n| Card Type | Card Number | Source | Response | New Card | New Exp |\n|-----------|-------------|--------|----------|----------|---------|\n| VISA | 4805000000000009 | VAU | CLOSED | - | No |\n| (same) | (same) | ABU | NEWACCT | 5133272000000046 | Yes |\n| VISA | 4805000000000017 | VAU | NEWACCT | 4805000000000058 | Yes |\n| VISA | 4805000000000033 | VAU | NEWEXP | 4805000000000033 | Yes |\n| VISA | 4805000000000041 | VAU | CLOSED | - | No |\n| MC | 5133272000000053 | ABU | CLOSED | - | No |\n| (same) | (same) | VAU | NEWACCT | 4805000000000058 | Yes |\n| MC | 5133272000000004 | ABU | NEWACCT | 5133272000000012 | Yes |\n| MC | 5133272000000020 | ABU | NEWEXP | 5133272000000020 | Yes |\n| MC | 5133272000000038 | ABU | CLOSED | - | No |\n| DISC | 6011000000000004 | DAU | NEWACCT | 6011000000000012 | Yes |\n| DISC | 6011000000000020 | DAU | CLOSED | - | No |\n| DISC | 6011000000000038 | DAU | NEWEXP | 6011000000000038 | Yes |\n| DISC | 6011000000000046 | DAU | CALL | - | No |\n| DISC | 6011000000000053 | DAU | OVERRIDE | 6011000000000061 | Yes |\n\n**Dual Response Cards (Card Type Switch):**\n- 4805000000000009: VAU CLOSED + ABU NEWACCT (Visa→MC)\n- 5133272000000053: ABU CLOSED + VAU NEWACCT (MC→Visa)\n\n**Testing Notes:**\n- Exp dates can be any valid YYMM in test mode\n- Response exp dates generated dynamically\n- Card Store ID returns truncated: 480500xxxxxx0058\n- Multiple tests need new Card ID each time\n"
      }
    }
  },
  "x-file-formats": {
    "request-file-header": {
      "description": "## Header Record (H1) - Request File\n\nTotal: 40 characters + line ending\n\n| Pos | Field | Len | Format | Value |\n|-----|-------|-----|--------|-------|\n| 1-2 | Record Type | 2 | AN | \"H1\" |\n| 3-8 | Version ID | 6 | AN | \"100000\" |\n| 9-40 | Merchant ID | 32 | AN | ME Merchant # (pad spaces) |\n\nExample: `H1100000941000057778                    `\n"
    },
    "request-file-detail-d1": {
      "description": "## Detail Record (D1) - Full Card Numbers\n\nTotal: 74 characters + line ending\n\n| Pos | Field | Len | Format | Description |\n|-----|-------|-----|--------|-------------|\n| 1-2 | Record Type | 2 | AN | \"D1\" |\n| 3-6 | Account Type | 4 | AN | \"VISA\", \"MC  \", \"DISC\" |\n| 7-38 | Account Number | 32 | AN | Card number (pad) |\n| 39-42 | Expiration | 4 | N | YYMM |\n| 43-74 | Discretionary | 32 | AN | Optional (pad) |\n\nExample: `D1VISA4111111111111111                  1101                                `\n"
    },
    "request-file-detail-d2": {
      "description": "## Detail Record (D2) - Card Store ID\n\nTotal: 74 characters + line ending\n\nSame as D1 but:\n- Record Type: \"D2\"\n- Account Number: Card Store ID (exactly 32 chars, no padding needed)\n- Expiration: YYMM or spaces (ME retrieves from stored card data)\n\nExample: `D2VISA258316d09edc34c7b49c11324f37e7ef1101                                `\n"
    },
    "request-file-trailer": {
      "description": "## Trailer Record (T1)\n\nTotal: 8 characters + line ending\n\n| Pos | Field | Len | Format | Description |\n|-----|-------|-----|--------|-------------|\n| 1-2 | Record Type | 2 | AN | \"T1\" |\n| 3-8 | Record Count | 6 | N | Detail count (zero-pad) |\n\nExample: `T1000004`\n"
    },
    "response-file-header": {
      "description": "## Header Record (H1) - Response File\n\nTotal: 40 characters + line ending\n\n| Pos | Field | Len | Format | Value |\n|-----|-------|-----|--------|-------|\n| 1-2 | Record Type | 2 | AN | \"H1\" |\n| 3-8 | Version ID | 6 | AN | \"100000\" |\n| 9-40 | Merchant ID | 32 | AN | ME Merchant # (pad spaces) |\n"
    },
    "response-file-detail-d1": {
      "description": "## Response Detail (D1) - Full Card Numbers\n\nTotal: 124 characters + line ending\n\n| Pos | Field | Len | Format | Description |\n|-----|-------|-----|--------|-------------|\n| 1-2 | Record Type | 2 | AN | \"D1\" |\n| 3-6 | Old Account Type | 4 | AN | Original card type (VISA/MC/DISC) |\n| 7-38 | Old Account Number | 32 | AN | Original card # |\n| 39-42 | Old Expiration Date | 4 | N | Original YYMM |\n| 43-46 | New Account Type | 4 | AN | New type or spaces |\n| 47-78 | New Account Number | 32 | AN | New # or spaces |\n| 79-82 | New Expiration Date | 4 | N | New YYMM or spaces |\n| 83-90 | Response Code | 8 | AN | Update status (see response codes) |\n| 91-92 | Response Source | 2 | AN | 01=MES, 02=VAU, 03=ABU, 04=DAU |\n| 93-124 | Discretionary Data | 32 | AN | From request (echoed back) |\n\n**Field Length Calculation:** 2+4+32+4+4+32+4+8+2+32 = 124 characters\n"
    },
    "response-file-detail-d2": {
      "description": "## Response Detail (D2) - Card Store ID\n\nTotal: 124 characters + line ending\n\nSame structure as D1 but:\n- Record Type: \"D2\"\n- Old Account Number: Card Store ID (32 chars)\n- New Account Number: TRUNCATED card# (first6+xxxxxx+last4) or spaces\n\nExample truncated format: `411111xxxxxx1111                `\n\n**Note:** Full card data is automatically updated in token storage.\n"
    },
    "response-file-trailer": {
      "description": "## Trailer Record (T1) - Response File\n\nTotal: 8 characters + line ending\n\n| Pos | Field | Len | Format | Description |\n|-----|-------|-----|--------|-------------|\n| 1-2 | Record Type | 2 | AN | \"T1\" |\n| 3-8 | Record Count | 6 | N | Detail count (zero-pad) |\n"
    }
  },
  "x-response-codes": {
    "update-codes": {
      "description": "## Update Codes (Changes Made)\n\n| Code | Description |\n|------|-------------|\n| NEWACCT | Account number update - new card number issued |\n| NEWEXP | Expiration date update - new expiration date |\n| OVERRIDE | Correction to a previous response |\n"
    },
    "no-update-codes": {
      "description": "## No Update Codes\n\n| Code | Description |\n|------|-------------|\n| GOOD | Match found, no change needed |\n| CLOSED | Account closed, no new number assigned |\n| CALL | Contact customer advisory |\n"
    },
    "error-codes": {
      "description": "## Error/Non-Match Codes\n\n| Code | Description |\n|------|-------------|\n| NPBIN | Non-participating BIN |\n| NOMATCH | Participating BIN, no match found |\n| ACCTERR | Non-V/MC account number, Bad account number, or Bad check digit |\n| EXPERR | Bad expiration date |\n| MERCHERR | Unregistered merchant |\n"
    },
    "source-codes": {
      "description": "## Response Sources\n\n| Code | Source | Description |\n|------|--------|-------------|\n| 01 | MES | MerchantE System |\n| 02 | VAU | Visa Account Updater |\n| 03 | ABU | MasterCard Automatic Billing Updater |\n| 04 | DAU | Discover Network Account Updater |\n"
    }
  },
  "x-api-error-codes": {
    "description": "## API Error Codes\n\nPer PDF Pages 12-13.\n\n| Code | Description |\n|------|-------------|\n| 0 | OK, operation successful |\n| 1 | System error, contact ME |\n| 2 | Authentication error, userId or userPass incorrect |\n| 3 | Upload error, upload data is not accepted by the requested operation, upload file data was missing or failed to be delivered or the upload filename was missing |\n| 4 | Invalid parameter xxx, the parameter indicated is invalid for the operation requested |\n| 5 | Missing parameter, a required parameter was missing from the request |\n| 100 | AUS merchant ID error, the supplied merchant ID was not valid in the AUS system |\n| 101 | AUS status error, the statusFilter value sent was invalid |\n| 102 | AUS response file ID invalid |\n"
  },
  "x-webhooks": {
    "responseFileAvailable": {
      "post": {
        "summary": "Response File Available Notification",
        "description": "Email notification sent when response file is posted.\n\n**From:** accountupdater@merchante-solutions.com\n**Subject:** ME Account Updater Response File Available\n\n**CRITICAL:** Response files available for 4 calendar days only. Retrieve immediately.\n\nDO NOT REPLY - Automated message.\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "fileId": {
                    "type": "string",
                    "example": "911169"
                  },
                  "fileName": {
                    "type": "string",
                    "example": "rsp-911146-1.txt"
                  },
                  "responseDate": {
                    "type": "string",
                    "format": "date-time"
                  }
                }
              }
            }
          }
        }
      }
    },
    "requestFileError": {
      "post": {
        "summary": "Request File Error Notification",
        "description": "Email notification sent when request file processing fails.\n\n**From:** accountupdater@merchante-solutions.com\n**Subject:** ME Account Updater Request File Error\n\nProcessing halted due to errors. Review error details and resubmit corrected file.\n\nDO NOT REPLY - Automated message.\n",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "fileId": {
                    "type": "string"
                  },
                  "fileName": {
                    "type": "string"
                  },
                  "uploadDate": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "errors": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of errors encountered (Line.Pos format)"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "x-certification": {
    "description": "## Certification Process (4 Steps)\n\nMerchants must be certified to use AUS with ME.\n\n### Step 1: Receive Documentation\n- ME Account Updater API Specifications\n- ME AUS Test Script with test account numbers\n- Required enrollment forms and agreements\n\n### Step 2: Integration Launch Meeting\n- Answer questions regarding file format and API process\n- Verify association enrollment paperwork complete\n- Discuss outstanding timeframes\n- Confirm and test email alert address\n- Determine single vs. multiple Merchant IDs\n- Schedule testing date\n\n### Step 3: Conduct Certification Testing\n- Submit file to certification simulator\n- Review results file\n- Test transactions NOT sent to card associations\n- Upon success, account removed from Test mode\n\n### Step 4: Submit First Production File\n- Submit first production file\n- Validate results\n- Confirm no enrollment errors from associations\n"
  },
  "x-card-store": {
    "description": "## Card Store Integration\n\nMerchants using ME Payment Gateway Store Card tokenization can send Card Store ID instead of full card numbers.\n\n**Benefits:**\n- No card number transmission (send tokens only)\n- Automatic token updates\n- Enhanced security\n- Simplified PCI compliance\n\n**Workflow:**\n1. Store card via gateway API → receive Card Store ID (32 chars)\n2. Use D2 record type with Card Store ID in AUS request\n3. ME automatically retrieves card data for update check\n4. Associations check for updates\n5. Token automatically updated with new card data\n6. Continue using same Card Store ID (now represents updated card)\n\n**Response Format:**\n- New card numbers returned truncated: first6+xxxxxx+last4\n- Example: 480500xxxxxx0058\n- Full data automatically updated in token storage\n\n**Testing Note:**\nMultiple tests with values returning new card# need new Card ID created each time.\n"
  },
  "x-web-interface": {
    "description": "## Web-Based Upload/Retrieval\n\n**Access:** ME Web Reporting site → Account Updater Service\n\n### Upload Process:\n1. Log in to ME Web Reporting\n2. Click \"Account Updater Service\"\n3. Click \"Upload Request File\"\n4. Select merchant account from dropdown\n5. Browse to file location\n6. Click Submit\n7. View confirmation (ID, Date, User, Merchant #, File)\n\n**Note:** Confirmation only shows successful upload. File validation occurs during processing.\n\n### View Response Files:\n1. Click \"View Response Files\"\n2. Select AUS User and Merchant Account\n3. Review AUS Activity table\n4. Click Response File link to download\n\n### AUS Activity Table Fields:\n| Field | Description |\n|-------|-------------|\n| Number | Row number assigned by ME |\n| ID | File ID assigned by ME |\n| Request Date | Date and time of upload |\n| User | User who uploaded |\n| Merchant # | Associated merchant number |\n| Request File | Name of request file |\n| Status | Pending, Successful, or Failed |\n| Response Date | Date response available |\n| Response File | Clickable download link |\n\n### File Retention:\n- Response files: 4 calendar days (clickable link active)\n- Activity table: 30 calendar days total\n- After 4 days: link inactive, file cannot be recovered\n\n### Multiple Response Files:\nIf Visa and MasterCard responses arrive separately, multiple response files created.\nDenoted by suffix: -1, -2 (e.g., rsp-911146-1.txt, rsp-911146-2.txt)\n"
  },
  "x-summary-report": {
    "description": "## Account Updater Summary Report\n\nView activity summary for user-defined date range.\n\n**Statistics:**\n- Total requests / Total matches\n- Visa requests / matches / percentage\n- MasterCard requests / matches / percentage\n- Discover requests / matches / percentage\n\n**Detail Breakdown (Total Matches link):**\n\n| Source | Match Codes | Non-Match Codes |\n|--------|-------------|-----------------|\n| Visa | CALL, CLOSED, NEWACCT, NEWEXP | GOOD, NOMATCH, NPBIN |\n| MasterCard | CLOSED, NEWACCT, NEWEXP | (none returned) |\n| Discover | CALL, CLOSED, NEWACCT, NEWEXP, OVERRIDE | (varies) |\n\n**Note:** Visa returns both match and non-match responses. MasterCard only returns match responses.\n"
  },
  "x-examples": {
    "request-file-full-card": {
      "summary": "Request file with full card numbers (D1 records)",
      "value": "H1100000941000057778\nD1VISA4111111111111111                  1101\nD1MC  5222222222222222                  0901\nT1000002\n"
    },
    "request-file-card-store": {
      "summary": "Request file with Card Store IDs (D2 records)",
      "value": "H1100000941000057778\nD2VISA258316d09edc34c7b49c11324f37e7ef1101\nD2MC  57be5179ecbe3902b0db21b32ae3a8200901\nT1000002\n"
    },
    "response-file-full-card": {
      "summary": "Response file with full card numbers",
      "value": "H1100000941000057778\nD1VISA4111111111111111                  1101VISA4111111111111111                  1207NEWEXP  02\nD1MC  5222222222222222                  0901                                          CLOSED  03\nT1000002\n"
    },
    "response-file-card-store": {
      "summary": "Response file with Card Store IDs (truncated new numbers)",
      "value": "H1100000941000057778\nD2VISA258316d09edc34c7b49c11324f37e7ef1101VISA411111xxxxxx1111                  1207NEWEXP  02\nD2MC  57be5179ecbe3902b0db21b32ae3a8200901                                          CLOSED  03\nT1000002\n"
    }
  },
  "x-document-info": {
    "original-document": "ME_Account_Updater_API_Spec_March2024.pdf",
    "publication-date": "March 2024",
    "version": "3.0",
    "conversion-notes": "**Issues identified and corrected in this conversion:**\n\n1. **CRITICAL - Duplicate userPass property (Lines 92-100 in original):** The original YAML\n   had userPass defined twice in the upload request schema. This is invalid YAML/OpenAPI.\n   Fixed by removing the duplicate definition.\n\n2. **Missing reqfName_n in status example:** The status inquiry response example was\n   missing the reqfName_n parameter that is documented in the PDF (Page 11).\n   Added to examples.\n\n3. **Response detail record character count:** Original stated \"126 characters\" but\n   correct calculation per PDF Page 7-8 is 124 characters\n   (2+4+32+4+4+32+4+8+2+32=124). Corrected.\n\n4. **Missing maxLength for statusFilter:** PDF specifies 16 character max length.\n   Added maxLength: 16 to the parameter schema.\n\n5. **Missing response schemas:** Added proper schemas (UploadResponse, StatusResponse,\n   ErrorResponse) to document the URL-encoded response parameters per PDF.\n\n6. **Download response ambiguity:** Clarified that download returns either file data\n   (with Content-Disposition header) OR error response, and client must detect which.\n\n**Note on PDF Page 12:** The source PDF has a heading \"Upload file response parameters\"\nin the Download section, which appears to be a documentation error in the original.\nThe table content is correct for download error responses.\n",
    "version-history": [
      {
        "date": "April 2023",
        "changes": "Switched to Monthly Review"
      },
      {
        "date": "May 2022",
        "version": "3.0",
        "changes": "Company information: Updated statements to include KeyBank.\nBranding: Applied current ME-branded template.\n"
      },
      {
        "date": "December 2019",
        "version": "2.0",
        "changes": "Rebranded"
      },
      {
        "date": "March 2015",
        "version": "1.6",
        "changes": "Added Discover to Introduction and chart.\nTesting Section: Added DISC card type.\nAdded response code and Discover report fields.\n"
      }
    ]
  }
}