Overview - Step 3 of 4 Upload Steps
More Than Rewards logs every single "line item" for the overall transaction / invoices, which means every sale transaction line item will need to be logged as a individual transaction. So if someone is purchasing 5 parts on one invoice then you'll need to make 5 distinct API calls to log each line item of that invoice via this API. As as reminder this API is for parts, clothing, accessories that are sold outside of bike and service sales. All service work orders or vehicle deals which includes parts are done via the logservicesale api and logvehiclesale api.
Do Not Post "Vehicle Deal" part data or "Service Work Order" part data to this API .
This is API is to "Log Part Sales, Clothing, Accessories" but NOT for Bike Deals and Not For Service Work.
Understanding - Invoices vs Work Orders vs Vehicle Sales
Invoices are reserved for clothing, accessories, part sales sold outside of the service or vehicle sales department, while work orders will contain labor and parts designed for sales within the service department, while vehicle sales are reserved for major units, accessories, parts, clothing, labor that is all sold at the time of the vehicle sale. Invoices are completed via the LogPartSale, Work Orders re completed via LogServiceSale and VehicleSales are completed via the LogVehicleSales
Very Important - Do Send Over Special Orders Unless Paid In Full
DO NOT submit any item that is sold as a "Special Order" unless the item is 100% paid for and picked up at the time of cashiering the invoice. If you post items that are special order but not yet picked up then the customer will earn reward every time they make a payment on the special order. You should ONLY post a special order item with the invoice if the special order item was actually picked up. If you do not follow these instructions the customer will receive rewards multiple times please be very careful not to do this, as it will cause problems with the dealership because it will cause them to award customers more points then they should and they will be contacting you as to why you're doing this.
Very Important - Understanding Returns vs Sales
Return transactions should be submitted via NEGATIVE value while sale are submitted via positive cash values.
Very Important - Understanding Returns vs Sales - Returns Need Post as NEGATIVE
This is how we determine if an item is ON SALE OR NOT, if the "total sold to" price is less than than the "total retail price" then this line item transaction will be flagged as "on sale". If you do not post the correct values here for both fields it could result in the customer earning rewards on items they do not wish to earn rewards on as many customers choose not to reward on sale items. In most cases if the item is not on sale or discounted then these two values will be exactly the same.
Understanding - "Empty Allowed"
If this is YES it means that this is a "required field" can be empty if no data is available, while it still needs to be mapped it's possible that there are situations which prevent you from including data. For example if a cashier does not ask for the customers phone number, you are not able to pass this field even tho it is required it will not error if it's empty. However it must be included if it's available otherwise it will cause problems with the customer.
For example your system has the mobile number yet you choose not to include it in the request then and the customer has configured the reward system to send mobile alerts then the functionality the customer is expecting will not work. When they call our support department for help with this we will be forced to explain to them that the reason our system does not sending text notifications is because your not passing us the correct information. Therefore it's critical that you post all the data that you have available so all special reward configurations that each customer setup will work as expected.
The intention behind "Empty Allowed" is just to let you know that the API will NOT error if the field is blank even tho it is required.
Post Url
https://api.riderrewards.com/logvehiclesale
- SSL is required
Headers
Name | Required | Empty Allowed | Notes |
transactionid | Yes | No | This is the unique identifier for a transaction, generated by the BeginTransaction API endpoint. Links all the uploaded data together for a given feed. |
PartnerAPIKey | Yes | No | API Key for approved partners, to be provided by More Than Rewards. To become an approved partner call More Than Rewards at 414-326-4100. |
RRStoreAPIKey | Yes | No | Store's API key within the Rider Rewards system. Retrieved via the GetMyDealerList API endpoint. |
RRStoreID | Yes | No | Unique store identifier within the Rider Rewards system. Retrieved via the GetMyDealerList API endpoint. |
* An error will not result if Max Length is exceeded. Data will be trimmed to this length.
+ These are set in the header WITHOUT base64, just regular header values.
Expected JSON Body To POST
{ "transactionsummary": { "transactionid": "asdfas234234234h323guid1232", "partnertransactionid": "12154", "partnerstoreid": "12154", "RRStoreID": "12", "feedtype": "V", "startdate": "05/01/2018", "enddate": "05/15/2018", "totalrowssent": "1000" }, "rows": [ { "DealNumber": "154", "BasePrice": "154", "AdditionalItems": "154", "SetupFee": "154", "TradeAndDeducets": "154", "FinalPrice": "154", "BikeYear": "154", "BikeModel": "154", "FinalizeDate": "154", "NewUsed": "154", "TotalCost": "154", "BikeColor": "154", "BikeClass": "154", "TradeValue": "154", "LastUpdated": "154", "Cost": "154", "Make": "154", "SalesPersonName": "154", "VIN": "154", "SalesPersonInitials": "154", "Odometer": "154", "CustomerRewardNumber": "AA1234", "CustomerFirstName": "John", "CustomerLastName": "Doe", "CustomerAddress": "1177 W Northbranch Dr", "CustomerCity": "Oak Creek", "CustomerStateProvince": "WI", "CustomerZipOrPostalCode": "53154", "CustomerCountry": "USA", "CustomerBirthMonth": "1", "CustomerBirthDay": "1", "CustomerBirthYear": "1955", "CustomerPrimaryPhoneType": "4143264100", "CustomerMobilePhone": "4143264100", "CustomerHomePhone": "4143264100", "CustomerWorkPhone": "4143264100", "CustomerClass": "1", "CustomerClubName": "VIP", "CustomerGender": "M", "CustomerEmail": "support@morethanrewards.com", "CustomerNationalHOGNumber": "21sd21asd", "CustomerNationalHOGExpireMonth": "1", "CustomerNationalHOGExpireDate": "2", "CustomerNationalHOGExpireYear": "2018", "CustomerIsLocalHOGChapterMember": "Y" }, { "DealNumber": "154", "BasePrice": "154", "AdditionalItems": "154", "SetupFee": "154", "TradeAndDeducets": "154", "FinalPrice": "154", "BikeYear": "154", "BikeModel": "154", "FinalizeDate": "154", "NewUsed": "154", "TotalCost": "154", "BikeColor": "154", "BikeClass": "154", "TradeValue": "154", "LastUpdated": "154", "Cost": "154", "Make": "154", "SalesPersonName": "154", "VIN": "154", "SalesPersonInitials": "154", "Odometer": "154", "CustomerRewardNumber": "AA1234", "CustomerFirstName": "John", "CustomerLastName": "Doe", "CustomerAddress": "1177 W Northbranch Dr", "CustomerCity": "Oak Creek", "CustomerStateProvince": "WI", "CustomerZipOrPostalCode": "53154", "CustomerCountry": "USA", "CustomerBirthMonth": "1", "CustomerBirthDay": "1", "CustomerBirthYear": "1955", "CustomerPrimaryPhoneType": "4143264100", "CustomerMobilePhone": "4143264100", "CustomerHomePhone": "4143264100", "CustomerWorkPhone": "4143264100", "CustomerClass": "1", "CustomerClubName": "VIP", "CustomerGender": "M", "CustomerEmail": "support@morethanrewards.com", "CustomerNationalHOGNumber": "21sd21asd", "CustomerNationalHOGExpireMonth": "1", "CustomerNationalHOGExpireDate": "2", "CustomerNationalHOGExpireYear": "2018", "CustomerIsLocalHOGChapterMember": "Y" } ] }
Body Description
Field | Max Length* | Required | Empty Allowed | Notes |
transactionsummary | Object containing the fields described below. | |||
transactionid | 50 | Yes | No | This is the unique identifier for a transaction, generated by the BeginTransaction API endpoint. Links all the uploaded data together for a given feed. |
partnertransactionid | 50 | Yes | No | A field designed for Partner's to pass their own reference / key to identify a transaction within the Rider Rewards System. Could be used in future API's for look ups. |
partnerstoreid | 50 | Yes | No | A field designed for Partner's to pass their own reference / key to identify a store within the Rider Rewards System. Could be used in future API's for look ups. |
RRStoreID | 50 | Yes | No | Unique store identifier within the Rider Rewards system. Retrieved via the GetMyDealerList API endpoint. |
feedtype | 50 | Yes | No | V = Vehicle / Bike Sale |
startdate | 50 | Yes | No | Start date received from the Ready Feed Upload |
enddate | 50 | Yes | No | End date received from the Ready Feed Upload |
totalrowssent | 50 | Yes | No | Number of objects in the 'rows' array. The amount of records being sent in the given API request. |
rows | Array containing any number of objects with the fields described below | |||
DealNumber | 12 | Yes | No | Unique identifier for a vehicle sale |
BasePrice | Yes | Yes | Price of the vehicle before any addons or additional items | |
AdditionalItems | Yes | Yes | Items added onto the purchase of the vehicle. Such as accessories installed or not installed. | |
SetupFee | No | Any out side costs beyond the vehicle its self such as financing / title fees. | ||
TradeAndDeducets | No | Value of the trade-in vehicle if it exists | ||
FinalPrice | No | The finalized total price of the vehicle transaction (includes addons, fees, etc) | ||
BikeYear | No | E.g. 2018 | ||
BikeModel | 50 | No | E.g. Iron 1200 | |
FinalizeDate | No | Date in mm/dd/yyyy format | ||
NewUsed | 1 | No | N = New U = Used | |
TotalCost | No | The finalized total price of the vehicle transaction (includes addons, fees, etc) | ||
BikeColor | 25 | No | Color of the vehicle | |
BikeClass | 1 | No | N/A | This is often a single digit code that the bike falls under a particular type of "class" such as "S" for sport "T" for touring, some dealer systems have single digit class codes that represent these items. This can be blank if no single digit class code is stored in your dealer system. |
TradeValue | No | The value of the trade in vehicle | ||
Cost | No | |||
Make | 20 | No | E.g. Harley-Davidson | |
SalesPersonName | 100 | No | E.g. John Doe | |
VIN | 500 | No | E.g. JN8AS58T09W321853 | |
SalesPersonInitials | 15 | No | E.g. J.D. | |
Odometer | 50 | No | Mileage of the vehicle (Reading of the odometer) | |
CustomerRewardNumber | 7 | Yes | Yes | If this is a reward sale it MUST have the reward number if this is NOT a reward sale the it should blank. Remember we need both Reward Sales and Non-Reward sales for the reward system to work. This is because there are reports that the dealer users to compare how many "reward sales" vs "non-reward" sales they have. So if you do not include every non-reward sale this report and other functionality will not work. |
CustomerFirstName | 50 | Yes | No | Customer First Name |
CustomerLastName | 50 | Customer Last Name | ||
CustomerAddress | 200 | Yes | Yes | Customer Street Address |
CustomerCity | 200 | Yes | Yes | Customer City |
CustomerStateProvince | 50 | Yes | Yes | Customer State |
CustomerZipOrPostalCode | 50 | Yes | Yes | Customer Zip |
CustomerCountry | 3 | Yes | Yes | One of the following 3 digit codes must be used USA, CAN, AUS, EUR, JPN, DEU, GBR |
CustomerPrimaryPhoneType | 10 | Yes | Yes | Must include a phone number if you have it on file. A 10 digit phone number must be provided if it is not a 10 digit number the number will set to an empty string. Reward Customers can lookup their account balance by their primary number. If the customer has a mobile phone we recommend you use their "mobile" number as the primary number as this is the number that they can use to lookup their account balance with via text/sms or if they don't know their reward number, they can use their primary phone number in place of it. This is very common for most customers to just use their phone number. Example 1-414-326-4100 should be 4143264100. Must be NUMERIC |
CustomerHomePhone | 10 | No | n/a | Optional - Must be NUMERIC - Example 1-414-326-4100 should be 4143264100. |
CustomerMobilePhone | 10 | Yes | Yes | Must be NUMERIC - Example 1-414-326-4100 should be 4143264100. This should be the primary number in most cases. |
CustomerWorkPhone | 10 | No | n/a | Must be NUMERIC - Example 1-414-326-4100 should be 4143264100. This should be the primary number in most cases. |
CustomerEmail | 100 | Yes | Yes | If this is not available or included then we can not send them any kind of reward alert or "thank you" for visiting. If you have this available it needs to be included. If it's not available you can leave it blank. |
CustomerBirthMonth | 2 | Yes | Yes | 1 = Jan to 12 = Dec (this is a number) ---- If you do not included this then we can not issue them special rewards on their birthday. |
CustomerBirthDay | 2 | Yes | Yes | 1 to 31 (this is a number of the day) ---- If you do not included this then we can not issue them special rewards on their birthday. |
CustomerBirthYear | 4 | No | n/a | Optional - 4 Digit Year |
CustomerGender | 1 | No | n/a | M = Male F = Female N = Neutral U = Unknown ---- One of the values above must be used, if no data is passed then the value will be set to U |
CustomerClubName | 50 | No | n/a | This is just a friendly name for any kind of riding club a dealer may have, in many cases this is blank. |
CustomerClass | 50 | No | n/a | This is just a friendly of a group that the dealer classifies a customer under such as whole salers, retail customers, ext.. in many cases this is just blank. |
CustomerNationalHOGNumber | 100 | No | n/a | Must be numeric |
CustomerNationalHOGExpireMonth | 2 | No | n/a | 1 to 12 (this is the H.O.G. club member expiration month on their national HOG card) |
CustomerNationalHOGExpireDate | 2 | No | n/a | 1 to 31 (this is the H.O.G. club member expiration month on their national HOG card) |
CustomerNationalHOGExpireYear | 4 | No | n/a | This is the H.O.G. club member expiration year on their national HOG card, if you pass "LIFE" to this parm it will flag their card as Life Member. |
CustomerIsLocalHOGChapterMember | 1 | No | n/a | This value can be 0 = False 1 = True 3 = Unknown ---- If the value is set to 1 the national HOG values must be included, if they are not then this value will be set to 3 (aka Unknown). This is because you can not have a local hog member without a national HOG card ---------------------- |
* An error will not result if Max Length is exceeded. Data will be trimmed to this length.
Sample Results
Success Message
{ "results": { "message": "Success", "transactionid": "1232", "batchid": "1325", "uploadedtotal": "1000", "runningtotal": "3000", "expectedtotal": "4000", "feedtype": "V", "startdate": "05/01/2018", "enddate": "05/15/2018", "RRStoreID": "1215", "partnerstoreid": "154", "partnertransactionid": "154" } }
Sample Failure Message
{ "results": { "error": "Authentication failed" } }