Skip to main content
Payment requests are Plane’s way of handling contractor-submitted invoices. Instead of tracking invoices over email or in a separate tool, contractors submit payment requests directly in Plane. You review, approve, and pay them from the same dashboard where you manage everything else. This gives you a clean approval flow with full visibility: every request is tracked, every approval is recorded, and approved requests automatically become payments.

How payment requests work

A payment request is a formal ask from a contractor to be paid a specific amount for work performed. The flow is straightforward:
  1. Submit—the contractor (or an admin on their behalf) creates a payment request with an amount, currency, and description.
  2. Review—the request appears in your pending queue. You see who submitted it, what it is for, and how much.
  3. Approve or decline—you approve the request to move it toward payment, or decline it with a reason.
  4. Pay—once approved, the request is converted into a payment and executed through Plane’s payment infrastructure.
Each step is recorded with timestamps and the identity of who took the action, giving you a complete audit trail.

Who can create payment requests

Payment requests can be created from two sides:

Contractor-submitted requests

Contractors can submit payment requests from their own Plane portal. They provide the amount, currency, an optional description, and can attach an invoice document. This is the most common flow—the contractor initiates the request, and you approve or decline it.

Admin-created requests

Admins can also create payment requests on behalf of a contractor. This is useful when you want to run a payment through the approval flow even though the contractor did not initiate it—for example, when you have agreed on an amount and want to track the approval formally. You can create payment requests through the dashboard or the Payment Requests API. The API accepts:
  • Worker—the contractor the request is for.
  • Amount—the requested payment amount.
  • Currency—the currency for the payment.
  • Reference (optional)—an external reference number, like an invoice ID.
  • Note (optional)—a description of the work or reason for the request.
  • Period (optional)—the service period the request covers.

Managing pending requests

Pending payment requests appear on your dashboard. For each request, you can see:
  • The contractor who submitted it
  • The requested amount and currency
  • When it was submitted
  • Any attached invoice or description
  • The service period, if provided
From here, you take one of three actions:

Approve

Approving a request signals that you agree with the amount and authorize payment. Approved requests move to the next step—you still need to trigger the payment explicitly (or configure it to happen automatically). The approval step supports multiple approvers. Each approval is recorded, so if your organization requires sign-off from more than one person, the approval chain is visible.

Decline

If a request is incorrect or should not be paid, decline it. You can include a reason so the contractor understands why. Declined requests are archived and visible in history—they are not deleted.

Withdraw

Contractors can withdraw their own pending requests if they made an error or the circumstances changed. Withdrawn requests behave similarly to declined ones—they are removed from the active queue and recorded in history.
Only pending requests can be approved, declined, or withdrawn. Once a request has been processed into a payment, it follows the payment lifecycle.

From approval to payment

After a request is approved, it needs to be paid. This is a separate step that converts the payment request into an actual payment. When you pay an approved request (from the dashboard or via the pay endpoint), Plane:
  1. Creates a payment for the contractor in the requested amount and currency.
  2. Routes the payment to the contractor’s bank account on file.
  3. Creates a charge against your funding source to cover the payment.
  4. Links the payment back to the original request, so you can trace the full chain.
The payment then follows the standard payment lifecycle—pending, processing, paid (or failed).
You can see the linked payment from the request detail view. If the payment fails, you can retry it without creating a new request.

Payment request statuses

StatusMeaning
PendingSubmitted and waiting for review.
ApprovedApproved by an admin, ready to be paid.
CompletedPaid successfully. The linked payment has been delivered.
DeclinedRejected by an admin.
WithdrawnWithdrawn by the contractor before approval.

Payment requests and the API

The Payment Requests API gives you full control over the request lifecycle:

Create a request

Submit a payment request for a contractor.

Approve a request

Approve a pending request for payment.

Decline a request

Decline a pending request with a reason.

Pay a request

Convert an approved request into a payment.
No. Once submitted, a payment request cannot be edited. If the amount or details are wrong, the contractor should withdraw the request and submit a new one. Alternatively, an admin can decline the request with a note explaining what needs to change.
Yes. Approval and payment are separate steps. You can approve a request to signal authorization and trigger the actual payment later. This is useful if you batch payments on a specific schedule or need a second approval before funds move.
Payment requests are contractor-initiated and go through an approval flow. Off-cycle payroll is admin-initiated and goes through the full payroll cycle (preparation, review, approval, execution). Use payment requests when the contractor is submitting invoices; use off-cycle payroll when you need to process a bonus or correction through payroll.