Update an account application
Sends the data or documents the bank asked for, and resumes opening the account. Get the application first. It must be blocked, or manual_review for documents. Send every requested item in one call. After a partial answer, the application stays blocked.
This route takes no Idempotency-Key, so a retry uploads again. The response leaves out the status reason fields. Get the application again to see what is still needed. For terms or verification, send the customer to required_action_url instead.
Path Parameters
ID of the account application. Read it from the account (application_id) or from the application webhooks.
Request Body
Field values by field name, such as {"tax_id_number": "123456789"}. On a blocked application, send only fields the bank asked for.
Changes to the customer record. Gravv saves them on the customer, not only on this application.
Party changes, in the create shape. Send them only on a draft or blocked application.
Documents to upload. Send them only on a draft, blocked or manual_review application. Upload every requested type in this one call.
Possible values: front, back
Required for an identity document on a business application
Standard or URL-safe base64. JPEG, PNG or PDF, at most 2 MB.
Alpha-2 code. Required except for selfie_photo.
Request Examples
{
"customer": {
"tax_id_number": "123456789"
},
"documents": [
{
"document_type": "proof_of_address",
"issuing_country": "US",
"filename": "bill.pdf",
"content": "<base64>"
}
]
}
Responses
| Status | Description |
|---|---|
200 |
The updated application |
400 |
The application cannot take this update, or a field or document is wrong |
404 |
Not found, or not in your business |
200 response
Possible values: individual, business
Possible values: individual, joint, minor, business
processing while the bank works, blocked while it waits on you or the customer, manual_review while Gravv holds it, then approved or rejected. draft and submitted appear only on applications not made with POST /v2/accounts.
Possible values: draft, submitted, processing, blocked, manual_review, approved, rejected, expired, cancelled
Associated person ID. Use it as party_id on a document.
Possible values: primary, joint_owner, authorized_individual, guardian, minor_beneficial_owner, trustee, grantor, trustee_and_grantor, executor
Possible values: declared, documents_pending, verified_locally, submitted_to_provider, flagged, accepted
Same codes as on the account. The API returns it only when you read a single application.
The update returns it when it checks the data you sent
Deprecated. Use the flat status fields and status.
{
"data": {
"application_id": "5e7a9c1b-2d4f-4a6b-8c0d-e1f2a3b4c5d6",
"customer_id": "0b6f3c1e-2a4d-4c8e-9f10-7d2a6b5e4c33",
"customer_type": "individual",
"registration_type": "individual",
"status": "processing",
"created_at": "2026-10-13T09:12:44.512031Z",
"updated_at": "2026-10-13T10:02:31.004112Z",
"validation": {
"ok": true
}
},
"error": null
}
400 response
Error message. When several fields fail, it names the first and says how many others are in details. Branch on the HTTP status and the details codes, not on this text.
Field problems, keyed by field path. Each value is CODE: message, such as REQUIRED: Customer ID is required. The API joins several problems on one field with ; .
{
"data": null,
"error": "application is not editable"
}
{
"data": null,
"error": "Tax ID Number was not requested for this application",
"details": {
"tax_id_number": "INVALID_VALUE: Tax ID Number was not requested for this application"
}
}
404 response
Error message. When several fields fail, it names the first and says how many others are in details. Branch on the HTTP status and the details codes, not on this text.
Field problems, keyed by field path. Each value is CODE: message, such as REQUIRED: Customer ID is required. The API joins several problems on one field with ; .
{
"data": null,
"error": "Resource not found"
}
Authorization
- ApiKeyAuth