Skip to main content

API Reference

This section describes all common data objects and endpoints available in the API. Each endpoint definition includes its request parameters, response fields, data types, example values, and usage notes.

1. Auth APIs

Authenticate POS Account

Authenticates a POS account and returns access and refresh tokens for subsequent API requests.

Request

FieldTypeRequiredDescription
posIdstringMandatoryRegistered POS Account ID.
passwordstringMandatoryPlain text password.

Example

POST /auth/login
Content-Type: application/json

{
"posId": "fiuuPos1",
"password": "yourStrongPassword"
}

Response

FieldTypeDescription
access.tokenstringBearer token used for subsequent API calls.
access.expiresAtstring (ISO 8601)Expiration timestamp of the access token.
refresh.tokenstringToken used to refresh the access token when expired.
refresh.expiresAtstring (ISO 8601)Expiration timestamp of the refresh token.

Example

{
"access": {
"token": "eyJhbGciOiJIUzI1NiIsInR...",
"expiresAt": "YYYY-MM-DDTHH:mm:ss.SSS±HH:mm"
},
"refresh": {
"token": "eyJhbGciOiJIUzI1NiIsInR...",
"expiresAt": "YYYY-MM-DDTHH:mm:ss.SSS±HH:mm"
}
}

Refresh Access Token

Refreshes an expired access token using a valid refresh token.

Request

FieldTypeRequiredDescription
Bearer <refresh_token>stringMandatoryPreviously issued refresh token.

Example

POST /auth/refresh
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...

Response

FieldTypeDescription
access.tokenstringBearer token used for subsequent API calls.
access.expiresAtstringExpiration time of the access token in ISO 8601 extended format with time zone offset.
refresh.tokenstringToken used to refresh the access token when expired.
refresh.expiresAtstring (ISO 8601)Expiration timestamp of the refresh token.

Example

{
"access": {
"token": "eyJhbGciOiJIUzI1NiIsInR...",
"expiresAt": "YYYY-MM-DDTHH:mm:ss.SSS±HH:mm"
},
"refresh": {
"token": "eyJhbGciOiJIUzI1NiIsInR...",
"expiresAt": "YYYY-MM-DDTHH:mm:ss.SSS±HH:mm"
}
}

2. Bind Terminal APIs

Generate Terminal Binding Code

Generates a temporary binding key that can be used by a terminal to associate itself with a POS account.

Request

NameTypeRequiredDescription
optionstringNoSpecifies the response format. Use image to receive the response as an image.

Example

Default request (without option)

GET /api/bind-terminal-key
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...

Request with option=image

GET /api/bind-terminal-key?option=image
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...

Response

Returns a response based on the specified request parameters.

ScenarioContent-TypeDescription
Defaultapplication/jsonReturns metadata for the bind terminal key
option=imageimage/pngReturns the bind terminal key as an image

JSON Response Fields

FieldTypeDescription
keystringGenerated code used by the terminal to bind.
expiresAtstring (ISO 8601)Expiration timestamp of the generated key.

Register Terminals for Prebind

Registers a list of terminal unique IDs for prebinding with a POS account.

  • A maximum of 10 terminals can be registered per request.
  • Any excess entries will be ignored.
  • Repeated requests will replace the existing prebind list.

Request

FieldTypeRequiredDescription
uniqueIdsstring[]MandatoryList of terminal unique IDs to be prebound to the POS.

Example

POST /api/prebind-terminals
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...

{
"uniqueIds": ["terminalUniqueID1", "terminalUniqueID2", "terminalUniqueID3"]
}

Response

{
"code": 20000,
"message": "Operation completed successfully."
}

Retrieve Prebound Terminals

Retrieves the list of terminals currently registered for prebinding.

Request

GET /api/prebind-terminals
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...

Response

{
"data": ["terminalUniqueID1", "terminalUniqueID2", "terminalUniqueID3"]
}

3. Terminal Management API

Returns the list of terminals associated with the POS account and their connection status.

List POS Terminals

Request

GET /api/terminals
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...

Response

FieldTypeDescription
terminalIdstringUnique ID of the terminal (assigned by Fiuu).
connectedbooleanConnection status of the terminal to cloudECR.
isVTnumberTerminal type flag: 1 = Fiuu VT+, 0 = other terminals.

Example

{
"data": [
{
"terminalId": "terminalUniqueID1",
"connected": true,
"isVT": 1
},
{
"terminalId": "terminalUniqueID2",
"connected": false,
"isVT": 0
}
]
}

4. Channel API

List Supported Payment Channels

Returns the list of supported e-wallet channels and their availability status.

Request

GET /api/ewallet-channels?currency=MYR
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...

Response

