Errors
Pier uses HTTP codes to indicate the status of an API request. Generally, `2xx` indicates success, `4xx` indicates something was wrong with the information provided, and `5xx` indicates something went wrong on Pier's servers.
### Attributes
- `error_type` string: The type of error, which can be one of `APPLICATION_ERROR`, `BORROWER_ERROR`, `LOAN_AGREEMENT_ERROR`, `INVALID_REQUEST_ERROR`, or `API_ERROR`.
- `error_code` string: The specific error that occurred, which can be used programmatically.
- `error_message` string: A human-readable error message for developers. These can change and should generally not be used programmatically.
- `error_detail` list of objects: In some cases, like a validation error, we'll return a list of objects with more information about the parameter that is invalid.
```js
{
"error_type": "BORROWER_ERROR",
"error_code": "INVALID_INPUT",
"error_message": "A value provided in the body is incorrect. See error_detail for more",
"error_detail": [
{
"value": "12708921",
"msg": "EIN must be 9 digits",
"param": "ein",
"location": "body"
}
]
}
```
### Error Codes
| error_code | error_type | status | error_message |
|------------|------------|--------|---------------|
| INTERNAL_SERVER_ERROR | API_ERROR | 500 | An unexpected error occurred |
| PRODUCT_NOT_SUPPORTED | API_ERROR | 403 | This product is not supported for your api keys |
| NON_ZERO_INTEREST_NOT_ENABLED | API_ERROR | 403 | Your account is not permitted to create loans with interest. Contact Pier to enable your account for loans with interest |
| ENDPOINT_NOT_ALLOWED_IN_PRODUCTION | API_ERROR | 403 | This endpoint is only allowed in the sandbox |
| DUPLICATE_EIN | BORROWER_ERROR | 400 | A borrower with that EIN already exists |
| DUPLICATE_SSN | BORROWER_ERROR | 400 | A borrower with that SSN already exists |
| UNABLE_TO_DELETE_BORROWER | BORROWER_ERROR | 400 | There was an error attempting to delete the borrower |
| UNSUPPORTED_STATE | BORROWER_ERROR | 400 | This state is not supported for your API keys. Contact Pier to enable |
| APPLICATION_NOT_FOUND | APPLICATION_ERROR | 404 | The application resource does not exist |
| APPLICATION_CANNOT_BE_CREATED | APPLICATION_ERROR | 400 | The application credit type can't be created for this type of borrower |
| APPLICATION_CANNOT_BE_APPROVED | APPLICATION_ERROR | 400 | The application's status must be pending in order to approve it |
| APPLICATION_CANNOT_BE_REJECTED | APPLICATION_ERROR | 400 | The application's status must be pending in order to reject it |
| APPLICATION_CANNOT_BE_EVALUATED | APPLICATION_ERROR | 400 | The application's status must be pending in order to evaluate it |
| BORROWER_NOT_FOUND | BORROWER_ERROR | 404 | The borrower resource does not exist |
| CUSTOMER_ALREADY_EXISTS | CUSTOMER_ERROR | 400 | A customer with this email already exists |
| CUSTOMER_NOT_FOUND | CUSTOMER_ERROR | 404 | The customer resource does not exist with this client id |
| CUSTOMER_ALREADY_ENABLED | CUSTOMER_ERROR | 400 | Account already enabled for production |
| INVALID_BORROWER_ID | BORROWER_ERROR | 400 | The borrower_id specified is invalid |
| INVALID_APPLICATION_ID | APPLICATION_ERROR | 400 | The application_id specified is invalid |
| INVALID_STATEMENT_ID | STATEMENT_ERROR | 400 | The statement_id specified is invalid |
| STATEMENT_NOT_FOUND | STATEMENT_ERROR | 404 | The statement resource does not exist |
| THIRD_PARTY_MISSING | APPLICATION_ERROR | 400 | For BNPL loans, a third_party_disbursement_destination field must be provided with name of the third party |
| LOAN_AGREEMENT_NOT_FOUND | LOAN_AGREEMENT_ERROR | 404 | The loan agreement resource does not exist |
| LOAN_AGREEMENT_ALREADY_EXISTS | LOAN_AGREEMENT_ERROR | 400 | A pending loan agreement for this application already exists |
| INVALID_LOAN_AGREEMENT_ID | LOAN_AGREEMENT_ERROR | 400 | The loan_agreement_id specified is invalid |
| LOAN_AGREEMENT_CANNOT_BE_CREATED | LOAN_AGREEMENT_ERROR | 400 | Can only create loan agreements for approved applications |
| LOAN_AGREEMENT_CANNOT_BE_SIGNED | LOAN_AGREEMENT_ERROR | 400 | The loan agreement's status must be pending_signature in order to sign it |
| LOAN_AGREEMENT_CREATION_FAILED | LOAN_AGREEMENT_ERROR | 400 | The loan agremeent could not be created. Please retry |
| STATE_NOT_SUPPORTED | APPLICATION_ERROR | 400 | The applicant's state or territory is not supported |
| UNSUPPORTED_OFFER_TERMS | APPLICATION_ERROR | 400 | The requested offer terms are not supported for this state |
| UNAUTHORIZED | INVALID_REQUEST_ERROR | 401 | The API key is invalid. Make sure you are passing correct credentials. |
| FACILITY_ALREADY_EXISTS | FACILITY_ERROR | 400 | A facility already exists for this loan agreement |
| FACILITY_CANNOT_BE_CREATED | FACILITY_ERROR | 400 | The loan agreement must have a status of signed in order to create a facility for it |
| FACILITY_NOT_FOUND | FACILITY_ERROR | 404 | The facility resource does not exist |
| INVALID_FACILITY_ID | FACILITY_ERROR | 400 | The facility_id specified is invalid |
| FACILITY_CANNOT_BE_CLOSED | FACILITY_ERROR | 400 | The facility is already closed |
| MISSING_REPAYMENT_BANK_DETAILS | PAYMENT_ERROR | 400 | Invalid or missing repayment bank account & routing info. Add repayment bank details before submitting a payment |
| REPAYMENT_ACH_DISABLED | PAYMENT_ERROR | 400 | Your account is not enabled for ACH payments |
| PAYMENT_NOT_FOUND | PAYMENT_ERROR | 404 | The payment resource does not exist |
| INVALID_PAYMENT_ID | PAYMENT_ERROR | 400 | The payment_id specified is invalid |
| UNABLE_TO_INITIATE_PAYMENT | PAYMENT_ERROR | 400 | Unable to initiate payment |
| PAYMENT_ALREADY_SUBMITTED | PAYMENT_ERROR | 400 | Payment with this id has already been submitted to svb |
| CREDIT_POLICY_NOT_FOUND | CREDIT_POLICY_ERROR | 404 | The credit policy resource does not exist |
| CREDIT_POLICY_NOT_IN_DRAFTED_STATE | CREDIT_POLICY_ERROR | 400 | The credit policy must be in a drafted state in order to submit it for approval |
| CREDIT_POLICY_NOT_IN_APPROVED_STATE | CREDIT_POLICY_ERROR | 400 | The credit policy must be in an approved state in order to deploy it |
| CREDIT_POLICY_CHANGES_NOT_ALLOWED | CREDIT_POLICY_ERROR | 400 | The credit policy may not be changed in its current state. Create a new one to make changes |
| CREDIT_POLICY_NO_RULES | CREDIT_POLICY_ERROR | 400 | Cannot deploy or submit a policy with no rules |
| CREDIT_POLICY_OFFER_LIMITS_INCOMPLETE | CREDIT_POLICY_ERROR | 400 | The credit policy's offer limits are incomplete. Please make sure all offer limits are specified |
| INVALID_CREDIT_POLICY_ID | CREDIT_POLICY_ERROR | 400 | The credit_policy_id specified is invalid |
| AUTOPAY_ALREADY_DISABLED | FACILITY_ERROR | 400 | Autopay is already disabled for this facility |
| DISBURSEMENT_ACH_DISABLED | FACILITY_ERROR | 400 | Your account is not enabled for ACH disbursements |
| DISBURSEMENT_ALREADY_SUBMITTED | DISBURSEMENT_ERROR | 400 | Disbursement with this id has already been submitted to svb |
| DISBURSEMENT_AMOUNT_EXCEEDS_FACILITY_AMOUNT | FACILITY_ERROR | 400 | The disbursement amount requested, along with other disbursements on this facility, may not exceed the loan amount for the facility |
| DISBURSEMENT_AMOUNT_EXCEEDS_AVAILABLE_LIMIT | FACILITY_ERROR | 400 | The requested disbursement exceeds the available limit for the facility |
| DISBURSEMENT_ERROR | DISBURSEMENT_ERROR | 500 | Unable to initiate disbursement |
| DISBURSEMENT_NOT_FOUND | FACILITY_ERROR | 404 | The disbursement resource does not exist |
| INVALID_DISBURSEMENT_ID | FACILITY_ERROR | 400 | The disbursement_id specified is invalid |
| OFFER_NOT_FOUND | LOAN_AGREEMENT_ERROR | 404 | The accepted offer id is invalid, does not exist or does not belong to this application |
| INVALID_WEBHOOK_URL | INVALID_REQUEST_ERROR | 400 | The webhook url is not a valid url. |
| UNAVAILABLE_IN_PRODUCTION | FEATURE_UNAVAILABLE | 400 | This endpoint is not available in production |
| KYC_NOT_APPROVED | BORROWER_ERROR | 400 | The borrower's KYC status must be approved |
| BALANCE_REMAINING_LESS_THAN_PAYMENT | PAYMENT_ERROR | 400 | The remaining balance is less than the payment submitted |
| INVALID_INPUT | BORROWER_ERROR | 400 | kyc_completion_date must be set unless Pier is performing KYC |
| INVALID_INPUT | BORROWER_ERROR | 400 | kyc_completion_date cannot be set if Pier is peforming KYC |
| LEDGERING_DISABLED | LEDGERING_ERROR | 400 | Your account is not enabled for ledgering |
| MISSING_DISBURSEMENT_BANK_DETAILS | DISBURSEMENT_ERROR | 400 | Invalid or missing disbursement bank account & routing info |
| MISSING_LENDING_DETAILS | LOAN_AGREEMENT_ERROR | 400 | Invalid lending details for generating loan agreement |
| CANNOT_CANCEL_TRANSACTION_INCORRECT_STATUS | PAYMENT_ERROR | 409 | Can only cancel Payment or Disbursement if the transaction's status is pending and ach has not been submitted |
| CANNOT_REFUND_TRANSACTION_INCORRECT_STATUS | PAYMENT_ERROR | 409 | Can only refund Payment or Disbursement if the transaction's status is settled |
Built with