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.


  • 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.
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 ]

Error Codes

INTERNAL_SERVER_ERRORAPI_ERROR500An unexpected error occurred
PRODUCT_NOT_SUPPORTEDAPI_ERROR403This product is not supported for your api keys
NON_ZERO_INTEREST_NOT_ENABLEDAPI_ERROR403Your account is not permitted to create loans with interest. Contact Pier to enable your account for loans with interest
ENDPOINT_NOT_ALLOWED_IN_PRODUCTIONAPI_ERROR403This endpoint is only allowed in the sandbox
DUPLICATE_EINBORROWER_ERROR400A borrower with that EIN already exists
DUPLICATE_SSNBORROWER_ERROR400A borrower with that SSN already exists
UNABLE_TO_DELETE_BORROWERBORROWER_ERROR400There was an error attempting to delete the borrower
UNSUPPORTED_STATEBORROWER_ERROR400This state is not supported for your API keys. Contact Pier to enable
APPLICATION_NOT_FOUNDAPPLICATION_ERROR404The application resource does not exist
APPLICATION_CANNOT_BE_CREATEDAPPLICATION_ERROR400The application credit type can’t be created for this type of borrower
APPLICATION_CANNOT_BE_APPROVEDAPPLICATION_ERROR400The application’s status must be pending in order to approve it
APPLICATION_CANNOT_BE_REJECTEDAPPLICATION_ERROR400The application’s status must be pending in order to reject it
APPLICATION_CANNOT_BE_EVALUATEDAPPLICATION_ERROR400The application’s status must be pending in order to evaluate it
BORROWER_NOT_FOUNDBORROWER_ERROR404The borrower resource does not exist
CUSTOMER_ALREADY_EXISTSCUSTOMER_ERROR400A customer with this email already exists
CUSTOMER_NOT_FOUNDCUSTOMER_ERROR404The customer resource does not exist with this client id
CUSTOMER_ALREADY_ENABLEDCUSTOMER_ERROR400Account already enabled for production
INVALID_BORROWER_IDBORROWER_ERROR400The borrower_id specified is invalid
INVALID_APPLICATION_IDAPPLICATION_ERROR400The application_id specified is invalid
INVALID_STATEMENT_IDSTATEMENT_ERROR400The statement_id specified is invalid
STATEMENT_NOT_FOUNDSTATEMENT_ERROR404The statement resource does not exist
THIRD_PARTY_MISSINGAPPLICATION_ERROR400For BNPL loans, a third_party_disbursement_destination field must be provided with name of the third party
LOAN_AGREEMENT_NOT_FOUNDLOAN_AGREEMENT_ERROR404The loan agreement resource does not exist
LOAN_AGREEMENT_ALREADY_EXISTSLOAN_AGREEMENT_ERROR400A pending loan agreement for this application already exists
INVALID_LOAN_AGREEMENT_IDLOAN_AGREEMENT_ERROR400The loan_agreement_id specified is invalid
LOAN_AGREEMENT_CANNOT_BE_CREATEDLOAN_AGREEMENT_ERROR400Can only create loan agreements for approved applications
LOAN_AGREEMENT_CANNOT_BE_SIGNEDLOAN_AGREEMENT_ERROR400The loan agreement’s status must be pending_signature in order to sign it
LOAN_AGREEMENT_CREATION_FAILEDLOAN_AGREEMENT_ERROR400The loan agremeent could not be created. Please retry
STATE_NOT_SUPPORTEDAPPLICATION_ERROR400The applicant’s state or territory is not supported
UNSUPPORTED_OFFER_TERMSAPPLICATION_ERROR400The requested offer terms are not supported for this state
UNAUTHORIZEDINVALID_REQUEST_ERROR401The API key is invalid. Make sure you are passing correct credentials.
FACILITY_ALREADY_EXISTSFACILITY_ERROR400A facility already exists for this loan agreement
FACILITY_CANNOT_BE_CREATEDFACILITY_ERROR400The loan agreement must have a status of signed in order to create a facility for it
FACILITY_NOT_FOUNDFACILITY_ERROR404The facility resource does not exist
INVALID_FACILITY_IDFACILITY_ERROR400The facility_id specified is invalid
FACILITY_CANNOT_BE_CLOSEDFACILITY_ERROR400The facility is already closed
MISSING_REPAYMENT_BANK_DETAILSPAYMENT_ERROR400Invalid or missing repayment bank account & routing info. Add repayment bank details before submitting a payment
REPAYMENT_ACH_DISABLEDPAYMENT_ERROR400Your account is not enabled for ACH payments
PAYMENT_NOT_FOUNDPAYMENT_ERROR404The payment resource does not exist
INVALID_PAYMENT_IDPAYMENT_ERROR400The payment_id specified is invalid
PAYMENT_ALREADY_SUBMITTEDPAYMENT_ERROR400Payment with this id has already been submitted to dwolla
CREDIT_POLICY_NOT_FOUNDCREDIT_POLICY_ERROR404The credit policy resource does not exist
CREDIT_POLICY_NOT_IN_DRAFTED_STATECREDIT_POLICY_ERROR400The credit policy must be in a drafted state in order to submit it for approval
CREDIT_POLICY_NOT_IN_APPROVED_STATECREDIT_POLICY_ERROR400The credit policy must be in an approved state in order to deploy it
CREDIT_POLICY_CHANGES_NOT_ALLOWEDCREDIT_POLICY_ERROR400The credit policy may not be changed in its current state. Create a new one to make changes
CREDIT_POLICY_NO_RULESCREDIT_POLICY_ERROR400Cannot deploy or submit a policy with no rules
CREDIT_POLICY_OFFER_LIMITS_INCOMPLETECREDIT_POLICY_ERROR400The credit policy’s offer limits are incomplete. Please make sure all offer limits are specified
INVALID_CREDIT_POLICY_IDCREDIT_POLICY_ERROR400The credit_policy_id specified is invalid
AUTOPAY_ALREADY_DISABLEDFACILITY_ERROR400Autopay is already disabled for this facility
DISBURSEMENT_ACH_DISABLEDFACILITY_ERROR400Your account is not enabled for ACH disbursements
DISBURSEMENT_ALREADY_SUBMITTEDDISBURSEMENT_ERROR400Disbursement with this id has already been submitted to dwolla
DISBURSEMENT_AMOUNT_EXCEEDS_FACILITY_AMOUNTFACILITY_ERROR400The disbursement amount requested, along with other disbursements on this facility, may not exceed the loan amount for the facility
DISBURSEMENT_AMOUNT_EXCEEDS_AVAILABLE_LIMITFACILITY_ERROR400The requested disbursement exceeds the available limit for the facility
DISBURSEMENT_ERRORDISBURSEMENT_ERROR500Unable to initiate disbursement
DISBURSEMENT_NOT_FOUNDFACILITY_ERROR404The disbursement resource does not exist
INVALID_DISBURSEMENT_IDFACILITY_ERROR400The disbursement_id specified is invalid
OFFER_NOT_FOUNDLOAN_AGREEMENT_ERROR404The accepted offer id is invalid, does not exist or does not belong to this application
INVALID_WEBHOOK_URLINVALID_REQUEST_ERROR400The webhook url is not a valid url.
UNAVAILABLE_IN_PRODUCTIONFEATURE_UNAVAILABLE400This endpoint is not available in production
KYC_NOT_APPROVEDBORROWER_ERROR400The borrower’s KYC status must be approved
BALANCE_REMAINING_LESS_THAN_PAYMENTPAYMENT_ERROR400The remaining balance is less than the payment submitted
INVALID_INPUTBORROWER_ERROR400kyc_completion_date must be set unless Pier is performing KYC
INVALID_INPUTBORROWER_ERROR400kyc_completion_date cannot be set if Pier is peforming KYC
LEDGERING_DISABLEDLEDGERING_ERROR400Your account is not enabled for ledgering
MISSING_DISBURSEMENT_BANK_DETAILSDISBURSEMENT_ERROR400Invalid or missing disbursement bank account & routing info
MISSING_LENDING_DETAILSLOAN_AGREEMENT_ERROR400Invalid lending details for generating loan agreement