Download OpenAPI specification:
Novatti Payments is one of the most current and comprehensive payment platforms available in the market. This API documentation provides technical information about integrating to Novatti Payments. Where applicable, it provides links to our guides and provides more business context.
PayByLink enables merchants to generate unique payment links for invoices that can be shared with customers. These links can be sent as is or embedded into clickable 'Pay Now' buttons, or a QR Codes which can then be emailed or sent via SMS from the merchant's systems.
Webhook notifications are available for these orders upon their status change.
To generate the link, an order needs to be created in Novatti's database via the order API.
object | |
object |
{- "Header": {
- "TransactionType": "CreateOrder",
- "MerchantID": "WCSRAASL1UADDR1",
- "UserID": "123",
- "Version": "1"
}, - "Order": {
- "Type": "PaymentLink",
- "MerchantOrderNo": "b1af3ff0-0507-11ed-b939-0242ac120002",
- "Amount": 621080,
- "Currency": "AUD",
- "CustomerReference": "REF12345",
- "Customer": {
- "CustomerID": "CUST00001",
- "FirstName": "Bob",
- "LastName": "Smith",
- "MobileNo": "+61433112112"
}, - "ExpiryDays": 20,
- "LineItems": [
- {
- "Description": "Quilted Puffer",
- "Amount": 129900,
- "Quantity": 1
}
], - "PaymentLink": {
- "ExpiryDays": 20,
- "PaymentLinkDelivery": "EMAIL"
}, - "RedirectURLs": {
}
}
}object |
{- "Result": {
- "OrderNo": "4de68039-f76b-4d85-86c2-52668b329ac9",
- "Status": "SUCCESS",
- "Message": "Order creation successful.",
- "OrderTimestamp": "2024-05-20 11:36:46",
}
}| Response Code | Response Message |
|---|---|
| 200 | OK |
| 400 | Invalid Request |
| 403 | Authentication Failed |
| 500 | Internal Error |
A Direct Debit flow differs from a regular payment flow as an order has to be created instead of a payment request.
For the Direct Debit flow, merchants do not interact with the customers. Instead, merchants have the customer's bank account details and proceed to create an order with the relevant order details. The payment will then be initiated via bank account deduction.
object | |
object |
{- "Header": {
- "TransactionType": "CreateOrder",
- "MerchantID": "70000310",
- "UserID": "123",
- "Version": "1"
}, - "Order": {
- "Type": "DirectDebit",
- "Currency": "AUD",
- "Amount": 53000,
- "Description": "Club Membership Renewal",
- "MerchantOrderNo": "b1af3ff0-0507-11ed-b939-0242ac120002",
- "CustomerReference": "CustomerRef12345",
- "BankAccount": {
- "BSB": "082902",
- "No": "12345678",
- "Name": "Sam Perera"
}, - "Customer": {
- "FirstName": "Sam",
- "LastName": "Perera",
- "IPAddress": "127.1.1.1",
- "Phone": "+61433112112",
- "Address": "3 / 461 Bourke Street",
- "PostCode": "3000",
- "State": "Melbourne",
- "Country": "Australia"
}
}
}object |
{- "Result": {
- "order_id": "9f1f869d-c9f0-4745-8cf6-ee5111638f57",
- "transaction_id": "0385b9eb-0c7d-411b-929a-206815669b11",
- "message": "Direct Debit request successfully submitted. Please allow 2 business days for funds to be debited"
}
}| Response Code | Response Message |
|---|---|
| 200 | OK |
| 400 | Invalid Request |
| 500 | Internal Error |
Refunds for Direct Debit payments are also submitted as orders with the reference to the original Direct Debit Transaction. When a refund request is submitted, based on the state of the original payment, either a cancellation or refund occurs. If the original transaction has not been initiated for processing by the merchant's bank, the direct debit transaction will be cancelled and there will not be any fund transfers. If the transaction is been accepted by the bank and being processed, transaction cannot be refunded and merchant needs to wait until it is fully processed. If the transaction is fully processed and settled then refund request can be submitted.
Partial Refund Requests are accepted until the total amount for of the refund requests do not exceed the original transaction amount. However, partial refund are only possible after the original transaction has been fully processed and settled.
object | |
object |
{- "Header": {
- "TransactionType": "CreateOrder",
- "MerchantID": "70000310",
- "UserID": "123",
- "Version": "1"
}, - "Order": {
- "Type": "DirectDebitRefund",
- "Currency": "AUD",
- "Amount": 25000,
- "MerchantOrderNo": "REF-b1af3ff0-0507-11ed-b939-0242ac120002",
- "DirectDebitTransactionID": "25710a7e-0646-11ed-b939-0242ac120002"
}
}object |
{- "Result": {
- "order_id": "9f1f869d-c9f0-4745-8cf6-ee5111638f57",
- "transaction_id": "0385b9eb-0c7d-411b-929a-206815669b11",
- "message": "Direct Debit refund request successfully submitted"
}
}| Response Code | Response Message |
|---|---|
| 200 | OK |
| 400 | Invalid Request |
| 500 | Internal Error |
A payment order needs to be created via the Alternate Payments endpoint to initiate a WeChat Pay transaction.
object | |
object |
{- "Header": {
- "TransactionType": "CreateOrder",
- "MerchantID": "WCSRAASL1UADDR1",
- "UserID": "123",
- "Version": "1"
}, - "Order": {
- "Type": "WeChatPay",
- "MerchantOrderNo": "b1af3ff0-0507-11ed-b939-0242ac120002",
- "Amount": 53000,
- "Currency": "AUD",
- "Description": "Sample Order",
- "TradeType": "NATIVE",
- "SystemUserID": "TY987",
- "BillerCode": 0,
- "CustomerReference": "sample-order-123",
- "SubAccountID": "string",
- "BuyerID": "string"
}
}object |
{- "Result": {
- "OrderNo": "cc2dabdf-813b-4890-8add-8377a3e58d9c",
- "TransactionID": "2304630c-b555-4663-8a79-36d092e78470",
- "Status": "SUCCESS",
- "Message": "string",
- "SubCode": "string",
- "SubMessage": "string",
- "WxAppID": "string",
- "WxPartnerID": "string",
- "WsPrepayID": "string",
- "WxPackage": "string",
- "WxTimestamp": "string",
- "WxNonce": "string",
- "WxSignatureType": "string",
- "WxSignature": "string",
- "QRCode": "weixin://wxpay/bizpayurl?pr=TXbqqBSzz",
- "WebURL": "string"
}
}A payment order needs to be created via the Alternate Payments endpoint to initiate an Alipay transaction.
object | |
object |
{- "Header": {
- "TransactionType": "CreateOrder",
- "MerchantID": "WCSRAASL1UADDR1",
- "UserID": "123",
- "Version": "1"
}, - "Order": {
- "Type": "Alipay",
- "MerchantOrderNo": "b1af3ff0-0507-11ed-b939-0242ac120002",
- "Amount": 53000,
- "Currency": "AUD",
- "Description": "Sample Order",
- "TradeType": "PRE_ORDER",
- "BillerCode": 0,
- "BuyerID": "2088123456789012",
- "CustomerReference": "sample-order-123",
- "SystemUserID": "TY987",
- "AdditionalDetails": { }
}
}object |
{- "Result": {
- "OrderNo": "cc2dabdf-813b-4890-8add-8377a3e58d9c",
- "TransactionID": "2304630c-b555-4663-8a79-36d092e78470",
- "Status": "SUCCESS",
- "Message": "string",
- "SubCode": "string",
- "SubMessage": "string",
- "TradeNo": "string",
}
}A payment order needs to be created via the Alternate Payments endpoint to initiate an Alipay-Web transaction.
object | |
object |
{- "Header": {
- "TransactionType": "CreateOrder",
- "MerchantID": "WCSRAASL1UADDR1",
- "UserID": "123",
- "Version": "1"
}, - "Order": {
- "Type": "Alipay-Web",
- "MerchantOrderNo": "b1af3ff0-0507-11ed-b939-0242ac120002",
- "Amount": 53000,
- "TradeType": "WEB",
- "BillerCode": 0,
- "BuyerID": "string",
- "SystemUserID": "string",
- "Currency": "AUD",
- "Description": "Sample Order",
- "CustomerReference": "sample-order-123",
- "AdditionalDetails": { },
- "AppPay": false,
- "OrderTimeout": "10m",
- "ReturnURL": "string"
}
}object |
{- "Result": {
- "OrderNo": "cc2dabdf-813b-4890-8add-8377a3e58d9c",
- "TransactionID": "2304630c-b555-4663-8a79-36d092e78470",
- "Status": "SUCCESS",
- "Message": "string",
- "SubCode": "string",
- "SubMessage": "string",
- "OrderTimestamp": "2024-01-26 15:37:12",
- "ApSignature": "service=create_forex_trade&partner=2088231732555830&_input_charset=UTF-8&product_code=NEW_OVERSEAS_SELLER"
}
}A payment order needs to be created via the Alternate Payments endpoint to initiate an Alipay-InApp transaction.
object | |
object |
{- "Header": {
- "TransactionType": "CreateOrder",
- "MerchantID": "WCSRAASL1UADDR1",
- "UserID": "123",
- "Version": "1"
}, - "Order": {
- "Type": "Alipay-InApp",
- "MerchantOrderNo": "b1af3ff0-0507-11ed-b939-0242ac120002",
- "Amount": 53000,
- "TradeType": "InApp",
- "BillerCode": 0,
- "SystemUserID": "string",
- "Currency": "AUD",
- "Description": "Sample Order",
- "CustomerReference": "sample-order-123",
- "AdditionalDetails": { },
- "OrderTimeout": "10m"
}
}object |
{- "Result": {
- "OrderNo": "cc2dabdf-813b-4890-8add-8377a3e58d9c",
- "TransactionID": "2304630c-b555-4663-8a79-36d092e78470",
- "Status": "SUCCESS",
- "Message": "string",
- "SubCode": "string",
- "SubMessage": "string",
- "OrderTimestamp": "2024-01-26 15:37:12",
- "ApSignature": "service=create_forex_trade&partner=2088231732555830&_input_charset=UTF-8&product_code=NEW_OVERSEAS_SELLER"
}
}A payment order needs to be created via the Alternate Payments endpoint to initiate a UnionPay transaction.
object | |
object |
{- "Header": {
- "TransactionType": "CreateOrder",
- "MerchantID": "WCSRAASL1UADDR1",
- "UserID": "123",
- "Version": "1"
}, - "Order": {
- "Type": "UnionPay",
- "MerchantOrderNo": "b1af3ff0-0507-11ed-b939-0242ac120002",
- "Amount": 53000,
- "Currency": "AUD",
- "Description": "Sample Order",
- "TransactionType": "PRE_AUTH",
- "BillerCode": 0,
- "CustomerReference": "sample-order-123",
- "SystemUserID": "TY987",
- "PageLanguage": "string",
}
}object |
{- "Result": {
- "OrderNo": "cc2dabdf-813b-4890-8add-8377a3e58d9c",
- "TransactionID": "2304630c-b555-4663-8a79-36d092e78470",
- "Status": "SUCCESS",
- "Message": "string",
- "SubCode": "string",
- "SubMessage": "string",
- "OrderTimestamp": "2023-08-30 06:25:15"
}
}