customer_not_bound
This intent's deposit customer is not bound yet. Transient -- safe to retry shortly.
HTTP 503
When this happens
Returned only from POST /api/v1/intents/{id}/source-inbox. Issuing a source deposit inbox requires the intent to already have a bound deposit customer. If the intent's customerId is still null after Canopy attempts to re-bind it, this error fires instead of a 500 -- the condition is expected to resolve on its own shortly, not a permanent failure of the request.
A bind that failed for a reason Canopy can name is reported under that name instead, so this code always means "retry" and never hides a condition that waiting cannot fix. In particular, a merchant whose deposit routing is not provisioned yet gets source_inbox_not_active, and a refused inbox issuance gets source_inbox_refused -- neither of which is retryable.
The error envelope
The response carries a Retry-After header naming the number of seconds to wait:
{
"error": {
"code": "customer_not_bound",
"message": "This intent's deposit customer is not bound yet. Safe to retry shortly.",
"request_id": "req_1a2b3c4d5e6f7a8b9c0d1e2f",
"docs": "https://canopypay.io/errors/customer_not_bound"
}
}What to do about it
Wait at least Retry-After seconds, then retry the same call against the same intent. No other action is required on your side -- the binding happens on Canopy's side, not in response to anything the caller supplies.