Merchant Ingestion API

Abstract

This document specifies the Merchant Schema for ingesting merchant data into CDLX systems to enable processing and tracking of merchant information. Merchant data is provided daily in JSON format, including all active, new, updated, unchanged, and deleted merchants as categorized by status.

The schema defines a file header with metadata and a detailed structure for each merchant record, covering identification, categorization, payment channels, contact details, store locations, and payment processing information. The schema supports hierarchical merchant relationships, multiple store locations per merchant, and extensive attributes for store payment processing and contact information.

The goal is to standardize the ingestion of comprehensive merchant data for downstream processing within CDLX systems.

Merchant Schema

Purpose: To ingest merchant data into CDLX systems for processing and tracking.

File Name: <Partner_Name>MerchantsCCYYMMDD

File Type: JSON

File Frequency: Once a day (if there are new/updated/deleted merchants)

File Features

  • Includes all active merchants categorized as NEW, UPDATED, NO-CHANGE.
  • Deleted merchants appear under the status DELETED.
  • Updated records may contain multiple attribute changes.

Header

Field NameData TypeNote
fileDescriptionString
fileCreationDateStringYYYY-MM-DD
merchantRecordCountNumericThe number of merchant records included in the file

MerchantRecord

Field NameData TypeRequiredNote
merchantStatusStringYes for SFTP, No for RESTNEW/DELETED/UPDATED/UPSERT/NO-CHANGE
merchantIdStringYesPartner provided merchant identifier
merchantNameStringYesRegistered name of the merchant or brand
parentMerchantIdStringNoAny Parent of this merchant
merchantCategoryCodeStringNoISO 18245 4-digit MCC code
merchantSubCategories [*].categoryTypeStringNoExample: Cuisine
merchantSubCategories [*].categoryItemsArray of StringNoExample: ["Continental", "American"] No special characters
paymentChannelsString []YesIndicates if this merchant ID accepts payments online or instore
paymentSubChannelsString []NoIndicates the payment sub-channel of the merchant (Example "PayAtPump", "Convenience"). PayAtPump - For gas station offers, indicates that the purchase can/must be made at the fuel pump. Convenience - Valid for purchases within or at the physical convenience store location.
merchantUrlStringNoMerchant Website URL
merchantAppsString []NoList of Online Apps used by Merchant
stores [*].storeIdStringYesThe external partner provided store identifier
stores [*].storeNameStringYesName of the store
stores [*].locatedInStringNoBusiness or venue the merchant is inside example: “SFO Airport Terminal 2” or “Pen Station” or “Walmart” or “Target” or “Westfield Mall”
stores [*].address1StringYesStreet Address
stores [*].address2StringNoStreet Address
stores [*].cityStringYes
stores [*].stateStringYes
stores [*].postalCodeStringYes
stores [*].countryCodeStringYes2 Character country code - ISO 3166-1 alpha-2
stores [*].latitudeStringNoThe latitude coordinates of the merchant store location Example: "37.7661"
stores [*].longitudeStringNoThe longitude coordinates of the merchant store location Example: "-122.3958"
stores [*].storePhoneNumbersString []NoList of phone number of the store
stores [*].storeEmailsString []NoList of business email of the store
stores [*].storeUrlStringNoStore Website URL
stores [*].processorMidChangedFlagStringYesY=Yes, N=No
stores [*].processorMidRecordsJSON ArrayYes
stores [*].processorMidRecords [*].paymentNetworkStringYes“Visa”, “MasterCard”, “AmericanExpress”, “Discover”
stores [*].processorMidRecords [*].processorsJSON ArrayYes
stores [*].processorMidRecords [*].processors [*].processorNameStringYesName of the processor Clover, Square, Worldpay, Fiservm Elavon, First Data etc. When not available use “UNKNOWN”
stores [*].processorMidRecords [*].processors [*].processorIdStringNoAny Id assigned to the Processor

What’s Next