Simulate Transfer Status
These endpoints are used to simulate internal status transitions for a given Transfer object. They are intended for testing and sandbox purposes only.
Why Simulate?
In the Harbor Sandbox environment, certain external events (such as wire arrival or blockchain confirmation) do not happen automatically. To move a transfer through its lifecycle and test your integration, you must manually trigger these status transitions using the Simulation APIs.
Sandbox Status Flows
On-Ramp Flow (Fiat → Crypto)
graph TD
subgraph "Wire / ACH Push (Manual Deposit)"
A1[pending_customer_transfer_start] -- "POST /simulate-paid" --> B1[pending_harbor]
end
subgraph "ACH Pull / Debit Card (Auto Pull)"
A2[Transfer Created] --> B1
end
B1 -- "POST /simulate-completed" --> C1[completed]
Off-Ramp Flow (Crypto → Fiat)
graph TD
A[Transfer Created] --> B[pending_harbor]
B -- "POST /simulate-completed" --> C[completed]
Step 1: Simulate Customer Payment (Incoming)
Endpoint
POST /api/v1/transfers/{transfer:uuid}/simulate-paid
Description
Simulates the scenario where the customer has paid into the designated receiving account. This updates the transfer status from pending_customer_transfer_start to pending_harbor.
Applicable Payment Methods:
- Wire
- ACH Push
Not Applicable For:
- ACH Pull
- Debit Card
(These methods skip this stage and move directly to
pending_harborbecause Harbor initiates the pull.)
If you attempt to call this API for an ACH Pull or Debit Card transfer, you will receive an error:
Order status is not unpaid.
API Request: Simulate that the payment has been executed according to the payment
curl --location --request POST 'https://harbor-sandbox.owlpay.com/api/v1/transfers/{{TRANSFER_UUID}}/simulate-paid' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-API-KEY: {{API_KEY}}' \
--header 'Idempotency-Key: {{Idempotency-Key}}'Step 2: Simulate Harbor Settlement (Outgoing)
Endpoint
POST /api/v1/transfers/{transfer:uuid}/simulate-completed
Description
Simulates the scenario where Harbor has executed the payment to the final destination (bank or blockchain address). This updates the transfer status from pending_harbor to completed.
Applicable For:
- All transfer types once they reach the
pending_harborstate.
curl --location --request POST 'https://harbor-sandbox.owlpay.com/api/v1/transfers/{{TRANSFER_UUID}}/simulate-completed' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-API-KEY: {{API_KEY}}' \
--header 'Idempotency-Key: {{Idempotency-Key}}'Troubleshooting
| Error Message | Cause | Resolution |
|---|---|---|
Order status is not unpaid | The transfer status is already pending_harbor or higher. | Skip Step 1 and proceed to Step 2 (/simulate-completed). |
Transfer is not in pending_harbor state | The transfer has not reached the processing stage yet. | Ensure the status is exactly pending_harbor. |
This endpoint is not available in production | You are using the production API endpoint. | Switch to the Sandbox environment (harbor-sandbox.owlpay.com). |
Updated 10 days ago