Download OpenAPI specification:Download
This section provides technical information on the FlipPay API and includes details of available endpoints.
For an overview of the API, including information on how to get started, details on the core concepts, and supporting information, please visit https://flippay.com.au/api.
Create a payment request using objects available on a nominated Merchant account.
Refer to the integration guide to confirm specific field format requirements (e.g. dates, currency, etc).
merchantId required | string The merchant Id of the merchant account the payment request should be created on - eg: M-1234-5678 |
requestAmount required | number Amount to be paid by Customer to Merchant (exclude fees, this is calculated by the platform) |
merchantReference required | string A reference for the transaction, will appear on remittance advice sent to the Merchant |
sendComms required | boolean Direct FlipPay to send payment request to customer using provided email/mobile |
smsMask | string Mask the 'sender' on an SMS (maximum of 10 characters, alphanumerical only, no special characters) - if not provided, platform defaults will apply. |
emailMask | string Mask the 'sender' on an Email - if not provided, platform defaults will apply. |
required | object Customer details used to send/display payment requests - if 'sendComms' is TRUE, this element must be populated (note that only one of email or mobile is required). |
object Contact details displayed to Customers on the payment request - if not provided, platform defaults will apply. | |
required | object |
Array of Text (object) or Number (object) or Currency (object) or Date (object) or Options list (object) or File upload (object) Create custom fields on the payment request, unique to this payment request. Note that all fields (other than file upload) are of JSON string type, but formatted into the noted types below. | |
required | object Configurable settings on the payment page displayed to Customers. |
object |
{- "requestAmount": 1000,
- "merchantReference": "merchant-reference",
- "sendComms": true,
- "smsMask": "Merch123",
- "emailMask": "Merchant name",
- "customerDetails": {
- "customerName": "John Smith",
- "customerMobile": "0412345678",
- "customerEmail": "customer@example.com",
- "message": "Example message"
}, - "contactDetails": {
- "merchantContactName": "Example Pty Ltd",
- "merchantContactPhone": "1800123456",
- "merchantContactEmail": "support@example.com"
}, - "paymentOptions": {
- "payNow": false,
- "payLater": {
- "productId": "PL-1234-5678",
- "productFields": [
- {
- "fieldId": "PF-1234-5678",
- "value": "one two three"
}
]
}
}, - "customFields": [
- {
- "label": "Favourite type of music",
- "type": "text",
- "description": "Please enter in your favourite type/genre of music",
- "displayToCustomer": true,
- "editableByCustomer": true,
- "requiredToSubmit": false,
- "value": "Rock Music"
}
], - "paymentPage": {
- "accountId": "A-1234-5678",
- "pageBranding": {
- "merchantLogo": "L-1234-5678",
- "cobrandLogo": "L-1234-5678",
- "merchantName": "Example Merchant Pty Ltd",
- "merchantAbn": "12345678910",
- "merchantAddress": "123 Nerang Street, Southport QLD, Australia",
- "merchantPhone": "0412345678",
- "merchantEmail": "merchant@example.com",
}, - "payLaterRedirect": {
- "success": {
- "header": "Thank you!",
- "body": "We appreciate your business, please click the button below if you wish to continue browsing our website",
- "button": "Continue browsing"
}, - "fail": {
- "header": "Sorry, we're unable to validate your identification",
- "body": "Please click the button below to return to our website",
- "button": "Return to website"
}
}
}, - "notifications": {
- "notificationToken": "abc123I6IjYwZWU3MzY0ODYwNGY3MmQzOTBmMGNkZCIsIm5hbWUiOi",
- "prStatus": {
- "pending": false,
- "info-required": false,
- "cancelled": false,
- "active": true,
- "complete": true
}, - "txStatus": {
- "success": true,
- "fail": false,
- "refund": true
}
}
}
{- "message": "Payment request created.",
- "paymentRequestId": "PR-1234-5678",
- "prStatus": "pending",
- "expiry": "22-12-212021-12-12-15+05:45",
- "payLaterProductEnabled": {
- "productId": "PL-1234-5678",
- "productType": "B2C_BNPL",
- "productName": "string",
- "startDate": "2021-01-01",
- "requestAmount": "200",
- "disbursementAmount": "200",
- "totalCustomerPayable": "202.00",
- "perInstalmentAmount": "50.50",
- "paymentFrequency": "Weekly",
- "numberOfPayments": "4",
- "productText": "4 interest-free payments of $50.50, Payable Weekly, First payment taken on approval"
}, - "warnings": {
- "customerEmail": "Invalid email address, not saved",
- "customerMobile": "Invalid mobile number, not saved",
- "merchantLogo": "merchantLogo not found on this merchant account.",
- "merchantPhone": "Invalid phone number, not saved.",
- "merchantWeb": "Invalid URL, not saved",
- "successButton": "Button text missing, default value applied",
- "successUrl": "Invalid URL, redirect not enabled",
- "failureButton": "Button text missing, default value applied",
- "failureUrl": "Invalid URL, redirect not enabled",
- "productFields": [
- {
- "label": "label is empty, not saved",
- "type": "type is invalid, not saved",
- "optionList": "optionList cannot be empty when type is dropdown , not saved.",
- "selectedOptions": "selectedOptions cannot be true for multiple options , not saved.",
- "displayToCustomer": "displayToCustomer is empty, not saved. displayToCustomer is invalid format, not saved.",
- "editableByCustomer": "editableByCustomer is empty, not saved. editableByCustomer is invalid format , not saved.",
- "requiredToSubmit": "requiredToSubmit is empty, not saved. requiredToSubmit is invalid format, not saved.",
- "value": "Value does not exists on options list , not saved. Date format invalid, not saved.",
- "fieldId": "fieldId not found, not saved"
}
]
}
}
All payment requests expire after 90 days.
If a customer follows a URL to an expired payment request, they will receive an error page directing them to speak to their merchant. Merchants can "resend" an expired payment request using this service, which re-activates the payment request as it was initially configured, and using the same URL.
merchantId required | string The merchant Id from the merchant account the PR was created on - eg: M-1234-5678 |
paymentRequestId required | string The Payment Request Id that is expired and is to be resent - eg: PR-1234-5678 |
sendComms | boolean FlipPay to resend Payment Request notification to Customer via Email and/or Mobile provided |
{- "sendComms": true
}
{- "message": "Payment request resent"
}
All payment requests are created and exist in a "pending" status until they expire, are cancelled, or are accepted/activated.
Merchants can cancel payment requests while they are in the "pending" status.
Cancelled payment requests cannot be resent using 'resendPR'. If a Customer follows a URL to a cancelled payment request, they will receive an error page directing them to speak to their Merchant.
merchantId required | string The merchant Id of the merchant account the payment request was created on - eg: M-1234-5678 |
paymentRequestId required | string The Payment Request Id that is to be cancelled - eg: PR-1234-5678 |
{- "message": "Payment request cancelled"
}
Retrieve all the available details contained within a payment request.
merchantId required | string The merchant Id of the merchant account the payment request was created on - eg: M-1234-5678 |
paymentRequestId required | string The payment request Id - eg: PR-1234-5678 |
{- "message": "Payment request fetched successfully.",
- "data": {
- "prStatus": "pending",
- "requestAmount": 1000,
- "templateId": "RT-1234-5678",
- "expires": "2020-01-31",
- "customerDetails": {
- "customerName": "John Smith",
- "customerMobile": "0412345678",
- "customerEmail": "customer@example.com"
}, - "contactDetails": {
- "merchantContactName": "Example Pty Ltd",
- "merchantContactPhone": "0412345678",
- "merchantContactEmail": "support@example.com"
}, - "paymentOptions": {
- "payNow": false,
- "payLaterProductEnabled": [
- {
- "productId": "PL-1234-5678",
- "productType": "B2C_BNPL",
- "productName": "Buy-Now Pay-Later Product",
- "startDate": "PL-1234-5678",
- "requestAmount": "1000",
- "disbursementAmount": "1000",
- "totalCustomerPayable": "1020.00",
- "perInstalmentAmount": "255",
- "paymentFrequency": "WEEKLY",
- "numberOfPayments": "4",
- "repaymentDate": "2020-01-31",
- "productText": "4 interest-free payments of $255.00, Payable weekly, First payment taken on approval",
- "productFields": [
- {
- "fieldId": "PF-1234-5678",
- "fieldLabel": "text field",
- "type": "text",
- "value": "abc123",
- "merchantCanUpdate": true
}
]
}
]
}, - "customFields": [
- {
- "label": "custom text field",
- "displayToCustomer": true,
- "editableByCustomer": true,
- "requiredToSubmit": false,
- "type": "text",
- "value": "abc123"
}
], - "paymentPage": {
- "accountId": "A-1234-5678",
- "pageBranding": {
- "merchantLogo": "L-1234-5678",
- "cobrandLogo": "L-1234-5678",
- "merchantName": "Example Merchant Pty Ltd",
- "merchantAbn": "12345678910",
- "merchantAddress": "123 Nerang Street, Southport QLD, Australia",
- "merchantPhone": "0412345678",
- "merchantEmail": "merchant@example.com",
}, - "payLaterRedirect": {
- "failurePayNowOption": true,
- "success": {
- "header": "Thank you!",
- "body": "We appreciate your business, please click the button below if you wish to continue browsing our website",
- "button": "Continue browsing"
}, - "fail": {
- "header": "Sorry, we're unable to validate your identification",
- "body": "Please click the button below to return to our website",
- "button": "Return to website"
}
}
}, - "notifications": {
- "notificationToken": "abc123I6IjYwZWU3MzY0ODYwNGY3MmQzOTBmMGNkZCIsIm5hbWUiOi",
- "prStatus": {
- "pending": false,
- "info-required": false,
- "cancelled": false,
- "active": true,
- "complete": true
}, - "txStatus": {
- "success": true,
- "fail": false,
- "refund": true
}
}, - "transactions": [
- {
- "date": "2020-01-31",
- "amount": "255.00",
- "type": "Success"
}
]
}
}
Some products allow updates to "product fields" while a payment plan is active. Refer to product integration guide within your Introducer/Merchant account for specific product requirements.
merchantId required | string The merchant Id of the merchant account the payment request was created on - eg: M-1234-5678 |
paymentRequestId required | string The payment request Id - eg: PR-1234-5678 |
productId required | string The Id of the product being targetted |
fieldId required | string The Id of the text field being targetted for an update |
value required | string The new value of the field being updated |
{- "productId": "PL-1234-5678",
- "fieldId": "PF-1234-5678",
- "value": "Abcdefgh"
}
{- "message": "Product field updated"
}
Files can be uploaded and attached to PR in three scenarios:
merchantId required | string The merchant Id of the merchant account the payment request was created on - eg: M-1234-5678 |
paymentRequestId required | string The payment request Id - eg: PR-1234-5678 |
customFieldId | string The custom field Id to contain the file - eg: CF-1234-5678 |
productFieldId | string The product field to contain the file - eg: PF-1234-5678 |
file required | string <binary> The file to upload into the header of the request |
{- "customFieldId": "string",
- "productFieldId": "string",
- "file": "example.pdf"
}
{- "message": "File upload success",
}
Retrieve the details of any files attached to a payment request.
merchantId required | string The merchant Id of the merchant account the payment request was created on - eg: M-1234-5678 |
paymentRequestId required | string The payment request Id - eg: PR-1234-5678 |
{- "message": "File list retrieved successfully",
}
Files can be deleted from a payment request only while the payment request is in "pending" status.
merchantId required | string The merchant Id of the merchant account the payment request was created on - eg: M-1234-5678 |
paymentRequestId required | string The payment request Id - eg: PR-1234-5678 |
fileId | string The fileId of the file which is to be deleted from the payment request |
{- "fileId": "F-1234-5678"
}
{- "message": "File deleted."
}
Upload a logo image to the merchant logo library.
merchantId required | string The merchant Id of the merchant account the logo is to be uploaded to - eg: M-1234-5678 |
file | binary The file to upload. Only .png, .jpg or .jpeg file types are accepted, with a maximum file size of 15MB. |
{- "message": "Logo uploaded",
}
Retrieve the listings of images in the logo library of a merchant.
merchantId required | string The merchantId of the merchant account containing the logo library - eg: M-1234-5678 |
{- "message": "Logo library retrieved successfully.",
}
Delete a logo image from the logo library.
merchantId required | string The merchant Id of the merchant account the logo exists on - eg: M-1234-5678 |
logoId required | string The logoId of the logo to be deleted from the logo library of a merchant - eg: L-1234-5678 |
{- "message": "Logo deleted"
}
Replace an existing logo image on the merchant logo library with a new one, retaining the same logoId.
merchantId required | string The merchant Id of the merchant account the logo exists on - eg: M-1234-5678 |
logoId required | string The logoId of the pre-existing image to be replaced - eg: L-1234-5678 |
file | binary The file to upload. Only .png, .jpg or .jpeg file types are accepted, with a maximum file size of 15MB. |
{- "message": "Logo uploaded",
}
Generate a quote for a given amount and product (as available on the Merchant account).
merchantId required | string The merchant ID of the merchant account the payment request would be created from - eg: M-1234-5678 |
productId required | string The pay-later product Id - eg: PL-1234-5678 |
requestAmount | number Amount to be paid by Customer to Merchant (exclude fees, this is calculated by the platform) |
{- "requestAmount": 1000
}
{- "message": "Quote generated successfully",
- "details": {
- "productId": "PL-1234-5678",
- "productType": "B2C_BNPL",
- "productName": "Buy-Now Pay-Later Product",
- "startDate": "PL-1234-5678",
- "requestAmount": "1000",
- "disbursementAmount": "1000",
- "totalCustomerPayable": "1020.00",
- "perInstalmentAmount": "255",
- "paymentFrequency": "WEEKLY",
- "numberOfPayments": "4",
- "repaymentDate": "2020-01-31",
- "productText": "4 interest-free payments of $255.00, Payable weekly, First payment taken on approval"
}
}
Retrieve a list of bank accounts configured on a merchant's account.
merchantId required | string The merchant Id from the merchant account the bank accounts is contain in - eg: M-1234-5678 |
{- "message": "Account list retrieved successfully",
- "accounts": [
- {
- "accountId": "A-1234-5678",
- "accountName": "Sales Bank Account"
}
]
}
Retrieve a list of products enabled on a Merchant account.
merchantId required | string The merchant Id of the merchant account that the products are sitting on - eg: M-1234-5678 |
{- "message": "Product list retrieved successfully",
- "payNow": "true",
- "products": {
- "productName": "Pay-in-4 Product",
- "productId": "PL-1234-5678"
}
}
All API endpoints relating to Introducers. Note that these endpoints are for Introducer account use ONLY
Send a request to link a Merchant account to an Introducer account (Merchant to respond via logged in user on the FlipPay web portal)
Note:
Notifications sent to the notificationUrl provided will have the following
structure:
{ "merchantId": "M-1234-5678", "linkedStatus": "linked|unlinked" }
merchantId required | string The merchant Id for the target merchant account - eg: M-1234-5678 |
notificationUrl | string Valid URL to send notifications to |
notificationToken | string Token to secure notificationUrl |
{- "notificationToken": "eyJpZCI6IjYwZWU3MzY0ODYwNGY3MmQzOTBmMGNkZCIsIm5hbWUiOi"
}
{- "message": "Link request sent successfully."
}
Create a unique/secure onboarding form for a new merchant to apply for a FlipPay merchant account
Note:
Notifications sent to the notificationUrl provided will have the following structure:
Approved
{ "onboardingId": "OB-1234-5678", "merchantId": "M-1234-5678", "applicationStatus": "approved" }
Cancelled
{ "onboardingId": "OB-1234-5678", "applicationStatus": "cancelled" }
contactName required | string Name of the person completing the application |
contactEmail required | string Valid email address for the person completing the application |
sendComms required | string Set to 'false' to prevent FlipPay from emailing the application link to the contactEmail (you will need to capture this in the response and provide to your user) - recommended to be set as 'true' |
notificationUrl | string Valid endpoint url to send webhook notifications to |
notificationToken | string The token to secure notificationUrl |
{- "contactName": "Firstname Lastname",
- "contactEmail": "merchant@example.com",
- "sendComms": "true",
- "notificationToken": "eyJpZCI6IjYwZWU3MzY0ODYwNGY3MmQzOTBmMGNkZCIsIm5hbWUiOi"
}
{- "message": "Onboarding request created",
- "details": {
- "onboardingId": "OB-1234-5678",
}
}