DEV Community

Drew Harris for Rapyd

Posted on • Originally published at community.rapyd.net

Cancel an Escrow

By Kyle Pollock

Today, the housing marketing is uncertain for certain buyers and sellers not knowing if the market will change. Will mortgage rates go up further, or will the come down? During a sale of any house, all parties should be prepared for any outcome, including the agent, broker, realtor, and facilitator.

Having a third party escrow account is essential to ensure funds are secured, and carefully held until the full completion of the sale. In an case where the sale falls through, canceling the escrow can be a tool to use when a buyer or seller backs out.

You can create a payment in EUR (Euros) using SEPA Direct Debit. Follow the escrow payment below. After the payment is made into the escrow account, and before manually releasing the escrow you can cancel it. This will essential be a refund to the home buyer.

Create Payment with Escrow

Request

POST https://sandboxapi.rapyd.net/v1/payments 
Enter fullscreen mode Exit fullscreen mode
{
    "amount": 200000,
    "currency": "EUR",
    "complete_payment_url": "https://rapyd.net",
    "error_payment_url": "https://docs.rapyd.net",
    "customer":"cus_1930a7dab2a80a7896cbcf98c2e2c762",
    "description": "Payment by bank redirect",
       "escrow": true,
    "payment_method": {
        "type": "gb_sepadirectdebit_bank",
        "fields": {

        }
    },
    "capture": null,
    "ewallets": [
        {
            "ewallet": "ewallet_fbcc006de0394bc2b24308eddca45c64",
            "percentage": 100
        }
    ],
    "metadata": {
        "merchant_defined": true


    }
}
Enter fullscreen mode Exit fullscreen mode

Response

{
    "status": {
        "error_code": "",
        "status": "SUCCESS",
        "message": "",
        "response_code": "",
        "operation_id": "eeece751-4ad0-44f7-b226-9ba4bca944a9"
    },
    "data": {
        "id": "payment_f3145cebe0381294e9b5412a3bb8378a",
        "amount": 0,
        "original_amount": 200000,
        "is_partial": false,
        "currency_code": "EUR",
        "country_code": "GB",
        "status": "ACT",
        "description": "Payment by bank redirect",
        "merchant_reference_id": "",
        "customer_token": "cus_1930a7dab2a80a7896cbcf98c2e2c762",
        "payment_method": "other_1b16b1e5b561269d2d0afeae4ada5541",
        "payment_method_data": {
            "id": "other_1b16b1e5b561269d2d0afeae4ada5541",
            "type": "gb_sepadirectdebit_bank",
            "category": "bank_redirect",
            "metadata": {},
            "image": "",
            "webhook_url": "",
            "supporting_documentation": "",
            "next_action": "user_authentication",
            "bic_swift": "",
            "account_last4": "",
            "redirect_url": "https://sandboxcheckout.rapyd.net/complete-bank-redirect?token=other_1b16b1e5b561269d2d0afeae4ada5541&complete_payment_url=undefined&error_payment_url=undefined"
        },
        "auth_code": null,
        "expiration": 1697490886,
        "captured": true,
        "refunded": false,
        "refunded_amount": 0,
        "receipt_email": "",
        "redirect_url": "https://sandboxcheckout.rapyd.net/complete-bank-payment?token=payment_f3145cebe0381294e9b5412a3bb8378a&complete_payment_url=https%3A%2F%2Frapyd.net&error_payment_url=https%3A%2F%2Fdocs.rapyd.net",
        "complete_payment_url": "https://rapyd.net",
        "error_payment_url": "https://docs.rapyd.net",
        "receipt_number": "",
        "flow_type": "",
        "address": null,
        "statement_descriptor": "Test Business",
        "transaction_id": "",
        "created_at": 1696281286,
        "metadata": {
            "merchant_defined": true
        },
        "failure_code": "",
        "failure_message": "",
        "paid": false,
        "paid_at": 0,
        "dispute": null,
        "refunds": null,
        "order": null,
        "outcome": null,
        "visual_codes": {},
        "textual_codes": {},
        "instructions": [
            {
                "name": "instructions",
                "steps": [
                    {
                        "step1": "You will be redirected to a website to authorize the transaction."
                    },
                    {
                        "step2": "Enter your IBAN account number."
                    },
                    {
                        "step3": "Enter the one-time password (OTP) that you receive."
                    },
                    {
                        "step4": "You will be notified that the payment succeeded."
                    }
                ]
            }
        ],
        "ewallet_id": "ewallet_fbcc006de0394bc2b24308eddca45c64",
        "ewallets": [
            {
                "ewallet_id": "ewallet_fbcc006de0394bc2b24308eddca45c64",
                "amount": 200000,
                "percent": 100,
                "refunded_amount": 0
            }
        ],
        "payment_method_options": {},
        "payment_method_type": "gb_sepadirectdebit_bank",
        "payment_method_type_category": "bank_redirect",
        "fx_rate": 1,
        "merchant_requested_currency": null,
        "merchant_requested_amount": null,
        "fixed_side": "",
        "payment_fees": null,
        "invoice": "",
        "escrow": {
            "id": "escrow_a9bb2236132c93b73f10e577a3fa281c",
            "payment": "payment_f3145cebe0381294e9b5412a3bb8378a",
            "currency": "EUR",
            "amount_on_hold": 0,
            "total_amount_released": 0,
            "status": "pending",
            "escrow_release_days": null,
            "created_at": 1696281286,
            "updated_at": 1696281286,
            "last_payment_completion": null
        },
        "group_payment": "",
        "cancel_reason": null,
        "initiation_type": "customer_present",
        "mid": "",
        "next_action": "pending_confirmation",
        "error_code": "",
        "remitter_information": {},
        "save_payment_method": true
    }
}
Enter fullscreen mode Exit fullscreen mode

