Transfer of rights

You can initiate the transfer of rights of an eNote using our API.

To initiate a transfer you need to specify the eNote ID provided by Snapdocs closings and the MERS organization ID of your partners to transfer the note to. Snapdocs eVault automatically detects the MERS transfer action based on the right holders you specified in the payload (see table below). If the combination of rights you specified is not available, we return an error (400).

In order to be able to submit a transfer you need to hold specific rights on a note, if our records indicate that you do not have the rights, we return an error (400).

When doing a transfer, you can also specify to simultaneously eDeliver the eNote to all your partners involved in the transfer. One eDelivery request will be submitted to MERS per unique MERS organization ID.

Both transfer and eDeliveries are asynchronous actions. Upon successfully submitting the transfer (and eDeliveries) we will return the "transmissions" (referring to MERS requests like transfers and eDeliveries) ids, you can use the GET endpoints to retrieve the statuses of those transmissions.

Transfer actions

  • TransferControl:
    • transfer_to_controller_org_id
    • optional: transfer_to_delegatee_for_transfers_org_id
  • TransferLocation:
    • transfer_to_location_org_id
  • TransferControlAndLocation:
    • transfer_to_controller_org_id
    • transfer_to_location_org_id
    • optional: transfer_to_delegatee_for_transfers_org_id
  • TransferDelegatee (transfer of servicing):
    • transfer_to_delegatee_org_id
    • optional: transfer_to_subservicer_org_id
  • TransferAll:
    • transfer_to_controller_org_id
    • transfer_to_location_org_id
    • transfer_to_delegatee_org_id
    • optional: transfer_to_delegatee_for_transfers_org_id
  • TransferControlAndDelegatee (transfer of Control and Servicing):
    • transfer_to_controller_org_id
    • transfer_to_delegatee_org_id
    • optional: transfer_to_delegatee_for_transfers_org_id
  • TransferControlWithSecuredParty:
    • transfer_to_controller_org_id
    • transfer_to_secured_party_org_id
    • optional: transfer_to_delegatee_for_transfers_org_id
    • optional: transfer_to_secured_party_delegatee_org_id
  • TransferControlAndLocationWithSecuredParty:
    • transfer_to_controller_org_id
    • transfer_to_location_org_id
    • transfer_to_secured_party_org_id
    • optional: transfer_to_delegatee_for_transfers_org_id
    • optional: transfer_to_secured_party_delegatee_org_id

Note that transfer_to_delegatee_org_id references a transfer to the master servicer while transfer_to_delegatee_for_transfers_org_id references a transfer to the delegatee for transfers.

Transfer statuses

A GET on the transfer ID allows you to retrieve the status of a transfer

statusdirectiondescription
initiatedoutboundthe transfer was initiated
mers_responded_failedinbound / outboundMERS returned a failure. Error messages can be seen in the errors array returned in the payload
snapdocs_errorinbound / outboundA server error occurred in our system
processing_accept_or_rejectoutboundthe transfer was submitted to MERS and is pending acceptance by the receiving parties
expiredinbound / outboundwe have received a notice that the transfer has expired
canceledinbound / outboundthe transfer was canceled by one of the parties
pending_documentsinboundthe transfer can not be accepted before a copy of the note has been delivered to the eVault
can_accept_or_rejectinboundthe transfer is pending accept or reject from the recipient
no_rights_to_acceptinbounda transfer notification was received but no action is required
self_acceptedinboundas the recipient, you have accepted the transfer but it is still pending acceptance from all parties
self_rejectedinboundas the recipient, you have rejected the transfer but it is still pending acceptance / rejection from all parties
self_rejectedoutboundtemporary state where you initiated a cancel on the initiated transfer
all_acceptedinbound / outboundall receiving parties have accepted the transfer. The transfer is complete
all_rejectedinbound / outboundat least one receiving party has rejected the transfer. The transfer is complete but did not go through

eDelivery statuses

