Back to Blog
Billing

Security Deposits API: An Integration Acceptance Checklist

Test a security-deposit API integration with a practical matrix for duplicate creation, authorization state, final capture, release and booking changes.

October 13, 20265 min read
P
PayRequest Team
PayRequest Editorial Team

Before launching a security-deposit API integration, verify the entire booking-to-deposit lifecycle: creation, customer authorization, state synchronization, supported capture and release. An HTTP success response from link creation is not evidence that a customer has reserved funds.

This acceptance checklist is for teams connecting rental software to PayRequest. It is a proposed test plan based on the public API contract, not a certification or a claim that these tests have already passed for your account.

Prepare a controlled security-deposit API test

Confirm the supported test configuration with PayRequest and your connected provider before running financial actions. Use fictitious customer records and provider-supported test credentials where available. Do not assume the documentation exposes a separate PayRequest sandbox hostname.

Keep OAuth bearer tokens server-side. The PayRequest deposit reference requires billing.read for retrieval and billing.write for creation, capture and release. Configure the webhook receiver and preserve raw request bytes for signature verification.

Choose one fictional booking, TEST-104, with a €350 deposit obligation. Record the booking reference, deposit ID, provider, current status, captured amount and capture_before deadline. Use separate bookings for final capture and release scenarios because those actions end the hold.

Run the security-deposit API acceptance matrix

The expected outcomes below reflect the documented Stripe deposit flow. Confirm account and provider support rather than applying them to every payment method.

ScenarioExpected evidenceAcceptance condition
Create the same request twice with one keyReturned deposit mappingOne logical deposit, no duplicate customer message
Customer has not authorizedRetrieved pending stateHandover screen does not claim funds are reserved
Authorization attempt is processingPending state plus documented metadata when availableWorker does not create a replacement automatically
Customer completes authorizationCurrent authorized state and capture_beforeBooking displays confirmed hold and actual deadline
Capture €150 of a €350 Stripe holdCaptured state and captured_amount 150.00€200 is shown as released, not still capturable
Attempt a second capture after finalizationDocumented HTTP 409 for locally finalized depositNo second charge; operator sees final state
Release a separate active holdConfirmed released stateCustomer copy describes release, not refund
Receive a duplicated or delayed notificationCurrent retrieved deposit and processing recordNo repeated charge or stale booking-state rollback

Preserve the request and response references needed to explain each result, without storing credentials or card details. A screenshot is useful for review, but the retrieved API state is the evidence for the financial outcome.

Test booking changes independently of payment changes

Change the return date on TEST-104 and check that your rental system does not silently extend the card authorization. Stripe's hold documentation explains that authorizations expire and capture must happen before the actual deadline.

A useful local control is a review task when the new return time approaches or exceeds capture_before. Do not automatically capture the full deposit merely to avoid expiry. The rental agreement, inspection evidence and supported provider action still determine the decision.

Keep the rental fee in its own payment-link workflow and booking availability in your booking workflow. A paid hire fee, a confirmed reservation and an active security authorization are three different facts.

Check ambiguous responses before retrying

Simulate a lost creation response and reuse the persisted creation key. For a lost capture or release response, retrieve the current deposit before deciding what to do next; creation idempotency does not prove action-wide retry guarantees. The retry recovery guide gives a dedicated worksheet.

Also review failure labels with support staff. API pending can describe an authorization attempt that is processing or expired, while expired means a previously confirmed hold expired. The integration must not treat every unsuccessful attempt as money that was reserved and then released.

What makes the integration ready for a pilot?

Require a reviewable record for every matrix row, an owner for unresolved exceptions and customer wording that matches confirmed state. Verify desktop and mobile views, webhook signature rejection, tenant isolation and read-only versus write permissions in the supported configuration.

Begin with one rental workflow through PayRequest security deposits, review plans and allowances, and use the API reference as the contract for implementation. Expand only after the pilot demonstrates correct booking and financial outcomes.

Editorial note: AI assisted with this article and cover. Documentation was reviewed on 13 October 2026. The acceptance matrix is original guidance; no live financial action was performed and no test results are claimed.

Frequently Asked Questions

Does creating a deposit link mean funds are reserved?

No. Confirm the current authorized state and provider deadline after customer authorization.

Can changing the booking return date extend the card hold?

No. A booking edit does not override the provider’s authorization deadline. Reconcile the hold and plan a supported next step.

Share this article