Before completing the

Now the payment should be closed, but the escrow still on hold.

Retrieve Escrow

Request

GET https://sandboxapi.rapyd.net/v1/payments/:payment/escrows/:escrow

# Path Variables 
# payment: payment_f3145cebe0381294e9b5412a3bb8378a
# escrow: escrow_a9bb2236132c93b73f10e577a3fa281c
Enter fullscreen mode Exit fullscreen mode

Response

{
    "status": {
        "error_code": "",
        "status": "SUCCESS",
        "message": "",
        "response_code": "",
        "operation_id": "85260e89-d74d-4bd0-9591-2bdf435ecf1c"
    },
    "data": {
        "id": "escrow_a9bb2236132c93b73f10e577a3fa281c",
        "payment": "payment_f3145cebe0381294e9b5412a3bb8378a",
        "currency": "EUR",
        "amount_on_hold": 0,
        "total_amount_released": 0,
        "status": "pending",
        "escrow_release_days": null,
        "escrow_releases": null,
        "created_at": 1696281286,
        "updated_at": 1696281286,
        "last_payment_completion": null
    }
}
Enter fullscreen mode Exit fullscreen mode

You can now cancel the escrow.

Cancel Escrow

Request (Update Payment)

POST https://sandboxapi.rapyd.net/v1/payments/:payment 

# Path Variables
# Payment: payment_f3145cebe0381294e9b5412a3bb8378a
Enter fullscreen mode Exit fullscreen mode

Request Body

{
    "escrow":false
}
Enter fullscreen mode Exit fullscreen mode

Reponse

