Boarding Webhooks
Boarding webhooks notify you when a merchant’s status changes in Run Partner, when a merchant is deleted, and when VAR details are available for a merchant’s equipment. For the request format, signatures, and retries that apply to every webhook, see the Webhooks Overview.
Merchant Status Events
A merchant status event is sent each time a merchant’s status changes, including when a merchant is created. Every status event has the same payload fields, described in Payload Fields.
The event type is merchant. followed by the merchant’s new status, using the same value as the merchant_status field in Boarding API responses. The payload’s merchant_status_id field is the numeric ID for that status. It appears only in webhooks, not in the Boarding API.
Merchants don’t always move through these statuses in order. For example, a merchant can move from sent_for_signature back to new. Don’t assume a fixed sequence. Use the event with the latest payload.timestamp as the merchant’s current status, because events can arrive out of order.
Example: merchant.sent_for_signature
For an example of every status event, see Boarding Webhook Examples.
Payload Fields
Trigger and Reason
Every merchant.* payload, including merchant.deleted, includes trigger and reason. The event type tells you what happened. These two fields tell you what caused it.
trigger is one of:
api- a Boarding API callui- a user in Run Partnersystem- an automated process
reason is one of:
New reason values may be added over time. If you receive a value you don’t recognize, ignore the reason and process the event by its event_type instead of rejecting it.
merchant.new Events
A merchant.new event doesn’t always mean a new application. It’s also sent when an application that was out for signature moves back to new. If your integration acts on merchant.new, such as by creating a record or notifying a team, check reason first. Only reason: created means a new merchant.
Resending for Signature
Resending an application that is already out for signature through the Boarding API (PUT /merchants/{merchant_id} with merchant_status: "sent_for_signature", or with auto_send_for_signature: true and no merchant_status) replaces the outstanding signature link with a new one. This sends one merchant.sent_for_signature event with reason: resent. It doesn’t send a merchant.new event first.
Sending an application that is in new status sends one merchant.sent_for_signature event with reason: sent_for_signature. Check reason to tell a resend (resent) from a send (sent_for_signature).
Webhooks can’t be turned off for an individual API request, because other subscribers would miss the change. Use trigger and reason to decide which events your integration acts on.
Merchant Deleted Event
merchant.deleted
Sent when a merchant record is deleted from Run Partner. The payload has the same fields as the status events, plus deleted_by, the username of the person or integration that deleted the merchant. merchant_status_id is the status the merchant had when it was deleted, and reason is always deleted.
VAR Complete Event
boarding.varcomplete
Sent when VAR (configuration) details are available for a piece of a merchant’s equipment, such as a terminal. One event is sent per piece of equipment. This payload has its own fields and doesn’t include merchant_status_id, trigger, or reason. The fields can vary by processor and equipment type, so ignore fields you don’t use and handle fields that aren’t present.
Handling Boarding Webhooks
mid,external_crm_id, andcustom_01can benull. Whether they’re set depends on how far the merchant is in boarding and which fields were sent when the merchant was created or updated.- To confirm a merchant’s current status, or to catch up after missed events, call
GET /merchants/{merchant_id}. Itsmerchant_statususes the same values as the status events. - For duplicates, ordering, retries, and signature verification, see Delivery and Verifying Signatures.