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 ofAPPLICATION_ERROR
,BORROWER_ERROR
,LOAN_AGREEMENT_ERROR
,INVALID_REQUEST_ERROR
, orAPI_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.
1 { 2 "error_type": "BORROWER_ERROR", 3 "error_code": "INVALID_INPUT", 4 "error_message": "A value provided in the body is incorrect. See error_detail for more", 5 "error_detail": [ 6 { 7 "value": "12708921", 8 "msg": "EIN must be 9 digits", 9 "param": "ein", 10 "location": "body" 11 } 12 ] 13 }
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 |