{
    "status": {
        "error_code": "",
        "status": "SUCCESS",
        "message": "",
        "response_code": "",
        "operation_id": "851d6692-ddeb-4601-9adb-defaefad6c92"
    },
    "data": {
        "id": "payment_f3145cebe0381294e9b5412a3bb8378a",
        "amount": 0,
        "original_amount": 200000,
        "is_partial": false,
        "currency_code": "EUR",
        "country_code": "GB",
        "status": "ACT",
        "description": "Payment by bank redirect",
        "merchant_reference_id": "",
        "customer_token": "cus_1930a7dab2a80a7896cbcf98c2e2c762",
        "payment_method": "other_1b16b1e5b561269d2d0afeae4ada5541",
        "payment_method_data": {
            "id": "other_1b16b1e5b561269d2d0afeae4ada5541",
            "type": "gb_sepadirectdebit_bank",
            "category": "bank_redirect",
            "metadata": {},
            "image": "",
            "webhook_url": "",
            "supporting_documentation": "",
            "next_action": "user_authentication",
            "bic_swift": "",
            "account_last4": ""
        },
        "auth_code": null,
        "expiration": 1697490886,
        "captured": true,
        "refunded": false,
        "refunded_amount": 0,
        "receipt_email": "",
        "redirect_url": "",
        "complete_payment_url": "https://rapyd.net",
        "error_payment_url": "https://docs.rapyd.net",
        "receipt_number": "",
        "flow_type": "",
        "address": null,
        "statement_descriptor": "Test Business",
        "transaction_id": "",
        "created_at": 1696281286,
        "metadata": {},
        "failure_code": "",
        "failure_message": "",
        "paid": false,
        "paid_at": 0,
        "dispute": null,
        "refunds": null,
        "order": null,
        "outcome": null,
        "visual_codes": {},
        "textual_codes": {},
        "instructions": [
            {
                "name": "instructions",
                "steps": [
                    {
                        "step1": "You will be redirected to a website to authorize the transaction."
                    },
                    {
                        "step2": "Enter your IBAN account number."
                    },
                    {
                        "step3": "Enter the one-time password (OTP) that you receive."
                    },
                    {
                        "step4": "You will be notified that the payment succeeded."
                    }
                ]
            }
        ],
        "ewallet_id": "ewallet_fbcc006de0394bc2b24308eddca45c64",
        "ewallets": [
            {
                "ewallet_id": "ewallet_fbcc006de0394bc2b24308eddca45c64",
                "amount": 200000,
                "percent": 100,
                "released_amount": 0,
                "refunded_amount": 0
            }
        ],
        "payment_method_options": {},
        "payment_method_type": "gb_sepadirectdebit_bank",
        "payment_method_type_category": "bank_redirect",
        "fx_rate": 1,
        "merchant_requested_currency": null,
        "merchant_requested_amount": null,
        "fixed_side": "",
        "payment_fees": null,
        "invoice": "",
        "escrow": {
            "id": "escrow_a9bb2236132c93b73f10e577a3fa281c",
            "payment": "payment_f3145cebe0381294e9b5412a3bb8378a",
            "currency": "EUR",
            "amount_on_hold": 0,
            "total_amount_released": 0,
            "status": "canceled",
            "escrow_release_days": null,
            "created_at": 1696281286,
            "updated_at": 1696281560,
            "last_payment_completion": null
        },
        "group_payment": "",
        "cancel_reason": null,
        "initiation_type": "customer_present",
        "mid": "",
        "next_action": "pending_confirmation",
        "error_code": "",
        "remitter_information": {},
        "save_payment_method": true
    }
}
Enter fullscreen mode Exit fullscreen mode

Retrieve Escrow

Request

Same request as above.

GET https://sandboxapi.rapyd.net/v1/payments/:payment/escrows/:escrow

# Path Variables 
# payment: payment_f3145cebe0381294e9b5412a3bb8378a
# escrow: escrow_a9bb2236132c93b73f10e577a3fa281c
Enter fullscreen mode Exit fullscreen mode

Response

{
    "status": {
        "error_code": "",
        "status": "SUCCESS",
        "message": "",
        "response_code": "",
        "operation_id": "85260e89-d74d-4bd0-9591-2bdf435ecf1c"
    },
    "data": {
        "id": "escrow_a9bb2236132c93b73f10e577a3fa281c",
        "payment": "payment_f3145cebe0381294e9b5412a3bb8378a",
        "currency": "EUR",
        "amount_on_hold": 0,
        "total_amount_released": 0,
        "status": "canceled",
        "escrow_release_days": null,
        "escrow_releases": null,
        "created_at": 1696281286,
        "updated_at": 1696281560,
        "last_payment_completion": null
    }
}
Enter fullscreen mode Exit fullscreen mode

