{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","results":{"codes":[]},"settings":"","params":[]},"next":{"description":"","pages":[]},"title":"Payment Method Edge Cases","type":"basic","slug":"payment-method-edge-cases","excerpt":"","body":"There are four edge cases that would trigger a user into a `non approved` state after submitting KYC information and connecting a bank account.\n\n1. A user needs to re-submit a piece of initial account information.\n2. User needs to re-submit an ID image\n3. A user needs to submit a Proof of Address\n4. A user needs to submit an ACH authorization form.\n[block:api-header]\n{\n  \"title\": \"1. A user needs to re-submit a piece of initial account information.\"\n}\n[/block]\nThis typically happens when a user submit KYC information during the account creation stage and his/her information doesn't match up with the ID that was submitted, incorrect/invalid info provided, such as incorrect DOB, invalid address, misspelled legal name, or SSN/ITIN is needed.\n\nOn the API level, after a user submits data, the status of each `fieldId` in the response object from the [get_account](https://docs.sendwyre.com/docs/get-account) endpoint returns back a `PENDING` status for whichever `fieldId` that corresponds to the incorrectly input KYC data point. \n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\" : \\\"AC-U4BWHGZDG6W\\\",\\n\\t...,\\n\\t\\\"profileFields\\\" : [ {\\n    \\\"fieldId\\\" : \\\"individualSsn\\\",\\n    \\\"fieldType\\\" : \\\"STRING\\\",\\n    \\\"value\\\" : null,\\n    \\\"note\\\" : \\\"Please provide a valid social security number.\\\",\\n    \\\"status\\\" : \\\"OPEN\\\"\\n  }, {\\n  ...\\n  }]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nThere could be a different note for each user action based on each KYC data point. \n[block:api-header]\n{\n  \"title\": \"2. User needs to re-submit an ID image\"\n}\n[/block]\nThis typically happens when a user submits an ID that:\n- isn't legible, blurry image\n- pictures doesn't encapsulate the entire image, all four corners are not showing\n- Image doesn't match with the correct initial account KYC data\n\nOn the API level, the key/value `\"fieldId\":\"individualGovernmentId\"` will go from `PENDING` after an image is submitted, back to `OPEN` if the image is rejected.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\" : \\\"AC-U4BWHGZDG6W\\\",\\n\\t...,\\n\\t\\\"profileFields\\\" : [ {\\n    \\\"fieldId\\\" : \\\"individualGovernmentId\\\",\\n    \\\"fieldType\\\" : \\\"DOCUMENT\\\",\\n    \\\"value\\\" : [\\\"DO_B9QJCMN2QBB\\\"],\\n    \\\"note\\\" : \\\"Document is expired\\\",\\n    \\\"status\\\" : \\\"OPEN\\\"\\n  }, {\\n  ...\\n  }]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nIt's important to look at the `note` section of the server response object. The note will give context as to why an image will not work. Other notes include:\n\n- Identification needs to be in full color\n- Identification is blurry/hard to read\n- Document must include all four corners\n- Please submit a passport, driver's license or govt. issued identification document\n- Identification document is not supported\n[block:api-header]\n{\n  \"title\": \"3. A user needs to submit a Proof of Address\"\n}\n[/block]\nThis typically happens when a user submits an ID and inputs KYC address data that doesn't match.\nA proof of address document such as a:\n- Utility Bill\n- Bank Statement\n\nOn the API level, the key/value `\"fieldId\":\"individualGovernmentId\"` will go from `PENDING` after an image is submitted, back to `OPEN` if the image is rejected.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\" : \\\"AC-U4BWHGZDG6W\\\",\\n\\t...,\\n\\t\\\"profileFields\\\" : [{\\n   \\\"fieldId\\\": \\\"individualGovernmentId\\\"\\n    \\\"fieldType\\\": \\\"DOCUMENT\\\",\\n    \\\"value\\\": [DO_B9QJCMN2QB9],\\n    \\\"note\\\": \\\"Document must include all four corners\\\",\\n    \\\"status\\\": \\\"OPEN\\\"\\n \\t}, {\\n  ...\\n  }]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nIt's important to look at the `note` section of the server response object. The note will give context as to why an image will not work. Other notes include:\n\n- Please provide a translated copy of this document\n- Utility Bill does not match profile address\n- Bank Statement does not match profile address\n- Please provide utility bill that matches profile address\n- Please provide all pages of Bank statement for verification\n[block:api-header]\n{\n  \"title\": \"4. A user needs to submit an ACH authorization form.\"\n}\n[/block]\nThis typically happens when a user submits an ID, inputs KYC data, uploads a bank account payment method and data doesn't match. Examples include:\n\n1. Does not match the registered legal name\n2. Does not match the registered email\n3. Does not match the registered phone number\n4. Does not match the registered address nor have a valid proof of address on file\n5. Does not have transaction posted in transaction history\n6. Does not have a sufficient balance to cover the transaction\n\nYou'll then need to instruct your user to upload a photo of his/her self next to a piece of paper with the following written down:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/7907784-ACHATuh.png\",\n        \"ACHATuh.png\",\n        2545,\n        1744,\n        \"#9dcbe3\"\n      ]\n    }\n  ]\n}\n[/block]\nOnce submitted, our team will review and process the information.\n[block:api-header]\n{\n  \"title\": \"Upload Document Endpoint\"\n}\n[/block]\nIt is possible to upload missing account documents via the API. The [Upload Document](doc:upload-document) endpoint requires the accountId and fieldId: /v3/accounts/:accountId/:fieldId\n\nThe response to the account and paymentMethod endpoints will update accordingly during the following states when collecting the ACH form. The account endpoint response will only update if the payment method is the individual source of funds.\n\nWhen an ACH form has been initially been requested:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"//GET /accounts/:accountId\\n\\n[\\n\\t...\\n  {\\n  \\tfieldId: \\\"individualSourceOfFunds\\\",\\n    fieldType: \\\"PAYMENT_METHOD\\\",\\n    value: \\\"PM_XXXXX\\\",\\n    note: \\\"Additional information is required.\\\",\\n    status: \\\"OPEN\\\"\\n  }\\n]\\n\\n// GET /paymethMethod/PM_XXXXX\\n\\n{\\n    ...\\n    status: \\\"AWAITING_FOLLOWUP\\\",\\n    waitingPrompts: [{\\n    \\tid: \\\"ACH_FORM\\\"\\n      prompt: \\\"Please upload a picture of yourself with the following written down on a piece of paper next to your face: `Wyre`, today's date, the last 4 digits of your bank account number and your signature.\\\",\\n  \\t\\ttype: \\\"DOCUMENT\\\"\\n\\t\\t}]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWhen an ACH form has been submitted through the upload document for payment method endpoint and is in review:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"//GET /accounts/:accountId\\n\\n[\\n\\t...\\n  {\\n  \\tfieldId: \\\"individualSourceOfFunds\\\",\\n    fieldType: \\\"PAYMENT_METHOD\\\",\\n    value: \\\"PM_XXXXX\\\",\\n    note: \\\"Payment method is under review.\\\",\\n    status: \\\"PENDING\\\"\\n  }\\n]\\n\\n// GET /paymethMethod/PM_XXXXX\\n{\\n    ...\\n    status: \\\"AWAITING_FOLLOWUP\\\",\\n    waitingPrompts: []\\n}\",\n      \"language\": \"json\",\n      \"name\": null\n    }\n  ]\n}\n[/block]\nWhen an ACH form has been submitted through the upload documents for payment method endpoint and has been approved:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"//GET /accounts/:accountId\\n\\n[\\n\\t...\\n  {\\n  \\tfieldId: \\\"individualSourceOfFunds\\\",\\n    fieldType: \\\"PAYMENT_METHOD\\\",\\n    value: \\\"PM_XXXXX\\\",\\n    note: null,\\n    status: \\\"APPROVED\\\"\\n  }\\n]\\n\\n// GET /paymethMethod/PM_XXXXX\\n{\\n    ...\\n    status: \\\"APPROVED\\\",\\n    waitingPrompts: []\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]","updates":[],"order":11,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"5cd47371d9d25c01cc78d20b","project":"550f74bb6fc8130d0038aad3","version":{"version":"3","version_clean":"3.0.0","codename":"","is_stable":true,"is_beta":true,"is_hidden":false,"is_deprecated":false,"categories":["550f75de61d9d30d00af9e02","551027e38579861900a86698","551029e08579861900a8669a","551029e7498062190006328a","5bc633a722d682005c9ad9e4","5bc633b08c4b0b000d6a7eaa","5bc633b48f3ff600626e3e18","5bc63538e5a6ba000d22ee6d","5bc63587a18a6b000decd295","5bc635c0937fcb0056223d9c","5bc6360f42f41800319aeaa6","5be5d13ff1d319002baca9ce","5be5d2287cd14d00291fbfdb","5be8b3b09f7cb70023c56a39","5be8b3cbb910100044e20206","5c1d769a4f6aed001fe527f0","5c402942010f0d001496dded","5e8127d61c906800374eeb1c","5f2768c98622b8005106544a","5f2768d05702ca0011f7655e","5f276e5348d2b600321aef9b","5f276fd300e519001139200a","5f9a2cb79dafe500259281a7"],"_id":"550f75de61d9d30d00af9e01","__v":23,"releaseDate":"2015-03-23T02:09:34.221Z","project":"550f74bb6fc8130d0038aad3","createdAt":"2015-03-23T02:09:34.221Z","forked_from":"550f74bb6fc8130d0038aad6"},"category":{"sync":{"isSync":false,"url":""},"pages":[],"title":"Payment Methods","slug":"payment-methods","order":10,"from_sync":false,"reference":true,"_id":"5bc633b08c4b0b000d6a7eaa","project":"550f74bb6fc8130d0038aad3","version":"550f75de61d9d30d00af9e01","createdAt":"2018-10-16T18:53:36.184Z","__v":0},"user":"5c9277494aa821001ae4edb5","createdAt":"2019-05-09T18:37:37.850Z","__v":0,"parentDoc":null}

Payment Method Edge Cases


There are four edge cases that would trigger a user into a `non approved` state after submitting KYC information and connecting a bank account. 1. A user needs to re-submit a piece of initial account information. 2. User needs to re-submit an ID image 3. A user needs to submit a Proof of Address 4. A user needs to submit an ACH authorization form. [block:api-header] { "title": "1. A user needs to re-submit a piece of initial account information." } [/block] This typically happens when a user submit KYC information during the account creation stage and his/her information doesn't match up with the ID that was submitted, incorrect/invalid info provided, such as incorrect DOB, invalid address, misspelled legal name, or SSN/ITIN is needed. On the API level, after a user submits data, the status of each `fieldId` in the response object from the [get_account](https://docs.sendwyre.com/docs/get-account) endpoint returns back a `PENDING` status for whichever `fieldId` that corresponds to the incorrectly input KYC data point. [block:code] { "codes": [ { "code": "{\n \"id\" : \"AC-U4BWHGZDG6W\",\n\t...,\n\t\"profileFields\" : [ {\n \"fieldId\" : \"individualSsn\",\n \"fieldType\" : \"STRING\",\n \"value\" : null,\n \"note\" : \"Please provide a valid social security number.\",\n \"status\" : \"OPEN\"\n }, {\n ...\n }]\n}", "language": "json" } ] } [/block] There could be a different note for each user action based on each KYC data point. [block:api-header] { "title": "2. User needs to re-submit an ID image" } [/block] This typically happens when a user submits an ID that: - isn't legible, blurry image - pictures doesn't encapsulate the entire image, all four corners are not showing - Image doesn't match with the correct initial account KYC data On the API level, the key/value `"fieldId":"individualGovernmentId"` will go from `PENDING` after an image is submitted, back to `OPEN` if the image is rejected. [block:code] { "codes": [ { "code": "{\n \"id\" : \"AC-U4BWHGZDG6W\",\n\t...,\n\t\"profileFields\" : [ {\n \"fieldId\" : \"individualGovernmentId\",\n \"fieldType\" : \"DOCUMENT\",\n \"value\" : [\"DO_B9QJCMN2QBB\"],\n \"note\" : \"Document is expired\",\n \"status\" : \"OPEN\"\n }, {\n ...\n }]\n}", "language": "json" } ] } [/block] It's important to look at the `note` section of the server response object. The note will give context as to why an image will not work. Other notes include: - Identification needs to be in full color - Identification is blurry/hard to read - Document must include all four corners - Please submit a passport, driver's license or govt. issued identification document - Identification document is not supported [block:api-header] { "title": "3. A user needs to submit a Proof of Address" } [/block] This typically happens when a user submits an ID and inputs KYC address data that doesn't match. A proof of address document such as a: - Utility Bill - Bank Statement On the API level, the key/value `"fieldId":"individualGovernmentId"` will go from `PENDING` after an image is submitted, back to `OPEN` if the image is rejected. [block:code] { "codes": [ { "code": "{\n \"id\" : \"AC-U4BWHGZDG6W\",\n\t...,\n\t\"profileFields\" : [{\n \"fieldId\": \"individualGovernmentId\"\n \"fieldType\": \"DOCUMENT\",\n \"value\": [DO_B9QJCMN2QB9],\n \"note\": \"Document must include all four corners\",\n \"status\": \"OPEN\"\n \t}, {\n ...\n }]\n}", "language": "json" } ] } [/block] It's important to look at the `note` section of the server response object. The note will give context as to why an image will not work. Other notes include: - Please provide a translated copy of this document - Utility Bill does not match profile address - Bank Statement does not match profile address - Please provide utility bill that matches profile address - Please provide all pages of Bank statement for verification [block:api-header] { "title": "4. A user needs to submit an ACH authorization form." } [/block] This typically happens when a user submits an ID, inputs KYC data, uploads a bank account payment method and data doesn't match. Examples include: 1. Does not match the registered legal name 2. Does not match the registered email 3. Does not match the registered phone number 4. Does not match the registered address nor have a valid proof of address on file 5. Does not have transaction posted in transaction history 6. Does not have a sufficient balance to cover the transaction You'll then need to instruct your user to upload a photo of his/her self next to a piece of paper with the following written down: [block:image] { "images": [ { "image": [ "https://files.readme.io/7907784-ACHATuh.png", "ACHATuh.png", 2545, 1744, "#9dcbe3" ] } ] } [/block] Once submitted, our team will review and process the information. [block:api-header] { "title": "Upload Document Endpoint" } [/block] It is possible to upload missing account documents via the API. The [Upload Document](doc:upload-document) endpoint requires the accountId and fieldId: /v3/accounts/:accountId/:fieldId The response to the account and paymentMethod endpoints will update accordingly during the following states when collecting the ACH form. The account endpoint response will only update if the payment method is the individual source of funds. When an ACH form has been initially been requested: [block:code] { "codes": [ { "code": "//GET /accounts/:accountId\n\n[\n\t...\n {\n \tfieldId: \"individualSourceOfFunds\",\n fieldType: \"PAYMENT_METHOD\",\n value: \"PM_XXXXX\",\n note: \"Additional information is required.\",\n status: \"OPEN\"\n }\n]\n\n// GET /paymethMethod/PM_XXXXX\n\n{\n ...\n status: \"AWAITING_FOLLOWUP\",\n waitingPrompts: [{\n \tid: \"ACH_FORM\"\n prompt: \"Please upload a picture of yourself with the following written down on a piece of paper next to your face: `Wyre`, today's date, the last 4 digits of your bank account number and your signature.\",\n \t\ttype: \"DOCUMENT\"\n\t\t}]\n}", "language": "json" } ] } [/block] When an ACH form has been submitted through the upload document for payment method endpoint and is in review: [block:code] { "codes": [ { "code": "//GET /accounts/:accountId\n\n[\n\t...\n {\n \tfieldId: \"individualSourceOfFunds\",\n fieldType: \"PAYMENT_METHOD\",\n value: \"PM_XXXXX\",\n note: \"Payment method is under review.\",\n status: \"PENDING\"\n }\n]\n\n// GET /paymethMethod/PM_XXXXX\n{\n ...\n status: \"AWAITING_FOLLOWUP\",\n waitingPrompts: []\n}", "language": "json", "name": null } ] } [/block] When an ACH form has been submitted through the upload documents for payment method endpoint and has been approved: [block:code] { "codes": [ { "code": "//GET /accounts/:accountId\n\n[\n\t...\n {\n \tfieldId: \"individualSourceOfFunds\",\n fieldType: \"PAYMENT_METHOD\",\n value: \"PM_XXXXX\",\n note: null,\n status: \"APPROVED\"\n }\n]\n\n// GET /paymethMethod/PM_XXXXX\n{\n ...\n status: \"APPROVED\",\n waitingPrompts: []\n}", "language": "json" } ] } [/block]