VA Application Rejection and Resubmission Guide
When a VA application submitted via the OpenAPI is rejected by compliance (requiring supplemental or modified materials), the system will issue structured pending tasks broken down by attachment, rather than merely returning a plain-text rejection reason. Integrating partners must upload new files according to the task requirements and invoke the dedicated resubmission endpoint; once all pending tasks for the current cycle are completed, the VA will automatically revert to the pending_review status.
Strictly Prohibited: Recreating VA OrdersWhen a VA is in the rejected state (
pending_attachment), do not under any circumstances call the account creation endpoint again to attempt to recreate the VA. The underlying system is equipped with duplication checks; if it detects an existing VA order for the same channel, it will outright reject the request and prompt you to use the dedicated resubmission endpoint.
Core Interaction Sequence Diagram 📊
The following sequence diagram illustrates the end-to-end interaction flow, starting from receiving the rejection webhook, querying tasks, processing user resubmission, and finally proceeding to the normal account opening approval and issuance:
sequenceDiagram
autonumber
actor User as User
participant Partner as Partner
participant DogPay as DogPay
participant Bank as Bank
Note over Partner, DogPay: 1. Rejection Trigger & Query
DogPay->>Partner: Webhook: entity.status.update (status=pending_attachment)
Partner->>DogPay: Call GET /va/rejection-records to fetch rejection details
DogPay-->>Partner: Return structured tasks (with fileUseType, rejectionRecordId)
Partner->>User: Notify user to supplement/re-submit specific rejected materials
User-->>Partner: User submits new materials to Partner
Note over Partner, DogPay: 2. Re-upload & Resubmit
Partner->>DogPay: Route to specific upload API based on bizType
DogPay-->>Partner: Return new fileId(s)
Partner->>DogPay: Call POST /va/resubmit-attachment to submit files
DogPay-->>Partner: Resubmission successful (Triggers pending_review upon full completion)
DogPay->>Partner: Webhook: entity.status.update (status=pending_review)
Note over Partner, Bank: 3. Normal Account Opening Flow Resumes
DogPay->>DogPay: Admin approves the application (applying)
DogPay->>Partner: Webhook: va.create (Information successfully submitted)
DogPay->>Bank: Submit account opening instruction to the underlying bank
Bank-->>DogPay: Bank issues Virtual Account
DogPay->>Partner: Webhook: va.update (Account successfully created)
Partner->>User: Notify user: Account ready
Standard Workflow for Resubmission ⚙️
Handling VA rejection resubmissions requires strictly following these four standardized steps:
Step 1: Receive the Rejection Webhook
When an application is rejected, the system triggers the entity.status.update webhook. The payload's status will change to pending_attachment, and it will include the specific vaAccountId along with a structured rejection object containing a batchId and task details.
Step 2: Query Specific Rejection Records
Call the new Get VA rejection records endpoint, passing the vaId to retrieve the detailed task list (this can also be found via GET va/detail). The returned records explicitly indicate which files were rejected (fileUseType) and provide the unique rejectionRecordId required for submission.
Step 3: Upload New Files Based on Business Type
Before submitting the resubmission, you must upload the new files to obtain new fileIds. The upload endpoint routing strictly depends on the bizType field found in the task record:
Pending Task Type (bizType) | Business Scenario Description | Corresponding Upload API Route |
|---|---|---|
VA_LEGAL_BUSINESS_ATTACHMENT | Corporate-level attachments for a corporate VA (e.g., resolutions, financials, proof of address, source of funds) | Account-level: POST file/upload |
VA_LEGAL_PERSON_ATTACHMENT | Attachments for a specific associated individual in a corporate VA (e.g., FATCA, source of funds) | Person-level: POST file/upload/va/legal-person(Must pass the corresponding personId in the Header) |
VA_PRIVATE_PERSON_ATTACHMENT | Attachments for a private/individual VA (e.g., FATCA, source of funds) | Account-level: POST file/upload(No personId required) |
Step 4: Invoke the API to Complete Resubmission
Once you have the fileIds for the new files, call the new Resubmit VA attachment endpoint to perform a precise replacement.
You can submit tasks individually or batch-submit multiple pending tasks at once. When all pending tasks for the current cycle transition to done, the VA order status automatically upgrades to pending_review and re-enters the manual approval queue.
Core Constraints and Common Pitfalls 🚧
Please ensure the following strict rules are validated during integration to avoid resubmission rejections:
- Mandatory File Count Alignment: The number of
fileIdspassed in theitems[].fileIdsarray must exactly match the number of files listed in the task's snapshot (snapshot.rejectedAttachments). - Consistent File Use Type: If the rejected file was a
CORPORATE_RESOLUTION, thefileUseTypeused when uploading the new file to clear the task must identically beCORPORATE_RESOLUTION. - Personnel Isolation Limits: For personnel attachments (
VA_LEGAL_PERSON_ATTACHMENT), the newly uploaded files must strictly belong to thetargetId(i.e., thepersonId) specified in the pending task. Corporate-level and private VA attachments must use the account-level upload API without apersonId. - Status Prerequisite: The VA order must be in the
pending_attachmentstatus to permit resubmissions. - Handling Obsolete Records: If a VA goes through multiple rejection cycles, uncompleted tasks from the previous cycle automatically change to
canceledstatus. You must never attempt to use thesedoneorcanceledrejectionRecordIds again. - Unreplaceable File Scope: Biometric reports (from facial recognition) and KYC IDs (Passports/ID cards) are not covered by this resubmission endpoint; replaceable personnel attachments are strictly limited to FATCA and Source of Funds. Attachments not listed in the pending tasks do not need to be re-uploaded.
Typical Scenarios 💡
| Scenario Description | Task Details | Processing Flow & Expected Result |
|---|---|---|
| Only Corporate Resolution Rejected | 1 VA_LEGAL_BUSINESS_ATTACHMENT task | Upload new file for fileId -> Submit resubmission -> Status changes to pending_review. |
| Only One UBO's FATCA Rejected | 1 VA_LEGAL_PERSON_ATTACHMENT task (targetId is the UBO) | Call person-level upload with personId -> Submit resubmission -> Enters review. No tasks for others. |
| Corporate SOF + Multiple Personnel Files Rejected | Multiple tasks generated | Status remains pending_attachment after completing 1 task; transitions to pending_review only after all are done. |
| Second Rejection Cycle | Generates a new batchId; old tasks become canceled | Must use the rejectionRecordId from the new cycle for resubmission. |
| Private VA Attachment Rejected | Generates VA_PRIVATE_PERSON_ATTACHMENT task (targetId is accountId) | Upload via account-level API (no personId) -> Submit resubmission -> Enters review. |
Updated about 1 hour ago
