Comment on page
Payroll
Request Finance allows you to pay net salaries, bonuses, or token vestings to your employees with a couple of clicks. With the API, you can create salary payments from your own tool and pay them later via the Request Finance application.
On a technical level, a payroll payment is just another type of invoice. As with invoices, payments also need to be converted to an on-chain request after they are created.
Creating an off-chain payroll payment is done via the same endpoint that is used to create invoices, but with some changes to the attributes (see below).
Note that while the endpoint uses the same attributes, they're handled differently in the Request Finance application. Notably:
meta
:format
must bernf_salary
to ensure that the salary payment shows up as such in the Request Finance application.- A
sellerInfo
object is included that includes information about the employee to be paid. - Some information can be omitted. Refer to the example request below.
post
https://api.request.finance
/invoices
Creates an off-chain payroll payment
Let’s assume you want to pay your employee, William Dean ([email protected]), $1,000.00 using USDC on Polygon. Additionally, the salary should be created every month for the next three months.
To create a salary payment like this, you would pass the following body with the request:
{
"meta": {
"format": "rnf_salary",
"version": "0.0.3"
},
"creationDate": "2023-05-31T14:59:59.999Z",
"invoiceItems": [
{
"currency": "USD",
"name": "Salary",
"quantity": 1,
"unitPrice": "100002"
}
],
"invoiceNumber": "1",
"buyerInfo": {
"email": "[email protected]"
},
"sellerInfo": {
"email": "[email protected]",
"firstName": "William",
"lastName": "Dean"
},
"paymentTerms": {
"dueDate": "2023-06-01T14:59:59.999Z"
},
"paymentAddress": "0x4886E85E192cdBC81d42D89256a81dAb990CDD74",
"paymentCurrency": "USDC-matic",
"recurringRule": "DTSTART:20230601T074619Z\nRRULE:FREQ=MONTHLY;INTERVAL=1;COUNT=3"
}
As with invoices, in the JSON response, you will get an
id
field. Please save it in a variable or in your database. You will need it to convert the payment into an on-chain request in the next section.Converting a salary payment to an on-chain request to make it payable is done using the same endpoint that is used for invoices. Replace
[id]
with the ID of the payment you saved previously. You don’t need to pass anything in the request body.The only way to currently pay an on-chain salary payment is via the Request Finance application. Simply log in to Request Finance and navigate to the "Salaries" menu to make payments individually or in batch.
To check the status of a salary payment and understand if it has been paid, please use the same endpoint that is used for invoices. Replace
[id]
with the requestId
of the Request (recommended), or the invoiceId
.{
"id": "647855dc484f371e737cf593",
"paymentCurrency": "USDC-matic",
"buyerInfo": {
"email": "[email protected]",
"userId": "647804be4e8042efbde7a735"
},
"sellerInfo": {
"email": "[email protected]",
"firstName": "William",
"lastName": "Dean",
"userId": "63c4eeed02a7c1bb872cb3a1"
},
"paymentAddress": "0x4886E85E192cdBC81d42D89256a81dAb990CDD74",
"invoiceItems": [
{
"tax": {
"type": "fixed",
"amount": "0"
},
"currency": "USD",
"quantity": 1,
"unitPrice": "100002",
"name": "Salary"
}
],
"paymentTerms": {
"dueDate": "2023-06-01T14:59:59.999Z"
},
"recurringRule": "DTSTART:20230601T074619Z\nRRULE:FREQ=MONTHLY;INTERVAL=1;COUNT=3",
"invoiceNumber": "1",
"creationDate": "2023-05-31T14:59:59.999Z",
"meta": {
"format": "rnf_salary",
"version": "0.0.3"
},
"nextOccurrence": "2023-07-01T07:46:19.000Z",
"status": "scheduled",
"createdBy": "647804be4e8042efbde7a735",
"paymentOptions": [
{
"type": "wallet",
"value": {
"currencies": [
"USDC-matic"
],
"paymentInformation": {
"paymentAddress": "0x4886E85E192cdBC81d42D89256a81dAb990CDD74",
"chain": "matic"
}
}
}
],
"type": "live",
"miscellaneous": {
"builderId": null,
"createdWith": null,
"logoUrl": null,
"variant": null,
"notifications": {
"creation": true
}
},
"role": "buyer",
"tags": [],
"events": []
}
To list salaries, use LIST invoices. Make sure to filter for salaries payments in your request;
invoices?variant=rnf_salary
.Last modified 2d ago