Skip to main content

Initiate Transaction API

Flow diagram

Flow diagram for payment processing via API

Payment Flow

Use Case

This API will be used to create a transaction

Request

POST /v2/payments

ParameterTypeRequiredDescription
merchantIdStringFundiin provides MID as a unique identifier to each merchant.
referenceIdStringUnique identifier generated by the merchant for this charge transaction
REGEX: ^[0-9a-zA-Z_:-]60$
storeIdStringThe store Id that is processing the payment
requestTypeStringinstallment
langStringLanguage of returned message (vi or en), If not included, the default is en.
extraDataStringAdditional data, defined by Merchant
paymentMethodStringAPP, POS, WEB.
terminalTypeStringThe terminal type of which the merchant service applies to.
DESKTOP_BROWSER, MOBILE_BROWSER, MOBILE_APP
descriptionStringDescription for the order.
successRedirectUrlStringRedirect to this url after successful
unSuccessRedirectUrlStringRedirect to this url after unsuccessful
amount.valueNumberThe amount of the transaction
amount.currencyStringVND
installmentJsonObjectInstallmentInfo
itemsJsonArrayMaximum: 200 items.
Items
orderHistoryJsonArrayMerchant's order history (10 most recent orders). Maximum: 10 orders
Order History
customerJsonObjectUser information contains user details like email, phone number etc.
Customer Info
sellerJsonObjectSeller information contains seller details like email, phone number etc.
Seller Info
shippingJsonObjectThis contain the shipping info for an order.
Shipping Info
sendSmsBooleanFlag whether SMS to be sent to customer by Fundiin.
sendEmailBooleanFlag whether Email to be sent to customer by Fundiin.

Data of installment

AttributeTypeRequiredDescription
packageIdString

Data of each items

AttributeTypeRequiredDescription
productIdStringThe Id of item.
productNameStringThe name of item.
descriptionStringThe description of item.
categoryStringThe type of item.
currencyStringVND
quantityIntegerQuantity number of each item. It must be greater than 0
priceNumberPrice of single unit item
totalAmountNumberprice x quantity
imageUrlStringLink image of product.

Data of customer

AttributeTypeRequiredDescription
phoneNumberStringMobile number of user. number must have size equals 10 or 11.
096, 0164
rankStringCustomer segmentation.
descriptionStringDescription of the customer.
emailStringValid email of the user.
firstNameStringThe first name.
lastNameStringThe last name.
genderStringThe following values are permitted: M : Male, F: Female, U: UNKNOWN.
dateOfBirthStringThe customer's date of birth.
Format ISO-8601: DD-MM-YYYY

Data of seller

AttributeTypeRequiredDescription
idStringSeller Id, Unique identifier generated by the merchant for this seller
emailStringValid email of the user.
nameStringSeller Name.
addressStringAddress of seller

Data of shipping

AttributeTypeRequiredDescription
cityStringThe city of address Shipping.
zipCodeStringThe zipCode of address Shipping.
districtStringThe district of address Shipping.
wardStringThe ward of address Shipping.
streetStringThe street of address Shipping.
streetNumberStringThe streetNumber of address Shipping.
houseNumberStringThe houseNumber of address Shipping.
houseExtensionStringThe houseExtension of address Shipping.
countryStringThe country of address Shipping.

Data of each orderHistory

AttributeTypeRequiredDescription
orderIdStringThe Id of order..
amountStringThe total amount of order.
paymentMethodStringCARD, WALLET, BANK TRANSFER, COD, PGW
purchasedAtStringTime the order was placed.
Format ISO-8601 DD-MM-YYYY
statusStringStatus of the order
PROCESSING, SUCCESS, FAIL, CANCELED, REFUNDED

Example Request