We now see the escrow status is canceled. We can now cancel the payment.

Cancel Payment

Request

DELETE https://sandboxapi.rapyd.net/v1/payments/:payment

# Path Variables
# payment: payment_f3145cebe0381294e9b5412a3bb8378a
Enter fullscreen mode Exit fullscreen mode

Response

{
    "status": {
        "error_code": "",
        "status": "SUCCESS",
        "message": "",
        "response_code": "",
        "operation_id": "a3f6c4ea-c644-428b-b274-2ff11b318d23"
    },
    "data": {
        "id": "payment_f3145cebe0381294e9b5412a3bb8378a",
        "amount": 0,
        "original_amount": 200000,
        "is_partial": false,
        "currency_code": "EUR",
        "country_code": "GB",
        "status": "CAN",
        "description": "Payment by bank redirect",
        "merchant_reference_id": "",
        "customer_token": "cus_1930a7dab2a80a7896cbcf98c2e2c762",
        "payment_method": "other_1b16b1e5b561269d2d0afeae4ada5541",
        "payment_method_data": {},
        "auth_code": null,
        "expiration": 1697490886,
        "captured": true,
        "refunded": false,
        "refunded_amount": 0,
        "receipt_email": "",
        "redirect_url": "",
        "complete_payment_url": "https://rapyd.net",
        "error_payment_url": "https://docs.rapyd.net",
        "receipt_number": "",
        "flow_type": "",
        "address": null,
        "statement_descriptor": "Test Business",
        "transaction_id": "",
        "created_at": 1696281286,
        "metadata": {},
        "failure_code": "",
        "failure_message": "",
        "paid": false,
        "paid_at": 0,
        "dispute": null,
        "refunds": null,
        "order": null,
        "outcome": null,
        "visual_codes": {},
        "textual_codes": {},
        "instructions": [
            {
                "name": "instructions",
                "steps": [
                    {
                        "step1": "You will be redirected to a website to authorize the transaction."
                    },
                    {
                        "step2": "Enter your IBAN account number."
                    },
                    {
                        "step3": "Enter the one-time password (OTP) that you receive."
                    },
                    {
                        "step4": "You will be notified that the payment succeeded."
                    }
                ]
            }
        ],
        "ewallet_id": "ewallet_fbcc006de0394bc2b24308eddca45c64",
        "ewallets": [
            {
                "ewallet_id": "ewallet_fbcc006de0394bc2b24308eddca45c64",
                "amount": 200000,
                "percent": 100,
                "released_amount": 0,
                "refunded_amount": 0
            }
        ],
        "payment_method_options": {},
        "payment_method_type": "gb_sepadirectdebit_bank",
        "payment_method_type_category": "bank_redirect",
        "fx_rate": 1,
        "merchant_requested_currency": null,
        "merchant_requested_amount": null,
        "fixed_side": "",
        "payment_fees": null,
        "invoice": "",
        "escrow": {
            "id": "escrow_a9bb2236132c93b73f10e577a3fa281c",
            "payment": "payment_f3145cebe0381294e9b5412a3bb8378a",
            "currency": "EUR",
            "amount_on_hold": 0,
            "total_amount_released": 0,
            "status": "canceled",
            "escrow_release_days": null,
            "created_at": 1696281286,
            "updated_at": 1696281560,
            "last_payment_completion": null
        },
        "group_payment": "",
        "cancel_reason": null,
        "initiation_type": "customer_present",
        "mid": "",
        "next_action": "not_applicable",
        "error_code": "",
        "remitter_information": {},
        "save_payment_method": true
    }
}
Enter fullscreen mode Exit fullscreen mode

The payment is now canceled and refunded to the customer that has backed out of the purchase.

Top comments (0)