FieldTypeDescription
namestringName of the channel.
statusstringChannel status: 0 = inactive, 1 = active.
currencystring[]List of currencies supported by the channel.
logoUrl3stringURL of the channel’s logo.

Example

{
"data": [
{
"name": "channel1",
"status": 1,
"currency": ["MYR", "SGD"],
"logoUrl3": "https://sample-logo.url"
},
{
"name": "channel2",
"status": 0,
"currency": ["MYR", "USD", "SGD", "IDR", "PHP"],
"logoUrl3": "https://sample-logo.url"
}
]
}

5. Transfer API

Defines transaction request and response formats for payment operations, including sale, cash out, and void transactions.

Initiate Transfer Request

Initiates a transaction request from the POS to the terminal or payment channel.

ParameterDescriptionTypeRequiredRemarks
TransTypeTransaction TypeString(32)MandatoryTransaction identifier. E.g.: sale
posIdPOS IDString(24)MandatoryPOS ID given by Fiuu
merchantIdMerchant IDString(100)MandatoryUnique merchant ID assigned by Fiuu
deviceIdDevice IdentifierString(100)MandatorySingle POS may have multiple Devices (uniqueId)
referenceIdReference IDString(20)MandatoryUnique identifier per transaction, generated by POS. Used to match requests and responses.
referenceLabelLabel to be printed on receiptString(10)OptionalIf not provided, Terminal/Fiuu VT+ will print "POS Ref" as a default label
transDataTransaction DataJSONObjectConditionalJSON object with details specific to each transaction type. Not required for some transTypes.
apiVersionAPI VersionString(3)MandatoryVersion of cloudECR API starts with prefix "v" followed by the version number
datetimeTime stampString (ISO 8601)MandatoryShould be in UTC, formatted as YYYYMMDDTHHMMSS for accurate event tracking.
signatureSignatureString(64)MandatoryDigital signature for authenticating the request. Must be computed based on included fields.

Common Transfer Parameters

Describes commonly used parameters and enumerations for transfer requests.

transType

Defines the type of transaction.

  • sale – Standard purchase.
  • cashOut – Purchase with cash out (only for MyDebit channel).
  • void – Cancel a specific transaction.
  • walletInquiry – Check wallet transaction when status is pending.
  • getLast – Retrieve the last transaction result from Terminal/Fiuu VT+.

paymentMethod

Specifies the payment method used.

  • qrCustScan – Merchant-presented QR.
  • qrMerchScan – Customer-presented QR.
  • bankCard – Credit, debit, or prepaid card.

paymentChannel

  • Required only when using the qrCustScan payment method.
  • Use GET /api/ewallet-channels?currency={CUR} to retrieve the list of available e-wallet channels.

entryMode

Indicates how the card data is entered.

  • contact – Card inserted.
  • contactless – Card tapped.
  • manual – Card details entered manually.
  • fallback – Alternative entry mode (used when primary method fails).

cvmType

Represents the Cardholder Verification Method (CVM).

  • 00 – No CVM – No PIN or signature required.
  • 01 – Signature – Signature required.
  • 02 – Online PIN – PIN verified online.
  • 03 – Offline PIN – PIN verified offline.
  • 04 – CDCVM – Consumer Device CVM (no PIN or signature required).

printCount

Controls receipt printing behavior.

  • 0 – No receipt.
  • 1 – Merchant copy only.
  • 2 – Merchant and customer copies.

statusCode

Possible transaction response codes.

  • 00 – Success.
  • 11 – Failure.
  • 22 – Pending.

transData for Sale or CashOut

KeyDescriptionTypeRequiredChannelRemarks
transAmtTransaction AmountString(12)MandatoryAllTransaction Amount. Positive number. Always 2 decimal places with "." As a decimal point. 1.11 means 1 dollar and 11 cents
cashAmtCash Out AmountString(12)ConditionalBank CardOnly for CashOut. Same format as transAmt
paymentMethodPayment MethodString(32)MandatoryAllBank Card or QR
paymentChannelPayment ChannelString(32)ConditionaleWalletRequired for eWallet (merchant presented) transactions
productIndexProduct IndexString(2)OptionalAllFor POS to categorized payment per product, up to 10
promoSaleSale PromotionString(2)OptionalBank CardIf card BIN is not under promo, transaction will be declined
notePrint NoteString(128)OptionalAllIt will be printed on terminal receipt remarks area
printCountNumber of printsNumber(1)OptionalAllNumber of receipts to be printed. If not given, default is 2 (Merchant and Customer copy)
metadataCustom fieldString(128)OptionalAllUse to store additional information relevant to the transaction.

Example

POST /api/transfer
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...

