API Documentation
AP and AR API
AP and AR API
  • Welcome
  • Getting Started
  • Testing
  • Invoices
  • Payroll
  • Organizations
  • Clients
  • Webhooks
  • Going Live
  • FAQ
  • Bug Bounty Program
  • Accept Crypto & Fiat in your E-Commerce Shop
Powered by GitBook
On this page
  • Creating an Off-Chain Payroll Payment
  • Creates an off-chain payroll payment
  • Converting an Off-Chain Salary Payment into an On-Chain Request
  • Paying a Salary Payment
  • Fetching a Salary Payment
  • Listing Salary Payments
Edit on GitHub

Payroll

PreviousInvoicesNextOrganizations

Last updated 6 months ago

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 . As with invoices, payments also need to be converted to an on-chain request after they are created.

Creating an Off-Chain Payroll Payment

Creating an off-chain payroll payment is done via the same , 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 be rnf_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.

Creates an off-chain payroll payment

POST https://api.request.finance/invoices

Request Body

Name
Type
Description

meta

Request Network JSON Schema

format: "rnf_salary",

version: "0.0.3"

}

To create a payroll payment

invoiceNumber*

String

Payment number. Has to be unique for each payroll payment.

invoiceItems.unitPrice*

Integer

Payroll amount.

invoiceItems.quantity*

Decimal

Quantity. Use 1 for payroll payments.

invoiceItems.name

String

Name of the salary, bonus (e.g. Salary - February 2023).

invoiceItems.currency*

String

Currency code in which the payroll payment is denominated. For example, payments can be denominated in USD, but the employee can be paid in crypto.

creationDate

String

ISO-8601 representation of the payment’s creation date. Default value: Current date

paymentOptions*

Array of objects

paymentTerms.dueDate

String

ISO-8601 due date of the payroll payment.

sellerInfo.lastName

String

Last name of the employee.

sellerInfo.firstName

String

First name (incl. middle names) of the employee.

sellerInfo.email*

String

Email of the employee who receives the payment.

recurringRule

String

DTSTART:20230314T085800Z RRULE:FREQ=MONTHLY;INTERVAL=1 Monthly on the 14th of each month, starting 14th of March 2023.

buyerInfo.email*

String

Email of the employer.

{
    "id": "647855dc484f371e737cf593",
    "buyerInfo": {
        "email": "joe.bloggs@abc-unicorn.com",
        "userId": "647804be4e8042efbde7a725"
    },
    "sellerInfo": {
        "email": "william.dean@abc-unicorn.com",
        "firstName": "William",
        "lastName": "Dean",
        "userId": "63c4eeed02a7c1bb872cb3a1"
    },
    "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": "647804be4e8042efbde7a725",
    "paymentOptions": [
        {
            "type": "wallet",
            "value": {
                "currencies": [
                    "USDC-matic"
                ],
                "paymentInformation": {
                    "paymentAddress": "0x4886E85E192cdBC81d42D89256a81dAb990CDD74",
                    "chain": "matic"
                }
            }
        }
    ],
    "type": "live",
    "miscellaneous": {
        "notifications": {
            "creation": true
        }
    },
    "role": "buyer",
    "tags": [
       "my_tag"
   ]
}

Example Request

Let’s assume you want to pay your employee, William Dean (william.dean@abc-unicorn.com), $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": "joe.bloggs@abc-unicorn.com"
  },
  "sellerInfo": {
    "email": "william.dean@abc-unicorn.com",
    "firstName": "William",
    "lastName": "Dean"
  },
  "paymentTerms": {
    "dueDate": "2023-06-01T14:59:59.999Z"
  },
  "paymentOptions": [
        {
            "type": "wallet",
            "value": {
                "currencies": [
                    "USDC-matic"
                ],
                "paymentInformation": {
                    "paymentAddress": "0x4886E85E192cdBC81d42D89256a81dAb990CDD74",
                    "chain": "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 an Off-Chain Salary Payment into an On-Chain Request

Paying a Salary Payment

Fetching a Salary Payment

Example Response
{
    "id": "647855dc484f371e737cf593",
    "buyerInfo": {
        "email": "joe.bloggs@abc-unicorn.com",
        "userId": "647804be4e8042efbde7a735"
    },
    "sellerInfo": {
        "email": "william.dean@abc-unicorn.com",
        "firstName": "William",
        "lastName": "Dean",
        "userId": "63c4eeed02a7c1bb872cb3a1"
    },
    "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": []
}

Listing Salary Payments

Format of the underlying request. Refer to the for all possible values. Use {

Payment configuration. Contains the address which will receive the payment and currencies in which the salary can be paid. Please review our for a list of available currencies.

Used to create a recurring payment. Input as defined by the . Recommended tool: . Example:

Converting a salary payment to an on-chain request to make it payable is done using the same . 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 and navigate to the 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 . Replace [id] with the requestId of the Request (recommended), or the invoiceId.

To list salaries, use . Make sure to filter for salaries payments in your request; invoices?variant=rnf_salary.

Request Finance
"Salaries" menu
Request Network protocol documentation
Currency API
ical RFC
https://jakubroztocil.github.io/rrule/
invoice
endpoint that is used to create invoices
endpoint that is used for invoices
endpoint that is used for invoices
LIST invoices