The OneCard API is a set of web services allowing third party software developers to integrate their applications with the Heartland Campus Solutions OneCard system.
The developer can select the response to be serialized in JSON format by setting Content-Type to JSON. To override the Content-Type result, set the HTTP Accept Header to application/JSON.
The developer can select a preferred language for the response by setting the Accept-Language request HTTP header. The system defaults to English if the selected language is not supported.
All request parameters are case-insensitive. All responses have a Status property with "OK" or "Error" value. When Status=OK, the transaction request is processed — but check TransactionPass in the Result object for pass/fail.
Role-based security with two roles:
Each web service description states Permitted Roles: Student, Operator. If your role is not listed, calling the endpoint returns Response Status: Access Denied!
Authentication Required: Yes/No is shown in each service description.
Before real development starts, obtain from Heartland Campus Solutions:
Heartland Campus Solutions will provide:
DevKey: <value>). Never changes. Must be hardcoded.Items 1 and 2 (DevKey and OriginID) must be hardcoded. Items 3–6 are configured per school/installation.
All services with Authentication Required: Yes require a valid SessionID.
ExpiredInMinutes.Session-based (standard flow):
Login → Transaction1 → Transaction2 → … → Logout
Request includes SessionID.
Sessionless calls are for rare single-transaction use cases. Instead of SessionID, include authentication parameters in the request.
Operator sessionless parameters:
| Parameter | Type | Description |
|---|---|---|
| OriginID | byte | Application Origin ID |
| TerminalID | string | Terminal defined in OneCard database |
| TerminalType | string | Terminal Type (see Reference 1) |
| OperatorID | string | Valid Operator ID |
| OperatorPassword | string | Operator password |
Student sessionless parameters:
| Parameter | Type | Description |
|---|---|---|
| AccountID | string | Account ID |
| PIN | string | Account password |
| AccountType | string | Account type (see Reference 2) |
| TerminalID | string | Terminal defined in OneCard database |
| TerminalType | string | Terminal Type (see Reference 1) |
| OriginID | byte | Application Origin ID |
POST /operator/loginRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| OperatorID | string | Valid Operator ID |
| PIN | string | Operator password |
| TerminalID | string | Terminal defined in OneCard database |
| OriginID | byte | Application Origin ID defined by Heartland Campus Solutions |
| ExpiredInMinutes | int | [Optional] Minutes after session expired. Default: 15 minutes |
| TerminalType | string | Terminal Type (see Reference 1) |
| SaveDataForAutoLogin | bool | Indicating whether to save the data for auto login |
| IpAddress | string | [Optional] IP address of the transaction |
| MfaDeviceID | string | [Optional] MFA device identifier |
Result: Returns an authenticated SessionID as string.
POST /operator/logoutRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| OperatorID | string | Valid Operator ID |
Result: Returns true/false for success or failure.
POST /account/loginRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| AccountID | string | Valid account ID |
| PIN | string | Account password |
| AccountType | string | Account type (see Reference 2) |
| TerminalID | string | Terminal defined in OneCard database |
| TerminalType | string | Terminal Type (see Reference 1) |
| OriginID | byte | Application Origin ID defined by Heartland Campus Solutions |
| ExpiredInMinutes | int | [Optional] Minutes after session expired. Default: 15 minutes |
| IpAddress | string | [Optional] The IP Address |
| MfaDeviceID | string | [Optional] MFA device identifier |
| CheckForPolicies | bool | Value indicating whether to check for unaccepted/unacknowledged OneCard policies |
Result: Returns an authenticated SessionID as string.
POST /account/logoutRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID who is logged in |
Result: Returns true/false for success or failure.
POST /app/get/configRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| OriginID | byte | Application Origin ID defined by Heartland Campus Solutions |
| TerminalID | string | Terminal defined in OneCard database |
| POSCatalog | string | POS database catalog |
Result: Returns application configuration settings per terminal/OriginID pair. The response includes: OriginID, TerminalID, ConfigData, SiteID, SiteName, PrivacyUrl, AccountsSettings, LoginSettings, PINSettings, FinancialParameters, ApiVersion, AccountPictureSettings, UserFriendlyCardName, WalletSettings, SalesSettings, DepositSettings, SupportedLanguages, and AccountSignatureSettings.
POST /app/save/configRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| OriginID | byte | Application Origin ID defined by Heartland Campus Solutions |
| TerminalID | string | Terminal defined in OneCard database |
| Action | string | InsertOrUpdate or Delete |
| ConfSection | string | Configuration section of the application to be modified |
| ConfData | string | Serialized application configuration data |
POST /sysconfig/groupsManages groups (Category, Group, RateCategory, AccessControl).
Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| GroupList | array | List of groups to handle |
| GroupName | string | Name of the group |
| GroupNumber | int | Number of the group (required for update/delete) |
| OrganizationNumber | int | Organization number to which the group belongs |
| StartDate | string | Group start date YYYY/MM/DD HH:MM:SS |
| ExpirationDate | string | Group expiration date YYYY/MM/DD HH:MM:SS |
| GroupsType | string | One of: Category, Group, RateCategory, AccessControl |
| Notes | string | Group notes |
| ActionType | string | One of: Add, Update, Delete |
| IsDepartmentCharge | bool | Indicates whether this group allows department charge |
POST /sysconfig/operatorManages operator accounts including rights and SAPs.
ActionType values: Add (1), Update (2), Delete (3)
Manager Right Numbers:
| Right Number | Description |
|---|---|
| 1 | Permission to view data in this area |
| 2 | Permission to report in this area |
| 3 | Permission to modify (but not delete) in this area |
| 4 | Permission to delete records in this area |
| 5 | Permission to create records (add) in this area |
| 6 | Permission to transact records in this area |
| 7 | Authorized User (Parental) rights |
| 8 | Not used |
POST /sysconfig/posoperatorPOST /account/password/checkPOST /account/password/changePOST /account/pin/checkPOST /account/session/createCreates a student session without requiring the student to provide a password. Useful when an operator is managing the session on behalf of a student.
Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID for which to create a session |
| AccountType | string | Account type (see Reference 2) |
| ExpiredInMinutes | int | [Optional] Session expiration in minutes |
| IpAddress | string | [Optional] IP address |
| CheckForPolicies | bool | Value indicating whether to check for unaccepted/unacknowledged OneCard policies |
POST /account/createCreates or updates a OneCard account. When ExistingAccount is returned as true, the account already existed and was updated.
Key Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Standard account ID |
| LastName | string | Last name |
| FirstName | string | First name |
| PreferredName | string | Preferred name |
| ExpirationDate | string | Account expiration date YYYY/MM/DD |
| SIS_ID | string | SIS (Student Information System) ID |
| Username | string | Account username |
| ERP_ID | string | ERP ID |
| IpAddress | string | [Optional] IP address of the transaction |
| SkipPOSOperatorsUpdate | bool | If true, skip updating POS operators |
| AddToWalletDisabled | bool | If true, disable adding to wallet |
| AccountPersona | string | Account persona type |
| StudentClass | string | Student class |
| StudentResidentialStatus | string | Student residential status |
| CustomAccount | string | Custom account number |
| IsoAbaAccount | string | ISO ABA account number |
| ProximityAccount | string | Proximity account number |
| SmartAccount | string | Smart card account number |
POST /account/addauthorizationfieldsPOST /account/searchRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| SearchTerm | string | Search term |
POST /account/summaryReturns summary information for an account including balances, secondary accounts, status flags, user-defined fields, and supplemental data.
Key result fields: StandardAccountID, DisplayAccountID, DisplayAccountType, AccountFullName, IsActive, IsLostCard, IsStolenCard, IsExpired, IsNotYetValid, Notes, UserDefinedFields, SupplementalData, SecondaryAccounts, MembershipExpDate in Category/RateCategory/AccessControl.
POST /account/fulldetailsReturns complete account information. Added MembershipExpDate to Groups in v9.4.0.3. The response includes PIN, Category, RateCategory, AccessControl, and other detailed fields.
POST /account/statusRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID |
| AccountType | string | Account type (see Reference 2) |
| UseMasterAccount | bool | Use master account flag |
Additional result fields added in v9.0.0.5: EventsAndServices [{ StartDateTime, EndDateTime }]. Additional result fields added in v9.6.0.16: MasterAccountNumber, MasterAccountFullName.
POST /account/transactionsPOST /account/transactions/failedPOST /account/depositbalancesPOST /account/balancesRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID |
| AccountType | string | Account type |
| UseMasterAccount | bool | Use master account flag |
Additional result parameters added in v9.6.0.16: MasterAccountNumber, MasterAccountFullName.
POST /account/mealplanhistoryRequest Parameters include UseMasterAccount (added in v9.6.0.16). Additional result parameters in v9.6.0.16: MasterAccountNumber, MasterAccountFullName.
POST /account/updateprofessionaldataPOST /account/removefrommobileswipesPOST /account/addgroupsRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID |
| IpAddress | string | [Optional] IP address |
| Groups | array | List of group numbers to add |
Result: Returns true/false plus TaskID for block mode operations.
POST /account/addgroups/v2POST /account/removegroupsSupports filtering by AccountFilterOption:
1 – Single Account2 – Include Account List4 – Account Range5 – Account Expiration Date6 – Account Group9 – All AccountsRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountFilterOption | enum | Required: 1, 2, 4, 5, 6, or 9 |
| AccountID | string | Required when AccountFilterOption is 1 |
| AccountList | list<string> | Required when AccountFilterOption is 2 |
| AccountRangeStart | string | Required when AccountFilterOption is 4 |
| AccountRangeEnd | string | Required when AccountFilterOption is 4 |
| ExpirationDate | string | Required when AccountFilterOption is 5 (YYYY/MM/DD) |
| AccountGroups | list<int> | Required when AccountFilterOption is 6 |
| RemoveCategory | bool | Set to true to remove the Category |
| RemoveRateCategory | bool | Set to true to remove the Rate Category |
| RemoveAccessControl | bool | Set to true to remove the Access Control |
| Groups | list<int> | List of group numbers to remove |
| IpAddress | string | [Optional] IP address |
POST /account/photo/getRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID |
| AccountType | string | Account type (see Reference 2) |
| ImageWidth | int | [Optional] Image width in pixels. Default: 60 |
| ImageHeight | int | [Optional] Image height in pixels. Default: 80 |
| AsBase64 | bool | true – base64 JPEG; false – binary stream |
When both ImageWidth and ImageHeight are -1, the response image will have the original size.
POST /mealplan/sellRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID who buys the meal plan |
| ProductNumberID | string | ID of meal plan |
| FundType | enum | 0=OneCard, 1=Cash, 2=Check, 3=CreditCard, 4=WireTransfer, 5=Special_1, 6=Special_2, 7=ViaDownload, 8=Coupon, 9=ElectronicCheck |
| AccountType | string | Account type (see Reference 2). Student: Standard (0) or login account type only |
| CardEntry | enum | 0=Unspecified, 1=CardNotPresent, 2=Swipe, 3=Chip, 4=Contactless |
| IpAddress | string | [Optional] Client IP Address |
| TransactionInitiator | enum | [Optional] 0=UserInitiated (default), 1=AdminInitiated |
POST /mealplan/removeRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID |
| AccountType | enum | Account type (see Reference 2) |
| ProductNumberID | int | ID of meal plan |
| FundType | enum | 0=OneCard, 4=WireTransfer |
| RefundType | enum | 0=NoRefund, 1=ProductPrice, 2=SpecificAmount |
| RefundAmount | decimal | Required when RefundType is 2 |
| IpAddress | string | [Optional] IP address |
POST /mealplangroup/sellParameters are similar to Meal Plan Sell but uses ProductNumberID as a group ID.
POST /mealplan/adjustments/cancelboxlunch| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Standard Account ID |
| ProductNumberID | int | Meal plan number |
| MealPeriod | byte | Meal period |
| SoldDate | string | The meal plan sold date |
POST /mealplan/adjustments/genericmealsPOST /mealplan/adjustments/flexibleweeklyPOST /mealplan/adjustments/swapblockplanAll financial transactions support both session-based and sessionless modes.
Transaction deduplication: To avoid duplicate transactions, call Transaction PreInit first to get a unique OneCardTransID, then include this in all subsequent transaction calls.
Async vs Sync:
IsAsync=false (default): blocks and waits for result.IsAsync=true: returns immediately with OneCardTransID; call Get Transaction Result to retrieve the outcome.Buffered vs Live:
All date/time parameters use the format YYYY/MM/DD HH:MM:SS.
CardEntry values:
| Value | Description |
|---|---|
| 0 | Unspecified |
| 1 | CardNotPresent – card number is manually entered |
| 2 | Swipe |
| 3 | Chip |
| 4 | Contactless |
TransactionInitiator values:
| Value | Description |
|---|---|
| 0 | UserInitiated (default) |
| 1 | AdminInitiated |
| 2 | AdminInitiatedWithoutCheckingAccountExpirationDate |
POST /transactions/preinitCall this before the actual transaction to obtain a unique OneCardTransID. Pass this ID in the subsequent transaction call to prevent duplicates.
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| TranDateTime | string | Date and time of the transaction |
POST /transactions/preinit/cancelCancels a pre-initialized transaction. Parameters include SessionID, GenerateReceipt, and AdditionalData.
POST /transactions/bankcard/simulateSimulates a bank card (credit card) transaction for deposit.
Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID |
| AccountType | string | Account type (see Reference 2) |
| Balance | byte | Account balance number |
| Amount | decimal | Transaction amount |
| IsAsync | bool | true for async; false for sync |
| OneCardTransID | string | Transaction ID from PreInit |
| OneCardTransUID | string | Unique transaction identifier |
Result includes: MaskedCardNumber, CreditGL_REC_ID
POST /transactions/onecard/adjustbalance/processAdjusts a OneCard account balance.
Key Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID or raw Track2 data |
| AccountType | string | Account type |
| CustomerNumber | int | Customer number / Site code (0 if unused) |
| Balance | byte | Account balance number |
| Amount | decimal | Transaction amount |
| AdjustDirection | string | Direction of adjustment |
| IsAsync | bool | true for async; false for sync |
| OneCardTransID | string | Transaction ID from PreInit |
| CardEntry | enum | Card entry method |
| IpAddress | string | [Optional] Client IP Address |
POST /transactions/onecard/refundbalance/processRefunds to a OneCard balance. The balance must be set as refundable in the Tools program.
Key Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID or raw Track2 data |
| AccountType | string | Account type |
| CustomerNumber | int | Customer number (0 if unused) |
| Balance | byte | Account balance number |
| Amount | decimal | Transaction amount |
| FundType | string | 1=Cash, 2=Check, 4=WireTransfer, 5=Special_1, 6=Special_2, 7=Special_3 |
| TranDateTime | string | Date/time YYYY/MM/DD HH:MM:SS |
| IsAsync | bool | Async flag |
| OneCardTransID | string | Transaction ID from PreInit |
| BaseGL | string | [Optional] Base GL for balance refund. Default: "PRE-PAY" |
| BonusGL | string | [Optional] Bonus GL for balance refund. Default: "XTRA_FUNDS" |
| TransactionInitiator | enum | See TransactionInitiator values |
| AccountSuffix | string | Account suffix |
| CardEntry | enum | Card entry method |
| IpAddress | string | [Optional] Client IP Address |
POST /transactions/onecard/access/processKey Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID or raw Track2 data |
| AccountType | string | Account type |
| CustomerNumber | int | Customer number (0 if unused) |
| PIN | string | [Optional] Valid PIN for the account |
| TranType | string | "1"=AccessEntry, "2"=AccessExit |
| TranDateTime | string | Date/time YYYY/MM/DD HH:MM:SS |
| DSN | int | [Optional] Subsequent transaction number (1–999) |
| IsAsync | bool | Async flag |
| OneCardTransID | string | GUID from TransactionPreInit |
| SubLocationNumber | int | Sublocation number for access rules (0 = use terminal's main location) |
| Buffered | bool | [Optional] Buffered/non-buffered transaction |
| CardEntry | enum | Card entry method |
| AccountSuffix | string | Account suffix |
POST /transactions/log/accessLogs access transactions processed by a third-party access system into the OneCard database.
Key Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID |
| AccountType | string | Account type |
| TransactionTerminalID | string | Terminal ID (NET_ADDR). Up to 12 chars. Creates a new terminal if not found |
| TransactionTerminalName | string | [Optional] Terminal name (if terminal not in OneCard) |
| TransactionTerminalAccessLocationType | enum | 0=Other, 1=Residential, 2=Academic, 3=Parking, 4=Auxiliary, 5=Entertainment, 6=StudentOrganization, 7=Dining, 8=Library, 9=Athletics, 10=Recreation |
| TranType | enum | 1=AccessEntry, 2=AccessExit |
| TransactionPass | bool | Access transaction result in third party system |
| TranDateTime | int64 | Milliseconds since January 1, 1970 UTC |
| CardEntry | enum | Card entry method |
| IpAddress | string | [Optional] IP address |
POST /transactions/onecard/deposit/processKey Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| AccountID | string | Account ID |
| AccountType | string | Account type |
| Balance | byte | Account holder's balance number |
| HoldDays | byte | Days before funds are available |
| Amount | decimal | Transaction amount |
| FundType | string | 1=Cash, 2=Check, 3=CreditCard, 4=WireTransfer, 5=Special_1, 6=Special_2, 7=ViaDownload, 8=Coupon, 9=ElectronicCheck, 10=ERP_Charge |
| IsAsync | bool | Async flag |
| OneCardTransID | string | Transaction ID from PreInit |
| FeeGL | string | [Optional] Fee GL |
| FeeTax | decimal | [Optional] Fee tax |
| AltGL | string | [Optional] Alternate GL |
| TransactionInitiator | enum | See TransactionInitiator values |
| AccountSuffix | string | [Optional] Account suffix |
| TranDateTime | string | Date/time YYYY/MM/DD HH:MM:SS |
| CreditTransGUID | string | Credit transaction unique identifier |
| CardEntry | enum | Card entry method |
| IpAddress | string | [Optional] Client IP Address |
POST /transactions/onecard/onecardtrans/processLow-level transaction processing endpoint with full access to the underlying OneCard transaction engine. Accepts a Request object with detailed transaction parameters.
POST /transactions/onecard/inquiry/processTranType values:
| Value | Description |
|---|---|
| 12 | FinancialBalanceQuery |
| 16 | SpecialFieldQuery |
| 18 | MealBalanceQuery |
| 21 | FinancialBalanceQueryWithLock (pre-charge / lock funds) |
| 23 | CancelQueryLock (release locked funds without charging) |
Key Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| CustomerNumber | int | Customer number (0 if unused) |
| AccountID | string | Account ID or raw Track2 data |
| AccountType | string | Account type |
| PIN | string | [Optional] Account PIN |
| TranType | string | Transaction type (12, 16, 18, 21, or 23) |
| BillType | int | Bill type (0 = terminal default) |
| Amount | decimal | Transaction amount (for TranType 21) |
| TranDateTime | string | Date/time YYYY/MM/DD HH:MM:SS |
| SpField | byte | Special Field query number (0–9=Static, 11=Balance, 12=EquivalentMealsLeft, 13=BoardMealsLeft, 14–18=Dynamic) |
| DSN | int | [Optional] Subsequent transaction number (1–999) |
| IsAsync | bool | Async flag |
| OneCardTransID | string | Transaction ID from PreInit |
| ReturnPicture | bool | Return account photo as base64 |
| ImageWidth | int | [Optional] Image width (default: 40) |
| ImageHeight | int | [Optional] Image height (default: 80) |
| IsGuestMP | bool | If true, returns guest meal plan data |
| AccountSuffix | string | [Optional] Account suffix |
| CardEntry | enum | Card entry method |
| IpAddress | string | [Optional] Client IP Address |
POST /transactions/onecard/vendmoney/processTranType values:
| Value | Description |
|---|---|
| 4 | VendMoney |
| 5 | VendUnits |
| 7 | PrepaymentADM |
| 13 | VendMoneyRefund |
| 54 | VendTip |
Key Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| CustomerNumber | int | Customer number (0 if unused) |
| AccountID | string | Account ID or raw Track2 data |
| AccountType | string | Account type |
| PIN | string | [Optional] Account PIN |
| TranType | string | Transaction type (4, 5, 7, 13, or 54) |
| ProcessingType | string | Use "OneCardOnly" |
| OneCardTransID | string | Transaction ID from PreInit |
| BillType | int | Bill type (0 = terminal default) |
| Amount | decimal | Transaction amount (for money transactions) |
| Units | int | Transaction amount in units (for unit transactions) |
| UnitMode | bool | true=units transaction; false=money transaction |
| TransDate | string | Date/time YYYY/MM/DD HH:MM:SS |
| Buffered | bool | [Optional] Buffered flag |
| DSN | int | [Optional] DSN (1–999) |
| IsAsync | bool | Async flag |
| AccountSuffix | string | Account suffix |
| CardEntry | enum | Card entry method |
| IpAddress | string | [Optional] Client IP Address |
POST /transactions/onecard/reverse/processTo identify the initial transaction, use either:
AccountID + AccountType + TranDateTimeForReversal + TerminalForReversalReferenceTransactionGUID (the OneCardTransGUID from VendMoney result)POST /transactions/onecard/vendmealplan/process"17" (VendMealPlanInFull)Two modes:
Amount=0): Looks for valid meal plans; reduces meal count. No funds taken.Amount>0): Looks for meal money plans (Meal Equivalence or Meal Allowance). Falls back to account balance if insufficient.Key Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| CustomerNumber | int | Customer number (0 if unused) |
| AccountID | string | Account ID or raw Track2 data |
| AccountType | string | Account type |
| PIN | string | [Optional] Account PIN |
| TranType | string | "17" (VendMealPlanInFull) |
| Amount | decimal | 0 for Board Plan; >0 for Meal Money |
| TranDateTime | string | Date/time YYYY/MM/DD HH:MM:SS |
| IsAsync | bool | Async flag |
| OneCardTransID | string | Transaction ID from PreInit |
| IsGuestMP | bool | true = vend second (guest) meal plan |
| Buffered | bool | [Optional] Buffered flag |
| DSN | int | [Optional] DSN (1–999) |
| CardEntry | enum | Card entry method |
| AccountSuffix | string | Account suffix |
| IpAddress | string | [Optional] Client IP Address |
POST /transactions/getRetrieves the result of an async transaction by OneCardTransID. Returns result only for the corresponding transaction type.
Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| OneCardTransID | string | Transaction ID |
| IncludeWebRequest | bool | true to return web receipt |
The result can contain: BankCardResult, VendMoneyResult, VendMealPlanResult, InquiryResult, DepositResult, VendAccessResult, BankCardSimulationTransactionResult, OneCardTransResult, ReceiptResult, AccessTranReqResult, RefundBalanceResult, AdjustBalanceResult, CheckOutAllResult, VendMoneyResultV2.
POST /mypay/pendingswipesPOST /message/sendSends a message using a specified Protocol.
POST /system/testReturns server status to verify the API is reachable.
POST /onecardpolicy/getcurrentpoliciesPOST /onecardpolicy/acceptpolicyPOST /reports/gleodReturns GL End of Day data with taxes.
POST /reports/updatedaccountsReturns selected properties for accounts changed during a selected period.
POST /reports/allpeopleReturns selected properties for all accounts. Supports paging and two filtering parameters: SkipExpired and Category.
POST /reports/gltransactionsPOST /blockmode/task/get/resultReturns the result/status of a block mode task (used with Account Add Groups and Account Remove Groups for batch operations).
The POS Plugin (POS API Core) provides a set of endpoints for POS operators. A POS operator must open a shift before processing sales.
All POS Plugin endpoints use the base path: POST /posapi/location/{poslocation}/...
POST /posapi/location/{poslocation}/testPOST /posapi/location/{poslocation}/locationtestPOST /posapi/location/{poslocation}/departments/getallPOST /posapi/location/{poslocation}/departments/getpictureReturns binary PNG file (image/png).
POST /posapi/location/{poslocation}/items/getallPOST /posapi/location/{poslocation}/items/getpictureImageSize values:
| Value | Description |
|---|---|
| 0 | Small – 50×50 px |
| 1 | Medium – 180×180 px |
| 2 | Large – 411×274 px |
Result: Returns PNG as base64 in Base64Result.
POST /posapi/location/{poslocation}/items/getitemmodifiersReturns list of modifiers of type "Modifier" for an item.
POST /posapi/location/{poslocation}/items/getitemsidedishesPOST /posapi/location/{poslocation}/items/getiteminstructionsPOST /posapi/location/{poslocation}/items/getitemmsiReturns Modifiers, Side Dishes, and Instructions for an item in one call.
Standard Items are defined in WebPAdmin → Products → Item Maintenance.
POST /posapi/location/{poslocation}/items/standard/getallRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| DepartmentID | int | [Optional] Filter by Department ID |
POST /posapi/location/{poslocation}/items/standard/getitemReturns detailed size pricing, tax flags, and modifier availability for a single Standard item.
Special Items include Events, Services, Variables, and Series items.
POST /posapi/location/{poslocation}/items/special/getallSpecialType values: C=Series, E=Event, S=Service, V=Variable
POST /posapi/location/{poslocation}/items/special/getitemPOST /posapi/location/{poslocation}/items/group/getallPOST /posapi/location/{poslocation}/items/group/getitemsingroupPOST /posapi/location/{poslocation}/modifiers/getallmodifiersPOST /posapi/location/{poslocation}/modifiers/getallsidedishesPOST /posapi/location/{poslocation}/modifiers/getallinstructionsPOST /posapi/location/{poslocation}/config/getdataPOSDefinitions bit field:
| Bit | Description |
|---|---|
| 1 | Departments |
| 2 | Standard Items |
| 4 | Modifiers (all types) |
| 8 | Item Modifiers (modifiers per item) |
| 16 | Configuration (tax rates) |
If not set, all definitions are returned by default.
Result includes: Departments, Items, Modifiers, ItemModifiers, POSTaxConfiguration (Tax1RatePercentage, Tax2RatePercentage, Tax3RatePercentage).
A POS operator must open a shift before processing sales.
POST /posapi/location/{poslocation}/shifts/startshiftRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| StartingCash | decimal | [Optional] Starting cash amount |
Result returns ShiftID in XXXX-Y format (file number – shift number). Any open operator shifts on the current register are automatically closed.
POST /posapi/location/{poslocation}/shifts/endshiftCloses the shift and returns the End of Shift report.
Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| ShiftID | string | The shift identifier |
Result: Returns EndOfShiftReport as string.
POST /posapi/location/{poslocation}/shifts/getendofshiftreportRequest Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| ShiftID | string | The shift identifier |
| BreakDownOneCardPaymentsByBalances | bool | Show OneCard payment amounts by balances |
| BreakDownOneCardTaxByBalances | bool | Show OneCard payment tax amounts by balances |
POST /posapi/location/{poslocation}/pos/calculatetotalsCalculates subtotal, tax amounts, and total for a list of items before processing a sale.
POST /posapi/location/{poslocation}/pos/processsaleProcesses a POS sale.
Key Request Parameters:
| Parameter | Type | Description |
|---|---|---|
| SessionID | string | Current session ID |
| ItemList | array | List of items ordered |
| PaymentList | array | List of payments (only one payment supported; split payments not supported) |
| ShiftID | string | Current shift ID in XXXX-Y format |
| OrderNote | string | [Optional] Order note |
| GetReceipt | bool | true to return payment receipt |
PaymentMode values:
| Value | Description |
|---|---|
| 1 | OneCard |
| 2 | BoardMealPlan |
| 3 | Cash |
| 4 | Check |
| 5 | CreditCard simulation |
| 6 | Custom |
| Value | Description |
|---|---|
| 32 | Any |
| 51 | ThirdParty – 3rd party terminal |
| 52 | Mobile – Mobile terminal |
| 65 | Administrative – Administrative terminal |
| 67 | SecurityController |
| 68 | CreditManager |
| 69 | TransactionEngine |
| 72 | PocketPC |
| 76 | Clearing |
| 77 | SecurityMonitor |
| 78 | NetworkManager |
| 80 | PrinterController |
| 82 | ClusterNode |
| 83 | POS – POS terminal |
| 87 | Web – Web terminal |
| Value | Description |
|---|---|
| 0 | Standard – Standard account |
| 1 | Iso_Aba – ISO ABA account |
| 2 | Prox – Proximity account |
| 3 | Custom – Custom account |
| 4 | Smart – Smart Card account |
| 6 | Email – account by e-mail for LDAP authentication [pending] |
| 8 | CAS – CAS account [pending] |
| 9 | LDAP – LDAP account [pending] |
| 10 | RAW – raw account type (e.g., Track II data from card reader) |
| 11 | ERP_ID – SIS ID account |
| 12 | Username – account by Username |
| 13 | MobileID – Mobile ID account |
Accounts store cardholder information. A single user in OneCard can have up to 5 account numbers (Standard, ISO ABA, Custom, Proximity, Smart). Standard account is always 9 digits, zero-padded left. Transaction response contains StandardAccountID and DisplayAccountID.
For swiped card transactions, send full Track2 magstripe data using AccountType=RAW. The API parses the magstripe internally.
Bill Types designate the General Ledgers from which funds are taken and to which transaction funds are directed. Essential for financial terminals.
Four classifications of people groupings:
Operators must be added to the system with appropriate System Access Privileges (SAPs). Effective permissions are a combination of Terminal SAPs and Operator SAPs.
A physical or artificial reference point. Locations belong to a single Organization. Used by Access Rules and Meal Plans.
Devices (computers, POS stations, vending machines) connected to the OneCard network. Terminal types include: Administrative, Third Party, Web, Mobile (used in OneCard mobile apps), POS, and more.
Q: What is DevKey?
A: A static value assigned to you as a developer. Never changes. Must be hardcoded in all your applications (preferably encrypted). The same for all schools.
Q: What is API URL Path?
A: Customer-specific. Each school installs the API on their own IIS server. Only HTTPS requests are accepted. The same URL is used for all your applications connecting to the same school.
Q: What are OperatorID and OperatorPassword?
A: Customer-specific. The school defines OperatorIDs and passwords in their OneCard system. May be application-specific – some schools use different credentials per application.
Q: What is OriginID?
A: Similar to DevKey, but assigned per application you develop. Never changes. Must be hardcoded. Used with DevKey to identify the developer and which application initiated the transaction.
Q: What is TerminalType?
A: A fixed value in your applications (ThirdParty terminal type). Other types are primarily for internal Heartland applications.
Q: What is TerminalID?
A: The school defines a terminal in OneCard and provides its ID. Matches the physical device running the application. Effective permissions are a combination of terminal and operator permissions.
Q: How can I handle duplicated transactions?
A: Before the real transaction, call Transaction PreInit (/transactions/preinit) to obtain a unique OneCardTransID. Include this in the actual transaction request to prevent duplication.
Q: What does the Balance parameter do in Deposit?
A: Each account can have up to 12 balances designated for specific transactions. The school will tell you which balance numbers to allow (e.g., Balance #1 for books, Balance #2 for dining).
Q: What does HoldDays do?
A: Specifies when deposited funds become available. E.g., a parent can deposit today but the funds are only available after 10 days.
Q: What is OneCardTransID?
A: A unique ID for the currently processing transaction. Used for both async and sync transactions. If you lose the response (e.g., dropped connection), use this ID with Get Transaction Result to retrieve the outcome.
Q: What is CustomerNumber?
A: Assigned to each OneCard customer (school). Can be used to prevent posting transactions to the wrong school.
Q: When would PIN be used in the Off-Campus program?
A: Depends on integration. Recommended for self-service applications with manual account number entry. Not needed for operator-verified cards or card-swipe-only applications.
Q: What are Units, UnitMode, Buffered, and IsAsync?
A: UnitMode charges by units (e.g., printed pages) rather than amount – not recommended for Off-Campus. Buffered passes failed transactions to the exception log. IsAsync=true allows non-blocking transaction submission; call GetResult to retrieve the outcome.
| OneCard API Service | Student | Operator | Auth Required | Sessionless |
|---|---|---|---|---|
| Accept/Acknowledge the OneCard Policy | Yes | No | Yes | No |
| Access Process | Yes | Yes | Yes | Yes |
| Account Add Groups | No | Yes | Yes | No |
| Account Balances | Yes | Yes | Yes | No |
| Account Create Or Update | No | Yes | Yes | Yes |
| Account Add Data to Authorization Fields | No | Yes | Yes | Yes |
| Account Deposit Balances | Yes | Yes | Yes | No |
| Account Financial Transactions | Yes | Yes | Yes | No |
| Account Financial Transactions Failed | Yes | Yes | Yes | No |
| Account Login | N/A | N/A | No | N/A |
| Account Logout | Yes | Yes | Yes | No |
| Account Meal Plan History | Yes | Yes | Yes | No |
| Account Password Change | Yes | Yes | Yes | No |
| Account Password Check | Yes | Yes | Yes | No |
| Account Photo Get | Yes | Yes | Yes | No |
| Account Update Professional Data | No | Yes | Yes | Yes |
| Account Remove Groups | No | Yes | Yes | No |
| Account Search | No | Yes | Yes | No |
| Account Status | Yes | Yes | Yes | No |
| Account Summary | Yes | Yes | Yes | No |
| Account Full Details | Yes | Yes | Yes | No |
| Adjust Balance Process | No | Yes | Yes | No |
| App Get Config | Yes | Yes | Yes | No |
| App Save Config | Yes | Yes | Yes | No |
| Bank Card Simulate Transaction | Yes | Yes | Yes | No |
| Deposit Process | No | Yes | Yes | Yes |
| Get a list with all valid OneCard policies | Yes | No | Yes | No |
| Get Block Mode Task Result | No | Yes | Yes | No |
| Get Transaction Result | Yes | Yes | Yes | No |
| Groups | No | Yes | Yes | No |
| Inquiry Process | Yes | Yes | Yes | Yes |
| Log Access Transaction | No | Yes | Yes | No |
| Meal Plan Group Sell | Yes | Yes | Yes | No |
| Meal Plan Remove | No | Yes | Yes | No |
| Meal Plan Sell | Yes | Yes | Yes | No |
| Meal Plan Adjust Cancel Box Lunch | No | Yes | Yes | No |
| Meal Plan Adjust Flexible Weekly | No | Yes | Yes | No |
| Meal Plan Adjust Generic | Yes | Yes | Yes | No |
| Meal Plan Adjust Swap Block Plan | No | Yes | Yes | No |
| Message Send | Yes | Yes | Yes | No |
| MyPay Get Pending Swipes By Terminal | No | Yes | Yes | No |
| Operator (System Config) | No | Yes | Yes | No |
| Operator Login | N/A | N/A | No | N/A |
| Operator Logout | No | Yes | Yes | No |
| POS Operator (System Config) | No | Yes | Yes | No |
| PIN Check | Yes | Yes | Yes | No |
| Refund Balance Process | No | Yes | Yes | No |
| Remove From Mobile Swipes | Yes | Yes | Yes | No |
| Session Create | No | Yes | Yes | No |
| System Test | N/A | N/A | No | N/A |
| Transaction PreInit | Yes | Yes | Yes | No |
| Transaction PreInit Cancel | Yes | Yes | Yes | No |
| Transaction Process | No | Yes | Yes | Yes |
| Vend Meal Plan Process | Yes | Yes | Yes | No |
| Vend Money Process | Yes | Yes | Yes | Yes |