{
"transType": "sale",
"posId": "fiuuPos1",
"merchantId": "fiuuMerch1",
"deviceId": "fiuuDeviceId1",
"referenceId": "fiuuPosRefId1",
"referenceLabel": "Contrib ID",
"apiVersion": "v1",
"datetime": "20250115081928",
"transData": {
"transAmt": "1.00",
"paymentMethod": "bankCard",
"note": "This is a test note"
},
"signature": "1e64016959808ee62cd5f13f379314d15c0d06a776bda76d6bf2d4222d607eb2"
}

transData for Void

KeyDescriptionTypeRequiredChannelRemarks
transIdTransaction IDNumber(10)MandatoryAllUnique identifier given by Fiuu for transaction reference purpose
invNoTerminal Running NumbersString(32)OptionalAllMain Reference is the transId
productIndexProduct IndexString(2)OptionalAllFor POS to categorized payment per product, up to 10
promoSaleSale PromotionString(2)OptionalBank CardIf card BIN is not under promo, transaction will be declined
printCountNumber of printsNumber(1)OptionalAllNumber of receipts to be printed. If not given, default is 2 (Merchant and Customer copy)
metadataCustom fieldString(128)OptionalAllUse to store additional information relevant to the transaction.

Example

{
"transType": "void",
"posId": "fiuuPos1",
"merchantId": "fiuuMerch1",
"deviceId": "fiuuDeviceId1",
"referenceId": "fiuuPosRefId1",
"referenceLabel": "Contrib ID",
"apiVersion": "v1",
"datetime": "20250115084536",
"transData": {
"transId": "1516809",
"invNo": "000001"
},
"signature": "3f1e0814fb7861739ee12ce114ebfa906cc3c76bf9e141c7ca1316b61a93c142"
}

Transfer Response

Returns the final result of a transaction request, including status, channel response, and transaction details.

ParameterDescriptionTypeRequiredRemarks
transTypeTransaction TypeString(32)MandatoryTransaction identifier. E.g.: sale
posIdPOS Account IDString(24)MandatoryPOS Account ID given by Fiuu
deviceIdDevice IdentifierString(100)MandatorySingle POS may have multiple Devices (uniqueId)
referenceIdReference IDString(20)MandatoryIdentical to request
statusCodeTransaction request statusString(2)Mandatory00 = Success, 11 = Failure, 22 = Pending
responseCodeChannel Response CodeString(32)MandatoryIndicating the result of the transaction returned by the Channel. If statusCode is not Success (11 or 22), may refer here for exact code.
responseTextText to Display on POSString(128)OptionalMessage to display on the POS screen, especially in case of errors, to help users understand the issue.
softwareVersionSoftware VersionString(40)MandatoryVersion of the terminal or Fiuu VT+ software.
terminalSnSerial NumberString(40)MandatoryTerminal/Fiuu VT+ Serial Number
transDataTransaction DataJSONObjectConditionalContains additional data based on the transaction type. Not required for every response type.
apiVersionAPI VersionString(3)MandatoryVersion of cloudECR API starts with prefix "v" followed by the version number.
signatureSignatureString(64)MandatoryDigital signature for validating the response’s integrity. Generated based on response parameters.

transData for Sale or CashOut

KeyDescriptionTypeRequiredChannelRemarks
transIdTransaction IDNumber(10)MandatoryAllUnique identifier given by Fiuu for transaction reference purpose
paymentChannelPayment MethodString(32)MandatoryAllvisa, mastercard, upi, tng, etc.
transAmtTransaction AmountString(12)MandatoryAllTransaction Amount. 1.11 means 1 dollar and 11 cents
cashAmtCash Out AmountString(12)ConditionalBank CardOnly for CashOut. Same format as transAmt
transDateTimeTransaction completion timedatetimeMandatoryAllyyyy-MM-ddTHH:mm:ss
currencyTransaction CurrencyString (10)MandatoryAllMYR, SGD, PHP
cardNoCard NumberString(32)ConditionalBank CardMasked Card PAN (Mask with ‘x’ just show last 4 digits). Eg: 554433xxxxxx1234
invNoTerminal Running NumbersString(32)MandatoryAllRunning numbers generated by terminal
batchNoBatch NumberString(32)OptionalAllBatch Number
tidTerminal IDString(32)MandatoryAllTerminal ID
midMerchant IDString(32)MandatoryAllMerchant ID
entryModeEntry ModeString(32)ConditionalBank CardChip, Contactless, Magstripe, Fallback
rrnRetrieval Reference NumberString(32)ConditionalBank CardRetrieval Reference Number
apprCodeAuthentication NumberString(32)ConditionalBank CardAuthentication Number
tvrTerminal Verification ResultString(32)ConditionalBank CardEMV Terminal Verification Result 
appCryptApplication CryptogramString(32)ConditionalBank CardEMV Application Cryptogram
aidApplication IDString(32)ConditionalBank CardEMV Application ID
cvmTypeCVM TypeString(2)ConditionalBank CardCVM Type
cardLabelCard LabelString(32)ConditionalBank CardCard Label
cardHoldersNameCard Holders NameString(32)OptionalBank CardCard Holders Name
metadataCustom fieldString(128)OptionalAllUse to return additional information relevant to the transaction.

