Send Invoice
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/invoice/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"
},
"orderDate": "1703040812",
"customerDetails": {
"type": "private",
"countryCode": "+47",
"msisdn": "46567468",
"email": "[email protected]",
"name": "Kari Nordmann",
"preferredLanguage": "en",
"personalNumber": "12345678901,
"organizationId": null,
"address": {
"street": "Luramyrveien 65",
"zip": "4313",
"city": "Sandnes",
"country": "NO"
}
},
"invoiceInterval": 0,
"invoiceMaturity": 10,
"invoiceFeeApplicable": true,
"separateInvoices": true,
"referenceNo": null,
"customerReference": null,
"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 |
Optional 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 |
Optional 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. |
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. |
orderDate |
required | string |
Required Unix timestamp for the Date of the order. |
customerDetails.countryCode |
required | string |
Required |
customerDetails.msisdn |
required | string |
Required |
customerDetails.email |
required | email |
Required |
customerDetails.name |
required |
|
Required |
customerDetails.preferredLanguage |
nullable | string |
Optionalen , no , sv , da , de . If nothing is given it will set default to no . |
customerDetails.type |
required | string |
Requiredprivate or corporate . |
customerDetails.personalNumber |
nullable | string
|
Optionalprivate code> then you can used this for add personal number. |
customerDetails.organizationId |
required | string |
Conditional Requiredcorporate code> then this field is required. Otherwise you can add this as null code> or remove from payload. |
customerDetails.address.street |
required | string |
Conditional Required |
customerDetails.address.zip |
required | string |
Conditional Required |
customerDetails.address.city |
required | string |
Conditional Required |
customerDetails.address.country |
required | string |
Conditional Required `NO`). Custom validation `IsoAlpha2Country` applies. |
invoiceInterval |
sometimes | numeric |
Optional0 . You can change it to 0 , 1 , 2 . Daily = 0 , Once a month = 1 , Twice a month = 2 . |
invoiceFeeApplicable |
required | boolean |
Requiredtrue . |
invoiceMaturity |
sometimes | numeric |
Optional10 . if you want to set the value then give your value 0 or 10 . |
separateInvoices |
sometimes | boolean |
Optionaltrue . |
referenceNo |
nullable | string |
Nullable |
customerReference |
nullable | string |
Nullable |
callback.callbackUrl |
required |
|
Required |
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"
}
Notifications via Callback URL
The callbackUrl
is an endpoint on your server that our system will call via an HTTP GET
request whenever the status of the specified order changes from its initial state.
See the link below to understand how to work with the callback URL on your side and how to verify the request sent from our side.