{
"merchantId": "Your merchant code",
"referenceId": "Your order number",
"storeId": "Your store id",
"requestType": "onetime",
"patmentMethod": "paymentMethod",
"lang": "vi",
"extraData": "jsonstring",
"description": "description",
"successRedirectUrl": "domain.com",
"unSuccessRedirectUrl": "domain.com",
"installment": {
"packageId": "packageId"
},
"amount": {
"currency": "VND",
"value": 400000
},
"items": [
{
"productId": "170594",
"productName": "clothes",
"description": "Red",
"quantity": 2,
"price": 200000,
"currency": "VND",
"totalAmount": 400000
}
],
"customer": {
"phoneNumber": "0912345678",
"email": "youremail@email.com",
"firstName": "Doe",
"lastName": "Test",
"gender": "F",
"dateOfBirth": "17-04-1999"
},
"shipping": {
"city": "Ho Chi Minh",
"zipCode": "00700",
"district": "5",
"ward": "",
"street": "Tran Nhan Ton",
"streetNumber": "Apt 214",
"houseNumber": null,
"houseExtension": null,
"country": "VN"
}
}

Response

ParameterTypeRequiredDescription
merchantIdStringIdentification of the merchant that was issued when registering with Fundiin.
referenceIdStringOrder number for the charge transaction.
responseTimeStringDate & Time of response:
Format: YYYY-MM-DD hh:mm:ss
resultStatusStringResult status
resultMsgStringThe result message which contains information about the result.
paymentUrlStringPayment URL
qrDataStringQr Code Data

By default expiry time for the order created is 30 minutes from order creation time stamp. If this needs to be extended for more than 30 minutes please contact Fundiin.

{
"merchantId": "FundiinVN",
"referenceId": "Your order number",
"responseTime": "2023-07-24 09:33:55",
"resultMsg": "Thành công",
"resultStatus": "APPROVED",
"paymentUrl": "https://fundiin.vn/v2/payment",
"qrData": "https://fundiin.vn/v2/payment"
}

Result Status & Messages

Status codeDescriptionAction to take
APPROVEDThe transaction was successfully initialized.Proceed with the transaction as normal.
ACCESS_DENIEDAccess denied.Please check your settings in the merchant portal or contact Fundiin for configurations.
INVALID_REQUESTInvalid request. e.g., Invalid currency, invalid amount, etc.Ensure that the request parameters are correct and meet the API requirements.
INVALID_REFERENCE_IDThe referenceId is invalid.Please retry with a different referenceId.
INVALID_STORE_IDThe storeId is invalid.Please retry with a correct storeId.
DUPLICATE_REFERENCE_IDThe referenceId is duplicated.You can inquire about this referenceId in transaction status, or retry with a different referenceId.
INVALID_CLIENT_IDThe clientId is not registered.Make sure to use a valid and registered clientId for the request.
INVALID_SIGNATUREThe signature is invalid.Double-check the signature generation process to ensure its correctness.
INVALID_MERCHANT_IDThe merchant is not registered.Ensure that the merchant ID is correct and registered with Fundiin.
INVALID_HTTP_METHODThe server does not implement the requested HTTPS method.Use the correct HTTP method (e.g., GET, POST, etc.) when making the request.
INVALID_APIAPI is not defined.Check whether the request URL is correct. Ensure that the endpoint of the called API is correct.
INVALID_AMOUNTPayment amount is invalid.Verify the payment amount and provide a valid amount.
PHONE_NUMBER_UNAVAILABLEPhone number is unavailable.Make sure the length of the phone number equals 10 or 11.
PHONE_NUMBER_INVALIDPhone number is invalid.Provide a valid phone number.
AMOUNT_EXCEEDED_UPPER_LIMITThe payment amount exceeds the limit at the merchant level or account level.Adjust the payment amount to be within the specified limit.
AMOUNT_BELOW_MINIMUM_LIMITThe payment amount is below the minimum limit.Increase the payment amount to meet the minimum limit.
REQUEST_PROCESSINGThe request has already been processed or is in progress.Monitor the transaction status or take appropriate action based on the current progress.
DOWNSTREAM_ERRORPartner downstream timeout. (Retriable)Retry the request later, as the error might be temporary due to partner-related issues.
ERROR_GENERALDeclined due to general reasons other than the specific decline error codes provided.Contact Fundiin support for assistance in identifying and resolving the general issue.