addrbookFor publishers
← The evidence ledger

Evidence row 67952

Observed , by baseline/1.

Kind
listing
About
source_record x402_bazaar:https://api.paidpilot.io/v1/invoice-from-timesheet
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
a50bfabd6c49a5169ddb75da05186a53650b28ef210a88db47b806c2c3e76dcc
Leaf
0x89d5a9d12ae782906de96a3c1f235f127e1d467ea059b6a8cce1c04812598b63

What was observed

{
  "endpoints": [
    [
      "x402",
      "https://api.paidpilot.io/v1/invoice-from-timesheet"
    ]
  ],
  "name": "PaidPilot Invoice API",
  "owner_address": "0x2daf658b01e257206375798a15832e9f547d65dd",
  "raw": {
    "accepts": [
      {
        "amount": "20000",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "extra": {
          "name": "USD Coin",
          "version": "2"
        },
        "maxTimeoutSeconds": 120,
        "network": "eip155:8453",
        "payTo": "0x2dAF658B01e257206375798a15832E9f547D65dD",
        "scheme": "exact"
      }
    ],
    "description": "Turn timesheet entries into invoice JSON. $0.02 USDC on Base per call. Hours x rate, optional rounding, grouping, expenses, tax and terms become a validated invoice JSON with totals, ready for /v1/invoice.pdf. Don't use this for the PDF itself; send the result to /v1/invoice.pdf.",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "body": {
              "buyer": {
                "name": "Blue River Bakery"
              },
              "currency": "USD",
              "default_rate": 85,
              "entries": [
                {
                  "date": "2026-10-05",
                  "description": "Website fixes",
                  "hours": 1.6
                },
                {
                  "date": "2026-10-06",
                  "description": "Website fixes",
                  "hours": 2.25
                },
                {
                  "date": "2026-10-08",
                  "description": "Menu photo shoot",
                  "hours": 3,
                  "rate": 95
                }
              ],
              "expenses": [
                {
                  "amount": 29,
                  "description": "Stock photo license"
                }
              ],
              "group_by": "description",
              "invoice_number": "INV-1002",
              "issue_date": "2026-10-11",
              "rounding": {
                "increment_minutes": 15,
                "mode": "up"
              },
              "seller": {
                "email": "billing@acme.example",
                "name": "Acme Web Studio LLC"
              },
              "tax_rate": 7,
              "terms": "Net 15"
            },
            "bodyType": "json",
            "method": "POST",
            "type": "http"
          },
          "output": {
            "example": {
              "hours": {
                "billed": 7,
                "entered": 6.85,
                "entries": 3,
                "entries_rounded_to_zero": 0
              },
              "invoice": {
                "buyer": {
                  "name": "Blue River Bakery"
                },
                "currency": "USD",
                "due_date": "2026-10-26",
                "invoice_number": "INV-1002",
                "issue_date": "2026-10-11",
                "line_items": [
                  {
                    "description": "Website fixes (2026-10-05 to 2026-10-06)",
                    "quantity": 4,
                    "unit_price": 85
                  },
                  {
                    "description": "Menu photo shoot (2026-10-08)",
                    "quantity": 3,
                    "unit_price": 95
                  },
                  {
                    "description": "Expense: Stock photo license",
                    "quantity": 1,
                    "unit_price": 29
                  }
                ],
                "payment_instructions": "Terms: Net 15, due 2026-10-26.",
                "seller": {
                  "email": "billing@acme.example",
                  "name": "Acme Web Studio LLC"
                },
                "tax_rate": 7
              },
              "line_count": 3,
              "next": {
                "pdf": "POST https://api.paidpilot.io/v1/invoice.pdf with the \"invoice\" object as the JSON body ($0.02 in USDC via x402) to get the PDF.",
                "validate_free": "POST https://api.paidpilot.io/v1/invoice/validate"
              },
              "rounding": "up 15 min per entry",
              "totals": {
                "currency": "USD",
                "discount": "0.00 USD",
                "subtotal": "654.00 USD",
                "tax": "45.78 USD",
                "total": "699.78 USD"
              }
            },
            "type": "json"
          }
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "$schema": "https://json-schema.org/draft/2020-12/schema",
                  "additionalProperties": false,
                  "properties": {
                    "buyer": {
                      "properties": {
                        "address": {
                          "maxLength": 400,
                          "type": "string"
                        },
                        "email": {
                          "format": "email",
                          "maxLength": 254,
                          "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
                          "type": "string"
                        },
                        "name": {
                          "maxLength": 120,
                          "minLength": 1,
                          "type": "string"
                        },
                        "phone": {
                          "maxLength": 40,
                          "type": "string"
                        },
                        "tax_id": {
                          "maxLength": 60,
                          "type": "string"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "type": "object"
                    },
                    "currency": {
                      "default": "USD",
                      "type": "string"
                    },
                    "default_rate": {
                      "description": "Hourly rate for entries without their own rate",
                      "maximum": 1000000,
                      "minimum": 0,
                      "type": "number"
                    },
                    "discount": {
                      "maximum": 1000000000,
                      "minimum": 0,
                      "type": "number"
                    },
                    "due_date": {
                      "description": "YYYY-MM-DD; or give terms instead",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                      "type": "string"
                    },
                    "entries": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "date": {
                            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                            "type": "string"
                          },
                          "description": {
                            "maxLength": 250,
                            "minLength": 1,
                            "type": "string"
                          },
                          "hours": {
                            "exclusiveMinimum": 0,
                            "maximum": 1000,
                            "type": "number"
                          },
                          "rate": {
                            "maximum": 1000000,
                            "minimum": 0,
                            "type": "number"
                          }
                        },
                        "required": [
                          "description",
                          "hours"
                        ],
                        "type": "object"
                      },
                      "maxItems": 500,
                      "minItems": 1,
                      "type": "array"
                    },
                    "expenses": {
                      "description": "Reimbursable expenses, one line each",
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "amount": {
                            "maximum": 1000000000,
                            "minimum": 0,
                            "type": "number"
                          },
                          "description": {
                            "maxLength": 250,
                            "minLength": 1,
                            "type": "string"
                          }
                        },
                        "required": [
                          "description",
                          "amount"
                        ],
                        "type": "object"
                      },
                      "maxItems": 100,
                      "type": "array"
                    },
                    "group_by": {
                      "default": "entry",
                      "description": "entry = one line per entry; description = merge entries with the same description and rate",
                      "enum": [
                        "entry",
                        "description"
                      ],
                      "type": "string"
                    },
                    "invoice_number": {
                      "maxLength": 64,
                      "minLength": 1,
                      "type": "string"
                    },
                    "issue_date": {
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                      "type": "string"
                    },
                    "notes": {
                      "maxLength": 2000,
                      "type": "string"
                    },
                    "payment_instructions": {
                      "maxLength": 1000,
                      "type": "string"
                    },
                    "rounding": {
                      "additionalProperties": false,
                      "properties": {
                        "increment_minutes": {
                          "anyOf": [
                            {
                              "const": 1,
                              "type": "number"
                            },
                            {
                              "const": 5,
                              "type": "number"
                            },
                            {
                              "const": 6,
                              "type": "number"
                            },
                            {
                              "const": 10,
                              "type": "number"
                            },
                            {
                              "const": 15,
                              "type": "number"
                            },
                            {
                              "const": 30,
                              "type": "number"
                            },
                            {
                              "const": 60,
                              "type": "number"
                            }
                          ],
                          "description": "Round each entry to this many minutes"
                        },
                        "mode": {
                          "default": "up",
                          "enum": [
                            "up",
                            "nearest"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "increment_minutes"
                      ],
                      "type": "object"
                    },
                    "seller": {
                      "properties": {
                        "address": {
                          "maxLength": 400,
                          "type": "string"
                        },
                        "email": {
                          "format": "email",
                          "maxLength": 254,
                          "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
                          "type": "string"
                        },
                        "name": {
                          "maxLength": 120,
                          "minLength": 1,
                          "type": "string"
                        },
                        "phone": {
                          "maxLength": 40,
                          "type": "string"
                        },
                        "tax_id": {
                          "maxLength": 60,
                          "type": "string"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "type": "object"
                    },
                    "tax_rate": {
                      "maximum": 100,
                      "minimum": 0,
                      "type": "number"
                    },
                    "terms": {
                      "description": "e.g. \"Net 15\"; sets due_date from issue_date (early-pay discounts are not applied to the invoice)",
                      "maxLength": 40,
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "seller",
                    "buyer",
                    "invoice_number",
                    "issue_date",
                    "entries"
                  ],
                  "type": "object"
                },
                "bodyType": {
                  "enum": [
                    "json",
                    "form-data",
                    "text"
                  ],
                  "type": "string"
                },
                "method": {
                  "enum": [
                    "POST"
                  ],
                  "type": "string"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method",
                "bodyType",
                "body"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "example": {
                  "type": "object"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      }
    },
    "lastUpdated": "2026-10-24T14:46:14.039Z",
    "quality": {
      "l30DaysTotalCalls": 4,
      "l30DaysUniquePayers": 2,
      "lastCalledAt": "2026-10-24T14:46:13.919Z"
    },
    "resource": "https://api.paidpilot.io/v1/invoice-from-timesheet",
    "serviceName": "PaidPilot Invoice API",
    "tags": [
      "timesheet",
      "invoice",
      "billable-hours",
      "time-tracking"
    ],
    "type": "http",
    "x402Version": 2
  },
  "source": "x402_bazaar",
  "summary": "Turn timesheet entries into invoice JSON. $0.02 USDC on Base per call. Hours x rate, optional rounding, grouping, expenses, tax and terms become a validated invoice JSON with totals, ready for /v1/invoice.pdf. Don't use this for the PDF itself; send the result to /v1/invoice.pdf."
}

What the leaf hashes

{"body":"a50bfabd6c49a5169ddb75da05186a53650b28ef210a88db47b806c2c3e76dcc","id":67952,"kind":"listing","method":"baseline/1","observed_us":1793025465447215,"prev":null,"subject":"x402_bazaar:https://api.paidpilot.io/v1/invoice-from-timesheet","subject_kind":"source_record"}

Proof

Its day has not closed yet. A day closes ten minutes after midnight UTC; the proof appears here then.

How to check it · This row as JSON