Documentation Index
Fetch the complete documentation index at: https://docs.blink.cash/llms.txt
Use this file to discover all available pages before exploring further.
Every error thrown by the Deposit SDK is a DepositError instance with a machine-readable code property. This lets you branch on failure mode without parsing message strings.
DepositError
import { DepositError, getDisplayMessage } from '@swype-org/deposit';
class DepositError extends Error {
readonly code: DepositErrorCode;
constructor(code: DepositErrorCode, message: string);
}
Error codes
| Code | Meaning | User-facing message |
|---|
DEPOSIT_DISMISSED | User dismissed the transfer (tapped backdrop, pressed Escape, or closed the flow). | ”The transfer was dismissed before the transfer completed.” |
SIGNER_REQUEST_FAILED | Signer returned a non-2xx response. | ”Unable to start the payment. Please try again.” |
SIGNER_NETWORK_ERROR | Network failure reaching the signer. | ”Unable to reach the payment server. Check your connection and try again.” |
SIGNER_RESPONSE_INVALID | Signer response missing required fields (merchantId, payload, signature, preview). | ”The payment server returned an unexpected response.” |
SIGNER_TIMEOUT | Signer did not respond within signerTimeoutMs. | ”The payment server took too long to respond. Please try again.” |
FLOW_TIMEOUT | Entire flow exceeded flowTimeoutMs. | ”The deposit flow timed out. Please try again.” |
INVALID_REQUEST | Bad input (missing amount, invalid address, destroyed instance, etc.). | ”Invalid payment request. Please check your input.” |
getDisplayMessage
Returns a user-friendly display string for a DepositError. You can show this directly in your UI.
function getDisplayMessage(error: DepositError): string
Usage
try {
await deposit.requestDeposit({ /* ... */ });
} catch (err) {
if (err instanceof DepositError) {
// Show user-friendly message in your UI
showToast(getDisplayMessage(err));
// Log machine-readable code for debugging
console.error(err.code, err.message);
}
}
React
The useBlinkDeposit hook provides displayMessage as a convenience:
const { error, displayMessage } = useBlinkDeposit({ signer: '/api/sign-payment' });
// displayMessage is null when there is no error,
// otherwise it's the result of getDisplayMessage(error)
{error && <p className="error">{displayMessage}</p>}
Handling specific error codes
try {
await deposit.requestDeposit({ /* ... */ });
} catch (err) {
if (!(err instanceof DepositError)) throw err;
switch (err.code) {
case 'DEPOSIT_DISMISSED':
// User intentionally closed, no action needed
break;
case 'SIGNER_REQUEST_FAILED':
case 'SIGNER_NETWORK_ERROR':
case 'SIGNER_TIMEOUT':
// Signer issue, prompt retry
showRetryDialog(getDisplayMessage(err));
break;
case 'SIGNER_RESPONSE_INVALID':
// Integration bug, log for investigation
reportError(err);
break;
case 'FLOW_TIMEOUT':
// Flow took too long, prompt retry
showRetryDialog(getDisplayMessage(err));
break;
case 'INVALID_REQUEST':
// Bad input, show validation error
showValidationError(getDisplayMessage(err));
break;
}
}
DepositErrorCode
The union of all error code strings:
type DepositErrorCode =
| 'DEPOSIT_DISMISSED'
| 'SIGNER_REQUEST_FAILED'
| 'SIGNER_NETWORK_ERROR'
| 'SIGNER_RESPONSE_INVALID'
| 'SIGNER_TIMEOUT'
| 'FLOW_TIMEOUT'
| 'INVALID_REQUEST';