Send Payment Link
With this API endpoint, you can export orders to Front Payment Go and get Order Uuid and Customer Uuid in return.
Endpoint
POST https://demo-api.frontpayment.no/api/v1/connect/orders/payment-link/create
Authentication
This endpoint requires a Bearer Token
for authentication. You will need to obtain this token from Frontpayment and include it in the Authorization
header of your request.
Request Payload
The request body should be a JSON object containing details about the products, order and customer.
{
"products": {
"0": {
"name": "Hair Wash",
"productId": "VFDDF",
"quantity": "1",
"rate": 51,
"discount": 0,
"tax": "0",
"amount": 51
}
},
"orderSummary": {
"subTotal": "51.00",
"totalTax": "0.00",
"totalDiscount": "0.00",
"grandTotal": "51.00"
},
"sendOrderBy": {
"sms": true,
"email": false
},
"orderDate": "1703040812",
"dueDateForPaymentLink": "1703040812",
"customerDetails": {
"type": "private",
"countryCode": "+47",
"msisdn": "46567468",
"email": "[email protected]",
"name": "Kari Nordmann",
"preferredLanguage": "en",
"personalNumber": "12345678901",
"address": {
"street": "Luramyrveien 65",
"zip": "4313",
"city": "Sandnes",
"country": "NO"
}
},
"isCreditCheckAvailable": true,
"invoiceAsPaymentOption": true,
"referenceNo": null,
"customerReference": null,
"secureDetails": true,
"callback": {
"callbackUrl": "https://example.com/callback-url"
}
}
Validation Rules
Make sure your request meets the following requirements:
Field | Type | Description |
---|---|---|
products.*.name |
required | string |
Required. Name of the product. |
products.*.productId |
nullable | string |
Nullable. Unique identifier for the product. |
products.*.quantity |
required | numeric |
Required. Quantity of the product. |
products.*.rate |
required | numeric |
Required. Rate per unit of the product. |
products.*.discount |
nullable | numeric |
Nullable. Discount applied to the product. |
products.*.tax |
required | numeric |
Required. Tax rate must be (e.g., 0 , 12 , 15 , 25 ), Unless you have other configuration unless otherwise configured. |
products.*.amount |
required | numeric |
Required. Total amount for the product line item. |
orderSummary.subTotal |
required | numeric |
Required. Subtotal of all products before tax and discount. |
orderSummary.totalTax |
required | numeric |
Required. Total tax for the order. |
orderSummary.totalDiscount |
required | numeric |
Required. Total discount for the order. |
orderSummary.grandTotal |
required | numeric |
Required. Grand total of the order. |
sendOrderBy |
required | array |
Required. Set one of this sms or email field value is true |
sendOrderBy.sms |
required | boolean |
Required. Order will send sms then set true . |
sendOrderBy.email |
required | boolean |
Required. Order will send email then set true . |
orderDate |
required | string |
Required. Provide Current / Future Date as Unix timestamp for the Date of the order. |
dueDateForPaymentLink |
required | string |
Required. Provide Future Date as Unix timestamp for the Due Date of the order. |
customerDetails.countryCode |
required | string |
Required. Country code for the customer's phone number (e.g., "+47"). |
customerDetails.msisdn |
required | string |
Required. Mobile Subscriber ISDN Number (phone number). |
customerDetails.email |
required | email |
Required. Customer's email address. |
customerDetails.name |
required | string |
Required. Customer's full name. |
customerDetails.preferredLanguage |
nullable | string |
Nullable. Customer's language (e.g., NO , EN ). Default value = NO |
customerDetails.type |
required | string |
Required. You can provide customer type is private or corporate |
customerDetails.personalNumber |
nullable | string | max:11 |
Optional. Customer's personal identification number, must be exactly 11 characters containing only numbers and cannot contain spaces. When Customer type is private then you can used this for add personal number. |
customerDetails.organizationId |
required | string |
Conditional Required. Organization identification number, must contain only numbers and cannot contain spaces. When Customer type is corporate then this field is required. Otherwise you can add this as null or remove from payload. |
customerDetails.address.street |
required | string |
Required. Street address of the customer. |
customerDetails.address.zip |
required | string |
Required. Zip code of the customer's address. |
customerDetails.address.city |
required | string |
Required. City of the customer's address. |
customerDetails.address.country |
required | string |
Required. ISO Alpha-2 country code (e.g., NO ). Custom validation IsoAlpha2Country applies. |
isCreditCheckAvailable |
required | boolean |
Required. Credit check option enable in checkout then set true . |
invoiceAsPaymentOption |
required | boolean |
Required. Enable Invoice as payment option then set true . |
referenceNo |
nullable | string |
Nullable. Any reference number. |
customerReference |
nullable | string |
Nullable. Any value for customer reference . |
secureDetails |
required | boolean |
Required. If you want to secure your order details set it true . Otherwise set it false . |
callback.callbackUrl |
required | array |
Required. The URL we will notify when order status changes. |
Response
A successful request will return a 201 Created
status with the following JSON payload:
{
"status_code": 201,
"status_message": "OK",
"message": "orderAddedSuccessfully",
"is_data": false,
"data": {
"uuid": "ODR3506777330",
"customerUuid": "CSRT3463048878"
}
}
API returns a 500
or 510
error, it means something failed on the server side
{
"status_code": 500,
"status_message": "Internal Dependency Error",
"message": "internalErrorOccurredPleaseTryAgainLater",
"is_error": true,
"errors": {
"happenedAt": "String",
"internalErrorDetails": "Array"
}
}
{
"status_code": 510,
"status_message": "Execution Exception Occurred",
"message": "somethingWentWrong",
"is_error": true,
"errors": "Array"
}