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