The SalePayments resource allows getting detailed info about Prepayments, Payments and Refunds for particular Sale or for all sales, create new payment or update existing and delete payment. This is how you call it:


· /SalePayments – returns paginated list with first 100 payments for tenant.

· /SalePayments?page=2&limit=200&taskid=E6E8163F-6911-40e9-B740-90E5A0A3A996 – returns list of 200 payments for sale task with specified ID, started from 201 to 400 payment.


The full range of URIs and HTTP Verbs supported are:

Operation

HTTP Action

List of paginated Payments for Tenant

GET /SalePayments/

Create new Payment

POST /SalePayments

Modify Payment

PUT /SalePayments

Delete Payment

DELETE /SalePayments/{id}


These filters can be used with the GET SalePayments endpoint:

Filter

Description

limit

Specifies the page size for pagination. Default page size is 100.

taskid

Only return prepayments, payments and refunds for specified Sale task.

Filters are used by adding the filter and value to the URI: /SalePayments?page=2&limit=500&taskid= E6E8163F-6911-40e9-B740-90E5A0A3A996

 

Available Fields for Payment:

Property

Type

Length

Required

Notes

TaskID

String

50

Yes

Identifier for Sale task, which current payment belongs to

ID

String

50

 

Ignored for POST, Required for PUT and DELETE

Reference

String

50

Payment reference number

Amount

Decimal with up to 2 decimal places

Yes

Payment amount in customer currency

DatePaid

Date

Yes

Date when payment has been made

Account

String

50

Yes

Account Code of the bank/payment account from Chart of accounts

CurrencyRate

Decimal with up to 5 decimal places

Yes

Currency Conversion rate expressed as number of Base currency units for one Customer currency unit.

DateCreated

Date

 

 

Date of creation payment record. Ignored for POST, PUT.

Type

String enum

 

Yes

See valid values below

 

Valid values for Type:

Value

Description

PREPAYMENT

Prepayment

PAYMENT

Regular payment

REFUND

Refund payment

 

Create new Payment

To create new Payment you need to send POST request to SalePayments endpoint with Payment structure (see above) as payload.


Payment creation details

The following properties of the Payment are read-only for POST request. If any of these properties are included in the request, it will be ignored.

· ID

· DateCreated

 

The properties marked “Required” are required for POST request. The request won’t be fulfilled unless these properties are valid.


Sample of payload

POST /SalePayments

{
 "TaskID": "E6E8163F-6911-40e9-B740-90E5A0A3A996",
  "Reference": "Test payment",
 "Amount": 12.45,
 "DatePaid": "2015/01/01",
 "Account": "620",
 "CurrencyRate": 1.12,
 "Type": "PREPAYMENT"
}

 

Return value

In case if no errors occurred you will receive response with newly created Payment structure, otherwise you will receive response with error list, like this:

[{
“ErrorCode”:400,
“Exception”:”Error explanation will be here”
},
{
“ErrorCode”:400,
“Exception”:”Amount can’t be negative”
}]

 

Update existing Payment

To update Payment you need to send PUT request to SalePayments endpoint with part of Payment structure as payload. You also could provide full structure’s data as payload, but in this case all not read-only fields will be updated.


Payment update details

The following properties of the Payment are read-only for PUT request. You can’t update it.

· ID

· DateCreated

· TaskID

· Type

All provided fields of Payment, except read-only fields will be updated.


Samples of update request

PUT /SalePayments/_some_guid_

{ “Amount”: 15.50 }

 

Return value

In case if no errors occurred you will receive response with updated Payment structure, otherwise you will receive response with error list, like this:

[{
“ErrorCode”:400,
“Exception”:”Error explanation will be here”
},
{
“ErrorCode”:400,
“Exception”:”Error explanation will be here”
}]

 

Delete existing Payment

To delete Payment you need to send DELETE request to SalePayments endpoint with ID of payment as parameter 


Return value

In case if no errors occurred you will receive HTTP Status code 200 – OK.