A GET on the eDelivery ID allows you to retrieve the status of an eDelivery. Note that for inbound (received) eDeliveries there are two steps involved: first MERS send a pending notification, this notification is automatically confirmed by our system. After receiving the confirmation MERS sends the distribution.

statusdirectiondescription
initiatedoutboundthe eDelivery was initiated
mers_responded_failedinbound / outboundMERS returned a failure
snapdocs_errorinbound / outboundA server error occurred in our system
can_confirm_or_reject_receiptinboundthe pending notification was received and the eDelivery is awaiting confirmation
confirming_or_rejecting_receiptinboundthe confirmation was submitted
accepted_confirmationinbound / outboundthe confirmation was accepted
rejected_confirmationinbound / outboundthe confirmation was rejected
canceled_confirmationinbound / outboundthe eDelivery was canceled
confirmed_pending_distribution
distribution_validation_processinginboundthe distribution was received, the distributed documents are being validated
distribution_has_blocking_validation_errorsinboundwe identified blocking validation errors. Blocking errors include: the tamper seal on the note did not pass validation, the virus scanning of the included files failed
can_accept_or_reject_distributioninboundthe distribution was received and blocking validations passed, the distribution can be accepted or rejected
accepting_or_rejecting_distributioninboundtemporary state where the distribution acceptance was submitted and we are still waiting for MERS response
approved_distributioninbound / outboundthe distribution was approved (accepted)
disapproved_distributioninbound / outboundthe distribution was rejected
conditionally_approved_distribution
expiredinbound / outboundthe eDelivery has expired

Webhooks

Webhook transfer events are sent to the URLs configured for your application. We initiate a POST request to the URL, the payload contains the transfer id and the transfer status. Example payload:

{
  "event_type": "transfer_submitted",
  "status": "processing_accept_or_reject",
  "transfer_id": "8bbc6a97-6a90-48c6-859b-efda72a1cd36",
  "display_status": "pending",
  "event_timestamp": "2026-05-21T12:00:00Z"
}

A webhook is sent for the following events

event typedescriptiontransfer direction
transfer_submittedthe transfer was submitted to MERSoutbound
transfer_failedthe transfer was submitted to MERS but MERS returned an error / failureinbound / outbound
transfer_receiveda transfer was receivedinbound
transfer_acceptedthe transfer was accepted by all the receiving partiesinbound / outbound
transfer_rejectedthe transfer was rejected by one of the involved partiesinbound / outbound
transfer_expiredthe transfer has expired before all the parties involved submitted their acceptance / rejectioninbound / outbound
transfer_canceledthe transfer was canceled by the submitting partyinbound / outbound
edelivery_submittedthe edelivery was submitted to MERSoutbound
edelivery_failedthe edelivery was submitted to MERS but MERS returned an error / failureinbound / outbound
edelivery_accepted_confirmationthe edelivery confimation was acceptedinbound / outbound
edelivery_accepted_distributionthe edelivery distribution was acceptedinbound / outbound
edelivery_rejected_confirmationthe edelivery confirmation was rejectedinbound / outbound
edelivery_rejected_distributionthe edelivery disribution was rejectedinbound / outbound
edelivery_expiredthe edelivery has expiredinbound / outbound
edelivery_canceledthe edelivery was canceled by the submitting partyinbound / outbound

The display_status is a simplified status of the transfer or eDelivery (this is what is typically showed in the transfers and eDeliveries tables in the UI). Possible values for display_status are:

valuedescriptiondirection
acceptedThe transfer or eDelivery was accepted (success)inbound / outbound
blockedThe eDelivery is blocked because of validation errors (failure)inbound
expiredThe transfer or eDelivery has expired (failure)inbound / outbound
failedAn error occurred (failure)inbound / outbound
pendingThe transfer or eDelivery is pending accept or reject from the involved partiesinbound / outbound
rejectedThe transfer or eDelivery was rejected from one of the involved parties (failure)inbound / outbound
canceledThe transfer or eDelivery was canceledinbound / outbound

Note that this parameter is available both in the webhook payload and in the transfer and eDelivery object attributes.