Skip to content

Cancel a payment

POST
/v1/payments/{id}/cancel
Code sample: Shell / cURL
curl --request POST \
--url https://api.b-paid.com/v1/payments/BPT-000000-000001-00/cancel \
--header 'X-Api-Key: <X-Api-Key>'

Cancels a scheduled payment you sent. You can cancel a payment only while its status is scheduled. The amount is returned to your available balance. Canceling a payment that is already canceled returns it unchanged.

id
required
string

The payment’s id.

Example

BPT-000000-000001-00

The payment.

Media typeapplication/json

A payment between your account and another b-paid account, sent or received.

object
id

Unique identifier for the payment. The b-paid app shows it as the payment’s reference number. Treat it as an opaque string.

string
status

Where the payment stands.

  • pending: The payment is being processed. The money may already have moved. A payment with a due date is pending while it is being paid, and can be pending briefly before it is scheduled. It can be canceled only once it is scheduled.
  • scheduled: The payment is waiting for its due date. The amount is set aside from the sender’s available balance.
  • complete: The payment has been paid. This is final.
  • failed: The payment was not paid, for example because the sender’s available balance was too low, or because by the due date one of the accounts could no longer send or receive payments. Any amount set aside is returned to the sender’s available balance. To find out why a payment failed, contact b-paid support with its id. This is final.
  • canceled: The sender canceled the scheduled payment. The amount is returned to the sender’s available balance. This is final.
string
Allowed values: pending scheduled complete failed canceled
amount

The payment amount in cents (USD), as created. It never changes.

integer format: int64
amount_paid

The amount paid in cents (USD), once the payment is complete; null until then. If the recipient accepted quick pay, this is amount minus the discount.

integer format: int64
nullable
source_account_id

The bpid of the account that sends the payment.

string
destination_account_id

The bpid of the account that receives the payment.

string
net_terms_days

The number of days from creation to the due date. null for a payment made now.

integer format: int32
nullable
quick_pay_percent

The quick pay discount, in percent, offered to the recipient for being paid before the due date. null if none was offered.

number format: double
nullable
scheduled_for

The ISO 8601 date and time at which the payment is due. The payment is made shortly after this time. null for a payment made now. A payment the recipient accepted early with quick pay keeps its original scheduled_for.

string format: date-time
nullable
created_at

The ISO 8601 date and time at which the payment was created.

string format: date-time

Example

{
"id": "BPT-000000-000001-00",
"status": "canceled",
"amount": 145000,
"amount_paid": null,
"source_account_id": "ACC-ONE-000-BZ",
"destination_account_id": "SIM-PAY-002-BZ",
"net_terms_days": 30,
"quick_pay_percent": 2.5,
"scheduled_for": "2026-10-22T17:42:08.1234567Z",
"created_at": "2026-09-22T17:42:08.1234567Z"
}

A query parameter is unknown, empty or repeated (invalid_parameters_error).

The API key is missing, unknown or revoked (invalid_api_key_error).

API access isn’t turned on for your account (insufficient_permissions_error); b-paid support can turn it on. Or your business isn’t verified yet (verification_required_error); finish verifying it in the b-paid app.

No payment with this id was sent to or from your account (object_not_found_error).

The payment can’t be canceled (invalid_operation_error). Only the sender can cancel a payment, and only while its status is scheduled.

Too many requests (rate_limited_error). Wait the number of seconds in the Retry-After header, then retry.

Retry-After
integer

Seconds to wait before retrying.

Something went wrong on our side (internal_server_error). Retry the same request.

The b-paid API is temporarily unavailable (service_unavailable_error). Retry the same request in a moment.