Example

{
"transType": "sale",
"posId": "fiuuPos1",
"deviceId": "fiuuDeviceId1",
"referenceId": "fiuuPosRefId1",
"apiVersion": "v1",
"statusCode": "00",
"responseCode": "00",
"responseText": "Approved",
"terminalSn": "dd8455778fa848f4",
"softwareVersion": "Version 3.4.17",
"transData": {
"transId": "1516809",
"paymentChannel": "mastercard",
"transAmt": "1.00",
"transDateTime": "2025-01-15T16:20:22",
"currency": "MYR",
"cardNo": "************7364",
"invNo": "000001",
"tid": "91100033",
"mid": "603778000000001",
"entryMode": "contactless",
"rrn": "000003211036",
"apprCode": "F99136",
"tvr": "0000008001",
"appCrypt": "d52e865f3f79d1d0",
"aid": "A0000000041010",
"cvmType": "00",
"cardLabel": "Mastercard"
},
"signature": " cbf3a71dbced277381850ef9ca1eba46ed45a98d4e5e0ba54da6423e55f187ee"
}

transData for Void

KeyDescriptionTypeRequiredChannelRemarks
transIdTransaction IDNumber(10)MandatoryAllUnique identifier given by Fiuu for transaction reference purpose
paymentChannelPayment MethodString(32)MandatoryAllvisa, mastercard, upi, tng, etc.
transAmtTransaction AmountString(12)MandatoryAllTransaction Amount. 1.11 means 1 dollar and 11 cents
cashAmtCash Out AmountString(12)ConditionalBank CardOnly for CashOut. Same format as transAmt
transDateTimeTransaction completion timedatetimeMandatoryAllyyyy-MM-ddTHH:mm:ss
currencyTransaction CurrencyString (10)MandatoryAllMYR, SGD, PHP
cardNoCard NumberString(32)ConditionalBank CardMasked Card PAN (Mask with ‘x’ just show last 4 digits). Eg: 554433xxxxxx1234
invNoTerminal Running NumbersString(32)MandatoryAllRunning numbers generated by terminal
batchNoBatch NumberString(32)OptionalAllBatch Number
tidTerminal IDString(32)MandatoryAllTerminal ID
midMerchant IDString(32)MandatoryAllMerchant ID
entryModeEntry ModeString(32)ConditionalBank CardChip, Contactless, Magstripe, Fallback
rrnRetrieval Reference NumberString(32)ConditionalBank CardRetrieval Reference Number
apprCodeAuthentication NumberString(32)ConditionalBank CardAuthentication Number
tvrTerminal Verification ResultString(32)ConditionalBank CardEMV Terminal Verification Result 
appCryptApplication CryptogramString(32)ConditionalBank CardEMV Application Cryptogram
aidApplication IDString(32)ConditionalBank CardEMV Application ID
cvmTypeCVM TypeString(2)ConditionalBank CardCVM Type
cardLabelCard LabelString(32)ConditionalBank CardCard Label
cardHoldersNameCard Holders NameString(32)OptionalBank CardCard Holders Name
metadataCustom fieldString(128)OptionalAllUse to return additional information relevant to the transaction.

Example

{
"transType": "void",
"posId": "fiuuPos1",
"deviceId": "fiuuDeviceId1",
"referenceId": "fiuuPosRefId1",
"apiVersion": "v1",
"responseCode": "00",
"responseText": "Successfully void payment",
"terminalSn": "dd8455778fa848f4",
"softwareVersion": "Version 3.4.17",
"transData": {
"cardNo": "************7364",
"entryMode": "contactless",
"rrn": "000076822649",
"apprCode": "563108",
"tvr": "8000008000",
"appCrypt": "02636923643fc3b2",
"aid": "A0000000041010",
"cvmType": "00",
"cardLabel": "Mastercard",
"paymentChannel": "mastercard",
"transAmt": "1.00",
"transDateTime": "2025-01-15T16:45:22",
"transId": "1516809",
"invNo": "000001",
"batchNo": "",
"tid": "91100033",
"mid": "603778000000001",
"currency": "MYR"
},
"statusCode": "00",
"signature": "8b06515656c8bdc0c466d16c4fa3dbe6af8c402db1ac6b064579843734c11ac8"
}