发票开具
<p>[TOC]</p>
<h3>1 使用流程</h3>
<h4>1.1 第一步 -- 登录税局</h4>
<p>发票开具需先调用登录接口去登录税局,然后调用获取token接口获取token,开票接口需要传入token
详见:[登录相关接口](<a href="https://www.showdoc.com.cn/p/a63fe7d73087fbebd612aef11dab8b9e">https://www.showdoc.com.cn/p/a63fe7d73087fbebd612aef11dab8b9e</a> "登录相关接口")
> 获取token之后,如果token未过期,可一直发起开票任务,如果token过期则需要再次获取token
> 如果登录过期则需要再次调用登录接口</p>
<h4>1.2 第二步 -- 实名认证</h4>
<p>开票需要开票人实名认证,步骤如下:</p>
<ol>
<li>调用获取人脸识别认证二维码接口获取二维码</li>
<li>用<strong>个税App</strong>或<strong>税务App</strong>扫码进行人脸识别</li>
<li>再调用获取人脸识别认证结果接口获取认证结果</li>
</ol>
<h4>1.3 第三步 -- 开票</h4>
<hr />
<h3>2 接口调用说明</h3>
<h4>2.1 请求方式</h4>
<p>如接口没有单独说明,所有接口均为:<strong>POST</strong></p>
<h4>2.2 请求格式</h4>
<p>如接口没有单独说明,所有接口均为:<strong>application/x-www-form-urlencoded</strong></p>
<h4>2.3 请求参数</h4>
<p>请求参数包括公共参数和业务参数(业务参数见具体接口说明)
调用接口时,需要把<strong>公共参数</strong>和<strong>业务参数</strong>一并放在<strong>请求参数</strong>中提交</p>
<ul>
<li>公共请求参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>appId</td>
<td>String</td>
<td>是</td>
<td>服务商分配的唯一标识</td>
</tr>
<tr>
<td>timestamp</td>
<td>Long</td>
<td>是</td>
<td>当前时间戳(毫秒)</td>
</tr>
<tr>
<td>sign</td>
<td>String</td>
<td>是</td>
<td>签名,详见<a href="#签名算法">签名算法说明</a></td>
</tr>
</tbody>
</table>
<p><a name="签名算法"></a></p>
<ul>
<li>签名算法说明</li>
</ul>
<pre><code>sign = sha256(appId + appSecret + timestamp)</code></pre>
<p>用服务商分配的 <strong>appId</strong>、服务商分配的 <strong>appSecret</strong>,当前时间戳(毫秒) <strong>timestamp</strong>,按上述顺序拼接成字符串,再进行 <strong>sha256</strong> 哈希得到。如下:</p>
<pre><code class="language-java">String appId = &quot;xyzxy2121zxyz&quot;;
String timestamp = &quot;1555378976238&quot;;
String appSecret = &quot;efcefcef1121cefcefc1212121&quot;;
String str = appId  + appSecret + timestamp;
String sign = sha256(str);</code></pre>
<h4>2.4 返回说明</h4>
<p>所有接口均返回以下公共字段:</p>
<table>
<thead>
<tr>
<th>字段名</th>
<th><div style="width:420px">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>返回码,详见:code返回码说明</td>
</tr>
<tr>
<td>msg</td>
<td>code对应的描述</td>
</tr>
<tr>
<td>charge</td>
<td>计费标志  true为计费,false为不计费</td>
</tr>
<tr>
<td>taskNo</td>
<td>本次请求号</td>
</tr>
<tr>
<td>data</td>
<td>返回具体结果,object类型,详见data返回字段描述</td>
</tr>
</tbody>
</table>
<p><a name="code返回码说明"></a></p>
<ul>
<li>code返回码说明</li>
</ul>
<table>
<thead>
<tr>
<th>code</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>200</td>
<td>成功标识,具体接口以实际返回为准</td>
</tr>
<tr>
<td>202</td>
<td>任务正在进行中,请稍后再试</td>
</tr>
<tr>
<td>301</td>
<td>用户名或手机号在电局不存在</td>
</tr>
<tr>
<td>302</td>
<td>未登录或登录已失效,请重新登录</td>
</tr>
<tr>
<td>303</td>
<td>token已失效,请重新获取token</td>
</tr>
<tr>
<td>311</td>
<td>未完成扫脸</td>
</tr>
<tr>
<td>312</td>
<td>实名认证过期,重新获取二维码进行人脸识别</td>
</tr>
<tr>
<td>399</td>
<td>税局开票异常,以实际返回为准</td>
</tr>
<tr>
<td>400</td>
<td>参数错误</td>
</tr>
<tr>
<td>404</td>
<td>接口地址不正确</td>
</tr>
<tr>
<td>500</td>
<td>系统维护,请稍候再试</td>
</tr>
<tr>
<td>501</td>
<td>税局系统异常,请稍后再试</td>
</tr>
<tr>
<td>601</td>
<td>接口未开通</td>
</tr>
<tr>
<td>602</td>
<td>账号停用</td>
</tr>
<tr>
<td>604</td>
<td>接口停用</td>
</tr>
<tr>
<td>606</td>
<td>调用超限,请稍候再试</td>
</tr>
<tr>
<td>607</td>
<td>ip不在白名单</td>
</tr>
<tr>
<td>609</td>
<td>请求过于频繁,请稍候再试</td>
</tr>
</tbody>
</table>
<hr />
<h3>3 实名认证</h3>
<h4>3.1 获取认证二维码</h4>
<p>获取实名认证二维码,用<strong>个税App</strong>或<strong>税务App</strong>扫码进行人脸识别</p>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/auth/qrcode</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>app</td>
<td>String</td>
<td>是</td>
<td>扫码app。1-个税app, 2-税局app</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;&quot;,
  &quot;taskNo&quot;: &quot;526782409178028997165459&quot;,
  &quot;data&quot;: {
    &quot;authId&quot;: &quot;857cbe76be841e98bfd&quot;, // 认证id
    &quot;qrcodeImageBase64&quot;: &quot;&quot;, // 二维码图片base64
    &quot;qrcodeImageUrl&quot;: &quot;&quot; // 二维码图片url
  }
}</code></pre>
<ul>
<li>失败返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 301,
  &quot;msg&quot;: &quot;用户名或手机号在电局不存在&quot;,
  &quot;taskNo&quot;: &quot;526782409178028997165459&quot;
}</code></pre>
<h4>3.2 获取认证结果</h4>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/auth/result</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>authId</td>
<td>String</td>
<td>是</td>
<td>获取认证二维码返回的authId</td>
</tr>
<tr>
<td>app</td>
<td>String</td>
<td>是</td>
<td>扫码app。1-个税app, 2-税局app</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;通过&quot;,
  &quot;taskNo&quot;: &quot;526782409178028997165459&quot; 
}</code></pre>
<ul>
<li>未完成扫脸返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 311,
  &quot;msg&quot;: &quot;未完成扫脸&quot;,
  &quot;taskNo&quot;: &quot;526782409178028997165459&quot;
}</code></pre>
<ul>
<li>扫脸过期,重新获取二维码</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 312,
  &quot;msg&quot;: &quot;扫脸过期,重新获取二维码&quot;,
  &quot;taskNo&quot;: &quot;526782409178028997165459&quot;
}</code></pre>
<h3>4 蓝字发票</h3>
<h4>4.1 蓝字发票开具</h4>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/blue-invoice/submit</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>taskId</td>
<td>String</td>
<td>是</td>
<td>开票任务id,同一张票使用同一个taskId 防止重复开票,taskId保存8小时,8小时之后失效</td>
</tr>
<tr>
<td>invoiceData</td>
<td>String</td>
<td>是</td>
<td>开票数据,json格式,详见:开票数据说明</td>
</tr>
</tbody>
</table>
<ul>
<li>
<p>开票数据说明</p>
</li>
<li>开具完成返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;开具成功&quot;,
  &quot;taskNo&quot;: &quot;526782409178028997165459&quot;,
  &quot;data&quot;: {
    &quot;fphm&quot;: &quot;25332000000456135731&quot;, // 发票号码
    &quot;kprq&quot;: &quot;2025-10-15 10:37:23&quot; // 开票日期
  }
}</code></pre>
<ul>
<li>开具任务进行中返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 202,
  &quot;msg&quot;: &quot;任务正在进行中,请稍后再试&quot;,
  &quot;taskNo&quot;: &quot;526782409178028997165459&quot;
}</code></pre>
<p>> 此返回表示本taskId的开票任务未完成,等待税局执行完成。
可再次使用相同参数调用本接口,如果成功表示税局开票成功。</p>
<h4>4.2 蓝字发票查询</h4>
<p>查询已开具的蓝字发票</p>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/blue-invoice/query</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>kprqq</td>
<td>String</td>
<td>是</td>
<td>开票日期起,格式:yyyy-MM-dd</td>
</tr>
<tr>
<td>kprqz</td>
<td>String</td>
<td>是</td>
<td>开票日期止,格式:yyyy-MM-dd</td>
</tr>
<tr>
<td>fphm</td>
<td>String</td>
<td>否</td>
<td>发票号码</td>
</tr>
<tr>
<td>zzfpdm</td>
<td>String</td>
<td>否</td>
<td>纸质发票代码</td>
</tr>
<tr>
<td>zzfphm</td>
<td>String</td>
<td>否</td>
<td>纸质发票号码</td>
</tr>
<tr>
<td>gxfxz</td>
<td>String</td>
<td>否</td>
<td>购销方性质</td>
</tr>
<tr>
<td>dfnsrmc</td>
<td>String</td>
<td>否</td>
<td>对方纳税人名称</td>
</tr>
<tr>
<td>dfnsrsbh</td>
<td>String</td>
<td>否</td>
<td>对方纳税人识别号</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;成功&quot;,
  &quot;taskNo&quot;: &quot;526782409178028997165459&quot;,
  &quot;data&quot;: {
    &quot;pagenumber&quot;: 1,
    &quot;pagesize&quot;: 50,
    &quot;total&quot;: 2,
    &quot;list&quot;: [
      {
        &quot;gjbq&quot;: null,
        &quot;fphm&quot;: &quot;24342000280347121212&quot;,
        &quot;zzfphm&quot;: &quot;&quot;,
        &quot;zzfpdm&quot;: &quot;&quot;,
        &quot;fplydm&quot;: &quot;2&quot;,
        &quot;fplxdm&quot;: &quot;82&quot;,
        &quot;fppzdm&quot;: &quot;02&quot;,
        &quot;fpkjfxlxdm&quot;: null,
        &quot;tdyslxdm&quot;: null,
        &quot;fpztdm&quot;: &quot;03&quot;,
        &quot;cezslxdm&quot;: null,
        &quot;sflzfp&quot;: &quot;Y&quot;,
        &quot;kjhzfpdydlzfphm&quot;: null,
        &quot;kpfnsrsbh&quot;: &quot;xxxx&quot;,
        &quot;xsfnsrsbh&quot;: &quot;xxxx&quot;,
        &quot;xsfmc&quot;: &quot;纳税人名称5658119&quot;,
        &quot;gmfnsrsbh&quot;: &quot;xxxx&quot;,
        &quot;gmfmc&quot;: &quot;&quot;,
        &quot;kprq&quot;: &quot;2024-09-20 17:31:02&quot;,
        &quot;hjje&quot;: 73.26,
        &quot;hjse&quot;: 0.74,
        &quot;bz&quot;: null,
        &quot;xsfssjswjgdm&quot;: &quot;1xxxx000000&quot;,
        &quot;xsfdsjswjgdm&quot;: null,
        &quot;xsfzgswjdm&quot;: null,
        &quot;gmfssjswjgdm&quot;: null,
        &quot;gmfdsjswjgdm&quot;: null,
        &quot;gmfzgswjdm&quot;: null,
        &quot;gmfssjswjgmc&quot;: null,
        &quot;fpkjfsdm&quot;: &quot;1&quot;,
        &quot;kpr&quot;: null,
        &quot;jazslxdm&quot;: null,
        &quot;sfzzfpbz&quot;: null,
        &quot;tspzdm&quot;: null,
        &quot;xhqdbz&quot;: null,
        &quot;jshj&quot;: 74,
        &quot;xsfzgswskfjdm&quot;: null,
        &quot;gmfzgswskfjdm&quot;: null,
        &quot;gmfjbr&quot;: null,
        &quot;xhfdjxh&quot;: null,
        &quot;gmfdjxh&quot;: null,
        &quot;gmfzrrbz&quot;: null,
        &quot;dbbkpbz&quot;: null,
        &quot;tdyslxmc&quot;: &quot;&quot;,
        &quot;sfxscxsq&quot;: null,
        &quot;hzqrxxuuid&quot;: null,
        &quot;xsfssjswjgmc&quot;: &quot;国家税务总局浙江省税务局&quot;,
        &quot;gmfzjhm&quot;: null,
        &quot;tdysmxlist&quot;: null,
        &quot;hzsq&quot;: null,
        &quot;kjhzfpdyzzfpdm&quot;: null,
        &quot;kjhzfpdyzzfphm&quot;: null
      }
    ]
  }
}</code></pre>
<h3>5 红字发票</h3>
<p>红票开具是需要先开具确认单-开具确认单存在情况如下:
1、  如果能够直接开具成功-则返回开具红票信息;
2、  如果未直接开具,则需要使用确认单uuid开具红票或撤销开票;
3、  如果需要对方确认,则通过使用确认单uuid同意并开票或拒绝;</p>
<h4>5.1 红字发票开具-信息提交</h4>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/red-invoice/submit</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>lzfphm</td>
<td>String</td>
<td>是</td>
<td>蓝字发票号码</td>
</tr>
<tr>
<td>lzkprq</td>
<td>String</td>
<td>是</td>
<td>蓝字开票日期,格式:yyyy-MM-dd HH:mm:dd</td>
</tr>
<tr>
<td>chyydm</td>
<td>String</td>
<td>是</td>
<td>红冲原因:01-开票有误; 02-销货退回; 03-服务中止;  04-销售折让</td>
</tr>
<tr>
<td>hzmx</td>
<td>String</td>
<td>否</td>
<td>部分冲红时,请传入冲红明细行,JsonArray格式:[{},...],为空表示全部冲红</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;开具成功&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;,
  &quot;data&quot;: {
  }
}</code></pre>
<ul>
<li>没有可冲红金额返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 399,
  &quot;msg&quot;: &quot;蓝票没有可红冲的金额,不可再次红冲!&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;
}</code></pre>
<h4>5.2 红字发票开具-查询结果</h4>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/red-invoice/result</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>uuid</td>
<td>String</td>
<td>是</td>
<td>红字确认单uuid</td>
</tr>
<tr>
<td>xsfnsrsbh</td>
<td>String</td>
<td>是</td>
<td>销售方纳税人识别号</td>
</tr>
</tbody>
</table>
<ul>
<li>开具成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;开具成功&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;,
  &quot;data&quot;: {
    &quot;xsfmc&quot;: &quot;杭州yyyy有限公司&quot;, // 销售方名称
    &quot;xsfnsrsbh&quot;: &quot;913LR64M4330105MK&quot;,  // 销售方纳税人识别号
    &quot;gmfmc&quot;: &quot;杭州xxx有限公司&quot;, // 购买方名称
    &quot;gmfnsrsbh&quot;: &quot;94330105M134XNA2KE&quot;,   //  购买方纳税人识别号
    &quot;fphm&quot;: &quot;25332000000460594162&quot;, // 发票号码
    &quot;fppzdm&quot;: &quot;02&quot;, // 发票种类:01-专票;02-普票
    &quot;kprq&quot;: &quot;2025-10-17 14:50:51&quot;, // 开票日期
    &quot;jshj&quot;: -50, // 价税合计
    &quot;gmfzrrbz&quot;: &quot;N&quot;,
    &quot;tdyslxdm&quot;: &quot;&quot;
  }
}</code></pre>
<ul>
<li>正在开具返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 202,
  &quot;msg&quot;: &quot;任务正在进行中,请稍后再试&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;
}</code></pre>
<h4>5.3 红字发票查询</h4>
<p>查询已开的红字发票</p>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/red-invoice/query</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>kprqq</td>
<td>String</td>
<td>是</td>
<td>开票日期起,格式:yyyy-MM-dd</td>
</tr>
<tr>
<td>kprqz</td>
<td>String</td>
<td>是</td>
<td>开票日期止,格式:yyyy-MM-dd</td>
</tr>
<tr>
<td>pageNumber</td>
<td>String</td>
<td>否</td>
<td>默认 1</td>
</tr>
<tr>
<td>pageSize</td>
<td>String</td>
<td>否</td>
<td>默认 10</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;成功&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;,
  &quot;data&quot;: {
    &quot;total&quot;: 1,
    &quot;pagesize&quot;: 10,
    &quot;pagenumber&quot;: 1,
    &quot;list&quot;: [
      {
        &quot;xsfmc&quot;: &quot;杭州xxx有限公司&quot;,  // 销售方名称
        &quot;xsfnsrsbh&quot;: &quot;9133011C64LR0MA64M&quot;, // 销售方纳税人识别号
        &quot;gmfmc&quot;: &quot;杭州yyy科技有限公司&quot;, // 购买方名称
        &quot;gmfnsrsbh&quot;: &quot;91E4330105MA2KXN43&quot;, // 购买方纳税人识别号
        &quot;dfnsrmc&quot;: &quot;杭州yyy科技有限公司&quot;,
        &quot;dfnsrsbh&quot;: &quot;91330105N4MA2KE4X3&quot;,
        &quot;kjhzfpdydlzfphm&quot;: &quot;25332000000456135731&quot;, // 冲红的蓝字发票号码
        &quot;kprq&quot;: &quot;2025-10-17 14:50:51&quot;, // 开票日期
        &quot;fphm&quot;: &quot;25332000000460594162&quot;, // 红字发票号码
        &quot;fplydm&quot;: &quot;2&quot;,
        &quot;fplxdm&quot;: &quot;82&quot;,
        &quot;hjje&quot;: -47.17,
        &quot;hjse&quot;: -2.83,
        &quot;zzfpdm&quot;: &quot;&quot;,
        &quot;sflzfp&quot;: &quot;N&quot;,
        &quot;zzfphm&quot;: &quot;&quot;
      }
    ]
  }
}</code></pre>
<h4>5.4 红字确认单-查询</h4>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/red-confirmation/query</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;成功&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;,
  &quot;data&quot;: {
  &quot;total&quot;: 1,
    &quot;pagesize&quot;: 10,
    &quot;pagenumber&quot;: 1,
    &quot;list&quot;: [
      {
        &quot;xsfmc&quot;: &quot;杭州xxx有限公司&quot;,  // 销售方名称
        &quot;xsfnsrsbh&quot;: &quot;9133011C64LR0MA64M&quot;, // 销售方纳税人识别号
        &quot;gmfmc&quot;: &quot;杭州yyy科技有限公司&quot;, // 购买方名称
        &quot;gmfnsrsbh&quot;: &quot;91E4330105MA2KXN43&quot; // 购买方纳税人识别号
      }
  }
}</code></pre>
<h4>5.5 红字确认单-详细信息</h4>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/red-confirmation/detail</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>uuid</td>
<td>String</td>
<td>是</td>
<td>红字确认单uuid</td>
</tr>
<tr>
<td>xsfnsrsbh</td>
<td>String</td>
<td>是</td>
<td>销售方纳税人识别号</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;成功&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;,
}</code></pre>
<h4>5.6 红字确认单-确认开具</h4>
<p>若红字发票开具-信息提交接口,提交后立即开具的,则无需调用本接口</p>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/red-confirmation/confirm</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>uuid</td>
<td>String</td>
<td>是</td>
<td>红字确认单uuid</td>
</tr>
<tr>
<td>xsfnsrsbh</td>
<td>String</td>
<td>是</td>
<td>销售方纳税人识别号</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;成功&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;,
}</code></pre>
<h4>5.7 红字确认单-撤销</h4>
<p>若红字发票开具-信息提交接口,提交后立即开具的,则无需调用本接口</p>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/red-confirmation/confirm</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>uuid</td>
<td>String</td>
<td>是</td>
<td>红字确认单uuid</td>
</tr>
<tr>
<td>xsfnsrsbh</td>
<td>String</td>
<td>是</td>
<td>销售方纳税人识别号</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;成功&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;,
}</code></pre>
<h4>5.8 红字确认单-对方操作-同意并开具</h4>
<p>若红字发票开具-信息提交接口,提交后立即开具的,则无需调用本接口</p>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/red-confirmation/confirm</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>uuid</td>
<td>String</td>
<td>是</td>
<td>红字确认单uuid</td>
</tr>
<tr>
<td>xsfnsrsbh</td>
<td>String</td>
<td>是</td>
<td>销售方纳税人识别号</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;成功&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;,
}</code></pre>
<h4>5.9 红字确认单-对方操作-拒绝</h4>
<p>若红字发票开具-信息提交接口,提交后立即开具的,则无需调用本接口</p>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/red-confirmation/confirm</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>uuid</td>
<td>String</td>
<td>是</td>
<td>红字确认单uuid</td>
</tr>
<tr>
<td>xsfnsrsbh</td>
<td>String</td>
<td>是</td>
<td>销售方纳税人识别号</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;成功&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;,
}</code></pre>
<h3>6 发票交付</h3>
<h4>6.1 获取税局下载页面</h4>
<ul>
<li>请求地址</li>
</ul>
<p><code>https://api.jumdata.com/tax/v3/makeout/red-confirmation/page</code></p>
<ul>
<li>业务参数</li>
</ul>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th><div style="width:420px;">说明</div></th>
</tr>
</thead>
<tbody>
<tr>
<td>nsrsbh</td>
<td>String</td>
<td>是</td>
<td>纳税人识别号</td>
</tr>
<tr>
<td>dq</td>
<td>String</td>
<td>是</td>
<td>地区编码</td>
</tr>
<tr>
<td>gryhm</td>
<td>String</td>
<td>是</td>
<td>登录账号,该值可为:居民身份证/手机号/用户名</td>
</tr>
<tr>
<td>token</td>
<td>String</td>
<td>是</td>
<td>查询登录token接口返回的token</td>
</tr>
<tr>
<td>fphm</td>
<td>String</td>
<td>是</td>
<td>发票号码</td>
</tr>
<tr>
<td>kprq</td>
<td>String</td>
<td>是</td>
<td>开票日期</td>
</tr>
</tbody>
</table>
<ul>
<li>成功返回样例</li>
</ul>
<pre><code class="language-json">{
  &quot;code&quot;: 200,
  &quot;msg&quot;: &quot;成功&quot;,
  &quot;taskNo&quot;: &quot;518091345199211978770098&quot;,
  &quot;data&quot;: {
    &quot;url&quot;: &quot;&quot; // 税局下载页面地址
  }
}</code></pre>