If you have an existing API integration using our legacy HTTP or TCP interfaces, you can utilize the tables below for mapping field names and FRCs from the legacy interfaces to the equivalent field names and endpoints in the REST API.
HTTP/TCP | REST |
---|---|
AccessToken | credential.accessToken header.AccessToken |
APIOptions | apiOptions[array] header.ApiOptions |
Clerk | clerk.numericId |
Date | dateTime |
Time | dateTime |
Invoice | transaction.invoice |
PrimaryAmount | amount.total |
SecondaryAmount | amount.tip |
TaxAmount | amount.tax |
Vendor | header.VendorName header.InterfaceName header.InterfaceVersion |
CardPresent | card.present |
CardEntryMode | card.entryMode |
CardType | card.type |
CardLevelResults | card.levelResult |
CardNumber | card.number |
ExpirationDate | card.expirationDate |
Balance | card.balance.amount |
CVV2Indicator | card.securityCode.indicator |
CVV2Code | card.securityCode.value |
CVV2Result | card.securityCode.result |
CVV2Valid | card.securityCode.valid |
TrackInformation | card.trackData |
TerminalID | device.terminalId |
UniqueId | card.token.value |
P2PEBlock | p2pe.data |
P2PEDeviceType | p2pe.format |
CustomerReference | transaction.purchaseCard.customerReference |
DestinationZipCode | transaction.purchaseCard.destinationPostalCode |
ProductDescriptors | transaction.purchaseCard.ProductDescriptors[0] |
CustomerName | customer.firstName customer.lastName |
StreetAddress | customer.addressLine1 |
ZipCode | customer.postalCode |
HotelEstimatedDays | transaction.hotel.estimatedDays |
ArrivalDate | transaction.hotel.arrivalDate |
DepartureDate | transaction.hotel.departureDate |
HotelAdditionalCharges | transaction.hotel.additionalCharges[array] |
PrimaryChargeType | transaction.hotel.primaryChargeType |
SpecialCode | transaction.hotel.specialCode |
Notes | transaction.notes |
OverrideBusDate | transaction.businessDate |
TokenSerialNumber | card.token.serialNumber |
CVV2Prompt | device.prompt.cardSecurityCode |
PostalCodePrompt | device.prompt.postalCode |
StreetNumberPrompt | device.prompt.streetNumber |
PhotoType | signature.format |
PhotoData | signature.data |
IIASAmount | amount.iiasAmounts[array].amount |
IIASType | amount.iiasAmounts[array].type |
PINBlock | transaction.pin.block |
PINPadKey | transaction.pin.ksn |
AutoEstimateDays | transaction.auto.estimatedDays |
AutoAdditionalCharges | transaction.auto.additionalCharges[array] |
DriverName | transaction.auto.driver.name |
LateAdjustment | transaction.auto.lateAdjustment |
NoShowIndicator | transaction.auto.noShowIndicator |
RentalAgreement | transaction.auto.rental.agreement |
RentalCity | transaction.auto.rental.city |
RentalDate | transaction.auto.rental.dateTime |
RentalState | transaction.auto.rental.State |
RentalTime | transaction.auto.rental.dateTime |
RentalZipCode | transaction.auto.rental.postalCode |
Authorization | transaction.authorizationCode |
ReceiptText | receipt.[array]{key,printName,printValue} |
AuthToken | credential.AuthToken |
ClientGuid | credential.ClientGuid |
EMVApiData | emv.tlvData |
PrimaryErrorCode | error.primarycode |
SecondaryErrorCode | error.secondarycode |
ShortError | error.shortText |
LongError | error.longText |
AuthSource | transaction.authSource |
AVSResult | transaction.avs.result |
AVSStreetVerified | transaction.avs.streetVerified |
AVSZipVerified | transaction.avs.PostalCodeVerified |
ValidAVS | transaction.avs.valid |
PreauthorizedAmount | transaction.preauthorized.amount |
PreauthorizedTolerance | transaction.preauthorized.tolerance |
RetrievalReference | transaction.retrievalReference |
IYCAvailableBalance | card.balance.amount |
IYCReasonText | card.deactivationReason |
Response | transaction.responseCode |
BusinessDayEndingTime | merchant.dayEndingTime |
CardAbbreviations | merchant.cardTypes[array].type |
DBA | merchant.name |
DBAAddressLine1 | merchant.addressline1 |
DBAAddressLine2 | merchant.addressline2 |
DBACity | merchant.city |
DBAState | merchant.region |
DBAZipCode | merchant.postalCode |
DBAPhone | merchant.phone |
MerchantType | merchant.industry |
Revision | merchant.revision |
VoiceMerchantAccount | merchant.cardTypes[array].accountNumber |
VoicePhoneNumber | merchant.cardTypes[array].phoneNumber |
SpinAbb | card.type |
SpinIsDCC | card.dccCapable |
SpinIsDebit | card.debitCapable |
SpinPrefix | card.bin |
SpinResult | card.levelResult |
FourWords | fourWords[array] |
RoomRatesN | transaction.hotel.roomRates[array] |
LineItems | device.lineitems[array] |
- APIFormat
- APISignature
- FuctionRequestCode
- RequestorReference
- ReceiptTextColumns
- SaleFlag (no longer used in the request but is returned as
transaction.saleFlag
in the GET /transactions/invoice response to indicate the state of the transaction) - BalanceReturnIndicator
- P2PEBlockLength
- TaxIndicator
- SignatureBlock
- SignatureBlockNumber
- SignatureDeviceType
- SignatureTotalBlocks
- PINPadBlockFormat
- PinPadType
- ErrorIndicator
- CustomerReceiptText
- MerchantReceiptText
- IYCBalance
- IYCCardFormatted
- IYCExpiration
- TranId
FRC Code | Purpose | Verb | Full End Point |
---|---|---|---|
CE | Access Token Exchange | POST | credentials/accesstoken |
1B | Online Auth | POST | transactions/authorization |
1D | Capture | POST | transactions/capture |
1D | Online Straight Sale | POST | transactions/sale |
1D | Online Refund | POST | transactions/refund |
07 | Get Invoice Informaiton | GET | transactions/invoice |
08 | Full Void | DELETE | transactions/invoice |
05 | Offline Auth | POST | transactions/manualauthorization |
06 | Offline Sale | POST | transactions/manualsale |
20 | Signature Upload | POST | transactions/signature |
24 | Gift Card Activate | POST | giftcards/activate |
25 | Gift Card Deactivate | POST | giftcards/deactivate |
25 | Gift Card Cashout | POST | giftcards/cashout |
26 | Gift Card Reactivate | POST | giftcards/reactivate |
24 | Gift Card Reload | POST | giftcards/reload |
61 | Gift Card Inquiry | POST | giftcards/balance |
2A | Gift Card Cancel | POST | giftcards/cancel |
E0 | Token Store Add | POST | tokens/add |
E2 | Token Store Duplicate | POST | tokens/duplicate |
64 | Get 4 Words From a TrueToken | POST | tokens/4words |
0B | Get DBA Information | GET | merchants/merchant |
22 | Get Voice Center Information | GET | merchants/merchant |
2F | Verify Card | POST | cards/verify |
23 | Identify Card Type | POST | cards/identify |
47 | Request Signature | POST | devices/promptsignature |
82 | Prompt Confirmation | POST | devices/promptconfirmation |
CF | Terms and Conditions | POST | devices/termsandconditions |
95 | Display Line Items | POST | devices/lineitems |
94 | Clear Line Items | DELETE | devices/lineitems |
F2 | Get Device Info | GET | devices/info |
96 | Swipe/Insert Ahead | POST | devices/initializereaders |
97 | PIN Pad Reset | POST | devices/reset |
DA | On-Demand Card Read | POST | devices/promptcardread |
DB | Prompt for Input | POST | devices/promptinput |
86 | Process Forms | POST | devices/processform |
F1 | Print Receipt | POST | devices/print |
5F | Totals Report | GET | reports/batchtotals |
With our legacy HTTP and TCP APIs the amount was split into separate PrimaryAmount and SecondaryAmount fields. These two fields were added together on the Shift4 payment platform side to calculate the total amount. For example, a transaction with a total amount of $120 with a $20 tip was sent as PrimaryAmount $100 and SecondaryAmount $20.
With the REST API the entire transaction amount is sent in the 'amount.total' field. In other words, the 'amount.total' field is all inclusive of all the other fields in the amount object. All other fields in the amount object are for informational purposes and must also be included in the total field. For example, a purchase of $100 with a $20 tip and $8 tax would be:
"amount": {
"tip": 20,
"tax": 8,
"total": 120
}